امنسازی SSH در لینوکس
امنسازی SSH در لینوکس
ایمنسازی یک اتصال SSH در لینوکس شامل چندین مرحله برای افزایش امنیت سرور و محافظت در برابر دسترسیهای غیرمجاز است. در اینجا بهترین روشها آورده شده است:
تغییر پورت پیشفرض SSH
بهطور پیشفرض، SSH روی پورت 22 اجرا میشود. تغییر آن به یک پورت غیر استاندارد میتواند به کاهش حملات خودکار کمک کند.
ویرایش فایل تنظیمات SSH:
sudo nano /etc/ssh/sshd_config
خط زیر را پیدا کنید:
#Port 22
آن را از حالت کامنت خارج کرده و مقدار 22 را به یک شماره پورت دیگر، مثلاً 2222 تغییر دهید:
Port 2222
سرویس SSH را مجدداً راهاندازی کنید:
sudo systemctl restart sshd
استفاده از احراز هویت با رمز عبور قوی
اطمینان حاصل کنید که کاربران از رمزهای عبور قوی برای جلوگیری از حملات brute-force استفاده میکنند.
تنظیم سیاستهای رمز عبور:
sudo nano /etc/security/pwquality.conf
پارامترهای زیر را تنظیم کنید:
minlen = 12 dcredit = -1 ucredit = -1 ocredit = -1 lcredit = -1
غیرفعال کردن ورود مستقیم کاربر root
برای جلوگیری از دسترسی مستقیم مهاجمان به حساب root، ورود مستقیم root را غیرفعال کنید.
ویرایش فایل تنظیمات SSH:
sudo nano /etc/ssh/sshd_config
خط زیر را پیدا کنید:
PermitRootLogin yes
آن را به no تغییر دهید:
PermitRootLogin no
سرویس SSH را مجدداً راهاندازی کنید:
sudo systemctl restart sshd
استفاده از احراز هویت مبتنی بر کلید SSH
احراز هویت با کلید امنتر از احراز هویت با رمز عبور است.
در سیستم کلاینت یک جفت کلید ایجاد کنید:
ssh-keygen -t rsa -b 4096
کلید عمومی را به سرور منتقل کنید:
ssh-copy-id user@server_ip
اطمینان حاصل کنید که فایل ~/.ssh/authorized_keys در سرور دارای مجوزهای صحیح است:
chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
غیرفعال کردن احراز هویت با رمز عبور
پس از پیکربندی احراز هویت با کلید، احراز هویت با رمز عبور را غیرفعال کنید.
ویرایش فایل تنظیمات SSH:
sudo nano /etc/ssh/sshd_config
خط زیر را پیدا کنید و مقدار آن را تغییر دهید:
#PasswordAuthentication yes
آن را از حالت کامنت خارج کرده و مقدار yes را به no تغییر دهید:
PasswordAuthentication no
سرویس SSH را مجدداً راهاندازی کنید:
sudo systemctl restart sshd
محدود کردن ورود کاربران خاص
برای افزایش امنیت، دسترسی SSH را به کاربران یا گروههای خاص محدود کنید.
ویرایش فایل تنظیمات SSH:
sudo nano /etc/ssh/sshd_config
برای محدود کردن کاربران خاص، این خط را اضافه کنید:
AllowUsers user1 user2
یا برای محدود کردن گروهها:
AllowGroups sshusers
سرویس SSH را مجدداً راهاندازی کنید:
sudo systemctl restart sshd
استفاده از فایروال
یک فایروال تنظیم کنید تا فقط آدرسهای IP خاصی بتوانند به پورت SSH شما متصل شوند.
در ufw:
sudo ufw allow 2222/tcp sudo ufw enable
در iptables:
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
نصب و پیکربندی Fail2Ban
Fail2Ban از حملات brute-force جلوگیری میکند و آدرسهای IP با تلاشهای ناموفق متعدد را مسدود میکند.
نصب Fail2Ban:
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
سرویس Fail2Ban را مجدداً راهاندازی کنید:
sudo systemctl restart fail2ban
فعالسازی احراز هویت دو مرحلهای (2FA)
برای افزایش امنیت، احراز هویت دو مرحلهای (2FA) را برای ورود SSH فعال کنید.
نصب Google Authenticator:
sudo apt-get install libpam-google-authenticator
راهاندازی Google Authenticator:
google-authenticator
ویرایش تنظیمات PAM:
sudo nano /etc/pam.d/sshd
اضافه کردن خط زیر:
auth required pam_google_authenticator.so
ویرایش فایل تنظیمات SSH:
sudo nano /etc/ssh/sshd_config
فعال کردن احراز هویت چالشی:
ChallengeResponseAuthentication yes
سرویس SSH را مجدداً راهاندازی کنید:
sudo systemctl restart sshd
نظارت بر لاگهای SSH
برای بررسی تلاشهای ورود ناموفق و فعالیتهای مشکوک، لاگهای SSH را نظارت کنید.
مشاهده لاگها:
sudo tail -f /var/log/auth.log
با پیروی از این اقدامات، میتوانید امنیت اتصال SSH در سرور لینوکس خود را به میزان قابل توجهی افزایش دهید.