آموزش تخصصی

دفاع در برابر حمله بروت فورس با کمک Fail2Ban

روزانه اخبار متعددی در ارتباط با جرائم اینترنتی نظیر برخی از کاربران مضر یا ربات‌ها، بعضی وب‌سایت‌ها که در دسترس عموم قرار دارند و یا بعضی از سرویس‌ها به گوش می‌رسد. همواره سعی شده است از طریق مقالات تحلیلی، چگونگی انجام چنین فعالیت‌هایی، زمانی که سیستم ضعیف و یا حتی اشتباه پیکربندی‌شده است، بیان شود. بنابراین، انجام برخی اقدامات امنیتی نظیر IDS / IPS در فایروال برای محافظت و دفاع از سرور و مشتریان در هنگام پیکربندی حائز اهمیت است. در این مقاله نشان خواهیم داد که چگونه می‌توانید از شبکه خود در برابر حملات بروت فورس (Brute Force) بر روی سرویس‌های در حال اجرا محافظت کنید؟

بروت فورس چیست؟

یکی از رایج ترین حملات برای دستیابی به نام کاربری و پسورد حمله جستجوی فراگیر (بروت فورس) است. در این حمله مهاجم سعی می کند با چک کردن هزاران مقدار برای نام کاربری و یا پسورد اقدام به ورود به سامانه یا سرویس نماید.

IPS چیست؟

سیستم جلوگیری از نفوذ یا همان IPS یک اقدام امنیتی برای بررسی ترافیک ورودی جهت تشخیص نفوذ و سپس مسدود کردن رویدادهای شناسایی‌شده است. به‌عنوان‌مثال، یک IPS می‌تواند Packetهای مخرب و ترافیکی را که از یک آدرس IP متخلف می‌آید، مسدود نماید.

معرفی برنامه Fail2Ban

File2Ban از طریق اسکن فایل‌های لاگ IPهایی که مشکوک به انجام یک عملیات مخرب باشند یا نشانی از آن داشته باشند (برای نمونه ورود متعدد رمز ورود اشتباه و یا تلاشی برای سوءاستفاده‌های دیگر) را مسدود می‌کند. File2Ban عموماً تلاش می‌کند قوانین فایروال را جهت مسدود کردن آدرس‌های IP مذکور برای یک بازه‌ی زمانی مشخص، به‌روزرسانی کند. در این مقاله چگونگی محافظت از یک سرویس در حال اجرا روی شبکه را در برابر حمله بروت فورس تشریح خواهیم کرد.

تنظیمات موردنیاز آزمایشگاه

  • سیستم قربانی: Ubuntu 14.04 (192.168.0.105)
  • سیستم مهاجم: Kali Linux (192.168.0.105)

حمله بروت فورس در نبود IPS

