مهدی اشراقی
مهندس شبکه و Embeded system
مهدی اشراقی
مهندس شبکه و Embeded system
نوشته بلاگ

امن کردن SSH با Fail2ban

امن کردن SSH با Fail2ban

در این پست میبینیم Fail2ban  چیست و نحوه نصب و راه اندازی رو بر روی لینوکس توضیح میدم . لطفا با من همراه باشید.

Fail2ban چیست ؟

Fail2ban یک نرم افزار برای جلوگیری از حملات brute-force میباشد. این نرم افزار که به زبان Python نوشته شده و این نرم افزار Firewall نیست ،یه نرم افزار واسط هست برای اینکه log های سیستم شما رو بررسی کنه و اگر تلاشی برای ورود نام موفق چندیدن باره به سیستم شما در حال رخداد باشه اون IP رو به صورت موقت در لیست سیاه Firewall شما قرار بده .  Fail2ban در واقع Fail2ban فایل های لاگ را بررسی میکند و به دنبال ای پی که قصد نفوذ به سیستم و ایجاد اختلال در  امنیت سرور را دارد میگردد و بعد از یافتن اون اقدام به اضافه کردن اون IP به فایروال شما به صورت موقت میکنه.مدیر سرور یا Administrator برای هر فعالیتی در سرور زمانی را تعیین میکنه برای مثال هر فرد میتوانید تا ۳ بار با پسورد اشتباه به سرور درخواست ورود بفرستد Fail2ban افرادی را که از این زمان معین شده تجاوز کرده اند را بلاک میکنه که این کار از ایجاد لاگ های پی در پی و زیاد که پردازشگر سرور را درگیر می نماید جلوگیری میکند.

معایب :

با تمام این تفاسیر و امکانات زیادی که Fail2ban به شما در ایجاد امنیت در سرور میدهد باز هم این نرم افزار محبوب در سه مورد نقص دارد.مورد اول اینکه Fail2ban هیچ تعاملی با بعضی برنامه های خاص مانند API و AGI ندارد و مورد دوم اینکه این برنامه از IP های ورژن ۶ (IPv6) پشتیبانی نمی کند و Fail2ban در صورتی که فرد مخرب از این نوع ای پی برای حملات brute-force استفاده نماید کاری از پیش نخواهد برد.اما مورد سوم که اساسی ترین نقطه ضعف Fail2ban میباشد ناتوانی ان در محافظت از سرور در حملات توزیع شده میباشد. در صورتی که حمله کننده از چند منبع مختلف یرای اتک استفاده نماید این برنامه توانایی پاسخ گویی نخواهد داشت.

 

مراحل نصب و پیکربندی :

روش های نصب این نرم افزار در انواع لینوکس متفاوت است که در ادامه توضیح داده می شود.

  • Sendmail :  یکی از امکانات fail2ban ارسال ایمیل برای اطلاع رسانی از حملات هست ، برای این کار با دستور زیر  Sendmail رو نصب کنید.
  • برای نصب باید در حالت Administrator باشید ، Sudo -i را امتحان کنید .
  • در این مرحله Fail2ban به عنوان یک سرویس نصب میشود

CentOS 7

۱- از آپدیت بودن سیستم عامل خود اطمینان حاصل کنید. سپس Repository یا مخزن epel را نصب کنید:

۲- Fail2Ban را نصب کنید:

۳- نصب Sendmail

۴- نرم افزار و ارسال ایمیل را فعال کنید :

در صورتی که خطایی برای وجود نداشتن دایرکتوری fail2ban مشاهده کردید به صورت دستی آن را اضافه کنید:

Ubuntu

۱- مطمئن شوید که آخرین نسخه سیستم عامل نصب شده باشد:

۲-  Fail2Ban را نصب کنید. در اوبونتو به صورت اتوماتیک سرویس اجرا می شود:

 

۳- نصب افزونه ارسال ایمیل (اختیاری):

۴- اجازه دسترسی به SSH از طریق UFW بدهید و سپس فایروال را روشن کنید.

Debian

۱- مطمئن شوید که آخرین نسخه سیستم عامل نصب شده باشد:

۲-  Fail2Ban را نصب کنید. سرویس به صورت اتوماتیک اجرا می شود:

 

۳- نصب افزونه Sendmail :

توجه: نصب افزونه ایمیل در دبیان ممکن است با خطایی همراه باشد. این خطا ممکن است فرایند نصب را چند دقیقه به تعویق بیاندازد ولی بعد از آن فرایند نصب ادامه پیدا می کند.

Fedora

۱-سیستم عامل خود را آپدیت کنید:

۲- Fail2Ban را نصب کنید:

۳- نصب افزونه Sendmail :

۴- نرم افزار را فعال کنید اگر نیاز دارید سرویس ایمیل را نیز فعال کنید:

 

خوب بعد از بررسی اینکه fail2ban چیست و نحوه نصب اون روی انواع لینوکس به مرحله پیکربندی میرسیم .

ساختار :

