افزایش امنیت 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 sshsudo ufw allow 2222/tcp4. فعال کردن احراز هویت دو مرحلهای (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 enable6. استفاده از 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 = 3Fail2Ban را راهاندازی کنید:
sudo systemctl restart fail2ban7. استفاده از TCP Wrappers برای محدود کردن دسترسی IPها
TCP Wrappers یک ابزار ساده برای محدود کردن دسترسی بر اساس آدرس IP است. شما میتوانید با ویرایش فایلهای /etc/hosts.allow و /etc/hosts.deny دسترسی به SSH را محدود کنید.
-
اجازه دسترسی به یک IP خاص در hosts.allow:
sshd: your_ip_addressمسدود کردن همه دسترسیها به غیر از IPهای مجاز در hosts.deny:
sshd: ALL8. غیرفعال کردن ورود مستقیم با کاربر 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 میتواند به جلوگیری از دسترسیهای غیرمجاز و حملات احتمالی کمک کند. این اقدامات به شما این اطمینان را میدهد که سرور لینوکس شما به بهترین شکل از حملات محافظت میشود.
