آموزش تنظیم fail2ban به منظور ایمن سازی سرویس SSH
یکی از روش های مورد استفاده توسط کاربران برای متصل شدن به سرور هایی که لوکال نیستند، اتصال به صورت ریموت میباشد. برای اتصال ریموت به سرور های لینوکسی، از پروتکلی به نام SSH استفاده میشود. پروتکل SSH ارتباطی امن مابین سرور و کاربر ایجاد مینماید، به اینصورت که با استفاده از کلید عمومی و رمزنگاری متقارن، تمام محتوای ارسال شده بین کاربر و سرور، رمزنگاری شده و تنها دو طرفی که کلید توافق شدهی مشترک دارند میتوانند به محتوای اصلی دسترسی داشته باشند.
سرور های لینوکسی به صورت پیشفرض با استفاده از پورت 22، مسیر دسترسی به ترمینال را برای کاربران ایجاد میکنند. افراد سودجو با هدف نفوذ به سرور های لینوکسی از این پورت استفاده کرده و حملات brute force بر روی سرور انجام میدهند. به احتمال زیاد شما هم با بررسی لاگ های سرور، متوجه این گونه حملات شدهاید و اکنون میبایست سرور خود را ایمن سازی نمایید. یکی از روش های ایمن سازی SSH استفاده از fail2ban میباشد. در ادامه مقاله با ما همراه باشید تا با fail2ban آشنا شده و نحوه تنظیم این برنامه را بررسی کنیم.
fail2ban چیست؟
fail2ban ابزاری است که به گزارش های سرویس ها که log نامیده میشود، نظارت میکند و در محافظت از سرور لینوکس شما در برابر حملات کمک میکند. در واقع fail2ban فایل های لاگ را بررسی میکند و به دنبال ای پی که قصد نفوذ به سیستم و ایجاد اختلال در امنیت سرور را دارد میگردد و پس از یافتن، اقدام به بلاک IP مذکور خواهد نمود. مدیريت سرور برای هر فعالیتی در سرور آستانهای را تعیین میکند، برای مثال هر فرد میتوانید تا ۳ بار با پسورد اشتباه به سرور درخواست ورود بفرستد. fail2ban افرادی را که از این تعداد معین شده رد شدهاند را بلاک میکند.
آموزش نصب fail2ban بر روی لینوکس
نکته: برنامه fail2ban با زبان پایتون برنامه نویسی شده است و لذا شما نیز بایستی پایتون را بر روی سرور لینوکسی خود نصب نمایید.
نکته: برای مسدود نمودن دسترسی هکر و ارسال ایمیل به مدیر سرور میبایست قایروال و sendmail نیز روی سرور لینوکسی خود نصب نمایید.
1- نصب fail2ban بر روی Debian\Ubuntu
ترمینال سرور خود را اجرا نموده و دستورات زیر را وارد نمایید.
sudo apt-get update && apt-get upgrade -y
sudo apt-get install fail2ban
نصب fail2ban بر روی CentOS/RHEL 7
در این توزیع ها نیز با اجرای دستورات زیر در ترمینال میتوانید برنامه fail2ban را نصب نمایید.
yum update
yum install epel-release
yum install fail2ban
برای مطلع شدن از وقایع و اعمالی که توسط fail2ban رخ میدهد میتوانید با نصب برنامه sendmail، به محض رخ دادن اتفاقی بر روی سرور از آن مطلع شوید. برای نصب این برنامه میتوانید از دستورات زیر استفاده نمایید.
yum install sendmail
[CentOS/RHEL]
sudo apt-get install sendmail-bin sendmail
[Debian/Ubuntu]
پس از نصب نمودن برنامه های fail2ban و sendmail بر روی سرور لینوکسی خود، با وارد نمودن دستورات زیر در ترمینال آن ها را فعال نمایید.
systemctl start fail2ban
systemctl enable fail2ban
systemctl start sendmail
systemctl enable sendmail
نحوه تنظیم fail2ban در سرور های لینوکس
پس از نصب برنامه fail2ban میتوانید با استفاده از فایلی که در مسیر /etc/fail2ban/ قرار دارد، این برنامه را تنظیم و مدیریت نمایید. فایل اصلی کانفیگ در این مسیر، فایل jail.local میباشد. پس از اتمام پروسه نصب fail2ban، ابتدا میبایست کانفیگ پیشفرض نرم افزار را لغو نماییم و تنظیمات اختصاصی خودمان را روی آن انجام دهیم. برای این کار، ابتدا با استفاده از دستور زیر یکی کپی از فایل jail.local در محل نصب برنامه ایجاد مینماییم.
cp -pf /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
سپس دستور زیر را در ترمینال اجرا نمایید، در این مرحله فایل jail.local توسط ادیتور nano آماده برای ویرایش میباشد.
nano /etc/fail2ban/jail.local
در این فایل، شما تنظیمات و پارامتر های متعددی را مشاهده خواهید نمود که ما به اختصار چند مورد از آنها را برای شما ذکر خواهیم کرد.
Ignoreip: هر آیپی که در این قسمت نوشته شود، هیچگاه بلاک یا مسدود نخواهد شد. شما میتوانید لیستی از این آیپی ها را با استفاده از جدا کننده Space به برنامه fail2ban معرفی نمایید. کاربران معمولا در این قسمت آیپی خود را وارد مینمايند تا مشكلی در ارتباط با سرور توسط آیپی خودشان ايجاد نگردد.
Bantime: این پارامتر مقدار زمانی را که یک آیپی میبایست در iptabels مسدود شود را معین میکند. واحد این پارامتر بر حسب ثانیه است و میزان پیشفرض Bantime، ششصد ثانیه (معادل 10 دقیقه) میباشد. شما میتوانید بر حسب نیاز و صلاحدید، مقدار این پارامتر را از یک ساعت (معادل 3600 ثانیه) الی یک روز (معادل 86400 ثانیه) تغییر دهید.
Maxretry: پارامتر مورد استفاده برای تنظیم تعداد مجاز برای تلاش ورود نا موفق میباشد، که در واقع تعیین میکند پس از چند بار تلاش آیپی خاطی مسدود شود.
Findtime : این پارامتر نمایانگر محدودیت زمانی برای وارد شدن به سیستم قبل از بلاک شدن آیپی میباشد. اگر در طول این مدت، تعداد maxretry تلاش ناموفق روی دهد آیپی بلاک خواهد شد و واحد این پارامتر نیز بر حسب ثانیه میباشد.
پس از انجام تغییرات و تنظیم برنامه fail2ban، میبایست بخش ssh-iptabels را نیز کانفیگ نمایید. البته کانفیگ ssh-iptabels به صورت پیشفرض فعال میباشد و نیازی به تغییر ندارد. کانفیگ این بخش به صورت زیر میباشد.
[ssh-iptables] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, dest=root, [email protected]] logpath = /var/log/secure maxretry = 5
نکته: اگر کانفیگ ذکر شده را مشاهده ننمودید، دستور زیر را اجرا کرده و خطوط بالا را در ادیتور وارد نمایید و فایل را ذخیره کنید.
nano /etc/fail2ban/jail.d/sshd.local
همانطور که در قسمت ابتدایی مقاله ذکر کردیم، شما میتوانید سیستم اطلاع رسانی با ایمیل را نیز اجرا نمایید تا در صورت ایجاد مشکل بر روی سرور سریعا متوجه شده و به آن رسیدگی نمایید. برای تنظیم sendmail، مقدار پارامتر های زیر را در فایل jail.local تغییر دهید.
destemail: در این پارامتر ایمیل خودتان را وارد نمایید.
sendername: نام ارسالکننده ایمیل توسط این پارامتر نمایش داده خواهد شد.
sender: ایمیلی که fail2ban از آن برای ارسال ایمیل استفاده خواهد کرد را میبایست در این قسمت وارد نمایید.
پس از وارد نمودن اطلاعات ذکر شده، پارامتر زیر را:
Action = %(action_)s
با یکی از پارامتر هایی که در باکس زیر قرار دادیم جایگزین نمایید.
action = %(action_mw)s
action = %(action_mwl)s
دستور اول، پس از مسدود کردن دسترسی آیپی فرد خاطی، اطلاعات whois کاربر را به ایمیل شما میفرستد.
دستور دوم، علاوه بر انجام وظایف دستور اول، اطلاعاتی که از فرد خاطی در log ذخیره شده است را به شما ارسال خواهد کرد.
پس از انجام تمام کانفیگ های ذکر شده در مراحل بالا، شما میبایست سرویس fail2ban را با اجرا کردن دستور زیر در ترمینال، مجددا راه اندازی نمایید.
systemctl enable fail2ban
systemctl start fail2ban
حال سرویس fail2ban فعال بوده و برای تست میتوانید با استفاده از یک آیپی دیگر( غیر از آیپی خودتان) چند لاگین ناموفق در سرویس ssh انجام داده و لیست iptables را با استفاده از دستور زیر چک نمایید.
iptables -L
همچنین برای بررسی وضعیت fail2ban میتوانید از دستور زیر استفاده نمایید.
fail2ban-client status
همچنین به منظور آزاد کردن یک آیپی که توطس fail2ban بلاک شده است میتوانید دستور زیر را اجرا نمایید.
fail2ban-client set sshd unbanip IPADDRESS
نکته: در دستور بالا، عبارت IPADDRESS را با آیپی مورد نظر جایگزین نمایید.
امیدواریم این آموزش نیز مورد استفاده شما عزیزان قرار گرفته باشد و توانسته باشیم در راستای ایمن سازی سرور لینوکسی شما کمک کرده باشیم.