دقت داشته باشید که اگر فایلی با نام jail.local بسازید سرویس ابتدا فایل های شما را بررسی میکند جایگذین مقادیر پیش فرض میکند . این ساختار برای فایل action.local هم به همینصورت میباشد.

پیکربندی :

برای پیکر بندی سرویس Fail2ban مراحل زیر رو دنبال کنید .

برای ساخت فایل تنظیمات با دستور زیر یک فایل ایجاد کنید و با ویرایشگز nano اون باز کنید .

در صفحه باز شده این متن رو وارد کنید و اون رو با کلیذ های ترکیبی Ctrl+X بسته و با y اون رو سیو کنید .

حالا سرویس Fail2ban رو یکبار برای اجرا در شروع سیستم عامل فعال و سرویس رو مجدد راه اندازی (Restart) میکنم .

تبریک میگم ! میتونید سرویس رو تست کنید در حالت پیش فرض اگر شما با هر کسی بیشتر از ۵ مرتبه پسورد رو اشتباه بزنه سرویس SSH به مدت ۱۰ دقیقه برای IP تلاش کننده مسدود میشه .

الان یه سوال ؟ این فرآیند چطوری صورت میگیره ؟ خیلی ساده 🙂

این نرم افزار که به زبان پایتون نوشته شده در فایل های log شما که معمولا تمام رخداد ها ثبت میشه دنبال الگو های مشخص میگرده و بعد از پیدا کردن اونها کاری رو که شما به اون محول کردید رو میکنه !مثلا بعد از پیدا کردن ۵ پیام “Wrong Password” در بازه ۲ ساعته و یا کمتر برای من یه ایمیل ارسال کن و اختار بده و اون آدرس رو هم در Firewall برای ۱ روز Reject کن .

۳ فایل در این نرم افزار کار میکنه که میتونید با تغییر در اونها هر سرویس ی که دوست دارید رو امن کنید ( Sip , Ftp , http , … )

  • Filters : الگوی مشخص مربوط به خطا که نرم افزار اونها رو شمارش کنه در log file سیستم
  • Action : کاری که قراره بعد از شناسایش انجام بشه
  • Jails : اطلاع به Fail2ban در حالت یکسان بودن الگوها به log file های انتخابی .

پیکربندی Jails :

پیکربندی Jails به صورت پیش فرض تنیظم شده که به ازای هر ۱۰ تلاش ناموفق ip رو به مدت ۱۲ ساعت مسدود کن که میتونیم این زمان رو برای نتیجه بهتر تغییر بدیم.

موارد قابل تغییر در پیکربندی Jails :

برای تغییر اون دستور زیر رو وارد کنید و وارد ویرایشگر فایل بشید

بعد از باز شدن ویرایشگر فرض کنید میخوایم میزان Block بودن رو بیشتر کنیم و سیستم رو حساس تر کنیم پس مقادیر رو به مسدود بودن ۲۴ ساعت و میزان تلاش ۱۰ مرتبه در بازه ۱۲ ساعت تنظیم میکنیم .

 

  • maxretry : حداکثر میزان مجاز تلاش
  • findtime : بازه زمانی برای تشخیص  Maxretry به ثانیه که برای دستور بالا ۱۲ ساعت (۴۳۲۰۰ ثانیه) تنظیم شد.
  • bantime  : مدت زمان مسدود سازی IP سیستم درخواست کننده به ثانیه که برای مثال بالا ۲۴ ساعت ( ۸۶۴۰۰ ثانیه) تنظیم شد .
  • اگر هم پورت سرویس مورد نظرتون رو عوض کردید با دستور  <port = <port_number تغییر میدم .

حالا سرویس رو دوباره راه اندازی میکنیم (Restart) میکنم

پیکربندی Jails تموم شد میریم سراغ Action.

پیکربندی action :

اگر درخواست بود بگید تا ترجمه کنم .

عیب یابی :

خوب حال فرض میکنیم تمام مراحل رو به صورت صحیح رفتید اما fail2ban فعال نشد چه کنیم ؟

اول از همه باید بدونید log هایی که مربوط به احراز هویت اشتباه ( تلاش برای ورود با نام کاربری و یا رمز عبور اشتباه ) هست در مسیر زیر ذخیره میشه

چک کنید ببینید این فایل در سیستم شما وجود داره یا نه ! اگر نداره برنامه syslog-ng رو نصب کنید تا مشکل برطرف بشه چون بدون این فایل fail2ban کار نمیکنه !

برای اینکه محتویات این فایل رو ببینید اول یه الاش ناموفق داشته باشید به سیستم تا لاگی ساخته بشه .

با دستور زیر چند خط آخر فایل بالا رو میتونید ببینید

 

منبع :

https://www.fail2ban.org/wiki/index.php/Main_Page

https://www.booleanworld.com/protecting-ssh-fail2ban/

برچسب ها:
درج دیدگاه

ضبط پیام صوتی

زمان هر پیام صوتی 1 دقیقه است