امن‌سازی 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 باعث می‌شود دسترسی غیرمجاز تقریباً غیرممکن شود.

author
نتورکفا