رفتن به محتوای اصلی
iServer24 | ارائه‌کننده سرورهای ابری و اختصاصی
امنیت سرور: نصب Fail2Ban و هاردنینگ SSH در برابر حملات Brute-Force

امنیت سرور: نصب Fail2Ban و هاردنینگ SSH در برابر حملات Brute-Force

آموزش نصب و پیکربندی Fail2Ban برای مسدودسازی خودکار حملات Brute-Force روی SSH، به همراه گام‌های کلیدی هاردنینگ sshd_config برای امنیت واقعی سرور.

امنیت سرور: نصب Fail2Ban و هاردنینگ SSH در برابر حملات Brute-Force

لاگ‌های auth.log هر سرور لینوکسی متصل به اینترنت، پر از تلاش‌های ورود ناموفق از IPهای ناشناس است؛ این حملات Brute-Force خودکار، به‌صورت مداوم در تلاش برای حدس زدن رمز عبور SSH هستند. در این راهنما هم سرویس Fail2Ban را برای مسدودسازی خودکار این حملات نصب می‌کنیم و هم چند گام کلیدی برای هاردنینگ واقعی SSH را مرور می‌کنیم.

Fail2Ban چیست و چطور کار می‌کند؟

Fail2Ban فایل‌های لاگ سرویس‌هایی مثل SSH را زیر نظر می‌گیرد و وقتی تعداد تلاش‌های ناموفق ورود از یک IP از حد مشخصی بگذرد، آن IP را به‌طور موقت (یا دائم) از طریق فایروال مسدود می‌کند. این ابزار در واقع یک لایهٔ اضافه روی فایروال سیستم اضافه می‌کند، نه جایگزین آن.

نصب Fail2Ban روی Ubuntu/Debian

6 خط
sudo apt update
sudo apt install fail2ban -y

sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo systemctl status fail2ban
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

پیکربندی Jail برای SSH

تنظیمات پیش‌فرض Fail2Ban را هرگز مستقیم در فایل jail.conf ویرایش نکنید؛ همیشه یک فایل override با نام jail.local بسازید تا در آپدیت‌های بعدی از بین نروند:

sudo nano /etc/fail2ban/jail.local
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
9 خط
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
findtime = 10m
bantime = 1h
bantime.increment = true
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

در این تنظیمات: اگر یک IP در بازهٔ ۱۰ دقیقه (findtime) بیش از ۵ بار (maxretry) تلاش ناموفق داشته باشد، به مدت ۱ ساعت (bantime) مسدود می‌شود. با فعال بودن bantime.increment، هر بار که همان IP دوباره تخلف کند، مدت مسدودیت به‌صورت تصاعدی افزایش می‌یابد.

sudo systemctl restart fail2ban
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

دستورات مدیریتی پرکاربرد

دستورکاربرد
fail2ban-client statusنمایش لیست Jailهای فعال
fail2ban-client status sshdنمایش IPهای مسدودشدهٔ فعلی در Jail مربوط به SSH
fail2ban-client set sshd unbanip 1.2.3.4رفع مسدودیت یک IP مشخص
fail2ban-client set sshd banip 1.2.3.4مسدود کردن دستی یک IP

هاردنینگ SSH؛ فراتر از Fail2Ban

Fail2Ban فقط یک لایهٔ دفاعی است. برای امنیت واقعی SSH، این تنظیمات در /etc/ssh/sshd_config اهمیت بیشتری دارند:

7 خط
PermitRootLogin no

PasswordAuthentication no

Port 2222

AllowUsers deployuser
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

پیش از غیرفعال کردن PasswordAuthentication، حتماً مطمئن شوید که ورود با کلید SSH را طبق آموزش ساخت SSH Key در لینوکس راه‌اندازی و تست کرده‌اید، وگرنه ممکن است خودتان هم از سرور قفل شوید. برای مرور کامل‌تر مفاهیم SSH نیز می‌توانید به راهنمای جامع SSH مراجعه کنید.

ترکیب Fail2Ban با فایروال

Fail2Ban به‌تنهایی کافی نیست؛ داشتن یک فایروال فعال (مثل UFW) به‌عنوان خط دفاعی اول ضروری است. اگر سرور اوبونتویی دارید که هنوز مراحل امن‌سازی پایه روی آن انجام نشده، ابتدا مراحل راه‌اندازی اولیهٔ سرور Ubuntu 20.04 را کامل کنید.

اگر می‌خواهید تعداد تلاش‌های مسدودشده توسط Fail2Ban را هم در طول زمان رصد کنید و روی یک داشبورد ببینید، می‌توانید این داده را کنار زیرساخت مانیتورینگی که در مقالهٔ مانیتورینگ سرور لینوکس با Prometheus و Node Exporter توضیح داده‌ایم اضافه کنید.

جمع‌بندی

Fail2Ban یک ابزار ساده اما بسیار مؤثر برای کاهش حجم حملات Brute-Force روی SSH است، اما جایگزین رعایت اصول پایه (غیرفعال کردن ورود با رمز عبور، غیرفعال کردن root، و داشتن فایروال فعال) نمی‌شود. ترکیب این چند لایه با هم، سطح امنیتی قابل‌قبولی برای اکثر سرورهای تولید فراهم می‌کند.

زیرساخت ابری برای اجرای همین آموزش

سرور ابری ساعتی را برای Docker، Ubuntu و DevOps راه‌اندازی کنید — پرداخت به میزان مصرف یا ماهانه.

ادامه یادگیری:Docker·Ubuntu·VPS