حالا می‌خواهیم زمانی که پورت ۲۲ روی سیستم قربانی برای ورود غیرمجاز باز است، حمله بروت فورس انجام دهیم. با کمک Hydra سعی خواهیم کرد گواهی ورود SSH را حدس بزنیم. (پورت ۲۲، پورت پیش‌فرض سرویس SSH است.

hydra
-L user.txt -P pass.txt 192.168.0.105 ssh

بروت فورس hydra brute force

همان‌طور که در تصویر فوق مشاهده می‌شود حساب aarti با رمز ورود ۱۲۳ شناسایی‌شده است. به‌طور مشابه سعی می‌کنیم روی پورت ۲۱ سیستم هدف زمانی که برای ورود غیرمجاز باز است، حمله بروت فورس انجام دهیم. با کمک Hydra سعی خواهیم کرد گواهی ورود FTP را حدس بزنیم.

hydra -L
user.txt -P
pass.txt 192.168.0.105
ftp

بروت فورس hydra brute force

با توجه به تصویر می‌توان مشاهده کرد که این سرویس‌ها چقدر بد پیکربندی‌شده‌اند. حتی مدیر شبکه، قوانین پیچیدگی گذرواژه را رعایت نکرده است؛ بنابراین اعمال یک حمله‌ی بروت فورس روی چنین شبکه‌ای آسان خواهد بود.

تنظیمات آزمایشگاه برای پیشگیری از نفوذ

می­خواهیم تنظیمات مربوط به IPS را روی این شبکه پیاده‌سازی کنیم تا Packetهای دریافتی را رصد کرده و فعالیت‌های مخرب را شناسایی نماییم. همچنین ترافیک رسیده از IPهای آلوده را مسدود نماییم. نصب برنامه‌ی Fail2Ban بسیار آسان است. چراکه Ubuntu یک package برای Fail2Ban در  apt-repositories خود دارد. در ابتدا فهرست جدول IP ها را به شما نشان می‌دهیم. همان‌طور که در شکل زیر قابل‌مشاهده است، این فهرست خالی است. سپس دستور نصب را اجرا کرده و سپس پیکربندی مربوطه را از فایل jail.conf به داخل فایل inside.jail کپی می­کنیم.

sudo iptables -S
sudo apt-get install fail2ban

در حین پیکربندی Fail2Ban در دستگاه محلی شما، باید دسترسی root داشته یا با استفاده از قوانین sudo از کاربر غیر root استفاده کنید.

دیوار آتش بروت فورس iptables

پیکربندی Fail2Ban

سرویس File2Ban دارای فایل پیکربندی jail.local پیش‌فرض خود در دایرکتوری  /etc/fail2ban است. بنابراین، شما نباید این فایل را ویرایش کنید؛ اما می‌توانید با استفاده از دستور زیر آن را به فایل jail.local، override نموده و سپس آن را برای پیکربندی موردنظر خود بازکنید.

همان‌طور که در بالا مشاهده شد، ما موفق به اعمال حمله‌ی Brute Force روی SSH و FTP شدیم. ازاین‌رو اکنون Fail2Ban را برای متوقف کردن حمله‌ی Brute Force در شبکه پیکربندی خواهیم کرد.

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo gedit /etc/fail2ban/jail.local

به‌محض بازشدنی فایل، می‌بایست روی چند چیز مانند “ignoreip، bantam، maxretry” تمرکز کرده و سپس مقادیر آن‌ها را با توجه به نیاز خود تغییر دهید. IPهایی که می­خواهید Fail2Ban آن‌ها را نادیده بگیرد، تحت عنوان ignoreip تنظیم نمایید. زمان انسداد IPها (برحسب ثانیه) برای یک بازه زمانی معین و حداکثر تلاش‌ها برای ورود یک کاربر را تنظیم نمایید.

 ignoreip = 192.168.0.105 127.0.0.1 
bantime = 600
maxretry = 3

بروت فورس hydra brute force

محافظت از SSH در برابر حمله‌ی بروت فورس

درنهایت، ما سراغ بخشی از فایل پیکربندی که با سرویس‌های خاصی سروکار دارد، می‌رویم. این‌ها توسط سر صفحه‌های بخش مانند SSH شناسایی می‌شوند. همان‌طور که در تصویر زیر نشان داده‌شده است برای فعال کردن هر یک از این بخش‌ها سر صفحه مربوطه را از حالت Comment خارج کرده  و مقدار فعال‌شده را به “true” تغییر دهید. سپس فایل jail.local را ذخیره کرده و سرویس Fail2ban را مجدداً راه‌اندازی کنید:

 [ssh]
enable = true
service fail2ban restart

بروت فورس hydra brute force

آزمایش Fail2Ban برای SSH

Fail2an یک فرمان “fail2ban-client” را ارائه می‌دهد که برای اجرای Fail2Ban از خط فرمان مورداستفاده قرار می‌گیرد تا بررسی کند که Fail2Ban در حال اجرا است و jail SSH فعال‌شده است. شما می‌توانید از syntax زیر برای تائید وضعیت خود استفاده کنید.

sudo fail2ban-client status
sudo fail2ban-client status ssh

همان‌طور که مشاهده می‌شود در حال حاضر filter list و action list روی صفر تنظیم‌شده یا به عبارتی خالی است. اگر کسی تلاش کند که از حد مجاز عبور نماید، این مقادیر تغییر خواهند کرد.

بروت فورس hydra brute force ssh

همان‌گونه که در بالا اشاره شد، Fail2Ban، قوانین iptables را جهت رد آدرس IP برای یک بازه‌ی زمانی معین به‌روزرسانی می‌کند و از تصویر زیر می‌توان دید که ۳ خط‌مشی آخر به‌طور خودکار توسط Fail2Ban ایجاد می‌شوند.

بروت فورس hydra brute force ssh

اکنون دستگاه میزبان را مجدداً در برابر حمله Brute Force برای ورود SSH آزمایش می‌کنیم.

hydra -L user.txt -P pass.txt 192.168.0.105 ssh

بروت فورس hydra brute force ssh

همان‌طور که مشاهده می‌شود، این بار هنگام حمله Brute Force روی پورت ۲۲ با پیغام خطای “connection refused” مواجه می‌شویم. حال وضعیت ssh jail را پس‌ازاین حمله بررسی می‌کنیم.

sudo fail2ban-client status ssh

در تصویر زیر مشاهده می‌شود IPی  192.168.0.104 مسدود شده و هرکس می‌تواند فایل log را برای جزئیات بیشتر جستجو کند.

tail /var/log/auth.log

بروت فورس hydra brute force ssh

چگونگی رفع انسداد یک IP در Fial2Ban برای SSH

اگر مجدداً بخواهید IP موردنظر را رفع انسداد کنید،  می‌توانید با دستورات fail2ban-client واردشده و این کار را انجام دهید.

failban-client -i
set ssh unbanip 192.168.0.104
exit
sudo fail2ban-client status ssh

اگر وضعیت ssh jail را یک‌بار دیگر بررسی کنیم، این بار هیچ IP ای در فهرست IPها نمایش داده نخواهد شد.

بروت فورس hydra brute force ssh

محافظت از FTP در برابر حمله‌ی Brute Force

به‌طور مشابه، برای فعال کردن هر یک از این بخش‌ها سر صفحه مربوطه (vsftpd) را از حالت Comment خارج کرده  و مقدار فعال‌شده را مطابق شکل زیر به “true” تغییر دهید. حتی شما می‌توانید میزان حداکثر یا مسیر فایل log را مطابق نیاز خود تغییر دهید.

[vsftpd]
enabled = true
maxretry = 3

بروت فورس hydra brute force ftp

آزمایش Fail2Ban برای VSFTP

حالا فایل jail.local  را ذخیره کرده و سرویس Fail2ban را مجدداً راه‌اندازی کنید. سپس می‌توانید فایل Fail2ban و وضعیت jail  آن‌، ازجمله قوانین IPtables را بررسی نمایید.

sudo service fail2ban restart
sudo fail2ban-client status
sudo fail2ban-client status vsftpd
iptables -S

به کمک دستور بالا می‌توان نتیجه گرفت که اکنون دو jail وجود دارد: ssh و vsftpd. همچنین برخی از سیاست‌های جدید Fail2Ban در iptables ایجادشده است.

بروت فورس hydra brute force ftp

اکنون دستگاه میزبان را در برابر حمله‌ی Brute Force برای ورود FTP می‌آزماییم.

hydra -L user.txt -P pass.txt 192.168.0.105 ftp

بروت فورس hydra brute force ftp

همان‌طور که مشاهده می‌شود این بار حین انجام حمله‌ی Brute Force با خطای “connection refused” مواجه می­شویم. اکنون وضعیت vsftpd jail را مجدداً بررسی می­کنیم.

sudo fail2ban-client status vsftpd

بااین‌حال همان‌طور که در تصویر زیر مشاهده می­شود، IPی ۱۹۲.۱۶۸.۰.۱۰۴ مسدود شده و می‌توان فایل log را برای جزئیات بیش­تر بررسی نمود.

tail /var/log/vsftpd.log

بروت فورس hydra brute force ftp

با نگاهی به فایل log  vsftpd مشاهده می­شود که این فایل شامل تمام جزئیات مربوط به تلاش­های متعدد برای ورود به‌حساب کاربری است.

بروت فورس hydra brute force ftp

رفع انسداد IP در Fail2Ban برای VSFTPD

اگر مجدداً بخواهید IP موردنظر خود را رفع انسداد نمایید، می­توانید با دستور fail2bain-client واردشده و مطابق زیر عمل نمایید:

sudo failban-client -i
set ssh unbanip 192.168.0.104
exit

sudo fail2ban-client status vsftpd حال اگر وضعیت vsftpd jail را مجدداً بررسی نمایید، نام هیچ IP ای در فهرست IPها وجود نخواهد داشت.

بروت فورس hydra brute force ftp

ببینید با نصب ساده یک ابزار مناسب تا چه حد می توان امنیت سامانه را ارتقاء داد. امیدواریم از این مقاله لذت برده باشید و در آزمون نفوذ شبکه خود از آن کمک گرفته و با بهره­گیری از برنامه­ی Fail2Ban امنیت شبکه­ی خود را ارتقاء ببخشید.

مطالب مرتبط:
فهرست ۲۵ مورد از بدترین پسوردهای سال ۲۰۱۸
چند روش برای امن سازی پورت SSH
چگونه از کلمات عبور خود محافظت و مهاجمان را از خود دور کنیم؟

دفاع در برابر حمله بروت فورس با کمک Fail2Ban
To Top