روزانه اخبار متعددی در ارتباط با جرائم اینترنتی نظیر برخی از کاربران مضر یا رباتها، بعضی وبسایتها که در دسترس عموم قرار دارند و یا بعضی از سرویسها به گوش میرسد. همواره سعی شده است از طریق مقالات تحلیلی، چگونگی انجام چنین فعالیتهایی، زمانی که سیستم ضعیف و یا حتی اشتباه پیکربندیشده است، بیان شود. بنابراین، انجام برخی اقدامات امنیتی نظیر 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

همانطور که در تصویر فوق مشاهده میشود حساب aarti با رمز ورود ۱۲۳ شناساییشده است. بهطور مشابه سعی میکنیم روی پورت ۲۱ سیستم هدف زمانی که برای ورود غیرمجاز باز است، حمله بروت فورس انجام دهیم. با کمک Hydra سعی خواهیم کرد گواهی ورود FTP را حدس بزنیم.
hydra -L user.txt -P pass.txt 192.168.0.105 ftp

با توجه به تصویر میتوان مشاهده کرد که این سرویسها چقدر بد پیکربندیشدهاند. حتی مدیر شبکه، قوانین پیچیدگی گذرواژه را رعایت نکرده است؛ بنابراین اعمال یک حملهی بروت فورس روی چنین شبکهای آسان خواهد بود.
تنظیمات آزمایشگاه برای پیشگیری از نفوذ
میخواهیم تنظیمات مربوط به 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 استفاده کنید.

پیکربندی 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

محافظت از SSH در برابر حملهی بروت فورس
درنهایت، ما سراغ بخشی از فایل پیکربندی که با سرویسهای خاصی سروکار دارد، میرویم. اینها توسط سر صفحههای بخش مانند SSH شناسایی میشوند. همانطور که در تصویر زیر نشان دادهشده است برای فعال کردن هر یک از این بخشها سر صفحه مربوطه را از حالت Comment خارج کرده و مقدار فعالشده را به “true” تغییر دهید. سپس فایل jail.local را ذخیره کرده و سرویس Fail2ban را مجدداً راهاندازی کنید:
[ssh]
enable = true
service fail2ban restart

آزمایش Fail2Ban برای SSH
Fail2an یک فرمان “fail2ban-client” را ارائه میدهد که برای اجرای Fail2Ban از خط فرمان مورداستفاده قرار میگیرد تا بررسی کند که Fail2Ban در حال اجرا است و jail SSH فعالشده است. شما میتوانید از syntax زیر برای تائید وضعیت خود استفاده کنید.
sudo fail2ban-client status
sudo fail2ban-client status ssh
همانطور که مشاهده میشود در حال حاضر filter list و action list روی صفر تنظیمشده یا به عبارتی خالی است. اگر کسی تلاش کند که از حد مجاز عبور نماید، این مقادیر تغییر خواهند کرد.

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

اکنون دستگاه میزبان را مجدداً در برابر حمله Brute Force برای ورود SSH آزمایش میکنیم.
hydra -L user.txt -P pass.txt 192.168.0.105 ssh

همانطور که مشاهده میشود، این بار هنگام حمله Brute Force روی پورت ۲۲ با پیغام خطای “connection refused” مواجه میشویم. حال وضعیت ssh jail را پسازاین حمله بررسی میکنیم.
sudo fail2ban-client status ssh
در تصویر زیر مشاهده میشود IPی 192.168.0.104 مسدود شده و هرکس میتواند فایل log را برای جزئیات بیشتر جستجو کند.
tail /var/log/auth.log

چگونگی رفع انسداد یک 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ها نمایش داده نخواهد شد.

محافظت از FTP در برابر حملهی Brute Force
بهطور مشابه، برای فعال کردن هر یک از این بخشها سر صفحه مربوطه (vsftpd) را از حالت Comment خارج کرده و مقدار فعالشده را مطابق شکل زیر به “true” تغییر دهید. حتی شما میتوانید میزان حداکثر یا مسیر فایل log را مطابق نیاز خود تغییر دهید.
[vsftpd]
enabled = true
maxretry = 3

آزمایش 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 ایجادشده است.

اکنون دستگاه میزبان را در برابر حملهی Brute Force برای ورود FTP میآزماییم.
hydra -L user.txt -P pass.txt 192.168.0.105 ftp

همانطور که مشاهده میشود این بار حین انجام حملهی Brute Force با خطای “connection refused” مواجه میشویم. اکنون وضعیت vsftpd jail را مجدداً بررسی میکنیم.
sudo fail2ban-client status vsftpd
بااینحال همانطور که در تصویر زیر مشاهده میشود، IPی ۱۹۲.۱۶۸.۰.۱۰۴ مسدود شده و میتوان فایل log را برای جزئیات بیشتر بررسی نمود.
tail /var/log/vsftpd.log

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

رفع انسداد 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ها وجود نخواهد داشت.

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