امنسازی SSH در لینوکس
امنسازی SSH در لینوکس – راهنمای کامل
اتصال SSH یکی از اصلیترین درگاههای مدیریت از راه دور در سرورهای لینوکسی است. از همین رو، یکی از اهداف مورد علاقه مهاجمان نیز محسوب میشود. در این آموزش، با مجموعهای از بهترین روشها برای ایمنسازی SSH آشنا میشویم.
۱. تغییر پورت پیشفرض SSH
پورت پیشفرض SSH برابر با 22 است که اغلب توسط رباتها هدف قرار میگیرد. تغییر آن به پورتی غیرمعمول میتواند امنیت را بالا ببرد.
فایل تنظیمات را باز کنید:
sudo nano /etc/ssh/sshd_config
خط زیر را یافته و مقدار آن را تغییر دهید:
#Port 22
مثال:
Port 2222
سپس سرویس SSH را ریستارت کنید:
sudo systemctl restart sshd
۲. استفاده از رمز عبور قوی
رمزهای ساده یکی از دلایل اصلی نفوذ به سرور هستند. با اعمال سیاست رمز عبور قوی میتوان تا حد زیادی از حملات جلوگیری کرد.
فایل زیر را ویرایش کنید:
sudo nano /etc/security/pwquality.conf
پارامترهای زیر را اضافه یا ویرایش کنید:
minlen = 12 dcredit = -1 ucredit = -1 ocredit = -1 lcredit = -1
۳. غیرفعال کردن دسترسی مستقیم root
دسترسی مستقیم با کاربر root امنیت را بهشدت کاهش میدهد. پیشنهاد میشود این دسترسی را غیرفعال کرده و از کاربران معمولی با sudo استفاده کنید.
sudo nano /etc/ssh/sshd_config
خط زیر را یافته و به صورت زیر تغییر دهید:
PermitRootLogin no
سرویس SSH را ریستارت کنید:
sudo systemctl restart sshd
۴. استفاده از کلید SSH بهجای رمز عبور
ورود با کلید SSH بسیار ایمنتر از رمز عبور است. برای استفاده از آن، ابتدا یک جفت کلید تولید کنید:
ssh-keygen -t rsa -b 4096
سپس کلید عمومی را به سرور ارسال نمایید:
ssh-copy-id user@server_ip
و مجوزهای پوشه و فایل مربوط را تنظیم کنید:
chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
۵. غیرفعال کردن ورود با رمز عبور
پس از راهاندازی کلید SSH، میتوانید ورود با رمز را غیرفعال کنید:
sudo nano /etc/ssh/sshd_config
خط زیر را یافته و تنظیم کنید:
PasswordAuthentication no
ریستارت SSH:
sudo systemctl restart sshd
۶. محدود کردن دسترسی کاربران
اگر تنها کاربران خاصی باید به SSH دسترسی داشته باشند، از AllowUsers یا AllowGroups استفاده کنید.
sudo nano /etc/ssh/sshd_config
محدود کردن کاربران:
AllowUsers user1 user2
محدود کردن گروهها:
AllowGroups sshusers
و در نهایت:
sudo systemctl restart sshd
۷. استفاده از فایروال برای محدودسازی IP
با استفاده از UFW یا iptables میتوانید تنها IPهای مشخص را مجاز کنید:
با UFW:
sudo ufw allow 2222/tcp sudo ufw enable
با iptables:
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
۸. نصب و پیکربندی Fail2Ban
Fail2Ban با مانیتور کردن لاگها، IPهایی که چندین بار رمز اشتباه وارد کردهاند را بلاک میکند.
sudo apt-get install fail2ban sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local
بخش [sshd] را به صورت زیر تنظیم کنید:
[sshd] enabled = true port = 2222
سپس سرویس را راهاندازی کنید:
sudo systemctl restart fail2ban
۹. فعالسازی احراز هویت دو مرحلهای (2FA)
یکی دیگر از روشهای ارتقاء امنیت، استفاده از احراز هویت دو مرحلهای است. برای این منظور از Google Authenticator استفاده میشود.
نصب:
sudo apt-get install libpam-google-authenticator
راهاندازی:
google-authenticator
تنظیم PAM:
sudo nano /etc/pam.d/sshd
خط زیر را اضافه کنید:
auth required pam_google_authenticator.so
تنظیم sshd_config:
sudo nano /etc/ssh/sshd_config ChallengeResponseAuthentication yes
ریستارت سرویس:
sudo systemctl restart sshd
۱۰. نظارت بر لاگهای SSH
برای بررسی ورودهای مشکوک یا حملات احتمالی، لاگهای SSH را رصد کنید:
sudo tail -f /var/log/auth.log
🔎 نتیجهگیری
با اجرای گامهای بالا میتوانید تا حد زیادی امنیت SSH در سرور لینوکسی خود را افزایش دهید. ترکیب روشهایی مانند کلید SSH، تغییر پورت، محدودیت IP، و فعالسازی 2FA باعث میشود دسترسی غیرمجاز تقریباً غیرممکن شود.