Linux & Open Source

حاکمیت امنیت و استراتژی‌های تقویت سرورهای لینوکس

امنیت یک ویژگی نیست؛ بلکه یک فرآیند پیوسته است. در چشم‌انداز تهدیدات مدرن، قرار دادن پیکربندی پیش‌فرض لینوکس در معرض دید، دعوتی برای نفوذ است. به عنوان توسعه‌دهندگان و مدیران سیستم، باید ذهنیت «رد پیش‌فرض» را اتخاذ کنیم. این راهنما لایه‌های حیاتی دفاعی را پوشش می‌دهد که باید برای ایمن‌سازی سرورهای تولیدی خود در برابر حملات رایج و پیشرفته پیاده‌سازی کنید. ما فراتر از آموزش‌های پایه‌ای حرکت می‌کنیم و به فنی‌های عملی و آماده برای محیط تولید می‌رسیم که تعادلی بین امنیت و کاربری برقرار می‌کنند.

قفل کردن دسترسی SSH

پوسته امن (SSH) نقطه ورود اصلی برای اکثر حملات است. پیکربندی نادرست SSH عامل اصلی نفوذ به سرورهاست. اولین گام شما حذف روش‌های احراز هویت ضعیف است.

1. غیرفعال کردن احراز هویت با رمز عبور: اجبار به استفاده از رمزنگاری کلید عمومی.

2. تغییر پورت پیش‌فرض: اگرچه این کار امنیت از طریق پنهان‌سازی نیست، اما جابه‌جایی از پورت 22 نویز ناشی از ربات‌های اسکن خودکار را کاهش می‌دهد.

3. محدود کردن کاربران: فقط به حساب‌های مدیریتی خاص اجازه ورود بدهید.

# /etc/ssh/sshd_config

# Disable password and root login
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

# Restrict access to specific users
AllowUsers deploy admin

# Change default port (optional)
Port 2222

# Enforce strong key exchange algorithms
KexAlgorithms curve25519-sha256, diffie-hellman-group-exchange-sha256

پس از تغییر این تنظیمات، قبل از بستن جلسه فعلی خود، در یک جلسه جداگانه تست کنید تا مطمئن شوید خودتان را قفل نکرده‌اید.

پیاده‌سازی کنترل دسترسی اجباری (MAC)

مجوزهای سنتی یونیکس (خواندن/نوشتن/اجرا) برای محیط‌های پیچیده کافی نیستند. سیستم‌های MAC مانند SELinux (استاندارد برای RHEL/Fedora) و AppArmor (استاندارد برای Ubuntu/Debian) سیاست‌ها را روی فرآیندها اعمال می‌کنند، صرف‌نظر از کاربری که آن‌ها را اجرا می‌کند. اگر یک وب‌سرور نفوذ کند، MAC از دسترسی آن به فایل‌های حساس مانند /etc/shadow یا ارتقای دسترسی جلوگیری می‌کند.

برای SELinux، از ابزارهای semanage و audit2allow برای اصلاح سیاست‌ها استفاده کنید. برای AppArmor، پروفایل‌ها را با استفاده از پروفایل‌های موجود در /etc/apparmor.d/ تعریف کنید.

# Check SELinux status
getenforce

# View recent AVC denials to understand why processes are blocked
ausearch -m avc -ts recent

دفاع در لایه شبکه: فایروال‌ها و Fail2ban

فایروال به عنوان دربان شما عمل می‌کند. از firewalld برای سیستم‌های مبتنی بر RHEL یا ufw برای سیستم‌های مبتنی بر Debian استفاده کنید. اطمینان حاصل کنید که فقط پورت‌های ضروری برای خدمات خود (مثلاً 443 برای HTTPS، پورت سفارشی SSH شما) را باز می‌کنید.

Fail2ban با پایش فایل‌های لاگ برای تلاش‌های ناموفق در دسترسی و مسدودسازی پویا آدرس‌های IP خاطی، مکمل فایروال شماست. این ابزار برای کاهش حملات زور بازو حیاتی است.

# Install and enable fail2ban
sudo apt-get install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# Create /etc/fail2ban/jail.local to customize
[sshd]
enabled = true
port = 2222
filter = sshd
maxretry = 3
bantime = 1h

تقویت سیستم و ممیزی

تقویت شامل به حداقل رساندن سطح حمله است. این شامل غیرفعال کردن خدمات استفاده‌نشده (مانند FTP یا Telnet)، اعمال تنظیمات پارامترهای کرنل و فعال‌سازی ثبت رویدادهای ممیزی است.

از auditd برای ردیابی تغییرات در فایل‌های حیاتی سیستم استفاده کنید. می‌توانید قوانین نظارتی (watch rules) را تنظیم کنید تا اگر /etc/passwd یا /etc/sudoers تغییر کند، مدیران را مطلع کند.

# Watch for changes to critical files
sudo auditctl -w /etc/passwd -p wa -k identity
sudo auditctl -w /etc/sudoers -p wa -k sudoers

# Check audit logs
sudo ausearch -k identity

علاوه بر این، اطمینان حاصل کنید که پارامترهای کرنل شما تقویت شده‌اند. موارد زیر را به /etc/sysctl.conf اضافه کنید تا از حملات هدایت ICMP جلوگیری کرده و محافظت در برابر جعل IP را فعال کنید:

net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

نتیجه‌گیری

امنیت سرور یک کار یک‌بار نیست، بلکه یک مسئولیت مداوم است. با ترکیب پیکربندی‌های قوی SSH، کنترل دسترسی اجباری، مسدودسازی پویا IP از طریق Fail2ban و ممیزی دقیق، یک دفاع چندلایه می‌سازید. به طور منظم لاگ‌های خود را بررسی کنید، نرم‌افزارهای خود را به‌روزرسانی کنید و اقدامات تقویتی خود را آزمایش کنید. به یاد داشته باشید، بهترین استراتژی امنیت آن است که تیم شما واقعاً بتواند آن را حفظ کند. با مبانی شروع کنید، پیچیدگی را در صورت نیاز اضافه کنید و همیشه اصل حداقل دسترسی را در طراحی سیستم خود اولویت دهید.

Share: