افزایش امنیت SSH (Secure Shell) برای جلوگیری از حملات و دسترسیهای غیرمجاز به سرور، امری ضروری است. در ادامه، چندین روش کاربردی برای بالا بردن امنیت SSH را مرور میکنیم.
1. غیرفعال کردن ورود با رمز عبور (Password Authentication)
یکی از بهترین روشها برای افزایش امنیت SSH این است که ورود با رمز عبور را غیرفعال کنید و تنها از کلیدهای SSH استفاده کنید. برای این کار، ابتدا باید مطمئن شوید که کلیدهای SSH را پیکربندی کردهاید.
پس از تنظیم کلید SSH، مراحل زیر را دنبال کنید:
-
فایل پیکربندی SSH را با استفاده از ویرایشگر متنی باز کنید:
sudo nano /etc/ssh/sshd_config
- خط زیر را پیدا کنید و مقدار آن را به
no
تغییر دهید:
PasswordAuthentication no
- سرویس SSH را مجدداً راهاندازی کنید تا تغییرات اعمال شوند:
sudo systemctl restart ssh
این کار باعث میشود که ورود با رمز عبور غیرفعال شود و تنها کاربرانی که کلید SSH معتبر دارند، بتوانند وارد شوند.
2. استفاده از کلیدهای SSH به جای رمز عبور
کلیدهای SSH جایگزین ایمنتری برای رمزهای عبور هستند. برای ایجاد کلید SSH، از دستور زیر در سیستم محلی خود استفاده کنید:
ssh-copy-id username@server_ip
پس از این کار، میتوانید بدون وارد کردن رمز عبور، به سرور متصل شوید.
3. تغییر پورت پیشفرض SSH (Port 22)
پورت پیشفرض SSH، یعنی پورت 22، یکی از اهداف متداول برای حملات است. تغییر این پورت میتواند امنیت را بهبود بخشد، زیرا حملهکنندگان معمولاً پورت 22 را جستجو میکنند.
برای تغییر پورت SSH:
فایل پیکربندی SSH را باز کنید
sudo nano /etc/ssh/sshd_config
خط Port 22
را پیدا کنید و پورت دلخواه خود را جایگزین کنید، مثلاً:
Port 2222
سرویس SSH را مجدداً راهاندازی کنید:
sudo systemctl restart ssh
sudo ufw allow 2222/tcp
4. فعال کردن احراز هویت دو مرحلهای (2FA)
با فعالسازی احراز هویت دو مرحلهای (Two-Factor Authentication)، میتوانید یک لایه امنیتی دیگر به SSH اضافه کنید. این کار از ابزارهایی مانند Google Authenticator یا Duo استفاده میکند.
برای نصب Google Authenticator:
برای نصب Google Authenticator:
-
ابزار PAM مورد نیاز برای احراز هویت دو مرحلهای را نصب کنید:
sudo apt install libpam-google-authenticator
سپس با اجرای دستور زیر، کد QR خود را دریافت کنید:
google-authenticator
تنظیمات PAM را ویرایش کنید:
sudo nano /etc/pam.d/sshd
خط زیر را به ابتدای فایل اضافه کنید:
auth required pam_google_authenticator.so
فایل sshd_config را ویرایش کرده و این تنظیمات را تغییر دهید:
ChallengeResponseAuthentication yes
سرویس SSH را مجدداً راهاندازی کنید.
5. محدود کردن دسترسی با استفاده از فایروال (UFW)
برای محدود کردن دسترسی به SSH، میتوانید از فایروال UFW استفاده کنید تا فقط IPهای مشخص به سرور شما دسترسی داشته باشند.
-
برای اجازه دسترسی از یک IP خاص:
sudo ufw allow from your_ip_address to any port 22
فعالسازی فایروال:
sudo ufw enable
6. استفاده از Fail2Ban برای جلوگیری از حملات Brute Force
Fail2Ban ابزاری است که تلاشهای ناموفق برای ورود به SSH را شناسایی کرده و IPهای مشکوک را مسدود میکند.
-
برای نصب Fail2Ban:
sudo apt install fail2ban
سپس فایل پیکربندی را ویرایش کنید:
sudo nano /etc/fail2ban/jail.local
تنظیمات مربوط به SSH را اضافه کنید:
[sshd] enabled = true port = 22 filter = sshd logpath = /var/log/auth.log maxretry = 3
Fail2Ban را راهاندازی کنید:
sudo systemctl restart fail2ban
7. استفاده از TCP Wrappers برای محدود کردن دسترسی IPها
TCP Wrappers یک ابزار ساده برای محدود کردن دسترسی بر اساس آدرس IP است. شما میتوانید با ویرایش فایلهای /etc/hosts.allow
و /etc/hosts.deny
دسترسی به SSH را محدود کنید.
-
اجازه دسترسی به یک IP خاص در hosts.allow:
sshd: your_ip_address
مسدود کردن همه دسترسیها به غیر از IPهای مجاز در hosts.deny:
sshd: ALL
8. غیرفعال کردن ورود مستقیم با کاربر Root
به دلایل امنیتی، توصیه میشود ورود مستقیم با کاربر Root را غیرفعال کنید و به جای آن از یک کاربر با دسترسی sudo استفاده کنید.
برای غیرفعال کردن ورود Root:
-
فایل sshd_config را باز کنید:
sudo nano /etc/ssh/sshd_config
خط زیر را پیدا کنید و مقدار آن را به no
تغییر دهید:
PermitRootLogin no
سپس سرویس SSH را مجدداً راهاندازی کنید:
sudo systemctl restart ssh
نتیجهگیری
افزایش امنیت SSH از طریق استفاده از کلیدهای SSH، غیرفعال کردن ورود با رمز عبور، تغییر پورت، فعالسازی 2FA و استفاده از ابزارهایی مانند Fail2Ban و TCP Wrappers میتواند به جلوگیری از دسترسیهای غیرمجاز و حملات احتمالی کمک کند. این اقدامات به شما این اطمینان را میدهد که سرور لینوکس شما به بهترین شکل از حملات محافظت میشود.