یکی از حمله هایی که معمولا بر روی سیستم عامل های شبیه به Unix زیاد انجام می شود حمله از نوع ssh است . در این حمله افراد سعی می کنند با username و password های فرضی به یک سیستم یونیکسی نفوذ کرده واختیار سیستم را به دست گیرند .
برای مقابله با این روش ها بهترین راه حل استفاده از یک firewall قوی با rule های کار آمد است تا بتوان به راحتی جلوی حمله کننده ها را گرفت . اگر از فایروال استفاده نمی کنید می توانید در FreeBSD از یک برنامه کاربردی و قدرتمند به denyhosts استفاده کنید با این برنامه و با تنظیمات آن به راحتی می توانید جلوی حمله های ssh را گرفته و می توانید ایمیلی مبنی بر حمله ssh را دریافت کنید .
برای نصب این برنامه در FreeBSD کافی است بعد از آپدیت نمودن port های خود در ترمینال دستور زیر را تایپ کنید
cd /usr/ports/security/denyhosts/ make install clean
بعد از مدتی برنامه مورد نظر نصب خواهد . خوب برای کانفیگ باید کار های زیر را انجام دهید . اولین کار این است که کاری کنیم هنگامی که سیستم شروع به کار می کند برنامه denyhosts شروع به کار کند . خوب برای استارت denyhosts در هنگام بوت سیستم باید عبارت زیر را
denyhosts_enable="YES"
در فایل
/etc/rc.conf
قرار می دهیم . در مر حله بعد فایل زیررا با استفاده از یک ویرایشگر مانند vi یا nano باز می کنیم
/etc/hosts.allow
و عبارت های زیر را در آن قرار می دهیم و تغییرات را ذخیره می کنیم
sshd : /etc/hosts.deniedssh : deny
sshd : ALL : allow
حال به شاخه
/etc
می رویم و با استفاده از دستور touch فایلی به نام hosts.denissh ایجاد می کنیم
touch /etc/hosts.deniedssh
بعد از کار های بالا حالا نوبت آن است که فایل کانفیگ مربوط به denyhosts را با توجه به نیاز خود ویرایش کنیم . فایل کانفیگ denyhosts در مسیر زیر وجود دارد
/usr/local/etc/denyhosts.conf
فایل denyhosts.conf را با استفاده از یک ویرایشگر مانند vi باز می کنم و در آن دنبال عبارت زیر یا قسمت زیر می گردم
BLOCK_SERVICE:
در این قسمت ما می توانیم تنظیم کنیم که بر نامه چه سرویس هایی را باید مورد بررسی قرار دهد و آنها را نظارت کند و چون من می خواهم فقط با این برنامه جلوی حملات ssh را بگیرم لذا علامت
#
از جلوی عبارت زیر بر می داریم
BLOCK_SERVICE = sshd
خوب به برنامه تعریف کردیم از بین service هایی که در سیستم من کار می کنند فقط service مربوط به ssh را مورد بررسی قرار دهد .
حال در فایل کانفیگ denyhosts دنبال عبارت زیر می گردم
DENY_THRESHOLD_INVALID
در این قسمت به برنامه تعریف می کنیم که اگر کسی حمله از نوع ssh را بر روی سیستم من انجام داد بعد از چند بار حمله این برنامه جلوی حمله را بگیرد و IP حمله کننده را بلوک یا block کند . من برای خود عدد ۲ را انتخاب کرده ام که این بستگی به نیاز شما دارد و شما می توانید اعداد دیگری را نیز انتخاب کنید . البته لازم به یادآوری است این برنامه به login ها یا درخواست ssh هایی که از طرف یوزر تعریف شده بر روی سیستم واکنشی نشان نمی دهد و جلوی آن را نمی گیرد . فرض کنید من یوزری به نام mfaridi دارم و با این یوزر از جای دیگر تلاش می کنم به سیستم خودم وصل شوم ولی بنا به دلایلی پسورد خود را اشتباه وارد می کنم . این برنامه اول چک می کند آیا چنین یوزری بر روی سیستم وجود دارد یا نه اگر وجود داشت به اجازه ssh های بیشتری را می دهد و اگر وجود نداشت بعد از ۲ بار تلاش دستگاه حمله کننده را برای همیشه در فهرست سیاه خود قرار می دهد و دیگر من با آن IP نمی توانم به سیستم وصل شوم.
حال دنبال عبارت زیر می گردم
DENY_THRESHOLD_VALID
در اینجا تعریف می توان بکنم که یوزر موجود بر روی سیستم چند بار می تواند برای ssh تلاش کند این به درد جایی می خورد که کسی بداند شما به چه یوزری به سیستم login می شوید ولی پسورد ندارد . من برای این قسمت 5 را در نظر گرفته ام.
حال دنبال عبارت زیر می گردم
DENY_THRESHOLD_ROOT
در اینجا می توانیم تعریف کنیم که اگر کسی خواست با یوزر root به سیستم وصل شود بعد از چند بار تلاش IP فرد حمله کننده در لیست سیاه قرار گیرد و جلوی login و تلاش برای ssh را بگیرد که به طور پیش فرض عدد 1 است و عالی است .
این برنامه قسمت های دیگری برای کانفیگ دارد که با توجه به نیاز خود می توانید از آن استفاده کنید.
اگر دوست دارید بعد از هر بار تلاش برای ssh به سیستم ایمیلی دریاف کنید و با ایمیل آگاه شوید در فایل کانفیگ denyhosts دنبال عبارت زیر بگردید
ADMIN_EMAIL
و در جلوی عبارت admin_email ایمیل خود را وارد کنید تا ایمیل ها به آن آدرس فرستاده شود .
خوب من تغغیرات مورد نیاز خودم ار اعمال کردم حال برای استارت denyhosts در FreeBSD عبارت زیر را در ترمینال تایپ می کنم
/usr/local/etc/rc.d/denyhosts start
با این دستور برنامه شروع به کار می کند و شما با دستور زیر می توانید چک کنید که آیا این برنامه در لیست process قرار دارد یا نه
ps -aux | grep deny
خوب خروجی به من نشان می دهد که برنامه کار می کند .
منتظر ایمیل باشید تا ببینید چه کسانی تلاش می کنند به سیستم شما ssh کنند .
لازم به یادآوری است هیچ چیزی جای یک Firewall خوب با rule هایی مستحکم را نمی گیرد . این برنامه به python وابستگی دارد . خرابی پایتون یعنی از کار افتادن برنامه پس به فکر فایروال باشید.