دوستان و همراهان عزیز ، سرور اختصاصی مترجم فراز نتورک راه اندازی شد ، با توجه به api تخصصی خریداری شده برای سرور ، یه ترجمه حرفه ای تولید کرده و در اختیار شما بزرگواران قرار می دهیم

دانلود کتاب آموزشی پیشرفته نصب و پیکربندی سرویس های امنیتی Fail2Ban جلد اول

دسته‌بندی: برچسب: تاریخ به روز رسانی: 31 خرداد 1405 تعداد بازدید: 486 بازدید

۴۰۰,۰۰۰تومان

torobpay
هر قسط با ترب‌پی: ۱۰۰,۰۰۰تومان
۴ قسط ماهانه. بدون سود، چک و ضامن.
snapppay
هر قسط با اسنپ‌پی: ۱۰۰,۰۰۰تومان
۴ قسط ماهانه. بدون سود، چک و ضامن.

نصب و پیکربندی سرویس امنیتی Fail2Ban


بخش 1. مقدمه و آشنایی با Fail2Ban

 

فصل 1. تعریف Fail2Ban

  • ابزارهای رایج برای محافظت از سرورها
  • معرفی Fail2Ban به عنوان یک ابزار پیشرفته برای مسدودسازی آی‌پی‌های مخرب
  • تفاوت Fail2Ban با فایروال‌های سنتی

فصل 2. نحوه عملکرد Fail2Ban

  • شناسایی آی‌پی‌های مشکوک از روی لاگ‌های سیستم
  • اعمال قوانین برای مسدودسازی خودکار آی‌پی‌ها با استفاده از ابزارهایی مانند iptables
  • فرآیند رفع مسدودیت آی‌پی‌ها پس از اتمام زمان تعیین شده

فصل 3. قابلیت‌های پیشرفته Fail2Ban

  • مسدودسازی توزیع‌شده با استفاده از ابزارهای جانبی
  • امکان ارسال هشدارهای ایمیلی در زمان حمله
  • سفارشی‌سازی فیلترها برای انواع سرویس‌ها

فصل 4. اهمیت Fail2Ban در امنیت سرور

  • جلوگیری از حملات brute force به سرویس‌های حساس مانند:
    • SSH
    • FTP
    • وب‌سرورها (Apache/Nginx)
  • پیشگیری از تلاش‌های ورود غیرمجاز به سرویس‌های ایمیل
  • حفظ پایداری سیستم در برابر حملات

فصل 5. بررسی نمونه‌های واقعی حملات

  • تحلیل چند مثال واقعی از حملات brute force
  • نقش Fail2Ban در شناسایی و مسدودسازی مهاجمان
  • کاهش تعداد تلاش‌های ناموفق برای دسترسی به سرور

فصل 6. چرا Fail2Ban ابزار ضروری است؟

  • ساده‌سازی مدیریت امنیت سرور
  • کاهش نیاز به مداخله دستی در مسدودسازی آی‌پی‌های مخرب
  • کاهش بار پردازشی سرور از طریق مدیریت هوشمندانه تلاش‌های غیرمجاز

بخش 2. نصب Fail2Ban

فصل 1. بررسی پیش‌نیازهای نصب

  • بررسی نسخه سیستم‌عامل و نیازمندی‌های اولیه:
    • اطمینان از به‌روزبودن سیستم
    • بررسی سازگاری نسخه سیستم‌عامل با Fail2Ban
  • نصب پکیج‌های ضروری:
    • نصب ابزارهای موردنیاز مانند iptables، ufw (برای فایروال)، و sendmail (برای ارسال هشدارها)
    • نصب و پیکربندی Python در صورت نیاز
  • اطمینان از پشتیبانی فایروال:
    • بررسی وضعیت و فعال‌سازی iptables یا firewalld
    • ایجاد تنظیمات اولیه فایروال برای همکاری با Fail2Ban

فصل 2. نصب Fail2Ban در سیستم‌های مختلف

  • نصب در سیستم‌های مبتنی بر Debian/Ubuntu
  • نصب در سیستم‌های مبتنی بر RHEL/CentOS
  • نصب Fail2Ban از سورس:
    • دانلود سورس از GitHub یا وب‌سایت رسمی
    • نصب وابستگی‌های موردنیاز (Python، pip، و کتابخانه‌های مرتبط)
    • کامپایل و نصب Fail2Ban با استفاده از make و make install

فصل 3. راه‌اندازی اولیه Fail2Ban

  • فعال‌سازی سرویس:
    • راه‌اندازی Fail2Ban با استفاده از دستور systemctl start fail2ban
    • تنظیم Fail2Ban برای شروع خودکار هنگام بوت با دستور systemctl enable fail2ban
  • تست نصب:
    • بررسی وضعیت سرویس با دستور fail2ban-client status
    • مشاهده لاگ‌های مربوط به Fail2Ban برای اطمینان از عملکرد صحیح

فصل 4. پیکربندی اولیه پس از نصب

  • بررسی و تنظیم فایل‌های پیکربندی:
    • مشاهده فایل اصلی پیکربندی در /etc/fail2ban/fail2ban.conf
    • تنظیم فایل Jail در مسیر /etc/fail2ban/jail.conf
  • تنظیم فایروال:
    • اطمینان از باز بودن پورت‌های ضروری برای سرویس‌هایی که باید توسط Fail2Ban نظارت شوند (مانند پورت SSH)

فصل 5. رفع مشکلات رایج هنگام نصب

  • حل مشکلات وابستگی:
    • خطاهای مربوط به Python یا pip
    • بررسی نصب پکیج‌های گم‌شده
  • خطاهای مربوط به فایروال:
    • مشکلات مرتبط با ناسازگاری iptables و firewalld
    • رفع مشکلات دسترسی به پورت‌ها در سیستم‌های لینوکسی
  • مشکلات عملکردی Fail2Ban:
    • رفع خطاهای سرویس با دستور journalctl -xe
    • عیب‌یابی و بررسی لاگ‌ها در مسیر /var/log/fail2ban.log

بخش 3. پیکربندی Fail2Ban

 

فصل 1. آشنایی با فایل‌های پیکربندی Fail2Ban

  • بررسی ساختار فایل‌های اصلی در مسیر /etc/fail2ban/
  • نقش فایل‌های زیر در پیکربندی:
    • jail.conf
    • jail.local
    • action.d و filter.d
  • دلیل استفاده از فایل jail.local به جای jail.conf برای جلوگیری از بازنویسی تنظیمات پیش‌فرض

فصل 2. تنظیمات اولیه در فایل jail.conf

  • تنظیمات عمومی (Global):
    • ignoreip: تعریف آدرس‌های IP مجاز (Whitelist)
    • bantime: مدت زمان مسدودسازی IP‌های مشکوک
    • findtime: زمان بازبینی تعداد تلاش‌های ناموفق
    • maxretry: حداکثر تعداد تلاش‌های مجاز پیش از مسدودسازی
  • تنظیم لاگ‌های Fail2Ban:
    • logpath: مسیر فایل‌های لاگ سرویس‌ها
    • فعال‌سازی و مدیریت تنظیمات syslog

فصل 3. ایجاد فایل‌های پیکربندی سفارشی

  • ساخت فایل‌های جدید jail.local برای تغییرات سفارشی
  • تعریف Jail‌ها برای سرویس‌های خاص مانند:
    • SSH
    • Apache/Nginx
    • FTP
    • Postfix/Dovecot (سرویس‌های ایمیل)
  • تنظیمات پیشرفته برای هر Jail:
    • تنظیم زمان‌بندی‌های خاص (ban time و find time)
    • تعریف پیام‌های هشدار برای مدیر سیستم

فصل 4. مدیریت قوانین Jail

  • فعال و غیرفعال کردن Jail‌ها:
    • نحوه غیرفعال کردن Jail‌های غیرضروری برای بهبود عملکرد
    • تست Jail‌ها با استفاده از دستور fail2ban-client
  • تنظیمات مرتبط با مدت زمان بلاک و رفع بلاک:
    • bantime: مدت زمان بلاک
    • persistent: مسدودسازی مداوم IP‌ها پس از راه‌اندازی مجدد سیستم
  • بررسی و اصلاح پیکربندی‌های پیش‌فرض برای سرویس‌ها

فصل 5. پیکربندی رفتار Fail2Ban

  • تنظیم اقدامات پیش‌فرض (Actions):
    • iptables-multiport: استفاده از iptables برای بلاک کردن
    • sendmail: ارسال ایمیل هشدار
  • تعریف اقدامات سفارشی:
    • اضافه کردن اکشن‌های جدید مانند ارسال پیام به Slack یا Telegram
  • تست اکشن‌ها برای بررسی صحت عملکرد

فصل 6. پیکربندی Fail2Ban برای سرویس‌های خاص

  • تنظیمات پیکربندی برای سرویس‌های حساس:
    • SSH:
      • جلوگیری از حملات brute force
      • محدودسازی دسترسی به IP‌های خاص
    • Apache/Nginx:
      • جلوگیری از حملات DDoS
      • شناسایی و مسدودسازی درخواست‌های غیرمجاز
    • FTP:
      • مسدودسازی تلاش‌های ناموفق در سرویس‌های vsftpd یا ProFTPD
    • ایمیل:
      • حفاظت از سرورهای Postfix، Exim و Dovecot

فصل 7. پیکربندی مدیریت گزارش‌ها و هشدارها

  • تنظیم Fail2Ban برای ارسال گزارش‌ها:
    • ارسال ایمیل هشدار با استفاده از sendmail
    • ذخیره گزارش‌های مسدودسازی در فایل‌های جداگانه
  • استفاده از فرمان‌های fail2ban-client برای مشاهده وضعیت Jail‌ها

فصل 8. تست و عیب‌یابی تنظیمات پیکربندی

  • تست پیکربندی با دستور:
    • fail2ban-client status
    • fail2ban-client get <jail> banip
  • عیب‌یابی مشکلات پیکربندی:
    • بررسی لاگ‌ها در مسیر /var/log/fail2ban.log
    • حل مشکلات مربوط به مسدودسازی‌های نادرست

بخش 4. پیکربندی فیلترهای Fail2Ban

 

فصل 1. آشنایی با فیلترهای Fail2Ban

  • تعریف فیلتر در Fail2Ban و اهمیت آن در شناسایی حملات
  • مکان و ساختار فایل‌های فیلتر (/etc/fail2ban/filter.d)
  • بررسی اجزای اصلی یک فایل فیلتر (failregex، ignoreregex، و بخش‌های توضیحی)

فصل 2. فیلترهای پیش‌فرض

  • لیست فیلترهای از پیش تعریف‌شده برای سرویس‌های رایج مانند:
    • SSH (ssh.conf)
    • FTP (vsftpd.conf، proftpd.conf)
    • HTTP (apache-badbots.conf، nginx-http-auth.conf)
    • ایمیل (postfix.conf، dovecot.conf)
  • نحوه شناسایی لاگ‌های مرتبط با این فیلترها

فصل 3. ساخت و ویرایش فیلترهای سفارشی

  • دلایل استفاده از فیلترهای سفارشی برای سرویس‌های غیرمتعارف یا خاص
  • فرآیند ایجاد یک فایل فیلتر جدید:
    • انتخاب نام مناسب برای فیلتر
    • تعریف مسیر لاگ فایل
    • نوشتن failregex برای شناسایی الگوهای مشکوک
    • افزودن ignoreregex برای نادیده گرفتن برخی پیام‌های لاگ
  • نمونه‌هایی از failregex برای شناسایی تلاش‌های brute-force

فصل 4. تست و اعتبارسنجی فیلترها

  • استفاده از ابزار fail2ban-regex برای تست فیلترهای نوشته‌شده:
    • بررسی صحت failregex با داده‌های لاگ واقعی
    • تحلیل تطابق regex با پیام‌های لاگ
  • عیب‌یابی و اصلاح فیلترهای غیرکارآمد

فصل 5. اعمال فیلترها در Jailها

  • نحوه تعریف و مرتبط کردن فیلترها با Jailها در فایل jail.local
  • تنظیمات برای محدود کردن دسترسی براساس فیلترها
  • پیکربندی میزان زمان نگهداری لاگ‌ها برای بررسی توسط فیلتر

فصل 6. نکات پیشرفته در پیکربندی فیلترها

  • ترکیب چندین regex برای شناسایی انواع مختلف حملات در یک سرویس
  • استفاده از wildcards در failregex برای شناسایی الگوهای متنوع
  • پیاده‌سازی فیلترهایی با حساسیت بیشتر برای لاگ‌های پیچیده

فصل 7. بهینه‌سازی عملکرد فیلترها

  • محدود کردن فیلترها برای بررسی لاگ‌های مربوط به زمان مشخص
  • کاهش سربار منابع سیستم با تنظیمات دقیق regex
  • مرتب‌سازی و سازمان‌دهی فایل‌های فیلتر برای نگهداری و مدیریت آسان‌تر

بخش 5. استفاده از Fail2Ban با Iptables

 

فصل 1. مقدمه‌ای بر Iptables و تعامل آن با Fail2Ban

  • توضیح Iptables و نقش آن در مدیریت ترافیک شبکه
  • نحوه تعامل Fail2Ban با Iptables برای مسدودسازی IP‌های مشکوک
  • اهمیت هماهنگی بین Fail2Ban و Iptables برای ایجاد یک سیستم امنیتی قوی

فصل 2. تنظیمات پایه Iptables برای Fail2Ban

  • نصب و فعال‌سازی Iptables بر روی سیستم
  • بررسی تنظیمات پیش‌فرض Iptables در لینوکس
  • افزودن قوانین اولیه در Iptables برای Fail2Ban

فصل 3. پیکربندی Fail2Ban برای استفاده از Iptables

  • بررسی فایل‌های پیکربندی مرتبط: jail.local و jail.conf
  • تعریف فیلترها و Jail‌ها برای سرویس‌های مختلف با استفاده از Iptables
  • تنظیم Ban Action به عنوان iptables-multiport یا iptables-allports

فصل 4. قوانین مسدود سازی در Iptables

  • نحوه تعریف قوانین مسدود سازی IP‌های مشکوک
  • افزودن آدرس‌های مسدود شده به Chain‌های سفارشی در Iptables
  • تست مسدودسازی و بررسی عملکرد قوانین

فصل 5. تنظیمات پیشرفته در Fail2Ban و Iptables

  • استفاده از IP Sets برای بهبود کارایی مسدود سازی در مقیاس بزرگ
  • ترکیب Fail2Ban و Iptables با ابزارهای دیگر امنیتی
  • تنظیم چندین Jail برای سرویس‌های حساس (مانند SSH، FTP، HTTP)

فصل 6. مدیریت فهرست‌های سیاه و سفید

  • افزودن IP‌ها به لیست سفید (Whitelist) در Fail2Ban
  • مدیریت IP‌های مسدود شده در Iptables
  • بازبینی و ویرایش قوانین مرتبط با آدرس‌های IP خاص

فصل 7. مانیتورینگ و گزارش‌گیری از Iptables و Fail2Ban

  • بررسی لاگ‌های Fail2Ban و Iptables برای تحلیل حملات
  • استفاده از دستور fail2ban-client برای مشاهده وضعیت Jail‌ها
  • ایجاد گزارش‌های سفارشی از قوانین Iptables و عملکرد Fail2Ban

فصل 8. تست و عیب‌یابی تنظیمات

  • بررسی عملکرد Fail2Ban و Iptables با استفاده از ابزارهای تست حملات
  • رفع مشکلات رایج مانند عدم مسدودسازی IP‌ها
  • استفاده از دستورات iptables -L و fail2ban-client برای عیب‌یابی
[cdb_course_lessons title=”بخش 1. مقدمه و آشنایی با Fail2Ban”][cdb_course_lesson title=”فصل 1. تعریف Fail2Ban”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”ابزارهای رایج برای محافظت از سرورها” subtitle=”توضیحات کامل”]برای محافظت از سرورها و جلوگیری از دسترسی غیرمجاز یا حملات امنیتی، استفاده از ابزارها و تکنیک‌های مختلف امنیتی ضروری است. در این بخش، به برخی از ابزارهای رایج و کاربردی برای افزایش امنیت سرورها اشاره خواهیم کرد که شامل فایروال‌ها، سیستم‌های شناسایی نفوذ (IDS)، سیستم‌های پیشگیری از نفوذ (IPS) و ابزارهای مسدودسازی حملات DDoS است.

1. فایروال‌ها (Firewalls)

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

  • iptables (در لینوکس): یکی از رایج‌ترین فایروال‌ها در سیستم‌عامل‌های لینوکسی است. با استفاده از iptables می‌توان قوانین دقیقی برای کنترل ترافیک شبکه و مسدودسازی بسته‌های مشکوک ایجاد کرد.
  • UFW (Uncomplicated Firewall): یک ابزار فایروال ساده‌تر برای مدیریت iptables است و معمولاً در توزیع‌های مبتنی بر Ubuntu و Debian استفاده می‌شود.
  • firewalld (در RHEL/CentOS): این ابزار بر مبنای مناطق (zones) تنظیم می‌شود و به‌راحتی می‌توان قوانین فایروال را مدیریت کرد.

2. سیستم‌های شناسایی نفوذ (IDS)

سیستم‌های شناسایی نفوذ، به‌منظور نظارت و شناسایی فعالیت‌های غیرمجاز یا مشکوک در شبکه یا سیستم طراحی شده‌اند. این سیستم‌ها معمولاً به‌صورت آنلاین عمل می‌کنند و به‌سرعت به تحلیل و شناسایی تهدیدات می‌پردازند. برخی از سیستم‌های IDS معروف عبارتند از:

  • Snort: یک ابزار منبع‌باز برای شناسایی نفوذ در شبکه است که توانایی شناسایی حملات مختلف را دارد و می‌تواند فعالیت‌های مشکوک را گزارش دهد.
  • Suricata: مشابه Snort است و ویژگی‌های اضافی مانند تحلیل ترافیک HTTPS را نیز دارد.

3. سیستم‌های پیشگیری از نفوذ (IPS)

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

  • Bro (Zeek): یک سیستم IPS منبع‌باز است که توانایی تحلیل ترافیک شبکه را دارد و به‌ویژه برای شبکه‌های بزرگ مناسب است.
  • OSSEC: یکی از ابزارهای IPS است که می‌تواند فعالیت‌های مشکوک را شناسایی کرده و به‌طور خودکار اقدامات امنیتی انجام دهد.

4. Fail2Ban

ابزاری است که برای مسدودسازی خودکار IPهای مشکوک استفاده می‌شود. این ابزار در سرورهای لینوکسی به‌ویژه برای مقابله با حملات brute force به‌طور گسترده‌ای استفاده می‌شود. Fail2Ban لاگ‌های سیستم را بررسی می‌کند و اگر بیش از حد تلاش ناموفق برای ورود به سیستم مشاهده کند، به‌طور خودکار IP مهاجم را مسدود می‌کند.

5. سیستم‌های مدیریت پچ و به‌روزرسانی (Patch Management Systems)

برای جلوگیری از سوءاستفاده از آسیب‌پذیری‌های شناخته‌شده در نرم‌افزارها، ابزارهای مدیریت پچ و به‌روزرسانی اهمیت زیادی دارند. این ابزارها به‌طور خودکار به‌روزرسانی‌های امنیتی را اعمال کرده و از به‌روز نبودن سیستم‌ها جلوگیری می‌کنند.

  • WSUS (Windows Server Update Services): در محیط‌های ویندوزی برای مدیریت و نصب پچ‌های امنیتی به‌طور مرکزی استفاده می‌شود.
  • YUM (در لینوکس): ابزاری برای مدیریت بسته‌ها در سیستم‌عامل‌های لینوکسی است و می‌تواند به‌طور خودکار بسته‌های امنیتی جدید را نصب کند.

6. ابزارهای مدیریت رمزعبور

رمزعبورهای قوی و استفاده از ابزارهای مدیریت رمزعبور یکی از بهترین روش‌ها برای حفاظت از سیستم‌ها و حساب‌های کاربری است. این ابزارها به‌طور خودکار رمزعبورهای پیچیده را تولید کرده و آن‌ها را به‌طور ایمن ذخیره می‌کنند.

  • LastPass: یکی از ابزارهای مدیریت رمزعبور محبوب است که می‌تواند رمزعبورهای قوی را ایجاد و ذخیره کند.
  • 1Password: یک ابزار مدیریت رمزعبور ایمن است که برای ذخیره رمزهای عبور و همچنین اطلاعات حساس دیگر طراحی شده است.

7. WAF (Web Application Firewall)

فایروال‌های برنامه وب (WAF) برای محافظت از برنامه‌های وب در برابر حملات مختلف مانند SQL Injection، Cross-Site Scripting (XSS) و حملات دیگر طراحی شده‌اند. این فایروال‌ها معمولاً به‌صورت لایه‌ای بین کاربر و سرور وب قرار می‌گیرند و ترافیک ورودی را تحلیل و فیلتر می‌کنند.

  • ModSecurity: یکی از فایروال‌های وب معروف است که به‌طور گسترده با سرورهای Apache و Nginx استفاده می‌شود.
  • Cloudflare: یکی از سرویس‌های امنیتی آنلاین است که خدمات WAF را ارائه می‌دهد و به‌طور خودکار از برنامه‌های وب محافظت می‌کند.

8. DDoS Protection Tools

حملات DDoS (Denial of Service) می‌توانند باعث کندی و حتی قطع دسترسی به سرویس‌ها شوند. برای جلوگیری از چنین حملاتی، استفاده از ابزارهای مقابله با DDoS ضروری است.

  • Cloudflare: علاوه بر WAF، این سرویس خدمات حفاظت در برابر حملات DDoS را نیز ارائه می‌دهد.
  • AWS Shield: سرویس امنیتی آمازون برای مقابله با حملات DDoS است که از ترافیک شبکه و برنامه‌های مبتنی بر AWS محافظت می‌کند.

9. سیستم‌های گزارش‌دهی و مانیتورینگ

برای شناسایی و پاسخ به تهدیدات به‌طور مؤثر، نظارت مستمر بر وضعیت سرورها ضروری است. ابزارهای مانیتورینگ و گزارش‌دهی به‌صورت ۲۴/۷ وضعیت سرورها و سیستم‌های امنیتی را بررسی کرده و هشدارهایی در مورد فعالیت‌های مشکوک ارسال می‌کنند.

  • Nagios: ابزاری برای نظارت بر وضعیت سرورها، شبکه و برنامه‌ها است که می‌تواند مشکلات را شناسایی کرده و هشدار دهد.
  • Zabbix: یک ابزار دیگر برای نظارت بر سیستم‌های شبکه‌ای است که می‌تواند وضعیت عملکرد سرورها و سرویس‌ها را به‌طور مداوم پایش کند.

جمع‌بندی

در محیط‌های سروری امروزی، برای حفظ امنیت سرورها، استفاده از ابزارهای متنوع امنیتی الزامی است. ابزارهایی مانند فایروال‌ها، IDS/IPS، Fail2Ban، WAF، و ابزارهای مدیریت پچ به‌شدت برای پیشگیری از تهدیدات و حملات سایبری مهم هستند. هر یک از این ابزارها به‌طور تخصصی به محافظت از بخش‌های مختلف سرور کمک می‌کنند و به‌طور کلی، استفاده از یک استراتژی امنیتی چندلایه برای حفاظت از سرورها توصیه می‌شود.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”معرفی Fail2Ban: ابزاری پیشرفته برای مسدودسازی آی‌پی‌های مخرب” subtitle=”توضیحات کامل”]Fail2Ban یک ابزار امنیتی متن‌باز است که برای جلوگیری از حملات brute-force و دیگر تهدیدات امنیتی طراحی شده است. این ابزار به‌ویژه در محیط‌های لینوکسی مورد استفاده قرار می‌گیرد و به‌طور خودکار آی‌پی‌های مشکوک یا مخرب را پس از تعدادی تلاش ناموفق برای ورود به سیستم مسدود می‌کند.

عملکرد کلی Fail2Ban

هدف اصلی Fail2Ban جلوگیری از دسترسی غیرمجاز به سیستم‌ها با مسدودسازی موقت یا دائمی آی‌پی‌هایی است که در تلاش برای حملات brute-force به سرور هستند. این ابزار به‌ویژه برای جلوگیری از حملات به سرویس‌هایی مانند SSH، FTP، ایمیل، و دیگر پروتکل‌های شبکه‌ای که نیاز به احراز هویت دارند، مفید است.

نحوه عملکرد:

  1. نظارت بر لاگ‌ها: Fail2Ban به‌طور مداوم لاگ‌های سیستم را بررسی می‌کند و به‌دنبال الگوهایی می‌گردد که نشان‌دهنده تلاش‌های ناموفق ورود به سیستم هستند. این تلاش‌ها می‌توانند شامل تعداد زیادی تلاش ناموفق برای وارد کردن رمزعبور در سرویس‌هایی مانند SSH یا FTP باشند.
  2. تشخیص حملات: هنگامی که Fail2Ban تعداد مشخصی تلاش ناموفق (معمولاً به‌صورت پیش‌فرض 5 تلاش) را از یک آی‌پی مشاهده کند، آن آی‌پی به‌عنوان یک تهدید شناسایی می‌شود.
  3. مسدودسازی آی‌پی: پس از شناسایی تهدید، Fail2Ban اقدام به مسدودسازی آن آی‌پی می‌کند. این مسدودسازی معمولاً از طریق فایروال‌هایی مانند iptables یا firewalld انجام می‌شود. آی‌پی مسدودشده به‌طور موقت یا دائمی از دسترسی به سیستم جلوگیری می‌کند.
  4. ارسال هشدار: علاوه بر مسدودسازی آی‌پی‌ها، Fail2Ban می‌تواند هشدارهایی را به مدیر سیستم ارسال کند تا او از وقوع حملات آگاه شود.

ویژگی‌های کلیدی Fail2Ban

  • پشتیبانی از چندین پروتکل: Fail2Ban می‌تواند برای شناسایی تلاش‌های غیرمجاز در پروتکل‌های مختلفی مانند SSH، FTP، HTTP، IMAP، POP3 و بسیاری دیگر تنظیم شود. این ویژگی به‌ویژه برای محافظت از سرورهای چندمنظوره مفید است.
  • پیکربندی انعطاف‌پذیر: Fail2Ban به‌طور پیش‌فرض دارای قوانین و فیلترهای از پیش تنظیم‌شده برای مسدودسازی آی‌پی‌های مخرب است. با این حال، می‌توان آن را به‌صورت سفارشی‌سازی شده برای تنظیمات خاص سیستم و نیازهای امنیتی پیکربندی کرد.
  • تشخیص حملات متنوع: Fail2Ban می‌تواند انواع مختلفی از حملات مانند brute-force، DDoS، و تلاش‌های دیگر برای نفوذ به سیستم را شناسایی کرده و از آن‌ها جلوگیری کند.
  • مدیریت ساده: Fail2Ban از یک فایل پیکربندی ساده استفاده می‌کند که به‌راحتی می‌توان آن را ویرایش کرد. همچنین با استفاده از دستورات خط فرمان می‌توان تنظیمات مختلف آن را مدیریت و نظارت کرد.
  • افزایش امنیت سرورها: از آنجایی که Fail2Ban به‌طور خودکار حملات brute-force را شناسایی کرده و آی‌پی‌های مخرب را مسدود می‌کند، این ابزار می‌تواند به‌طور مؤثری از سرورهای شما در برابر حملات مختلف محافظت کند.

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

  1. نصب Fail2Ban: برای نصب Fail2Ban در سیستم‌های مبتنی بر دبیان/اوبونتو، می‌توان از دستور زیر استفاده کرد:
    sudo apt update
    sudo apt install fail2ban
    

    در سیستم‌های RHEL/CentOS از دستور زیر برای نصب استفاده می‌شود:

    sudo yum install fail2ban
    
  2. پیکربندی Fail2Ban: پس از نصب، باید فایل پیکربندی Fail2Ban را ویرایش کنید. فایل پیکربندی اصلی در مسیر /etc/fail2ban/jail.conf قرار دارد، اما توصیه می‌شود که این فایل را کپی کرده و به jail.local تغییر نام دهید تا تغییرات شما در به‌روزرسانی‌ها از بین نروند.برای کپی فایل پیکربندی اصلی:
    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    

    سپس، می‌توانید فایل jail.local را ویرایش کنید و تنظیمات را مطابق با نیازهای خود تغییر دهید.

    به‌عنوان مثال، برای فعال‌سازی Fail2Ban برای سرویس SSH، در فایل پیکربندی، قسمت [sshd] را پیدا کرده و مقدار enabled را به true تغییر دهید:

    [sshd]
    enabled = true
    
  3. راه‌اندازی Fail2Ban: پس از انجام تغییرات لازم، Fail2Ban را راه‌اندازی کنید:
    sudo systemctl restart fail2ban
    
  4. بررسی وضعیت Fail2Ban: برای بررسی وضعیت فعلی Fail2Ban و اینکه آیا آی‌پی‌ها مسدود شده‌اند یا نه، می‌توانید از دستور زیر استفاده کنید:
    sudo fail2ban-client status
    

    این دستور به شما اطلاعاتی در مورد Jail‌های فعال و تعداد آی‌پی‌های مسدودشده نشان خواهد داد.

مزایا و معایب Fail2Ban

مزایا:

  • حفاظت خودکار: Fail2Ban می‌تواند به‌طور خودکار تهدیدات را شناسایی کرده و پاسخ دهد.
  • کاهش بار مدیریتی: نیازی به نظارت مداوم بر تلاش‌های غیرمجاز به‌صورت دستی ندارید.
  • انعطاف‌پذیری بالا: می‌توان آن را برای انواع مختلف حملات و پروتکل‌ها سفارشی کرد.
  • متن‌باز و رایگان: Fail2Ban یک ابزار متن‌باز است که می‌توان آن را به‌صورت رایگان استفاده و سفارشی‌سازی کرد.

معایب:

  • تنظیمات پیشرفته مورد نیاز: برای برخی از پروتکل‌ها و نیازهای خاص، ممکن است نیاز به پیکربندی‌های پیچیده‌تری داشته باشید.
  • مسدودسازی اشتباهی: در صورت پیکربندی نادرست، Fail2Ban ممکن است آی‌پی‌های معتبر را مسدود کند.

جمع‌بندی

Fail2Ban یکی از ابزارهای موثر و محبوب برای مسدودسازی آی‌پی‌های مخرب است که می‌تواند به‌طور خودکار از سرورها در برابر حملات brute-force و دیگر تهدیدات محافظت کند. این ابزار با نظارت بر لاگ‌های سیستم و شناسایی تلاش‌های ناموفق برای ورود، آی‌پی‌های مشکوک را مسدود می‌کند. استفاده از Fail2Ban می‌تواند به‌طور قابل توجهی امنیت سرورهای شما را افزایش دهد و از منابع سیستم در برابر حملات محافظت کند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”تفاوت Fail2Ban با فایروال‌های سنتی” subtitle=”توضیحات کامل”]Fail2Ban و فایروال‌های سنتی هر دو ابزارهای امنیتی هستند که هدف اصلی‌شان محافظت از سیستم‌ها و سرورها در برابر تهدیدات و حملات خارجی است. اما آن‌ها در نحوه عملکرد، هدف و کاربرد تفاوت‌های قابل توجهی دارند. در اینجا به بررسی این تفاوت‌ها می‌پردازیم:

1. عملکرد و نحوه کار

  • Fail2Ban:
    • Fail2Ban یک ابزار امنیتی است که به‌طور خاص برای شناسایی و مسدودسازی آی‌پی‌هایی که در تلاش برای انجام حملات brute-force یا دیگر حملات مشابه هستند طراحی شده است.
    • Fail2Ban با بررسی لاگ‌های سرور و شناسایی تلاش‌های ناموفق برای ورود به سیستم، به‌طور خودکار آی‌پی‌های مشکوک را شناسایی و مسدود می‌کند.
    • پس از شناسایی تعداد مشخصی تلاش ناموفق (مانند وارد کردن رمز عبور اشتباه) از یک آی‌پی، Fail2Ban آن آی‌پی را به مدت زمان مشخصی از دسترسی به سرویس مسدود می‌کند.
    • به عبارت دیگر، Fail2Ban مبتنی بر فعالیت‌های مشکوک است و فقط در صورتی واکنش نشان می‌دهد که رفتار مشکوکی در سرور مشاهده شود.
  • فایروال‌های سنتی:
    • فایروال‌های سنتی از قواعد ثابت و از پیش تعیین‌شده برای فیلتر کردن ترافیک استفاده می‌کنند. آن‌ها بررسی می‌کنند که آیا درخواست‌های ورودی یا خروجی از شبکه یا سیستم مجاز هستند یا نه.
    • فایروال‌ها می‌توانند ترافیک را بر اساس معیارهایی مانند آی‌پی مبدا، پورت، پروتکل، و نوع ترافیک فیلتر کنند.
    • فایروال‌ها معمولاً به‌طور دائم و بدون نیاز به بررسی لاگ‌های سیستم کار می‌کنند و هر ترافیک ورودی یا خروجی را طبق قوانین از پیش تعیین‌شده فیلتر می‌کنند.

2. هدف و استفاده

  • هدف Fail2Ban:
    • هدف اصلی Fail2Ban جلوگیری از حملات brute-force (تلاش برای وارد کردن پسورد به‌طور مکرر) و دیگر حملات مشابه است. این ابزار به‌طور خودکار از سیستم در برابر تلاش‌های غیرمجاز برای ورود به سیستم و دسترسی غیرمجاز محافظت می‌کند.
    • Fail2Ban بیشتر برای مسدودسازی آی‌پی‌هایی که در تلاش برای نفوذ به سرویس‌هایی مثل SSH، FTP، ایمیل و دیگر سرویس‌های نیازمند احراز هویت هستند، استفاده می‌شود.
  • هدف فایروال‌های سنتی:
    • فایروال‌های سنتی بیشتر برای مدیریت ترافیک شبکه و جلوگیری از دسترسی‌های غیرمجاز عمومی به سرور و شبکه طراحی شده‌اند.
    • فایروال‌ها معمولاً برای محافظت در برابر حملات کلی مانند DDoS (حمله منع سرویس توزیع‌شده) یا نفوذ از شبکه‌های خارجی استفاده می‌شوند.

3. میزان پویایی و پاسخ به تهدیدات

  • Fail2Ban:
    • Fail2Ban از یک رویکرد دینامیک و زمانی استفاده می‌کند. این ابزار به‌طور فعال و مداوم لاگ‌های سیستم را برای شناسایی حملات احتمالی بررسی می‌کند.
    • در صورتی که یک آی‌پی اقدام به تلاش‌های ناموفق زیادی برای ورود کند، Fail2Ban فوراً به آن واکنش نشان می‌دهد و آن آی‌پی را مسدود می‌کند.
  • فایروال‌های سنتی:
    • فایروال‌ها معمولاً قوانین ثابت دارند و به‌طور مداوم بر روی ترافیک نظارت می‌کنند. آن‌ها برای مسدودسازی ترافیک بر اساس ویژگی‌های خاصی مانند آی‌پی، پورت، یا پروتکل طراحی شده‌اند.
    • فایروال‌ها به‌طور معمول واکنش فوری به تهدیدات یا حملات ندارند، زیرا قوانین آن‌ها از پیش تعریف شده و ثابت هستند.

4. انعطاف‌پذیری و پیکربندی

  • Fail2Ban:
    • Fail2Ban می‌تواند به‌طور سفارشی برای شناسایی حملات خاص (مانند brute-force) تنظیم شود.
    • این ابزار قابلیت پیکربندی بسیار بالایی دارد، به‌طوری که می‌توان آن را برای فیلتر کردن انواع خاصی از حملات تنظیم کرده و یا قوانین جدیدی را برای شناسایی حملات اضافه کرد.
  • فایروال‌های سنتی:
    • فایروال‌های سنتی بیشتر به‌طور ثابت و بر اساس قوانین از پیش تعیین‌شده کار می‌کنند.
    • اگرچه فایروال‌ها هم قابل پیکربندی هستند، اما برای شناسایی و مسدودسازی تهدیدات خاص و دینامیک مانند حملات brute-force به‌طور خودکار مناسب نیستند.

5. منابع سیستمی و مصرف منابع

  • Fail2Ban:
    • Fail2Ban برای شناسایی حملات نیاز به بررسی پیوسته لاگ‌ها دارد، که ممکن است در مواردی باعث مصرف بیشتر منابع پردازشی و حافظه سیستم شود. با این حال، این مصرف منابع معمولاً کم است.
  • فایروال‌های سنتی:
    • فایروال‌ها به‌طور معمول مصرف منابع کمتری دارند، زیرا آن‌ها تنها به فیلتر کردن ترافیک شبکه می‌پردازند و نیازی به تجزیه و تحلیل عمیق‌تر ترافیک ندارند.

6. محافظت در برابر حملات مختلف

  • Fail2Ban:
    • مناسب برای محافظت در برابر حملات brute-force، تلاش‌های ورود غیرمجاز به سیستم‌ها، و حملات مشابه است.
    • Fail2Ban به‌طور خودکار به حملات غیرمجاز واکنش نشان می‌دهد.
  • فایروال‌های سنتی:
    • فایروال‌ها بیشتر برای مدیریت ترافیک شبکه و جلوگیری از دسترسی غیرمجاز به سرور طراحی شده‌اند.
    • آن‌ها برای محافظت در برابر حملات عمومی‌تر مانند حملات DDoS، اسکن پورت‌ها، و حملات عمومی شبکه استفاده می‌شوند.

جمع بندی:

  • Fail2Ban یک ابزار خاص برای شناسایی و مسدودسازی تلاش‌های غیرمجاز ورود به سیستم است و معمولاً در کنار فایروال‌ها برای تقویت امنیت سرور و جلوگیری از حملات brute-force استفاده می‌شود.
  • فایروال‌های سنتی بیشتر برای فیلتر کردن ترافیک شبکه بر اساس قواعد ثابت و جلوگیری از دسترسی‌های غیرمجاز کلی به سرور طراحی شده‌اند.

در نهایت، هر دو ابزار Fail2Ban و فایروال‌ها برای امنیت سیستم‌ها ضروری هستند و می‌توانند به‌طور هم‌زمان برای حفاظت بهتر در برابر تهدیدات استفاده شوند.[/cdb_course_lesson][cdb_course_lesson title=”فصل 2. نحوه عملکرد Fail2Ban”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”نحوه عملکرد Fail2Ban در برابر حملات brute-force” subtitle=”توضیحات کامل”]Fail2Ban یک ابزار امنیتی قدرتمند برای محافظت از سرورها در برابر حملات brute-force و تلاش‌های نفوذ از طریق بررسی لاگ‌های سیستم است. عملکرد آن در سه مرحله اصلی خلاصه می‌شود:

1. شناسایی آی‌پی‌های مشکوک از روی لاگ‌های سیستم

  • بررسی لاگ‌ها: Fail2Ban به‌طور مداوم لاگ‌های سیستم را برای شناسایی تلاش‌های ناموفق ورود یا رفتار مشکوک اسکن می‌کند. این لاگ‌ها ممکن است شامل تلاش‌های ورود ناموفق به سرویس‌های مختلف مانند SSH، FTP، ایمیل، و وب‌سایت‌ها باشند.
  • جستجو برای الگوهای حمله: Fail2Ban به دنبال تلاش‌های ناموفق متعدد از یک آی‌پی خاص می‌گردد که نشان‌دهنده حمله brute-force یا حمله Dictionary است (یعنی تلاش برای حدس رمز عبور از طریق لیست کلمات یا ترکیب‌های مختلف).
  • الگوهای قابل تنظیم: کاربران می‌توانند الگوهای خاصی را که Fail2Ban باید جستجو کند، تنظیم کنند. به‌طور پیش‌فرض، Fail2Ban برای شناسایی خطاهایی که در نتیجه تلاش‌های ورود اشتباه به سیستم‌ها رخ می‌دهند، پیکربندی شده است.

2. اعمال قوانین برای مسدودسازی خودکار آی‌پی‌ها با استفاده از ابزارهایی مانند iptables

  • تشخیص تعداد تلاش‌های ناموفق: پس از شناسایی تعداد مشخصی از تلاش‌های ناموفق از یک آی‌پی خاص (که این تعداد به‌طور پیش‌فرض در تنظیمات Fail2Ban ۵ تلاش است)، Fail2Ban اقدام به مسدود کردن آی‌پی مذکور می‌کند.
  • استفاده از ابزارهای فایروال مانند iptables: زمانی که Fail2Ban یک آی‌پی مشکوک را شناسایی می‌کند، از ابزارهای فایروال مانند iptables یا firewalld برای مسدود کردن آن آی‌پی استفاده می‌کند. در این حالت، ترافیک ورودی از آن آی‌پی به سرور دیگر مسدود می‌شود.
  • قوانین قابل تنظیم: Fail2Ban به شما اجازه می‌دهد تا مدت زمان مسدودیت (برای مثال ۱۰ دقیقه، ۱ ساعت، یا بیشتر) و تعداد تلاش‌های ناموفق قبل از مسدودسازی را تنظیم کنید. این قوانین به شما این امکان را می‌دهد که حساسیت Fail2Ban را تنظیم کنید.
  • انعطاف‌پذیری در تنظیمات: علاوه بر iptables، Fail2Ban می‌تواند از سایر ابزارهای فایروال و لیست‌های مسدودسازی مانند pf (در سیستم‌های BSD) یا nftables استفاده کند.

3. فرآیند رفع مسدودیت آی‌پی‌ها پس از اتمام زمان تعیین شده

  • رفع مسدودیت خودکار: پس از گذشت مدت زمانی که برای مسدود کردن آی‌پی تنظیم شده، Fail2Ban به‌طور خودکار آن آی‌پی را از فهرست مسدود شده‌ها حذف می‌کند. این به این معنی است که پس از اتمام زمان مسدودیت (مثلاً ۱۰ دقیقه یا ۱ ساعت)، آی‌پی قادر به برقراری ارتباط با سرور مجدداً خواهد بود.
  • تنظیمات زمان مسدودیت: مدیر سیستم می‌تواند مدت زمان مسدودیت را به‌طور دلخواه تنظیم کند. این مدت زمان معمولاً به‌طور پیش‌فرض در Fail2Ban حدود ۱۰ دقیقه است، اما این مقدار قابل تغییر است.
  • تأثیر رفع مسدودیت: این ویژگی باعث می‌شود که اگر آی‌پی به‌طور موقت مسدود شده باشد، امکان بازیابی دسترسی به آن وجود داشته باشد و همچنین نیازی به انجام کار دستی برای رفع مسدودیت نباشد.

مثال از نحوه عملکرد:

  1. فرض کنید که یک کاربر تلاش می‌کند وارد سیستم SSH شود.
    • کاربر به‌طور مکرر رمز عبور اشتباه وارد می‌کند.
    • Fail2Ban این تلاش‌ها را در لاگ‌های SSH شناسایی می‌کند.
  2. Fail2Ban تعداد تلاش‌های ناموفق را بررسی می‌کند.
    • اگر تعداد تلاش‌ها از حد مشخص‌شده (مثلاً ۵ بار) تجاوز کند، Fail2Ban این آی‌پی را مشکوک می‌شمارد.
  3. Fail2Ban اقدام به مسدودسازی آی‌پی می‌کند.
    • Fail2Ban از طریق iptables این آی‌پی را به مدت ۱۰ دقیقه مسدود می‌کند.
  4. پس از اتمام زمان مسدودیت.
    • Fail2Ban به‌طور خودکار آی‌پی را از فهرست مسدود شده‌ها حذف می‌کند و دسترسی به سیستم برای آن آی‌پی مجدداً فعال می‌شود.

نکات مهم درباره Fail2Ban:

  • Fail2Ban یک راه‌حل خودکار و دینامیک برای مسدودسازی آی‌پی‌های مخرب است.
  • این ابزار به‌طور مستقیم به امنیت سیستم و کاهش بار اضافی در فایروال‌ها کمک می‌کند.
  • مدیریت لاگ‌ها و پیکربندی دقیق می‌تواند باعث افزایش اثربخشی Fail2Ban شود.

در نتیجه، Fail2Ban ابزاری بسیار مفید برای جلوگیری از حملات brute-force است که با شناسایی آی‌پی‌های مشکوک و مسدودسازی آن‌ها به‌صورت خودکار، از سرورها و سرویس‌های حساس محافظت می‌کند.[/cdb_course_lesson][cdb_course_lesson title=”فصل 3. قابلیت‌های پیشرفته Fail2Ban”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”قابلیت‌های پیشرفته ابزار قدرتمند Fail2Ban” subtitle=”توضیحات کامل”]Fail2Ban نه تنها ابزاری قدرتمند برای شناسایی و مسدودسازی آی‌پی‌های مخرب است، بلکه قابلیت‌های پیشرفته‌ای نیز دارد که می‌تواند به شکل بهینه‌تری امنیت سرورها را تأمین کند. در این بخش به بررسی برخی از این قابلیت‌های پیشرفته می‌پردازیم که به امنیت بیشتر و سفارشی‌سازی بهتر سیستم کمک می‌کنند.

1. مسدودسازی توزیع‌شده با استفاده از ابزارهای جانبی

  • مفهوم مسدودسازی توزیع‌شده: Fail2Ban به‌طور پیش‌فرض آی‌پی‌های مشکوک را فقط روی سیستم محلی مسدود می‌کند. اما در برخی مواقع، ممکن است لازم باشد که آی‌پی‌های مخرب در چندین سرور یا سیستم مختلف مسدود شوند. این قابلیت به شما اجازه می‌دهد که مسدودسازی‌ها را در یک شبکه توزیع‌شده اعمال کنید.
  • استفاده از ابزارهای جانبی: برای ایجاد یک سیستم مسدودسازی توزیع‌شده، Fail2Ban می‌تواند با ابزارهایی مانند fail2ban-client و fail2ban-server یا حتی سرویس‌های ابری مختلف همکاری کند. این ابزارها اجازه می‌دهند که قوانین مسدودسازی در چندین سرور اعمال شوند، به‌طوری‌که اگر آی‌پی‌ای در یک سرور مسدود شد، بتوان آن را در سایر سرورها نیز مسدود کرد.
  • استفاده از iptables در شبکه‌های بزرگ: برای سیستم‌های با شبکه‌های گسترده یا دیتا سنترها، ممکن است نیاز باشد تا Fail2Ban از iptables و IPset برای بهبود کارایی مسدودسازی توزیع‌شده استفاده کند. با این کار، مسدودسازی آی‌پی‌های مشکوک در سطح شبکه و در بسیاری از سرورها به‌صورت همزمان انجام می‌شود.
  • سینک کردن قوانین بین سرورها: اگر در حال استفاده از چندین سرور هستید، می‌توانید از centralized logging و سرویس‌های همگام‌سازی مانند rsync برای همگام‌سازی قوانین Fail2Ban در سراسر شبکه استفاده کنید. این روش می‌تواند از حملات مشابه در چندین نقطه جلوگیری کند.

2. امکان ارسال هشدارهای ایمیلی در زمان حمله

  • هشدارهای ایمیلی: یکی از قابلیت‌های قدرتمند Fail2Ban ارسال هشدارهای ایمیلی به مدیر سیستم در زمان مسدودسازی آی‌پی‌های مشکوک است. این ویژگی به مدیران سرور اجازه می‌دهد که به‌محض شناسایی حملات یا رفتار مشکوک، مطلع شوند.
  • پیکربندی ایمیل‌ها: برای پیکربندی این ویژگی، باید sendmail یا Postfix را روی سرور نصب کرده و Fail2Ban را برای ارسال ایمیل‌های هشدار تنظیم کنید. زمانی که Fail2Ban یک آی‌پی را مسدود می‌کند، به‌طور خودکار یک ایمیل به مدیر سیستم ارسال می‌کند و در آن جزئیات مربوط به حمله و آی‌پی مسدود شده ذکر می‌شود.
  • تنظیمات سفارشی هشدارها: شما می‌توانید تنظیمات مربوط به ایمیل‌ها را سفارشی کنید. به عنوان مثال، می‌توانید تنها حملات به سرویس‌های خاص (مانند SSH یا FTP) را مورد نظر قرار دهید یا فقط آی‌پی‌هایی که تعداد زیادی تلاش ناموفق دارند را شناسایی کنید. علاوه بر این، می‌توانید ایمیل‌ها را طوری پیکربندی کنید که شامل اطلاعاتی مثل زمان حمله، سرویس‌های آسیب‌دیده، و تعداد تلاش‌های ناموفق باشند.
  • مثال پیکربندی ایمیل هشدار در Fail2Ban: در فایل jail.local، می‌توانید یک تنظیم برای ارسال ایمیل‌ها به صورت زیر اضافه کنید:
    [ssh]
    enabled = true
    action = %(action_mwl)s
    mailrecipient = admin@example.com
    mailsubject = "[Fail2Ban] SSH Alert for <hostname>"
    

در این مثال، Fail2Ban هر بار که یک آی‌پی در سرویس SSH مسدود شود، ایمیلی به آدرس admin@example.com ارسال می‌کند.

3. سفارشی‌سازی فیلترها برای انواع سرویس‌ها

  • نقش فیلترها در Fail2Ban: فیلترها در Fail2Ban به شما کمک می‌کنند تا تلاش‌های ناموفق یا مشکوک در لاگ‌ها را شناسایی کنید. به‌طور پیش‌فرض، Fail2Ban از فیلترهای تعریف‌شده برای سرویس‌های مختلف (مانند SSH، Apache، FTP و …) استفاده می‌کند. با این حال، شما می‌توانید فیلترها را برای هر سرویس یا لاگ خاصی که به آن نیاز دارید، سفارشی‌سازی کنید.
  • ساخت فیلترهای سفارشی: در صورتی که سرویس خاصی داشته باشید که Fail2Ban به‌طور پیش‌فرض از آن پشتیبانی نمی‌کند، می‌توانید فیلترهای سفارشی خود را بسازید. این فیلترها معمولاً شامل regexهایی هستند که تلاش‌های مشکوک را در لاگ‌ها شناسایی می‌کنند.برای ساخت فیلتر جدید، شما باید فایل‌های جدیدی در مسیر /etc/fail2ban/filter.d/ بسازید و الگوهای regex مورد نظر خود را در آن قرار دهید. به‌عنوان مثال، اگر بخواهید برای یک سرویس خاص (مانند یک وب‌سایت با سیستم مدیریت محتوا) فیلتر بسازید، می‌توانید regexهایی را برای شناسایی درخواست‌های غیرمجاز بنویسید.
  • استفاده از failregex و ignoreregex:
    • failregex: این بخش به شما اجازه می‌دهد الگوهای شکست (مثلاً تلاش‌های ورود ناموفق) را تعریف کنید.
    • ignoreregex: این بخش برای فیلتر کردن خطاهایی است که نمی‌خواهید در شناسایی Fail2Ban لحاظ شوند.

    به‌طور مثال، در فیلتر SSH، شما ممکن است از regexهایی مانند این برای شناسایی تلاش‌های ورود ناموفق استفاده کنید:

    failregex = .*Failed password for invalid user.* from <HOST> port \d+ ssh2.*
    ignoreregex = 
    
  • فیلترهای سفارشی برای سرویس‌های مختلف: با استفاده از فیلترهای سفارشی، می‌توانید انواع مختلف حملات را شناسایی کنید. این امکان به‌ویژه برای سرویس‌های سفارشی یا ناآشنا که ممکن است Fail2Ban آن‌ها را به‌طور پیش‌فرض شناسایی نکند، مفید است.
  • مثال از فیلترهای سفارشی برای وب‌سرور: برای شناسایی تلاش‌های حملات brute-force به وب‌سایت‌ها، می‌توانید از فیلترهایی مانند زیر استفاده کنید:
    failregex = .*"POST /wp-login.php.* 403.*"$
    

جمع‌بندی

قابلیت‌های پیشرفته Fail2Ban باعث می‌شود که این ابزار امنیتی فراتر از مسدودسازی ساده آی‌پی‌ها برود و به مدیران سیستم امکانات بیشتری مانند مسدودسازی توزیع‌شده، ارسال هشدارهای ایمیلی در زمان وقوع حملات، و سفارشی‌سازی فیلترها برای سرویس‌های خاص را ارائه دهد. این ویژگی‌ها به شما کمک می‌کنند تا امنیت سیستم‌های خود را به شکل مؤثرتری مدیریت کنید و از حملات احتمالی جلوگیری نمایید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 4. اهمیت Fail2Ban در امنیت سرور”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”جلوگیری از حملات brute force به سرویس‌های حساس” subtitle=”توضیحات کامل”]Fail2Ban یکی از ابزارهای مهم و قدرتمند برای تقویت امنیت سرورها است. این ابزار می‌تواند در برابر بسیاری از حملات معمول و شناخته‌شده مانند حملات Brute Force به انواع سرویس‌ها از جمله SSH، FTP و وب‌سرورها به‌ویژه Apache و Nginx محافظت کند. در اینجا به اهمیت Fail2Ban در جلوگیری از حملات Brute Force به سرویس‌های حساس پرداخته می‌شود.

1. جلوگیری از حملات Brute Force به سرویس SSH

  • حملات Brute Force به SSH یکی از رایج‌ترین حملات بر ضد سرورها هستند. در این حملات، مهاجم سعی می‌کند با وارد کردن نام‌کاربری و رمز عبور مختلف به سرویس SSH دسترسی پیدا کند.
  • چرا Fail2Ban مهم است؟
    • شناسایی تلاش‌های ناموفق: Fail2Ban می‌تواند تلاش‌های ورود ناموفق به SSH را شناسایی کرده و پس از تعداد مشخصی از تلاش‌های ناموفق، آی‌پی مهاجم را مسدود کند. این فرآیند به‌طور خودکار انجام می‌شود، بنابراین نیازی به نظارت دستی نیست.
    • امنیت بیشتر: با مسدود کردن آی‌پی‌های مشکوک، Fail2Ban می‌تواند از موفقیت مهاجمین در انجام حملات Brute Force جلوگیری کرده و در نتیجه از دسترسی‌های غیرمجاز به سیستم جلوگیری کند.
    • پیکربندی ساده: Fail2Ban به راحتی می‌تواند برای SSH پیکربندی شود تا قوانینی برای مسدودسازی خودکار آی‌پی‌ها پس از چندین تلاش ناموفق تعیین کند. به‌عنوان مثال، شما می‌توانید تنظیم کنید که اگر یک آی‌پی بیش از 5 بار تلاش ناموفق برای ورود به سیستم داشته باشد، به مدت 10 دقیقه مسدود شود.

    مثال پیکربندی در jail.local برای SSH:

    [ssh]
    enabled = true
    filter = sshd
    action = iptables[name=SSH, port=ssh, protocol=tcp]
    logpath = /var/log/auth.log
    maxretry = 5
    bantime = 600
    

2. جلوگیری از حملات Brute Force به سرویس FTP

  • حملات Brute Force به FTP نیز یکی از مشکلاتی است که می‌تواند به سرورهای مبتنی بر FTP آسیب برساند. در این حملات، مهاجم سعی می‌کند با استفاده از ترکیب‌های مختلف نام‌کاربری و رمز عبور به سرور FTP دسترسی پیدا کند.
  • چرا Fail2Ban مهم است؟
    • حفاظت از اطلاعات حساس: بسیاری از سرورها از FTP برای انتقال فایل‌های حساس استفاده می‌کنند. Fail2Ban می‌تواند به‌طور مؤثر تلاش‌های غیرمجاز برای ورود به این سرویس را شناسایی کرده و از موفقیت مهاجمین جلوگیری کند.
    • پیکربندی آسان: مانند SSH، Fail2Ban می‌تواند برای سرویس FTP نیز پیکربندی شود تا در صورت شناسایی تلاش‌های ناموفق زیاد، آی‌پی مهاجم را مسدود کند.
    • افزایش امنیت: با مسدود کردن سریع آی‌پی‌های مشکوک، Fail2Ban باعث می‌شود مهاجمین نتوانند از تلاش‌های زیاد برای نفوذ استفاده کنند، بنابراین امنیت سرور FTP به‌شدت تقویت می‌شود.

    مثال پیکربندی در jail.local برای FTP:

    [ftp]
    enabled = true
    filter = vsftpd
    action = iptables[name=FTP, port=ftp, protocol=tcp]
    logpath = /var/log/vsftpd.log
    maxretry = 5
    bantime = 600
    

3. جلوگیری از حملات Brute Force به وب‌سرورها (Apache/Nginx)

  • وب‌سرورها به‌ویژه Apache و Nginx هدف حملات زیادی هستند، از جمله حملات Brute Force برای شناسایی رمزهای عبور ادمین یا دسترسی به صفحات مدیر.
  • چرا Fail2Ban مهم است؟
    • حفاظت از صفحات مدیریت: وب‌سایت‌ها و اپلیکیشن‌های وبی معمولاً دارای صفحات ورود و مدیریت هستند که هدف اصلی حملات Brute Force قرار می‌گیرند. Fail2Ban می‌تواند این حملات را شناسایی کرده و از ادامه تلاش‌های مهاجم برای دسترسی غیرمجاز جلوگیری کند.
    • پیکربندی مخصوص سرویس‌های وب: Fail2Ban قابلیت شناسایی حملات بر ضد سرویس‌های وب را دارد. شما می‌توانید تنظیم کنید که اگر یک آی‌پی در تلاش‌های ورود ناموفق به صفحات وب بیش از حد تلاش کند، مسدود شود.
    • افزایش عملکرد سرور: Fail2Ban از طریق مسدود کردن سریع آی‌پی‌های حمله‌کننده، بار اضافی بر روی سرور ایجاد نمی‌کند. این ویژگی موجب بهبود عملکرد سرور در مواجهه با حملات ترافیکی بالا می‌شود.

    مثال پیکربندی در jail.local برای Apache/Nginx:

    [apache-auth]
    enabled = true
    filter = apache-auth
    action = iptables[name=Apache, port=http, protocol=tcp]
    logpath = /var/log/apache2/error_log
    maxretry = 3
    bantime = 600
    

    یا برای Nginx:

    [nginx-http-auth]
    enabled = true
    filter = nginx-http-auth
    action = iptables[name=Nginx, port=http, protocol=tcp]
    logpath = /var/log/nginx/error.log
    maxretry = 3
    bantime = 600
    

جمع‌بندی

Fail2Ban ابزار بسیار مهمی برای محافظت از سرورها در برابر حملات Brute Force به سرویس‌های مختلف است. این ابزار با شناسایی تلاش‌های ناموفق زیاد و مسدود کردن آی‌پی‌های مهاجم، از دسترسی غیرمجاز به سرویس‌هایی مانند SSH، FTP و وب‌سرورها جلوگیری می‌کند. علاوه بر این، پیکربندی ساده و قابلیت‌های پیشرفته Fail2Ban موجب می‌شود که امنیت سرورهای مختلف به‌طور مؤثری تقویت شود و سرور در برابر حملات Brute Force مقاوم گردد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”پیشگیری از تلاش‌های ورود غیرمجاز به سرویس‌های ایمیل” subtitle=”توضیحات کامل”]پیشگیری از تلاش‌های ورود غیرمجاز به سرویس‌های ایمیل یکی از جنبه‌های حیاتی امنیت سرورها است. سرویس‌های ایمیل (مانند Postfix، Dovecot، Exim و غیره) به دلیل ماهیت حساس اطلاعاتی که منتقل می‌کنند، هدف حملات متعدد قرار می‌گیرند. مهاجمین ممکن است تلاش کنند تا به صورت غیرمجاز به حساب‌های ایمیل دسترسی پیدا کنند و از آن‌ها برای ارسال هرزنامه (spam) یا انجام حملات دیگر استفاده کنند.

ابزارها و روش‌های مختلفی برای پیشگیری از این نوع تلاش‌ها وجود دارد. در اینجا نحوه پیشگیری از تلاش‌های ورود غیرمجاز به سرویس‌های ایمیل با استفاده از Fail2Ban و سایر تدابیر امنیتی بررسی می‌شود.

1. استفاده از Fail2Ban برای مسدود کردن تلاش‌های ورود غیرمجاز

Fail2Ban ابزاری مناسب برای محافظت از سرویس‌های ایمیل در برابر حملات Brute Force است. با استفاده از Fail2Ban، می‌توان تلاش‌های ورود ناموفق به سرویس‌های ایمیل را شناسایی و مسدود کرد.

پیکربندی Fail2Ban برای سرویس ایمیل

با توجه به اینکه هر سرویس ایمیل معمولاً دارای یک فایل لاگ مخصوص است، Fail2Ban می‌تواند بر اساس این لاگ‌ها، تلاش‌های ورود غیرمجاز را شناسایی کرده و آی‌پی‌های مهاجم را مسدود کند.

Postfix

برای پیکربندی Fail2Ban برای Postfix، شما می‌توانید تنظیمات مربوط به فیلتر postfix-sasl را در فایل پیکربندی Fail2Ban انجام دهید. این فیلتر تلاش‌های ورود ناموفق به سرویس ایمیل را شناسایی می‌کند.

مثال پیکربندی Fail2Ban برای Postfix: در فایل jail.local تنظیمات زیر را اضافه کنید:

[postfix-sasl]
enabled = true
filter = postfix-sasl
action = iptables[name=Postfix, port=smtp, protocol=tcp]
logpath = /var/log/mail.log
maxretry = 3
bantime = 600

در اینجا:

  • enabled: فعال‌سازی فیلتر
  • filter: استفاده از فیلتر postfix-sasl برای شناسایی تلاش‌های ورود ناموفق
  • logpath: مسیر فایل لاگ که شامل تلاش‌های ورود است
  • maxretry: تعداد تلاش‌های ناموفق قبل از مسدودسازی آی‌پی
  • bantime: مدت زمان مسدود کردن آی‌پی (در ثانیه)
Dovecot (IMAP/POP3)

برای سرویس‌های Dovecot، که به‌عنوان سرویس‌های ایمیل برای دریافت ایمیل‌ها از پروتکل‌های IMAP یا POP3 استفاده می‌شود، مشابه تنظیمات بالا، Fail2Ban می‌تواند ورود‌های ناموفق را شناسایی و مسدود کند.

مثال پیکربندی Fail2Ban برای Dovecot:

[dovecot]
enabled = true
filter = dovecot
action = iptables[name=Dovecot, port=imap, protocol=tcp]
logpath = /var/log/mail.log
maxretry = 3
bantime = 600

در اینجا، Fail2Ban تلاش‌های ورود به سرویس Dovecot را نظارت کرده و آی‌پی‌های مشکوک را مسدود می‌کند.

2. استفاده از احراز هویت دو مرحله‌ای (2FA)

یکی از روش‌های بسیار مؤثر برای پیشگیری از ورود غیرمجاز به حساب‌های ایمیل، استفاده از احراز هویت دو مرحله‌ای (2FA) است. حتی اگر یک مهاجم بتواند رمز عبور حساب ایمیل را بدست آورد، با فعال بودن 2FA، برای دسترسی به حساب ایمیل نیاز به کدی اضافی (که معمولاً به گوشی موبایل ارسال می‌شود) خواهد داشت.

  • پیکربندی 2FA برای سرویس‌های ایمیل: برای سرویس‌هایی مانند Dovecot یا Postfix، ممکن است نیاز به راه‌اندازی نرم‌افزارهای خاصی برای پشتیبانی از 2FA باشد. برخی از سرورهای ایمیل با استفاده از نرم‌افزارهای Google Authenticator یا Authy این ویژگی را پشتیبانی می‌کنند.

3. استفاده از محدود کردن تعداد تلاش‌های ورود

برای جلوگیری از حملات Brute Force، تعداد تلاش‌های ناموفق برای ورود به سرویس‌های ایمیل باید محدود شود. این محدودیت را می‌توان با استفاده از ابزارهایی مانند Fail2Ban یا iptables ایجاد کرد.

محدود کردن تلاش‌های ورود با استفاده از iptables

اگر از Fail2Ban برای مسدودسازی آی‌پی‌ها استفاده نمی‌کنید، می‌توانید از iptables برای محدود کردن تعداد تلاش‌های ورود استفاده کنید. این روش می‌تواند از حملات Brute Force جلوگیری کند.

مثال iptables برای محدود کردن تلاش‌های ورود به پورت SMTP:

iptables -A INPUT -p tcp --dport 25 -i eth0 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 25 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 -j REJECT

این قوانین به این صورت عمل می‌کنند:

  • محدود کردن تعداد تلاش‌های اتصال به پورت SMTP (پورت 25) به 5 تلاش در هر دقیقه.
  • اگر مهاجم بیش از حد تلاش کند، آی‌پی وی مسدود خواهد شد.

4. مراقبت از امنیت رمز عبور

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

  • استفاده از ترکیب‌های پیچیده از حروف بزرگ و کوچک، اعداد و علائم.
  • تنظیم زمان انقضای رمز عبور برای تغییر دوره‌ای آن.
  • استفاده از مدیر رمز عبور برای ذخیره و مدیریت رمزهای عبور پیچیده.

5. استفاده از سرویس‌های ایمیل برای جلوگیری از ارسال هرزنامه (Spam)

یک مشکل متداول در سرویس‌های ایمیل، استفاده از آن‌ها برای ارسال هرزنامه توسط مهاجمین است. برای پیشگیری از این موضوع:

  • استفاده از لیست سیاه (Blacklists) برای شناسایی و مسدودسازی آی‌پی‌هایی که به‌طور معمول در ارسال هرزنامه‌ها استفاده می‌شوند.
  • پیکربندی SPF (Sender Policy Framework)، DKIM (DomainKeys Identified Mail) و DMARC (Domain-based Message Authentication, Reporting, and Conformance) برای جلوگیری از جعل ایمیل‌ها و ارسال هرزنامه از طرف سرور شما.

جمع بندی

پیشگیری از تلاش‌های ورود غیرمجاز به سرویس‌های ایمیل به‌ویژه در برابر حملات Brute Force بسیار حیاتی است. استفاده از ابزارهایی مانند Fail2Ban برای شناسایی و مسدود کردن آی‌پی‌های مشکوک، محدود کردن تلاش‌های ورود، استفاده از احراز هویت دو مرحله‌ای (2FA) و تقویت امنیت رمز عبور می‌تواند به‌طور مؤثری از سرویس‌های ایمیل در برابر حملات محافظت کند. همچنین، بررسی و استفاده از استانداردهای امنیتی مانند SPF، DKIM و DMARC در کنار استفاده از ابزارهای بلاک کردن آی‌پی‌های هرزنامه، به حفظ امنیت سرور ایمیل کمک خواهد کرد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”حفظ پایداری سیستم در برابر حملات” subtitle=”توضیحات کامل”]حفظ پایداری سیستم در برابر حملات یکی از چالش‌های بزرگ امنیتی برای مدیران سیستم‌ها و شبکه‌ها است. با توجه به پیچیدگی و تنوع حملات سایبری، این امر نیازمند پیاده‌سازی استراتژی‌های چندلایه است که علاوه بر حفاظت از سیستم در برابر حملات، از تاثیرات منفی آن‌ها بر عملکرد سیستم و داده‌ها جلوگیری کند.

استراتژی‌های حفظ پایداری سیستم در برابر حملات

1. استفاده از فایروال‌ها و کنترل دسترسی

فایروال‌ها به‌عنوان نخستین خط دفاعی از سیستم در برابر حملات شناخته می‌شوند. فایروال‌ها می‌توانند ترافیک ورودی و خروجی را کنترل کرده و تنها ترافیک‌های مجاز را به سیستم اجازه ورود بدهند.

  • استفاده از فایروال‌های سخت‌افزاری و نرم‌افزاری: هر دو نوع فایروال‌ها می‌توانند از حملات رایج مانند DDoS، حملات پورت‌اسکن و ورود غیرمجاز جلوگیری کنند.
  • کنترل دسترسی مبتنی بر نقش (RBAC): دسترسی به منابع سیستم باید فقط به کاربران مجاز محدود شود.

2. پیکربندی مناسب سرورها و نرم‌افزارها

یکی از اقدامات مهم در حفظ پایداری سیستم در برابر حملات، پیکربندی صحیح سرورها و نرم‌افزارها است.

  • استفاده از آپدیت‌های امنیتی: به‌طور منظم سیستم‌عامل و نرم‌افزارها را به‌روزرسانی کنید تا آسیب‌پذیری‌های جدید شناسایی و برطرف شوند.
  • غیرفعال کردن سرویس‌ها و پورت‌های غیرضروری: هر سرویس یا پورت غیرضروری که در سیستم فعال است، می‌تواند هدف حملات قرار بگیرد.
  • استفاده از مکانیزم‌های احراز هویت پیشرفته: استفاده از احراز هویت دو مرحله‌ای (2FA) برای افزایش امنیت حساب‌های کاربری و جلوگیری از ورودهای غیرمجاز.

3. دور نگه‌داشتن سیستم از حملات DDoS

حملات انکار سرویس توزیع‌شده (DDoS) به‌طور خاص می‌توانند موجب توقف عملکرد سیستم و سرور شوند.

  • استفاده از سرویس‌های دفاع DDoS: سرویس‌های اختصاصی مانند Cloudflare یا AWS Shield می‌توانند ترافیک ناشناخته را فیلتر کنند و از حملات DDoS جلوگیری کنند.
  • پیکربندی صحیح فایروال‌ها و محافظت در برابر حملات DoS: با استفاده از فایروال‌های لایه 7 و محدود کردن تعداد درخواست‌ها، می‌توان از حملات DDoS پیشگیری کرد.

4. مانیتورینگ و شناسایی زودهنگام حملات

برای حفظ پایداری سیستم، لازم است که به‌طور مداوم آن را مانیتور کنید تا حملات احتمالی را زود شناسایی کرده و پاسخ‌های سریع ارائه دهید.

  • ابزارهای مانیتورینگ: از ابزارهایی مانند Nagios، Zabbix و Prometheus برای مانیتورینگ سرور، سیستم‌عامل و اپلیکیشن‌ها استفاده کنید.
  • نظارت بر لاگ‌ها: استفاده از ابزارهای SIEM (Security Information and Event Management) مانند Splunk یا ELK Stack برای تجزیه و تحلیل لاگ‌ها و شناسایی حملات امنیتی.
  • **پیکربندی Intrusion Detection/Prevention Systems (IDS/IPS): استفاده از ابزارهایی مانند Snort یا Suricata برای شناسایی و جلوگیری از نفوذهای غیرمجاز.

5. پشتیبان‌گیری و بازیابی سریع از حملات

در صورت وقوع حملات، باید برنامه‌های پشتیبان‌گیری منظم و بازیابی سریع را پیاده‌سازی کنید تا بتوانید از داده‌ها و سیستم‌ها به سرعت بازسازی کنید.

  • استفاده از پشتیبان‌گیری خودکار: از سیستم‌های پشتیبان‌گیری مانند Rsync یا Bacula برای گرفتن نسخه‌های پشتیبان به‌طور منظم استفاده کنید.
  • تست بازیابی پشتیبان‌ها: همواره بازیابی اطلاعات از پشتیبان‌ها را تست کنید تا از کارکرد صحیح فرآیند بازیابی در زمان واقعی اطمینان حاصل کنید.

6. استفاده از رمزنگاری

استفاده از رمزنگاری داده‌ها یکی از بهترین روش‌ها برای حفظ پایداری سیستم است، زیرا حتی اگر مهاجمین به داده‌های شما دسترسی پیدا کنند، با رمزنگاری داده‌ها، قادر به خواندن آن‌ها نخواهند بود.

  • رمزنگاری ارتباطات: از پروتکل‌های SSL/TLS برای رمزنگاری ترافیک شبکه و حفاظت از اطلاعات حساس در حین انتقال استفاده کنید.
  • رمزنگاری داده‌ها در حال استراحت: داده‌ها باید در دیسک نیز رمزنگاری شوند تا در صورت نفوذ مهاجمین، اطلاعات از دست نرود.

7. مدیریت آسیب‌پذیری‌ها

آسیب‌پذیری‌ها یکی از مهم‌ترین مسیرهای ورود مهاجمین به سیستم‌ها هستند. مدیریت مؤثر آسیب‌پذیری‌ها می‌تواند جلوی بسیاری از حملات را بگیرد.

  • اسکن منظم آسیب‌پذیری‌ها: استفاده از ابزارهایی مانند Nessus یا OpenVAS برای اسکن سیستم‌ها به‌طور منظم و شناسایی آسیب‌پذیری‌های امنیتی.
  • بررسی و اعمال وصله‌های امنیتی: پس از شناسایی آسیب‌پذیری‌ها، به‌طور سریع وصله‌ها و به‌روزرسانی‌های امنیتی را برای رفع آن‌ها اعمال کنید.

8. تست‌های نفوذ (Penetration Testing)

آزمایش‌های نفوذ به شما این امکان را می‌دهند که نقاط ضعف سیستم را شبیه‌سازی کنید و قبل از وقوع حملات واقعی، آن‌ها را شناسایی کنید.

  • انجام تست نفوذ منظم: از متخصصان امنیتی یا تیم‌های داخلی برای شبیه‌سازی حملات نفوذی استفاده کنید تا نقاط ضعف سیستم شناسایی شوند.
  • استفاده از ابزارهای تست نفوذ: ابزارهایی مانند Metasploit، Burp Suite یا Kali Linux برای شبیه‌سازی حملات و ارزیابی آسیب‌پذیری‌های سیستم.

جمع بندی

حفظ پایداری سیستم در برابر حملات نیازمند رویکردی چندلایه است که از تمام ابزارها و روش‌های موجود برای کاهش خطرات و آسیب‌های امنیتی استفاده کند. ترکیب فایروال‌ها، مانیتورینگ دائمی، رمزنگاری، مدیریت آسیب‌پذیری‌ها، پشتیبان‌گیری و تست‌های نفوذ، می‌تواند سیستم‌ها را از بسیاری از تهدیدات امنیتی محافظت کرده و اطمینان حاصل کند که حتی در صورت وقوع حملات، سیستم‌ها به سرعت بازیابی و پایداری خود را حفظ می‌کنند.[/cdb_course_lesson][cdb_course_lesson title=”فصل 5. بررسی نمونه‌های واقعی حملات”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”تحلیل چند مثال واقعی از حملات Brute Force” subtitle=”توضیحات کامل”]حملات Brute Force به حملاتی گفته می‌شود که در آن‌ها مهاجمین سعی می‌کنند با آزمایش تعداد زیادی از ترکیب‌های ممکن برای شناسایی رمزعبور صحیح یا کلید رمزنگاری، به سیستم‌ها دسترسی پیدا کنند. این حملات معمولاً برای سیستم‌های احراز هویت مبتنی بر کلمه عبور استفاده می‌شوند و می‌توانند بسیار وقت‌گیر و منابع‌بر باشند. در اینجا، به تحلیل چند مثال واقعی از حملات Brute Force می‌پردازیم.

1. حمله Brute Force به سیستم SSH

یکی از رایج‌ترین اهداف حملات Brute Force، سرورهای SSH هستند. در این نوع حمله، مهاجمین از طریق استفاده از یک لیست بزرگ از کلمات عبور رایج یا پیش‌بینی شده، تلاش می‌کنند تا به سیستم‌های راه دور با استفاده از پروتکل SSH نفوذ کنند.

مثال واقعی: در سال 2017، یکی از گزارش‌های امنیتی نشان داد که حملات Brute Force به سرورهای SSH در سطح اینترنت به طور فزاینده‌ای در حال افزایش است. مهاجمین از لیست‌های آماده‌ای از بیش از یک میلیون رمزعبور رایج استفاده می‌کردند تا به سرورهای SSH دسترسی پیدا کنند.

  • ویژگی‌های حمله: در این نوع حمله، معمولا تعداد زیادی از تلاش‌ها در زمان کوتاهی صورت می‌گیرد.
  • واکنش‌های احتمالی: استفاده از ابزارهای نظارتی مانند Fail2Ban می‌تواند آی‌پی‌های مهاجمین را مسدود کرده و جلوی تلاش‌های اضافی را بگیرد.

جمع‌بندی: در این نوع حملات، اگر تدابیر امنیتی مانند استفاده از رمزعبورهای پیچیده و مکانیزم‌های احراز هویت دو مرحله‌ای (2FA) پیاده‌سازی شوند، این نوع حملات به‌راحتی قابل جلوگیری خواهند بود.

2. حمله Brute Force به وب‌سایت‌های وردپرسی

وب‌سایت‌های مبتنی بر سیستم مدیریت محتوای (CMS) مانند وردپرس، یکی از اهداف محبوب مهاجمین برای حملات Brute Force هستند. این حملات می‌توانند برای دستیابی به حساب‌های کاربری مدیر یا ورود به داشبورد مدیریتی انجام شوند.

مثال واقعی: در سال 2013، یک حمله گسترده Brute Force به وب‌سایت‌های وردپرس صورت گرفت که در آن مهاجمین از ترکیب‌های مختلف رمزعبور برای ورود به حساب‌های کاربری مدیریت استفاده می‌کردند. این حمله تا حد زیادی موفق بود، زیرا بسیاری از وب‌سایت‌ها از رمزعبورهای ضعیف و عمومی استفاده می‌کردند.

  • ویژگی‌های حمله: مهاجمین با استفاده از ابزارهایی مانند WPScan اقدام به پیدا کردن حساب‌های مدیریت آسیب‌پذیر می‌کنند و سپس با استفاده از لیست‌های معروف رمزعبور، تلاش به نفوذ می‌کنند.
  • واکنش‌های احتمالی: برای مقابله با چنین حملاتی، توصیه می‌شود که از رمزعبورهای پیچیده و مکانیزم‌های 2FA استفاده کرده و همچنین تعداد تلاش‌های ورود ناموفق را محدود کنیم.

جمع‌بندی: استفاده از پلاگین‌های امنیتی مانند Wordfence می‌تواند به شناسایی و مسدودسازی حملات Brute Force به وردپرس کمک کند و همچنین استفاده از محدود کردن تعداد تلاش‌های ورود به حساب‌های کاربری، از دسترسی مهاجمین جلوگیری می‌کند.

3. حمله Brute Force به حساب‌های کاربری ایمیل

مهاجمین همچنین ممکن است از حملات Brute Force برای به‌دست آوردن دسترسی به حساب‌های ایمیل کاربران استفاده کنند. این نوع حملات اغلب به‌ویژه زمانی خطرناک هستند که مهاجم بتواند به حساب‌های حساس یا بانکی دسترسی پیدا کند.

مثال واقعی: در یک حمله معروف که در سال 2018 رخ داد، یک گروه هکری موفق شد از حملات Brute Force برای نفوذ به حساب‌های ایمیل بیش از 1000 کاربر استفاده کند. این حمله باعث از دست رفتن اطلاعات شخصی و سوءاستفاده‌های مالی شد.

  • ویژگی‌های حمله: مهاجمین با استفاده از لیست‌های ترکیبی از رمزعبورهایی که معمولاً در لیست‌های عمومی قرار دارند، اقدام به تلاش برای ورود به ایمیل‌های مختلف می‌کنند.
  • واکنش‌های احتمالی: پیاده‌سازی سیستم‌های مانیتورینگ و هشدار برای شناسایی رفتارهای مشکوک، استفاده از کدهای یکبار مصرف (OTP) و احراز هویت دو مرحله‌ای می‌تواند بسیار موثر باشد.

جمع‌بندی: استفاده از رمزهای عبور پیچیده و احراز هویت دو مرحله‌ای، و همچنین نظارت دقیق بر ورودهای مشکوک می‌تواند به طرز چشمگیری از موفقیت چنین حملاتی جلوگیری کند.

4. حمله Brute Force به حساب‌های شبکه‌های اجتماعی

حملات Brute Force به حساب‌های کاربری در شبکه‌های اجتماعی یکی دیگر از اهداف محبوب مهاجمین است. در این نوع حملات، مهاجمین به دنبال دسترسی به حساب‌های کاربری برای سوءاستفاده از اطلاعات یا انتشار محتوای مخرب هستند.

مثال واقعی: در سال 2020، گزارشی از حملات Brute Force گسترده به حساب‌های شبکه اجتماعی Instagram منتشر شد که در آن مهاجمین از ابزارهای خاصی برای پیدا کردن رمز عبور کاربران استفاده می‌کردند. این حملات باعث افشای داده‌های شخصی بسیاری از کاربران شد.

  • ویژگی‌های حمله: این حملات معمولاً در مقیاس وسیع صورت می‌گیرند و ممکن است مهاجم از یک IP واحد یا حتی از شبکه‌های بزرگ استفاده کند.
  • واکنش‌های احتمالی: استفاده از مکانیزم‌های فیلترینگ IP و احراز هویت دو مرحله‌ای می‌تواند از چنین حملاتی جلوگیری کند.

جمع‌بندی: برای جلوگیری از حملات Brute Force در شبکه‌های اجتماعی، توصیه می‌شود که کاربران از رمزهای عبور قوی و همچنین احراز هویت دو مرحله‌ای استفاده کنند.

5. حمله Brute Force به سیستم‌های VPN

مهاجمین ممکن است از حملات Brute Force برای شکستن احراز هویت و دسترسی به شبکه‌های خصوصی مجازی (VPN) استفاده کنند. این حملات می‌توانند به مهاجمین امکان دسترسی به داده‌های حساس یا منابع داخلی شرکت‌ها را بدهند.

مثال واقعی: در یکی از گزارش‌های امنیتی، آمده بود که یک گروه هکری در سال 2021 با استفاده از حملات Brute Force به یک سرویس VPN خاص نفوذ کرده و توانسته بود به شبکه داخلی یک شرکت بزرگ دسترسی پیدا کند.

  • ویژگی‌های حمله: در این نوع حمله، مهاجمین تلاش می‌کنند با استفاده از ترکیب‌های مختلف رمزعبور، دسترسی به شبکه خصوصی را به‌دست آورند.
  • واکنش‌های احتمالی: استفاده از تکنولوژی‌های VPN پیشرفته و همچنین احراز هویت چندعاملی (MFA) می‌تواند به جلوگیری از موفقیت این حملات کمک کند.

جمع‌بندی: پیاده‌سازی پروتکل‌های امنیتی قوی، مثل OpenVPN یا IKEv2 و ترکیب آن با احراز هویت دو مرحله‌ای، می‌تواند از دسترسی مهاجمین به سیستم‌های VPN جلوگیری کند.


حملات Brute Force به دلیل سادگی در اجرا و استفاده از منابع زیاد، یکی از روش‌های رایج نفوذ به سیستم‌ها هستند. هرچه تدابیر امنیتی بیشتری برای جلوگیری از چنین حملاتی پیاده‌سازی شود، احتمال موفقیت این حملات کاهش می‌یابد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”نقش Fail2Ban در شناسایی و مسدودسازی مهاجمان” subtitle=”توضیحات کامل”]Fail2Ban یکی از ابزارهای قدرتمند و پیشرفته برای محافظت از سرورها و سیستم‌ها در برابر حملات مختلف از جمله حملات Brute Force است. این ابزار با شناسایی فعالیت‌های مشکوک و ثبت تلاش‌های ناموفق ورود به سیستم، قادر به مسدود کردن خودکار آدرس‌های IP مهاجمین می‌باشد. در ادامه به بررسی نقش Fail2Ban در شناسایی و مسدودسازی مهاجمان پرداخته می‌شود:

1. شناسایی تلاش‌های ورود ناموفق

Fail2Ban با پایش مداوم فایل‌های لاگ سیستم، اقدام به شناسایی تلاش‌های متعدد و ناموفق ورود می‌کند. این فایل‌ها شامل اطلاعات مربوط به دسترسی‌ها، خطاها، و تلاش‌های ورود به سرویس‌های مختلف هستند. به‌عنوان مثال، در سرویس‌هایی مانند SSH، FTP یا وب‌سرورها، Fail2Ban می‌تواند تعداد تلاش‌های ورود ناموفق را به‌صورت پیوسته بررسی کند.

  • نحوه شناسایی: ابزار با استفاده از Regular Expressions (الگوهای منظم) جستجو می‌کند تا الگوهای خاصی که نشان‌دهنده تلاش‌های ورود ناموفق هستند، شناسایی شود. این تلاش‌ها معمولاً از آدرس‌های IP یکسان یا مشابه می‌آیند که به احتمال زیاد از یک مهاجم یا ربات هستند.
  • مزیت: با نظارت بر لاگ‌ها، Fail2Ban به طور خودکار و بدون نیاز به دخالت دستی، می‌تواند تهدیدات احتمالی را شناسایی کند.

2. ایجاد لیست‌های سیاه (Blacklists) برای آی‌پی‌های مخرب

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

  • نحوه مسدودسازی: زمانی که Fail2Ban متوجه تلاش‌های متوالی ناموفق برای ورود می‌شود (مثلاً بعد از چندین تلاش ناموفق برای ورود به SSH)، آدرس IP مربوطه به طور خودکار وارد لیست سیاه می‌شود و دسترسی آن آی‌پی به سرور قطع می‌شود.
  • مزیت: این قابلیت باعث می‌شود که مهاجمین نتوانند به راحتی از حملات Brute Force یا دیگر حملات برای ورود به سیستم استفاده کنند.

3. پیکربندی قابل تنظیم و سفارشی

یکی از ویژگی‌های مهم Fail2Ban، امکان پیکربندی و سفارشی‌سازی فیلترها است. این ویژگی به مدیران سیستم اجازه می‌دهد که با توجه به نیازهای خاص سیستم خود، قوانین را تنظیم کنند. به‌عنوان مثال:

  • امکان تنظیم تعداد تلاش‌های ورود ناموفق قبل از مسدودسازی آی‌پی‌ها.
  • تنظیم زمان‌بندی مسدودسازی آی‌پی‌ها (یعنی آی‌پی‌ها پس از مدت زمان معین از لیست سیاه خارج شوند).

این قابلیت‌ها به مدیران سیستم این امکان را می‌دهند که قوانین امنیتی دقیق و کارآمد برای جلوگیری از حملات مختلف تنظیم کنند.

4. هشدار دادن به مدیران سیستم

Fail2Ban قابلیت ارسال هشدار به مدیر سیستم را در صورت شناسایی حملات دارد. این هشدارها معمولاً به صورت ایمیل ارسال می‌شوند و حاوی اطلاعاتی مانند تعداد تلاش‌های ناموفق ورود، آدرس‌های IP مهاجمین و زمان دقیق وقوع حمله می‌باشند.

  • نحوه هشداردهی: هنگامی که یک حمله شناسایی شود (مثل تلاش‌های Brute Force)، Fail2Ban به طور خودکار ایمیل هشدار ارسال می‌کند.
  • مزیت: این هشدارها به مدیران سیستم این امکان را می‌دهند که به سرعت به تهدیدات واکنش نشان دهند و اقدام به تقویت اقدامات امنیتی نمایند.

5. پیشگیری از حملات توزیع‌شده (DDoS)

Fail2Ban می‌تواند در شناسایی حملات توزیع‌شده (Distributed Denial of Service یا DDoS) نقش داشته باشد. در این حملات، مهاجمین از چندین آدرس IP برای ارسال ترافیک بالا به سرور هدف استفاده می‌کنند. Fail2Ban با نظارت بر لاگ‌ها و شناسایی الگوهای مشکوک، می‌تواند رفتارهای مشابه را شبیه به حملات DDoS شناسایی کند و آی‌پی‌های مهاجمین را مسدود کند.

  • نحوه شناسایی: Fail2Ban می‌تواند ترافیک نامعمول یا درخواست‌های مکرر از یک یا چند آی‌پی را شناسایی کند.
  • مزیت: با شناسایی و مسدودسازی این درخواست‌ها، می‌توان از تاثیرات حملات DDoS جلوگیری کرد.

6. رفع مسدودیت خودکار

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

  • نحوه رفع مسدودیت: این کار بر اساس تنظیمات و قوانین زمان‌بندی در Fail2Ban انجام می‌شود.
  • مزیت: این ویژگی به جلوگیری از مسدودسازی دائمی کاربران قانونی کمک می‌کند و در عین حال از تکرار حملات جلوگیری می‌نماید.

جمع‌بندی:

Fail2Ban با ارائه راه‌حل‌هایی مانند شناسایی تلاش‌های ناموفق ورود، مسدودسازی خودکار آی‌پی‌ها، ارسال هشدار به مدیران سیستم و پیشگیری از حملات توزیع‌شده، یکی از بهترین ابزارها برای تقویت امنیت سرورها و سیستم‌ها است. این ابزار به‌ویژه برای پیشگیری از حملات Brute Force و حملات DDoS مفید است و می‌تواند به‌طور خودکار اقدامات لازم را برای مسدودسازی مهاجمین انجام دهد، در حالی که امکان رفع مسدودیت خودکار پس از مدتی نیز فراهم است.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”کاهش تعداد تلاش‌های ناموفق برای دسترسی به سرور” subtitle=”توضیحات کامل”]کاهش تعداد تلاش‌های ناموفق برای دسترسی به سرور یکی از مهمترین اقدامات امنیتی است که می‌تواند از حملات مختلف مانند Brute Force و Dictionary جلوگیری کند. این تلاش‌های ناموفق معمولاً به دلیل استفاده از رمزهای عبور ضعیف یا استفاده از ربات‌ها برای جستجوی رمزهای عبور مختلف انجام می‌شوند. در ادامه به روش‌های کاهش تلاش‌های ناموفق برای دسترسی به سرور پرداخته می‌شود:

1. استفاده از Fail2Ban

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

  • پیکربندی محدودیت تلاش‌ها: می‌توان تعداد تلاش‌های ناموفق را برای سرویس‌هایی مانند SSH، FTP و وب‌سرورها تعیین کرد. برای مثال، می‌توان تنظیم کرد که پس از 5 تلاش ناموفق، آی‌پی مهاجم به مدت 10 دقیقه مسدود شود.
  • مزیت: این ویژگی از حملات Brute Force جلوگیری کرده و دسترسی مهاجمین را به سرور مسدود می‌کند.

2. استفاده از احراز هویت دو عاملی (2FA)

احراز هویت دو عاملی یکی از بهترین روش‌ها برای افزایش امنیت و کاهش تلاش‌های ناموفق است. با فعال کردن این ویژگی، کاربران باید علاوه بر وارد کردن رمز عبور، یک کد تایید اضافی (که معمولاً از طریق پیامک یا برنامه‌های مخصوص مانند Google Authenticator ارسال می‌شود) وارد کنند.

  • مزیت: حتی اگر مهاجم رمز عبور را پیدا کند، بدون دسترسی به کد تایید، نمی‌تواند وارد سیستم شود. این روش به طرز چشمگیری حملات Brute Force را کاهش می‌دهد.

3. استفاده از رمز عبور قوی و پیچیده

رمزهای عبور ضعیف (مانند “123456” یا “password”) یکی از دلایل رایج تلاش‌های ناموفق برای ورود به سیستم هستند. با استفاده از رمز عبور پیچیده و ترکیب حروف بزرگ و کوچک، اعداد و نمادها، می‌توان از وقوع این تلاش‌ها جلوگیری کرد.

  • مزیت: رمزهای عبور پیچیده و بلند به مهاجمین زمان و تلاش بیشتری برای گمانه‌زنی نیاز دارند، که در نتیجه تعداد تلاش‌های ناموفق کاهش می‌یابد.

4. محدود کردن دسترسی به SSH

یکی از رایج‌ترین پروتکل‌ها برای حملات Brute Force SSH است. برای کاهش تلاش‌های ناموفق برای دسترسی به سرور، می‌توان محدودیت‌هایی برای دسترسی SSH ایجاد کرد.

  • استفاده از کلیدهای SSH: به جای استفاده از رمز عبور برای ورود به SSH، می‌توان از کلیدهای SSH استفاده کرد. این روش بسیار امن‌تر است زیرا کلید خصوصی به راحتی قابل حدس زدن نیست.
  • محدود کردن دسترسی به IP خاص: می‌توان دسترسی به SSH را فقط به آدرس‌های IP خاص محدود کرد تا مهاجمین نتوانند از دیگر آدرس‌های IP به سیستم دسترسی پیدا کنند.
  • مزیت: این تغییرات می‌تواند از حملات Brute Force به شدت جلوگیری کند.

5. پیکربندی امنیتی سرور

برخی تنظیمات امنیتی می‌توانند به کاهش تلاش‌های ناموفق کمک کنند:

  • غیرفعال کردن ورود به سیستم به‌عنوان root: برای جلوگیری از ورود مستقیم به سیستم به عنوان کاربر root، می‌توان این امکان را غیرفعال کرد.
  • استفاده از فایروال‌های کاربردی (Application Firewalls): فایروال‌ها می‌توانند ترافیک مشکوک و تلاش‌های ناموفق برای ورود به سیستم را مسدود کنند. این فایروال‌ها می‌توانند محدودیت‌هایی را برای تعداد تلاش‌های ناموفق اعمال کنند.

6. تنظیم محدودیت بر روی سرویس‌های ورودی

برای سرویس‌هایی مانند SSH، FTP، یا وب‌سرور می‌توان محدودیت‌هایی برای تعداد تلاش‌های ورود اعمال کرد. به عنوان مثال، می‌توان تعداد تلاش‌های ناموفق را قبل از مسدود شدن محدود کرد.

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

7. آگاهی بخشی به کاربران

یکی از مهم‌ترین اقدامات برای کاهش تلاش‌های ناموفق، آموزش و آگاهی بخشی به کاربران است. کاربران باید از اهمیت استفاده از رمزهای عبور قوی آگاه باشند و دستورالعمل‌های لازم برای ساخت رمز عبور مناسب را رعایت کنند.

  • مزیت: آموزش کاربران برای استفاده از رمزهای عبور پیچیده و غیرقابل حدس، کمک می‌کند تا تلاش‌های ناموفق برای ورود کاهش یابد.

جمع‌بندی:

کاهش تعداد تلاش‌های ناموفق برای دسترسی به سرور یکی از مهمترین گام‌ها در بهبود امنیت سرور است. استفاده از ابزارهایی مانند Fail2Ban، فعال‌سازی احراز هویت دو عاملی، محدود کردن دسترسی‌ها به SSH و استفاده از رمزهای عبور پیچیده می‌تواند به کاهش این تلاش‌ها کمک کند. علاوه بر این، استفاده از تنظیمات امنیتی مناسب و آموزش کاربران برای رعایت اصول امنیتی می‌تواند در جلوگیری از حملات و تهدیدات مختلف مؤثر باشد.[/cdb_course_lesson][cdb_course_lesson title=”فصل 6. چرا Fail2Ban ابزار ضروری است؟”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”دلایل اصلی ضروری بودن Fail2Ban” subtitle=”توضیحات کامل”]در دنیای امروز، امنیت سرور و اطلاعات از اهمیت زیادی برخوردار است و ابزارهایی مانند Fail2Ban برای مدیریت و ارتقاء امنیت سرورها به کار می‌روند. این ابزار به دلایل مختلف یک انتخاب ضروری برای مدیران سرور است. در ادامه دلایل اصلی ضروری بودن Fail2Ban را بررسی می‌کنیم.


1. ساده‌سازی مدیریت امنیت سرور

یکی از بزرگ‌ترین چالش‌های مدیران سرور، مدیریت امنیت و نظارت بر حملات است. Fail2Ban با قابلیت شناسایی خودکار حملات و مسدودسازی آی‌پی‌های مهاجم، فرآیند مدیریت امنیت سرور را به طرز چشمگیری ساده می‌کند.

  • حذف نیاز به مدیریت دستی: در حالی که حملات همچون Brute Force نیاز به نظارت مداوم دارند، Fail2Ban این فرایند را به طور خودکار انجام می‌دهد، بدون اینکه نیاز به بررسی دستی لاگ‌ها و اعمال تغییرات توسط مدیر سرور باشد.
  • پیکربندی آسان: این ابزار به راحتی قابل پیکربندی است و می‌توان آن را برای انواع سرویس‌ها (مانند SSH، FTP و HTTP) تنظیم کرد.

2. کاهش نیاز به مداخله دستی در مسدودسازی آی‌پی‌های مخرب

در صورتی که یک مهاجم تلاش کند به سرور دسترسی پیدا کند، سیستم معمولاً وارد حالت دفاعی می‌شود. اما اگر سرور به طور خودکار این حملات را شناسایی نکرده و آی‌پی مهاجم را مسدود نکند، مدیر سرور باید این کار را به صورت دستی انجام دهد.

  • عدم نیاز به مداخله دستی: Fail2Ban به طور خودکار آی‌پی‌های مخرب را شناسایی کرده و آن‌ها را مسدود می‌کند. این کار باعث کاهش نیاز به مداخله دستی می‌شود و مدیران سرور می‌توانند به امور دیگر پرداخته و نگران حملات نباشند.
  • صرفه‌جویی در زمان و منابع انسانی: به جای اینکه مدیران مجبور باشند به صورت مداوم حملات و تلاش‌های ورود غیرمجاز را بررسی کنند، Fail2Ban به طور خودکار این کار را انجام می‌دهد.

3. کاهش بار پردازشی سرور از طریق مدیریت هوشمندانه تلاش‌های غیرمجاز

حملات Brute Force و تلاش‌های غیرمجاز می‌توانند به سرعت منابع سرور را مصرف کنند و عملکرد آن را تحت تأثیر قرار دهند. در صورتی که این تلاش‌ها متوقف نشوند، سرور می‌تواند با بار پردازشی زیادی روبه‌رو شود.

  • مدیریت هوشمندانه: Fail2Ban با استفاده از الگوریتم‌های خود، تعداد تلاش‌های غیرمجاز را نظارت کرده و پس از شناسایی تلاش‌های مشکوک، آی‌پی‌های مهاجم را مسدود می‌کند. این کار از بار اضافی روی سرور جلوگیری کرده و به حفظ پایداری سیستم کمک می‌کند.
  • پیشگیری از حملات شدید: بدون ابزارهایی مانند Fail2Ban، سرور ممکن است مدت‌ها تحت حملات Brute Force قرار بگیرد که به شدت منابع آن را مصرف می‌کند. Fail2Ban از بروز چنین مشکلاتی جلوگیری می‌کند.

جمع‌بندی:

Fail2Ban ابزاری ضروری برای محافظت از سرورها در برابر حملات Brute Force و Dictionary است. این ابزار با ساده‌سازی فرآیند مدیریت امنیت، کاهش نیاز به مداخله دستی و کاهش بار پردازشی سرور، باعث بهبود عملکرد و امنیت کلی سرور می‌شود. Fail2Ban به مدیران سرور این امکان را می‌دهد که بدون نگرانی از حملات مداوم و تلاش‌های غیرمجاز، بر دیگر جنبه‌های مدیریت سرور متمرکز شوند.[/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”بخش 2. نصب Fail2Ban”][cdb_course_lesson title=”فصل 1. بررسی پیش‌نیازهای نصب”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”بررسی نسخه سیستم‌عامل و نیازمندی‌های اولیه” subtitle=”توضیحات کامل”]قبل از نصب Fail2Ban، باید از چند نکته اساسی و پیش‌نیازها اطمینان حاصل کنید تا فرآیند نصب به‌درستی انجام شود و با مشکلاتی مواجه نشوید.


1. بررسی نسخه سیستم‌عامل و نیازمندی‌های اولیه

1.1 اطمینان از به‌روزبودن سیستم

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

برای به‌روزرسانی سیستم در سیستم‌های مبتنی بر Debian/Ubuntu، از دستورات زیر استفاده کنید:

sudo apt update        # بروزرسانی فهرست پکیج‌ها
sudo apt upgrade       # ارتقاء پکیج‌ها به نسخه‌های جدید

برای سیستم‌های مبتنی بر RHEL/CentOS، دستور مشابه این است:

sudo yum update        # بروزرسانی فهرست پکیج‌ها

1.2 بررسی سازگاری نسخه سیستم‌عامل با Fail2Ban

Fail2Ban به‌طور گسترده بر روی توزیع‌های مختلف لینوکس کار می‌کند، اما اطمینان از سازگاری نسخه سیستم‌عامل شما با این نرم‌افزار می‌تواند از مشکلات آینده جلوگیری کند. به‌طور کلی، Fail2Ban نسخه‌های زیر از سیستم‌عامل‌ها را پشتیبانی می‌کند:

  • Debian/Ubuntu: Fail2Ban از نسخه‌های 10 (Buster) و بالاتر پشتیبانی می‌کند.
  • RHEL/CentOS: نسخه‌های 7 و 8 به‌طور کامل با Fail2Ban سازگار هستند.
  • Fedora: نسخه‌های Fedora 30 به بالا.
  • Arch Linux: آخرین نسخه‌ها به‌طور کامل سازگار هستند.

اگر از نسخه قدیمی‌تری از این توزیع‌ها استفاده می‌کنید، ممکن است با برخی از مشکلات سازگاری مواجه شوید. به‌طور معمول، اگر از نسخه‌های LTS (پشتیبانی طولانی‌مدت) مانند Ubuntu 18.04 یا Ubuntu 20.04 استفاده می‌کنید، Fail2Ban به‌طور کامل با این نسخه‌ها سازگار است.

1.3 بررسی پیش‌نیازهای نرم‌افزاری

برای اجرای Fail2Ban، چند پیش‌نیاز نرم‌افزاری وجود دارد که باید نصب باشند:

  1. Python 3: Fail2Ban برای اجرا به Python 3 نیاز دارد. برای بررسی نصب بودن Python 3، از دستور زیر استفاده کنید:
    python3 --version
    

    اگر نسخه‌ای از Python 3 نصب نشده باشد، می‌توانید آن را به‌راحتی با دستور زیر نصب کنید:

    در Debian/Ubuntu:

    sudo apt install python3
    

    در RHEL/CentOS:

    sudo yum install python3
    
  2. Iptables یا Firewalld: Fail2Ban معمولاً از iptables برای مسدودسازی آی‌پی‌های مشکوک استفاده می‌کند. در برخی از توزیع‌ها، مانند CentOS و RHEL، از firewalld به‌جای iptables استفاده می‌شود. بنابراین، باید مطمئن شوید که این ابزارها به‌درستی نصب و پیکربندی شده‌اند.برای بررسی نصب بودن iptables، دستور زیر را اجرا کنید:
    sudo iptables --version
    

    در صورتی که firewalld را استفاده می‌کنید، باید اطمینان حاصل کنید که این ابزار فعال است و پیکربندی درستی دارد:

    sudo systemctl status firewalld
    
  3. سرویس‌های شبکه‌ای: Fail2Ban برای مسدودسازی آی‌پی‌های مخرب به لاگ‌های مختلف سرویس‌ها نیاز دارد، مانند SSH، FTP، HTTP و غیره. بنابراین باید اطمینان حاصل کنید که سرویس‌هایی که می‌خواهید نظارت کنید به‌درستی در حال اجرا هستند و لاگ‌های مربوطه فعال هستند.

2. بررسی سازگاری نسخه Fail2Ban با سیستم‌عامل

قبل از نصب Fail2Ban، باید مطمئن شوید که نسخه‌ای از این نرم‌افزار که قصد دارید نصب کنید، با نسخه سیستم‌عامل شما سازگار است. نسخه‌های جدید Fail2Ban معمولاً از سیستم‌عامل‌های جدیدتر پشتیبانی می‌کنند.

برای بررسی نسخه Fail2Ban موجود در مخزن پکیج توزیع خود (اگر از نصب از پکیج استفاده می‌کنید) می‌توانید از دستور زیر استفاده کنید:

در Debian/Ubuntu:

apt show fail2ban

در RHEL/CentOS:

yum info fail2ban

این دستور اطلاعاتی در مورد نسخه Fail2Ban نصب‌شده و وابستگی‌های آن ارائه خواهد داد.

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


جمع‌بندی

برای نصب موفقیت‌آمیز Fail2Ban، ابتدا باید از به‌روزبودن سیستم و سازگاری نسخه سیستم‌عامل خود با این نرم‌افزار اطمینان حاصل کنید. همچنین، اطمینان از نصب بودن پیش‌نیازهای نرم‌افزاری مانند Python 3 و iptables یا firewalld ضروری است. بررسی سازگاری نسخه Fail2Ban با سیستم‌عامل شما از طریق پکیج‌های موجود در مخازن یا نصب از سورس به شما کمک خواهد کرد تا از عملکرد صحیح Fail2Ban بهره‌مند شوید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”نصب پکیج‌های ضروری برای Fail2Ban” subtitle=”توضیحات کامل”]برای نصب و پیکربندی Fail2Ban به‌درستی، باید چند پکیج ضروری را نصب کنید که به نرم‌افزار کمک می‌کند تا به‌طور مؤثر عمل کند. این پکیج‌ها شامل ابزارهای فایروال، ارسال هشدارها و وابستگی‌های نرم‌افزاری می‌باشند.


1. نصب ابزارهای موردنیاز

1.1 نصب iptables (برای فایروال)

یکی از ابزارهای اساسی که Fail2Ban برای مسدودسازی آی‌پی‌های مخرب از آن استفاده می‌کند، iptables است. iptables فایروالی است که قوانین فیلتر شبکه را اعمال می‌کند.

برای نصب iptables در Debian/Ubuntu:

sudo apt install iptables

در RHEL/CentOS:

sudo yum install iptables

پس از نصب، می‌توانید وضعیت iptables را با دستور زیر بررسی کنید:

sudo iptables -L

این دستور، قوانین فعال iptables را نمایش می‌دهد.


1.2 نصب ufw (برای فایروال)

اگر از ufw (Uncomplicated Firewall) به‌جای iptables برای مدیریت فایروال استفاده می‌کنید، باید این ابزار را نصب کنید. ufw یک ابزار ساده و کاربردی برای مدیریت فایروال است که برای کاربران مبتدی و مدیریت سرورهای ساده مناسب است.

برای نصب ufw در Debian/Ubuntu:

sudo apt install ufw

در RHEL/CentOS، ابتدا باید epel-release را نصب کنید تا دسترسی به مخزن‌های اضافی فراهم شود:

sudo yum install epel-release
sudo yum install ufw

برای فعال‌سازی و پیکربندی ufw، از دستورات زیر استفاده کنید:

sudo ufw enable
sudo ufw status

1.3 نصب sendmail (برای ارسال هشدارها)

sendmail برای ارسال هشدارهای ایمیلی از سوی Fail2Ban استفاده می‌شود. اگر بخواهید از هشدارهای ایمیلی استفاده کنید، نیاز دارید که sendmail یا یک سرویس مشابه نصب و پیکربندی شده باشد.

برای نصب sendmail در Debian/Ubuntu:

sudo apt install sendmail

در RHEL/CentOS:

sudo yum install sendmail

پس از نصب، باید sendmail را فعال کرده و آن را راه‌اندازی کنید:

sudo systemctl enable sendmail
sudo systemctl start sendmail

برای اطمینان از نصب و کارکرد صحیح sendmail، می‌توانید یک ایمیل آزمایشی ارسال کنید:

echo "Test email from Sendmail" | mail -s "Test" your-email@example.com

2. نصب و پیکربندی Python

Fail2Ban به Python 3 نیاز دارد تا بتواند به‌طور مؤثر اجرا شود. در صورتی که Python 3 روی سیستم شما نصب نیست، باید آن را نصب کنید.

2.1 بررسی نصب Python

برای بررسی اینکه آیا Python 3 نصب است، از دستور زیر استفاده کنید:

python3 --version

اگر نسخه‌ای از Python 3 نصب نشده باشد، می‌توانید آن را نصب کنید.

2.2 نصب Python 3

در Debian/Ubuntu:

sudo apt install python3

در RHEL/CentOS:

sudo yum install python3

پس از نصب، می‌توانید از دستور زیر برای بررسی نسخه Python نصب‌شده استفاده کنید:

python3 --version

3. بررسی وابستگی‌ها

قبل از نصب Fail2Ban، باید مطمئن شوید که تمام وابستگی‌های لازم (مانند Python، iptables یا ufw، و sendmail) به‌درستی نصب شده‌اند و کار می‌کنند.

برای بررسی و تست صحت نصب هرکدام از این ابزارها، دستورهای زیر را می‌توانید اجرا کنید:

  • برای iptables:
    sudo iptables -L
    
  • برای ufw:
    sudo ufw status
    
  • برای sendmail:
    sendmail your-email@example.com
    

این دستورات وضعیت ابزارها را نمایش می‌دهند و می‌توانید بررسی کنید که همه چیز به‌درستی نصب و پیکربندی شده باشد.


جمع‌بندی

برای نصب موفقیت‌آمیز Fail2Ban، باید ابزارهای ضروری مانند iptables یا ufw (برای فایروال)، sendmail (برای ارسال هشدارهای ایمیلی) و Python 3 (برای اجرای Fail2Ban) را نصب و پیکربندی کنید. نصب این پکیج‌ها تضمین می‌کند که Fail2Ban به‌درستی عمل کند و به شما در محافظت از سرور در برابر حملات کمک کند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”اطمینان از پشتیبانی فایروال برای همکاری با Fail2Ban” subtitle=”توضیحات کامل”]برای استفاده از Fail2Ban به‌طور مؤثر، باید فایروال سرور به‌درستی پیکربندی شده باشد تا بتواند با Fail2Ban همکاری کند و ترافیک‌های مشکوک را مسدود کند. در اینجا، به بررسی وضعیت فایروال و فعال‌سازی آن، همچنین تنظیمات اولیه برای همکاری با Fail2Ban می‌پردازیم.


1. بررسی وضعیت و فعال‌سازی iptables یا firewalld

Fail2Ban برای مسدودسازی آی‌پی‌های مشکوک از iptables یا firewalld استفاده می‌کند. به همین دلیل، باید اطمینان حاصل کنید که یکی از این فایروال‌ها نصب و فعال است.

1.1 بررسی و فعال‌سازی iptables

برای بررسی وضعیت iptables و اطمینان از فعال بودن آن، از دستور زیر استفاده کنید:

sudo systemctl status iptables

اگر فایروال iptables فعال نیست، می‌توانید آن را با دستورات زیر فعال کنید:

sudo systemctl enable iptables
sudo systemctl start iptables

برای بررسی قوانین iptables و اطمینان از اینکه هیچ قانونی تداخل با Fail2Ban ندارد، دستور زیر را وارد کنید:

sudo iptables -L

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

1.2 بررسی و فعال‌سازی firewalld

در سیستم‌هایی که از firewalld به‌جای iptables استفاده می‌کنند، ابتدا باید بررسی کنید که این فایروال فعال است یا خیر:

sudo systemctl status firewalld

اگر firewalld غیرفعال است، می‌توانید آن را فعال کنید:

sudo systemctl enable firewalld
sudo systemctl start firewalld

برای بررسی وضعیت فایروال و مشاهده قوانین فعال:

sudo firewall-cmd --state

برای مشاهده و تنظیم گروه‌ها یا قوانین فایروال، از دستور زیر استفاده کنید:

sudo firewall-cmd --list-all

2. ایجاد تنظیمات اولیه فایروال برای همکاری با Fail2Ban

پس از فعال‌سازی و اطمینان از عملکرد فایروال، باید تنظیمات فایروال را به‌گونه‌ای پیکربندی کنید که با Fail2Ban همکاری کند و ترافیک‌های مشکوک را مسدود کند.

2.1 پیکربندی iptables برای همکاری با Fail2Ban

در صورتی که از iptables استفاده می‌کنید، باید تنظیمات اولیه آن را به‌گونه‌ای پیکربندی کنید که Fail2Ban بتواند به‌درستی عمل کند.

یک راه معمول این است که برای استفاده از قوانین Fail2Ban، آن‌ها را به‌طور دستی اضافه کنید یا فایل‌های پیکربندی پیش‌فرض را اصلاح کنید. این تنظیمات معمولاً در /etc/iptables/rules.v4 یا /etc/sysconfig/iptables قرار دارند.

2.2 پیکربندی firewalld برای همکاری با Fail2Ban

در صورتی که از firewalld استفاده می‌کنید، باید اطمینان حاصل کنید که فایروال به‌درستی تنظیم شده و به‌طور خودکار اجازه می‌دهد که Fail2Ban به‌صورت مؤثر عمل کند. برای این کار می‌توانید از دستورات زیر استفاده کنید تا پورت‌ها یا سرویس‌های ضروری برای Fail2Ban باز بمانند.

برای اجازه دادن به پورت‌ها یا خدمات خاص، مانند SSH، می‌توانید از دستورات زیر استفاده کنید:

sudo firewall-cmd --permanent --zone=public --add-service=ssh
sudo firewall-cmd --reload

اگر از Fail2Ban برای مسدودسازی آی‌پی‌های خاص استفاده می‌کنید، باید قوانین مربوط به Fail2Ban را در firewalld پیکربندی کنید تا firewalld بتواند ترافیک‌های مسدودشده را شناسایی و مسدود کند.

2.3 تنظیم Fail2Ban برای مسدودسازی آی‌پی‌ها از طریق فایروال

بعد از نصب و پیکربندی فایروال، Fail2Ban باید به‌طور خودکار قوانین مسدودسازی آی‌پی‌ها را با استفاده از ابزار فایروال (مثل iptables یا firewalld) اعمال کند. برای این کار، باید Fail2Ban را تنظیم کنید تا از ابزار موردنظر برای مسدودسازی استفاده کند.

در فایل پیکربندی Fail2Ban (معمولاً در مسیر /etc/fail2ban/jail.local یا /etc/fail2ban/jail.conf) تنظیمات فایروال را به‌گونه‌ای تنظیم کنید که با iptables یا firewalld همکاری کند. برای مثال، در iptables باید از گزینه action = iptables-multiport استفاده کنید.

نمونه تنظیمات برای استفاده از iptables:

[DEFAULT]
bantime = 600
findtime = 600
maxretry = 3
action = iptables-multiport[name=SSH, port=ssh, protocol=tcp]

نمونه تنظیمات برای استفاده از firewalld:

[DEFAULT]
bantime = 600
findtime = 600
maxretry = 3
action = firewallcmd[name=SSH, port=ssh, protocol=tcp]

جمع‌بندی

برای استفاده مؤثر از Fail2Ban، باید از پشتیبانی و پیکربندی صحیح فایروال اطمینان حاصل کنید. این شامل بررسی وضعیت فایروال (چه iptables و چه firewalld) و تنظیم آن به‌گونه‌ای است که بتواند با Fail2Ban همکاری کند. با پیکربندی صحیح فایروال و تنظیمات اولیه، Fail2Ban می‌تواند ترافیک‌های مشکوک را شناسایی کرده و با مسدودسازی آی‌پی‌های مهاجم، امنیت سرور را بهبود بخشد.[/cdb_course_lesson][cdb_course_lesson title=”فصل 2. نصب Fail2Ban در سیستم‌های مختلف”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”نصب در سیستم‌های مبتنی بر Debian/Ubuntu” subtitle=”توضیحات کامل”]Fail2Ban ابزاری قدرتمند برای جلوگیری از حملات brute force و سایر تلاش‌های غیرمجاز به سرور است. در این فصل، نحوه نصب Fail2Ban در سیستم‌های مبتنی بر Debian و Ubuntu بررسی خواهد شد. این دو سیستم عامل محبوب در دنیای لینوکس از ابزارهای مشابه برای نصب بسته‌ها استفاده می‌کنند که نصب Fail2Ban را ساده می‌کند.


1. نصب Fail2Ban در سیستم‌های مبتنی بر Debian/Ubuntu

1.1 نصب Fail2Ban از مخازن رسمی

یکی از ساده‌ترین و رایج‌ترین روش‌ها برای نصب Fail2Ban استفاده از مخازن رسمی سیستم است. در این روش، تمامی پکیج‌ها از طریق مدیر بسته سیستم دانلود و نصب می‌شوند.

گام‌های نصب:
  1. به‌روزرسانی لیست بسته‌ها قبل از نصب، بهتر است لیست بسته‌ها را به‌روزرسانی کنید تا از آخرین نسخه‌های موجود استفاده کنید.دستور زیر را وارد کنید:
    sudo apt update
    
  2. نصب Fail2Ban پس از به‌روزرسانی، می‌توانید Fail2Ban را با استفاده از دستور زیر نصب کنید:
    sudo apt install fail2ban
    
  3. تأیید نصب پس از نصب، می‌توانید با دستور زیر بررسی کنید که Fail2Ban به درستی نصب شده است:
    fail2ban-client -v
    

    این دستور نسخه نصب‌شده Fail2Ban را نشان خواهد داد.


1.2 پیکربندی اولیه Fail2Ban

پس از نصب، باید Fail2Ban را برای مسدود کردن آی‌پی‌های مخرب و شناسایی تلاش‌های ناموفق برای ورود پیکربندی کنید.

  1. پیکربندی اولیه فایل jail.localبه‌طور پیش‌فرض، Fail2Ban تنظیمات خود را از فایل jail.conf بارگذاری می‌کند. برای جلوگیری از تغییرات مستقیم در فایل اصلی پیکربندی، بهتر است یک فایل jail.local بسازید و تنظیمات خود را در آن قرار دهید.دستور زیر برای ویرایش این فایل استفاده می‌شود:
    sudo nano /etc/fail2ban/jail.local
    

    در این فایل، شما می‌توانید قوانین مربوط به Jail‌ها (که همان تنظیمات مسدودسازی آی‌پی‌ها برای سرویس‌های مختلف است) را تنظیم کنید.

  2. تنظیم Jail برای SSH برای فعال کردن Fail2Ban برای سرویس SSH، می‌توانید بخش زیر را در فایل jail.local اضافه کنید:
    [sshd]
    enabled = true
    port = ssh
    logpath = /var/log/auth.log
    maxretry = 3
    bantime = 3600
    

    این تنظیمات به این معنی است که:

    • enabled: Jail برای SSH فعال می‌شود.
    • logpath: مسیر فایل لاگ برای سرویس SSH است.
    • maxretry: تعداد تلاش‌های ناموفق مجاز.
    • bantime: مدت زمان مسدودسازی آی‌پی‌های مخرب (بر حسب ثانیه).
  3. ریستارت سرویس Fail2Ban پس از اعمال تغییرات، باید سرویس Fail2Ban را ریستارت کنید تا تغییرات اعمال شوند:
    sudo systemctl restart fail2ban
    
  4. بررسی وضعیت Fail2Ban برای بررسی وضعیت سرویس و اطمینان از اینکه همه چیز به درستی پیکربندی شده است، از دستور زیر استفاده کنید:
    sudo systemctl status fail2ban
    

1.3 پیکربندی سایر Jail‌ها

در صورت نیاز به پیکربندی Fail2Ban برای سرویس‌های دیگر، مانند FTP یا وب‌سرورها، کافی است تنظیمات مربوط به هر سرویس را در فایل jail.local اضافه کنید. به‌طور مثال:

  • پیکربندی Jail برای FTP (vsftpd):
    [vsftpd]
    enabled = true
    port = ftp
    logpath = /var/log/vsftpd.log
    maxretry = 3
    bantime = 3600
    
  • پیکربندی Jail برای Apache:
    [apache]
    enabled = true
    port = http,https
    logpath = /var/log/apache2/*.log
    maxretry = 5
    bantime = 7200
    

1.4 استفاده از Fail2Ban برای نظارت بر سیستم

Fail2Ban همچنین می‌تواند برای نظارت بر تلاش‌های دسترسی غیرمجاز به سیستم شما استفاده شود. با بررسی فایل‌های لاگ سیستم مانند auth.log و syslog، Fail2Ban می‌تواند به‌طور خودکار اقداماتی مانند مسدود کردن آی‌پی‌ها را انجام دهد.


جمع‌بندی

در سیستم‌های مبتنی بر Debian و Ubuntu، نصب Fail2Ban از طریق مخازن رسمی یک فرایند ساده است. پس از نصب، می‌توان تنظیمات را به‌راحتی پیکربندی کرد و برای سرویس‌های مختلف مانند SSH، FTP، و وب‌سرور‌ها قوانین مسدودسازی را اعمال کرد. با این روش، Fail2Ban به‌طور خودکار آی‌پی‌های مخرب را شناسایی کرده و از سرور شما در برابر حملات brute force محافظت می‌کند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”نصب Fail2Ban در سیستم‌های مبتنی بر RHEL/CentOS” subtitle=”توضیحات کامل”]در سیستم‌های مبتنی بر RHEL (Red Hat Enterprise Linux) و CentOS، نصب Fail2Ban مشابه با دیگر سیستم‌های لینوکسی است، اما به دلیل استفاده از YUM یا DNF به‌عنوان مدیر بسته، فرآیند نصب کمی متفاوت خواهد بود.


1. نصب Fail2Ban در RHEL/CentOS

1.1 نصب Fail2Ban از مخازن رسمی

برای نصب Fail2Ban از مخازن رسمی RHEL/CentOS، ابتدا باید مخزن EPEL (Extra Packages for Enterprise Linux) را فعال کنید، زیرا Fail2Ban در این مخزن موجود است.

گام‌های نصب:
  1. فعال‌سازی مخزن EPELدستور زیر را برای فعال‌سازی مخزن EPEL اجرا کنید:
    sudo yum install epel-release
    

    اگر از CentOS 8 یا نسخه‌های جدیدتر استفاده می‌کنید، به‌جای yum می‌توانید از دستور dnf استفاده کنید:

    sudo dnf install epel-release
    
  2. نصب Fail2Banپس از فعال‌سازی مخزن EPEL، حالا می‌توانید Fail2Ban را با استفاده از دستور زیر نصب کنید:
    sudo yum install fail2ban
    

    یا در نسخه‌های جدیدتر:

    sudo dnf install fail2ban
    
  3. تأیید نصبپس از نصب، با استفاده از دستور زیر می‌توانید بررسی کنید که Fail2Ban به درستی نصب شده است:
    fail2ban-client -v
    

1.2 پیکربندی اولیه Fail2Ban

پس از نصب Fail2Ban، باید آن را پیکربندی کرده و Jail‌های مناسب را فعال کنید.

  1. پیکربندی فایل jail.localهمانطور که در سیستم‌های Debian/Ubuntu توضیح داده شد، در اینجا هم باید یک فایل jail.local ایجاد کنید تا تنظیمات پیکربندی Fail2Ban را سفارشی کنید. در این فایل، قوانین Jail‌ها برای سرویس‌های مختلف قرار می‌گیرند.برای ویرایش این فایل از دستور زیر استفاده کنید:
    sudo nano /etc/fail2ban/jail.local
    

    سپس می‌توانید تنظیمات مختلفی مانند Jail‌ها برای SSH را به این صورت وارد کنید:

    [sshd]
    enabled = true
    port = ssh
    logpath = /var/log/secure
    maxretry = 3
    bantime = 3600
    
  2. فعال‌سازی Fail2Banپس از ویرایش و ذخیره فایل jail.local، باید سرویس Fail2Ban را راه‌اندازی کنید.برای راه‌اندازی Fail2Ban از دستور زیر استفاده کنید:
    sudo systemctl enable fail2ban
    sudo systemctl start fail2ban
    
  3. بررسی وضعیت Fail2Banبرای بررسی وضعیت Fail2Ban و اطمینان از اینکه همه چیز به درستی کار می‌کند، از دستور زیر استفاده کنید:
    sudo systemctl status fail2ban
    

    اگر سرویس به درستی در حال اجرا باشد، باید خروجی مشابه زیر را مشاهده کنید:

    ● fail2ban.service - Fail2Ban Service
       Loaded: loaded (/etc/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
       Active: active (running) since Tue 2025-01-30 10:30:00 UTC; 10min ago
       ...
    

1.3 پیکربندی سایر Jail‌ها

پس از پیکربندی Jail برای SSH، ممکن است بخواهید Fail2Ban را برای دیگر سرویس‌ها مانند FTP، Apache یا Nginx نیز تنظیم کنید.

  • پیکربندی Jail برای FTP (vsftpd):
    [vsftpd]
    enabled = true
    port = ftp
    logpath = /var/log/vsftpd.log
    maxretry = 3
    bantime = 3600
    
  • پیکربندی Jail برای Apache:
    [apache]
    enabled = true
    port = http,https
    logpath = /var/log/httpd/*.log
    maxretry = 5
    bantime = 7200
    

1.4 بررسی وضعیت Fail2Ban

برای بررسی وضعیت Jail‌های مختلف و اطمینان از اینکه Fail2Ban به‌درستی در حال کار است، می‌توانید از دستور زیر استفاده کنید:

sudo fail2ban-client status

این دستور وضعیت کلی سیستم Fail2Ban را نمایش می‌دهد. همچنین می‌توانید وضعیت هر Jail خاص را بررسی کنید:

sudo fail2ban-client status sshd

جمع‌بندی

در سیستم‌های مبتنی بر RHEL و CentOS، نصب Fail2Ban از طریق مخزن EPEL انجام می‌شود و با استفاده از دستورات yum یا dnf قابل نصب است. پس از نصب، پیکربندی Fail2Ban با ویرایش فایل‌های jail.local انجام می‌شود تا سرویس‌هایی مانند SSH و FTP برای شناسایی حملات brute force محافظت شوند. با پیکربندی مناسب، Fail2Ban می‌تواند به‌طور خودکار آی‌پی‌های مخرب را شناسایی و مسدود کند و به افزایش امنیت سرور شما کمک کند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”نصب Fail2Ban از سورس” subtitle=”توضیحات کامل”]گاهی اوقات ممکن است بخواهید Fail2Ban را به‌طور مستقیم از سورس نصب کنید. این روش به شما این امکان را می‌دهد که از آخرین نسخه‌های توسعه‌داده‌شده یا ویژگی‌های خاص استفاده کنید که هنوز در بسته‌های رسمی موجود نیستند.

در اینجا روش نصب Fail2Ban از سورس به تفصیل آورده شده است:


1. دانلود سورس Fail2Ban

1.1 دانلود از GitHub یا وب‌سایت رسمی

اولین قدم در نصب Fail2Ban از سورس، دانلود سورس کد از مخزن رسمی آن است.

  • دانلود از GitHub: می‌توانید سورس Fail2Ban را از مخزن GitHub آن دانلود کنید. برای این کار از دستور git clone استفاده کنید.ابتدا باید Git را نصب کنید (اگر قبلاً نصب نکرده‌اید):
    sudo apt-get install git   # در سیستم‌های Debian/Ubuntu
    sudo yum install git       # در سیستم‌های RHEL/CentOS
    

    سپس با استفاده از دستور زیر سورس را از GitHub دانلود کنید:

    git clone https://github.com/fail2ban/fail2ban.git
    
  • دانلود از وب‌سایت رسمی: می‌توانید آخرین نسخه‌ی Fail2Ban را از وب‌سایت رسمی Fail2Ban دانلود کنید.در این حالت معمولاً یک فایل فشرده (tar.gz) برای دانلود موجود است.
    wget https://github.com/fail2ban/fail2ban/archive/refs/tags/RELEASE-VERSION.tar.gz
    

2. نصب وابستگی‌های موردنیاز

2.1 نصب وابستگی‌های Python و pip

Fail2Ban به‌عنوان یک ابزار نوشته‌شده به زبان Python به برخی از کتابخانه‌ها و وابستگی‌های مرتبط با Python نیاز دارد.

  1. نصب Python:Fail2Ban به Python 3 نیاز دارد. برای نصب Python 3 (اگر قبلاً نصب نشده باشد) از دستورات زیر استفاده کنید:در سیستم‌های مبتنی بر Debian/Ubuntu:
    sudo apt-get install python3
    

    در سیستم‌های مبتنی بر RHEL/CentOS:

    sudo yum install python3
    
  2. نصب pip:برای نصب وابستگی‌های Python از pip استفاده می‌شود. دستور زیر را برای نصب pip اجرا کنید:در سیستم‌های مبتنی بر Debian/Ubuntu:
    sudo apt-get install python3-pip
    

    در سیستم‌های مبتنی بر RHEL/CentOS:

    sudo yum install python3-pip
    

2.2 نصب کتابخانه‌های Python مرتبط

Fail2Ban به تعدادی کتابخانه Python نیاز دارد که با استفاده از pip می‌توانید آنها را نصب کنید. برای نصب این کتابخانه‌ها دستور زیر را اجرا کنید:

sudo pip3 install -r requirements.txt

این دستور فایل requirements.txt را که شامل فهرستی از کتابخانه‌های موردنیاز است، می‌خواند و آن‌ها را نصب می‌کند.


3. کامپایل و نصب Fail2Ban با استفاده از make و make install

پس از دانلود و نصب وابستگی‌ها، حالا می‌توانید Fail2Ban را کامپایل و نصب کنید.

  1. رفتن به دایرکتوری سورس: ابتدا به دایرکتوری که سورس Fail2Ban را دانلود کرده‌اید بروید.
    cd fail2ban
    
  2. اجرای دستور make: دستور make فایل‌های منبع را کامپایل می‌کند و ابزار را آماده نصب می‌کند.
    sudo make
    
  3. نصب Fail2Ban: پس از کامپایل، دستور make install برای نصب Fail2Ban به سیستم شما استفاده می‌شود:
    sudo make install
    

4. پیکربندی Fail2Ban

پس از نصب Fail2Ban از سورس، مانند نصب از بسته‌های آماده، باید آن را پیکربندی کنید.

  1. ایجاد فایل پیکربندی jail.local: برای ایجاد و ویرایش فایل پیکربندی، دستور زیر را اجرا کنید:
    sudo nano /etc/fail2ban/jail.local
    

    سپس تنظیمات Jail‌ها و قوانین مختلف را مطابق نیاز خود اضافه کنید.

  2. فعال‌سازی Fail2Ban: بعد از پیکربندی، Fail2Ban را می‌توانید با استفاده از دستورات زیر فعال کنید:
    sudo systemctl enable fail2ban
    sudo systemctl start fail2ban
    

5. بررسی وضعیت Fail2Ban

برای اطمینان از اینکه Fail2Ban به‌درستی نصب و فعال شده است، می‌توانید از دستور زیر استفاده کنید:

sudo systemctl status fail2ban

برای بررسی وضعیت Jail‌ها:

sudo fail2ban-client status

جمع‌بندی

نصب Fail2Ban از سورس به شما این امکان را می‌دهد که از آخرین نسخه‌های این نرم‌افزار استفاده کنید. مراحل نصب شامل دانلود سورس از GitHub یا وب‌سایت رسمی، نصب وابستگی‌های Python و pip، و کامپایل و نصب با استفاده از دستورات make و make install است. پس از نصب، باید پیکربندی‌های لازم را انجام داده و Fail2Ban را فعال کنید تا بتوانید از ویژگی‌های امنیتی آن برای حفاظت از سرور خود استفاده کنید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 3. راه‌اندازی اولیه Fail2Ban”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”فعال‌سازی سرویس Fail2Ban در سیستم” subtitle=”توضیحات کامل”]پس از نصب و پیکربندی Fail2Ban، باید سرویس آن را راه‌اندازی کرده و تنظیمات لازم را برای اجرای خودکار آن هنگام بوت سیستم انجام دهید.


1. راه‌اندازی Fail2Ban با استفاده از دستور systemctl start fail2ban

برای شروع سرویس Fail2Ban، باید از دستور زیر استفاده کنید:

sudo systemctl start fail2ban

این دستور سرویس Fail2Ban را به‌طور موقت راه‌اندازی می‌کند. سرویس بعد از راه‌اندازی، شروع به نظارت بر تلاش‌های ورود غیرمجاز و اجرای قوانین مسدودسازی آی‌پی‌ها خواهد کرد.

بررسی وضعیت سرویس Fail2Ban:

برای بررسی اینکه سرویس به درستی اجرا شده است، از دستور زیر استفاده کنید:

sudo systemctl status fail2ban

این دستور وضعیت سرویس Fail2Ban را نشان می‌دهد و اگر مشکلی وجود داشته باشد، اطلاعات لازم را برای عیب‌یابی فراهم می‌کند.


2. تنظیم Fail2Ban برای شروع خودکار هنگام بوت با دستور systemctl enable fail2ban

برای اینکه Fail2Ban به‌طور خودکار هنگام راه‌اندازی سیستم شروع به کار کند، باید از دستور زیر استفاده کنید:

sudo systemctl enable fail2ban

این دستور باعث می‌شود که Fail2Ban به‌صورت خودکار با هر بار راه‌اندازی سیستم، سرویس خود را آغاز کند و نیازی به شروع دستی آن نباشد.

بررسی تنظیمات شروع خودکار Fail2Ban:

برای اطمینان از اینکه Fail2Ban به‌طور خودکار در بوت شروع می‌شود، می‌توانید از دستور زیر استفاده کنید:

sudo systemctl is-enabled fail2ban

اگر این دستور خروجی enabled را برگرداند، به این معناست که Fail2Ban برای شروع خودکار در زمان بوت تنظیم شده است.


جمع‌بندی

برای راه‌اندازی و فعال‌سازی Fail2Ban، ابتدا از دستور systemctl start fail2ban برای شروع سرویس استفاده کنید. سپس با استفاده از دستور systemctl enable fail2ban تنظیم کنید که سرویس در هنگام بوت به‌طور خودکار آغاز شود. این مراحل باعث می‌شود که Fail2Ban همواره به‌طور مؤثر سیستم شما را در برابر حملات brute force و سایر تهدیدات امنیتی محافظت کند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”تست نصب Fail2Ban” subtitle=”توضیحات کامل”]بعد از نصب و راه‌اندازی Fail2Ban، ضروری است که عملکرد آن را بررسی کرده و از درستی پیکربندی و فعالیت‌های آن اطمینان حاصل کنید. این کار به‌راحتی با استفاده از ابزارهایی که به همراه Fail2Ban ارائه می‌شوند، امکان‌پذیر است.


1. بررسی وضعیت سرویس با دستور fail2ban-client status

دستور fail2ban-client ابزاری است که به شما اجازه می‌دهد تا وضعیت سرویس Fail2Ban را بررسی کرده و اطلاعاتی در مورد Jailها و قوانین مختلف مسدودسازی دریافت کنید.

برای مشاهده وضعیت کلی Fail2Ban و اطلاعات مربوط به Jailهایی که در حال اجرا هستند، از دستور زیر استفاده کنید:

sudo fail2ban-client status

خروجی این دستور به شما نشان می‌دهد که Fail2Ban در حال اجرا است یا خیر و همچنین اطلاعاتی در مورد Jailهای فعال در سیستم شما ارائه خواهد داد. به‌طور مثال:

Status for the jail: sshd
|- filter
|  |- File list:    /var/log/auth.log
|  |- Port list:    ssh
`- action
   |- [iptables] Ban

اگر Jailهای مربوط به سرویس‌های مختلف (مثل SSH) فعال باشند، این دستور نمایش خواهد داد که آیا آی‌پی‌هایی مسدود شده‌اند یا خیر.


2. مشاهده لاگ‌های مربوط به Fail2Ban برای اطمینان از عملکرد صحیح

برای اطمینان از اینکه Fail2Ban به درستی عمل می‌کند و آی‌پی‌های مشکوک به‌درستی مسدود می‌شوند، لازم است لاگ‌های مربوط به آن را بررسی کنید. این لاگ‌ها معمولاً در مسیر /var/log/fail2ban.log ذخیره می‌شوند.

برای مشاهده لاگ‌ها، از دستور زیر استفاده کنید:

sudo tail -f /var/log/fail2ban.log

این دستور به شما امکان می‌دهد تا لاگ‌های جدید Fail2Ban را به‌صورت زنده مشاهده کنید و فرآیند مسدودسازی و هشدارهای مربوط به حملات brute force را پیگیری کنید.

در این لاگ‌ها، شما می‌توانید اطلاعاتی مانند تلاش‌های ناموفق ورود، آی‌پی‌های مسدود شده و زمان مسدودسازی را مشاهده کنید. به‌عنوان مثال، اگر Fail2Ban یک آی‌پی را مسدود کند، در لاگ‌ها پیامی مشابه به این ظاهر خواهد شد:

2025-01-30 15:43:55,299 fail2ban.actions[1234]: WARNING [sshd] Ban 192.168.1.100

این پیام نشان می‌دهد که آی‌پی 192.168.1.100 به دلیل تلاش‌های مکرر ناموفق برای ورود به سرویس SSH مسدود شده است.


جمع‌بندی

برای تست نصب Fail2Ban، ابتدا از دستور fail2ban-client status برای بررسی وضعیت سرویس و Jailهای فعال استفاده کنید. سپس با مشاهده لاگ‌های Fail2Ban در مسیر /var/log/fail2ban.log، می‌توانید از عملکرد صحیح سرویس و مسدودسازی آی‌پی‌های مشکوک اطمینان حاصل کنید. این مراحل به شما کمک می‌کنند تا از محافظت صحیح سرور خود توسط Fail2Ban مطمئن شوید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 4. پیکربندی اولیه پس از نصب”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”بررسی و تنظیم فایل‌های پیکربندی Fail2Ban” subtitle=”توضیحات کامل”]پیکربندی صحیح Fail2Ban نقش بسیار مهمی در عملکرد بهینه این ابزار ایفا می‌کند. این تنظیمات به شما امکان می‌دهند که تعیین کنید کدام سرویس‌ها باید تحت نظارت قرار گیرند، چه قوانینی برای مسدودسازی آی‌پی‌ها اعمال شود، و چه اقداماتی برای مقابله با حملات مختلف باید انجام شود.

در این بخش، به بررسی و تنظیم فایل‌های اصلی پیکربندی Fail2Ban خواهیم پرداخت.


1. مشاهده فایل اصلی پیکربندی در /etc/fail2ban/fail2ban.conf

فایل پیکربندی اصلی Fail2Ban که در مسیر /etc/fail2ban/fail2ban.conf قرار دارد، تنظیمات عمومی و کلی این ابزار را شامل می‌شود. این فایل شامل گزینه‌هایی است که نحوه عملکرد Fail2Ban را تحت شرایط خاص تعیین می‌کند.

برای مشاهده محتوای فایل، می‌توانید از دستور cat یا less استفاده کنید:

sudo cat /etc/fail2ban/fail2ban.conf

در این فایل، معمولاً تنظیمات زیر را پیدا خواهید کرد:

  • loglevel: تعیین سطح جزئیات لاگ‌ها. به‌عنوان‌مثال، می‌توانید این مقدار را به DEBUG تغییر دهید تا اطلاعات بیشتری در مورد فعالیت‌های Fail2Ban در لاگ‌ها ثبت شود.
  • logtarget: مشخص می‌کند که لاگ‌ها در کجا ذخیره شوند (به‌طور پیش‌فرض در /var/log/fail2ban.log).
  • dbpurgeage: مدت‌زمانی که اطلاعات ذخیره‌شده در پایگاه داده Fail2Ban باقی می‌مانند.

اگر قصد تغییرات جزئی در این فایل را دارید، مانند تنظیم سطح جزئیات لاگ یا تغییر مکان ذخیره‌سازی آن‌ها، این فایل مکان مناسب برای انجام این تنظیمات است.


2. تنظیم فایل Jail در مسیر /etc/fail2ban/jail.conf

فایل jail.conf در Fail2Ban اصلی‌ترین مکان برای تنظیم Jailها است. Jailها به سرویس‌هایی اطلاق می‌شوند که Fail2Ban باید برای آن‌ها تلاش‌های ورود غیرمجاز را نظارت کرده و آی‌پی‌های مشکوک را مسدود کند. به‌طور پیش‌فرض، این فایل شامل تنظیمات برای سرویس‌هایی مانند SSH، FTP، و HTTP است.

برای مشاهده فایل jail.conf از دستور زیر استفاده کنید:

sudo less /etc/fail2ban/jail.conf

در این فایل، برای هر سرویس می‌توانید تنظیمات مختلفی را پیکربندی کنید:

بخش‌های اصلی فایل jail.conf:

  • enabled: تعیین می‌کند که آیا Jail برای یک سرویس فعال باشد یا خیر. برای فعال کردن Jail یک سرویس، باید این مقدار را true قرار دهید.به‌عنوان‌مثال:
    enabled = true
    
  • filter: فیلترهایی که برای شناسایی تلاش‌های ناموفق ورود به یک سرویس استفاده می‌شود. این فیلتر معمولاً یک فایل پیکربندی است که شامل شرایطی برای شناسایی تلاش‌های ناموفق ورود است.
  • action: اقدامات انجام‌شده پس از شناسایی تلاش‌های ناموفق ورود. این معمولاً شامل مسدودسازی آی‌پی‌ها با استفاده از ابزارهایی مانند iptables یا firewalld است.
  • logpath: مسیری که فایل‌های لاگ مربوط به سرویس موردنظر در آن ذخیره می‌شود.
  • maxretry: تعداد تلاش‌های ناموفق ورود قبل از مسدودسازی آی‌پی.
  • bantime: مدت‌زمانی که آی‌پی‌ها باید مسدود شوند.

نمونه پیکربندی برای سرویس SSH:

[sshd]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 3
bantime  = 600

در اینجا:

  • enabled = true: Jail برای سرویس SSH فعال است.
  • logpath: مسیر فایل لاگ برای SSH.
  • maxretry = 3: اگر تعداد تلاش‌های ناموفق ورود به SSH از ۳ بار بیشتر شود، آی‌پی مسدود خواهد شد.
  • bantime = 600: آی‌پی‌هایی که مشکوک هستند به مدت ۱۰ دقیقه مسدود خواهند شد.

توصیه‌ها و نکات مهم برای تنظیم فایل‌ها:

  • فایل پیکربندی را نسخه‌برداری کنید: قبل از هرگونه تغییر در فایل‌های پیکربندی، بهتر است نسخه پشتیبان بگیرید.
    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak
    
  • تنظیم Jailهای اضافی: اگر نیاز دارید که Fail2Ban برای سرویس‌های دیگری نظارت کند، می‌توانید Jailهای جدید به فایل jail.conf اضافه کنید. برای مثال، می‌توانید Jail مربوط به وب‌سرور (Apache/Nginx) یا سرویس‌های دیگر را فعال کنید.
  • بازنشانی پیکربندی پس از تغییرات: بعد از اعمال تغییرات در فایل‌های پیکربندی، برای اعمال تغییرات، سرویس Fail2Ban را مجدداً راه‌اندازی کنید.
    sudo systemctl restart fail2ban
    

جمع‌بندی

برای پیکربندی Fail2Ban، ابتدا فایل اصلی پیکربندی /etc/fail2ban/fail2ban.conf را بررسی کنید و تنظیمات عمومی آن را تنظیم کنید. سپس به تنظیم فایل jail.conf پرداخته و Jailهای موردنظر برای سرویس‌های مختلف مانند SSH و وب‌سرورها را فعال کنید. همچنین، پس از اعمال تغییرات، سرویس Fail2Ban را مجدداً راه‌اندازی کنید تا تنظیمات جدید اعمال شود.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”تنظیم فایروال برای همکاری با Fail2Ban” subtitle=”توضیحات کامل”]برای اینکه Fail2Ban به درستی کار کند و بتواند آی‌پی‌های مشکوک را مسدود کند، لازم است که فایروال شما به‌طور صحیح تنظیم شده باشد. این به معنای این است که پورت‌های ضروری برای سرویس‌هایی که Fail2Ban باید نظارت کند، باید باز باشند و همچنین نیاز است که فایروال اجازه دهد تا Fail2Ban اقدام به مسدودسازی آی‌پی‌ها از طریق قوانین فایروال (مانند iptables یا firewalld) کند.

در اینجا به مراحل مختلف تنظیم فایروال برای همکاری با Fail2Ban پرداخته‌ایم:


1. اطمینان از باز بودن پورت‌های ضروری

ابتدا باید اطمینان حاصل کنید که پورت‌های ضروری برای سرویس‌هایی که قرار است تحت نظارت Fail2Ban قرار گیرند، باز هستند. به‌عنوان‌مثال، اگر از Fail2Ban برای نظارت بر سرویس SSH استفاده می‌کنید، باید پورت ۲۲ (پورت پیش‌فرض SSH) باز باشد.

بررسی وضعیت پورت‌ها با iptables

برای بررسی وضعیت پورت‌ها با استفاده از iptables، از دستور زیر استفاده کنید:

sudo iptables -L -v

این دستور لیستی از تمام قوانین فایروال شما را به همراه تعداد بسته‌ها و بایت‌های رد و بدل‌شده برای هر قانون نمایش می‌دهد.

باز کردن پورت SSH با iptables

اگر پورت SSH (پورت ۲۲) بسته است، می‌توانید آن را با استفاده از دستور زیر باز کنید:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

این دستور پورت ۲۲ را برای ارتباطات ورودی TCP باز می‌کند.

برای ذخیره تغییرات در iptables، دستور زیر را وارد کنید (در صورتی که از توزیع‌های مبتنی بر Debian/Ubuntu استفاده می‌کنید):

sudo iptables-save > /etc/iptables/rules.v4

باز کردن پورت‌ها برای سایر سرویس‌ها

اگر می‌خواهید فایروال پورت‌های دیگری مانند پورت ۸۰ (برای HTTP) یا ۴۴۳ (برای HTTPS) را نیز باز کند، می‌توانید از دستورات مشابه زیر استفاده کنید:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT  # پورت HTTP
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT # پورت HTTPS

2. تنظیم فایروال برای همکاری با Fail2Ban

برای اینکه Fail2Ban بتواند از فایروال استفاده کند و آی‌پی‌های مشکوک را مسدود کند، نیاز است که Fail2Ban با ابزار فایروال شما (مثلاً iptables یا firewalld) یکپارچه شود.

۲.۱. استفاده از iptables برای مسدودسازی آی‌پی‌ها

در اکثر موارد، Fail2Ban به‌طور پیش‌فرض از iptables برای مسدودسازی آی‌پی‌های مشکوک استفاده می‌کند. برای اطمینان از اینکه Fail2Ban به درستی با iptables کار می‌کند، تنظیمات زیر را بررسی کنید:

  • فایل پیکربندی /etc/fail2ban/jail.conf را باز کنید.
  • اطمینان حاصل کنید که برای هر Jail که فعال کرده‌اید (مثلاً SSH یا Apache)، اقداماتی مانند iptables-multiport در بخش action تنظیم شده باشد.

نمونه‌ای از تنظیمات صحیح در jail.conf برای استفاده از iptables:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 600
action = iptables[name=SSH, port=ssh, protocol=tcp]

۲.۲. استفاده از firewalld برای مسدودسازی آی‌پی‌ها

اگر از firewalld به‌جای iptables استفاده می‌کنید، Fail2Ban باید از firewalld برای مسدودسازی آی‌پی‌ها استفاده کند. برای انجام این کار، باید مطمئن شوید که در فایل پیکربندی Jail، دستور مربوط به firewalld به‌درستی تنظیم شده باشد.

نمونه‌ای از تنظیمات برای استفاده از firewalld در jail.conf:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 600
action = firewallcmd[name=SSH, port=ssh, protocol=tcp]

3. بررسی تنظیمات فایروال پس از اعمال تغییرات

پس از تنظیم فایروال و پیکربندی Fail2Ban، مهم است که وضعیت فایروال خود را بررسی کنید تا مطمئن شوید که تنظیمات به‌درستی اعمال شده‌اند.

بررسی وضعیت iptables

برای بررسی وضعیت قوانین iptables، از دستور زیر استفاده کنید:

sudo iptables -L -v

این دستور تمام قوانین فایروال و تعداد بسته‌های مسدودشده را نمایش می‌دهد.

بررسی وضعیت firewalld

اگر از firewalld استفاده می‌کنید، می‌توانید با دستور زیر وضعیت قوانین آن را بررسی کنید:

sudo firewall-cmd --list-all

این دستور تمام تنظیمات و قوانین فایروال را نشان می‌دهد.


جمع‌بندی

برای اینکه Fail2Ban به درستی عمل کند، باید اطمینان حاصل کنید که پورت‌های ضروری برای سرویس‌هایی که تحت نظارت Fail2Ban قرار دارند، باز هستند. همچنین، تنظیمات فایروال شما باید به‌گونه‌ای باشد که اجازه دهد Fail2Ban آی‌پی‌های مشکوک را مسدود کند. این تنظیمات شامل پیکربندی iptables یا firewalld برای همکاری با Fail2Ban و باز کردن پورت‌های ضروری مانند پورت SSH برای دسترسی به سرور است. پس از اعمال تغییرات، باید وضعیت فایروال را بررسی کنید تا از صحت عملکرد آن مطمئن شوید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 5. رفع مشکلات رایج هنگام نصب”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”حل مشکلات وابستگی” subtitle=”توضیحات کامل”]در هنگام نصب Fail2Ban ممکن است با مشکلاتی مواجه شوید که اغلب به وابستگی‌های نرم‌افزاری یا پیکربندی سیستم مربوط می‌شوند. در این بخش، به مشکلات رایج هنگام نصب و راه‌حل‌های آن‌ها می‌پردازیم.


1. حل مشکلات وابستگی

۱.۱. خطاهای مربوط به Python یا pip

Fail2Ban به زبان Python نوشته شده است و به همین دلیل نیاز به نسخه مناسب Python و pip برای نصب وابستگی‌ها دارد. اگر هنگام نصب Fail2Ban خطاهای مربوط به Python یا pip دریافت کردید، ممکن است نیاز به نصب یا به‌روزرسانی این ابزارها داشته باشید.

راه‌حل:
  1. بررسی نصب Pythonابتدا بررسی کنید که آیا Python بر روی سیستم شما نصب است یا خیر. برای بررسی نسخه Python از دستور زیر استفاده کنید:
    python --version
    

    یا اگر از Python 3 استفاده می‌کنید:

    python3 --version
    

    در صورتی که Python نصب نباشد، می‌توانید آن را نصب کنید:

    در سیستم‌های مبتنی بر Debian/Ubuntu:

    sudo apt-get update
    sudo apt-get install python3
    

    در سیستم‌های مبتنی بر RHEL/CentOS:

    sudo yum install python3
    
  2. نصب یا به‌روزرسانی pipبعد از اطمینان از نصب Python، باید اطمینان حاصل کنید که pip (مدیر بسته Python) نیز نصب و به‌روز است. برای بررسی نصب pip:
    pip --version
    

    اگر pip نصب نبود، می‌توانید آن را با دستور زیر نصب کنید:

    در سیستم‌های مبتنی بر Debian/Ubuntu:

    sudo apt-get install python3-pip
    

    در سیستم‌های مبتنی بر RHEL/CentOS:

    sudo yum install python3-pip
    
  3. نصب وابستگی‌های گم‌شدهاگر هنگام نصب Fail2Ban با خطاهایی در مورد وابستگی‌ها مواجه شدید (مثل عدم وجود کتابخانه‌های خاص)، می‌توانید وابستگی‌های موردنیاز را به‌صورت دستی با استفاده از pip نصب کنید:
    sudo pip3 install -r requirements.txt
    

    این دستور وابستگی‌های ذکرشده در فایل requirements.txt را نصب خواهد کرد.

۱.۲. بررسی نصب پکیج‌های گم‌شده

در طول نصب، اگر به خطاهایی برخورید که نشان‌دهنده‌ی گم‌شدن پکیج‌ها یا کتابخانه‌های خاصی هستند، باید این پکیج‌ها را نصب کنید.

راه‌حل:
  1. بررسی و نصب کتابخانه‌هادر صورتی که هنگام نصب Fail2Ban خطاهایی مانند “No module named…” دریافت کردید، باید کتابخانه‌های موردنیاز را نصب کنید. به‌طور معمول، این کتابخانه‌ها در فایل requirements.txt موجود هستند.
  2. نصب وابستگی‌های سیستمبرخی از پکیج‌ها نیازمند کتابخانه‌های سیستمی هستند که باید به‌صورت جداگانه نصب شوند. برای مثال، اگر با خطای وابستگی به python-dev یا libxml2 روبرو شدید، باید آن‌ها را نصب کنید.در سیستم‌های مبتنی بر Debian/Ubuntu:
    sudo apt-get install python3-dev libxml2 libxslt1-dev
    

    در سیستم‌های مبتنی بر RHEL/CentOS:

    sudo yum install python3-dev libxml2 libxslt1-dev
    
  3. پیکربندی محیط مجازی (Virtual Environment)استفاده از محیط‌های مجازی برای نصب Fail2Ban به‌خصوص در سرورهایی که نرم‌افزارهای مختلف نصب شده است، توصیه می‌شود. محیط‌های مجازی به شما کمک می‌کنند تا پکیج‌ها را به‌طور جداگانه و بدون تداخل با سایر نرم‌افزارها نصب کنید.برای ایجاد یک محیط مجازی، دستورات زیر را دنبال کنید:
    1. نصب virtualenv:
      sudo pip3 install virtualenv
      
    2. ایجاد محیط مجازی:
      virtualenv fail2ban_env
      
    3. فعال‌سازی محیط مجازی:
      source fail2ban_env/bin/activate
      
    4. نصب Fail2Ban در محیط مجازی:
      pip install fail2ban
      

2. حل مشکلات پیکربندی

۲.۱. تنظیمات پیکربندی اشتباه

گاهی اوقات پیکربندی اشتباه در فایل‌های Fail2Ban می‌تواند باعث بروز مشکلات در عملکرد آن شود. به‌ویژه، اشتباهات در فایل‌های پیکربندی مانند /etc/fail2ban/jail.conf یا /etc/fail2ban/fail2ban.conf می‌تواند مانع از عملکرد صحیح آن شود.

راه‌حل:
  1. بررسی فایل‌های پیکربندیبرای بررسی تنظیمات Fail2Ban در فایل‌های پیکربندی، آن‌ها را با ویرایشگری مانند nano یا vim باز کنید:
    sudo nano /etc/fail2ban/jail.conf
    

    در این فایل، اطمینان حاصل کنید که Jail‌های مختلف مانند sshd, apache یا nginx به درستی تنظیم شده‌اند.

  2. رفع مشکلات پس از ویرایش پیکربندیپس از انجام تغییرات در فایل‌های پیکربندی، باید سرویس Fail2Ban را مجدداً راه‌اندازی کنید تا تنظیمات جدید اعمال شوند:
    sudo systemctl restart fail2ban
    

    همچنین می‌توانید وضعیت Fail2Ban را بررسی کنید تا از اعمال تغییرات اطمینان حاصل کنید:

    sudo systemctl status fail2ban
    

جمع‌بندی

برای نصب و راه‌اندازی صحیح Fail2Ban، باید از نصب صحیح Python، pip، و وابستگی‌های ضروری اطمینان حاصل کنید. در صورت مواجهه با مشکلات وابستگی، باید از نصب به‌روزرسانی‌ها و پکیج‌های گم‌شده اطمینان حاصل کنید. همچنین، بررسی فایل‌های پیکربندی و تنظیم فایروال برای همکاری با Fail2Ban از اهمیت ویژه‌ای برخوردار است.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”خطاهای مربوط به فایروال در Fail2Ban” subtitle=”توضیحات کامل”]در هنگام نصب و پیکربندی Fail2Ban، مشکلات مربوط به فایروال یکی از رایج‌ترین چالش‌هاست. این مشکلات معمولاً به ناسازگاری‌های بین فایروال‌های مختلف (مثل iptables و firewalld) و همچنین تنظیمات نادرست پورت‌ها برای سرویس‌های نظارت‌شده مربوط می‌شود. در این بخش، به تحلیل و رفع مشکلات رایج در فایروال می‌پردازیم.


1. مشکلات مرتبط با ناسازگاری iptables و firewalld

در برخی از سیستم‌های لینوکسی، ممکن است همزمان دو فایروال iptables و firewalld فعال باشند. این مسئله می‌تواند باعث مشکلاتی در تنظیمات Fail2Ban شود زیرا هر دو فایروال به‌طور مستقل تنظیمات خود را اعمال می‌کنند و ممکن است تداخل ایجاد کنند.

راه‌حل:

  1. شناسایی فایروال فعال:ابتدا باید بررسی کنید که کدام فایروال فعال است. برای این کار از دستورات زیر استفاده کنید:برای بررسی وضعیت iptables:
    sudo systemctl status iptables
    

    برای بررسی وضعیت firewalld:

    sudo systemctl status firewalld
    

    اگر هر دو فایروال فعال هستند، یکی از آن‌ها باید غیرفعال شود تا از تداخل جلوگیری کنید.

  2. غیرفعال کردن یکی از فایروال‌ها:در صورتی که از firewalld استفاده می‌کنید، توصیه می‌شود که iptables را غیرفعال کنید:
    sudo systemctl stop iptables
    sudo systemctl disable iptables
    

    اگر از iptables استفاده می‌کنید، باید firewalld را غیرفعال کنید:

    sudo systemctl stop firewalld
    sudo systemctl disable firewalld
    
  3. تنظیم Fail2Ban برای همکاری با فایروال موجود:پس از غیرفعال‌سازی فایروال اضافی، باید اطمینان حاصل کنید که Fail2Ban با فایروال فعال (خواه iptables یا firewalld) به‌درستی پیکربندی شده باشد.
    • اگر از iptables استفاده می‌کنید، اطمینان حاصل کنید که پیکربندی‌ها در فایل /etc/fail2ban/jail.conf به‌درستی تنظیم شده باشد تا Fail2Ban از iptables برای مسدودسازی آی‌پی‌ها استفاده کند.
    • اگر از firewalld استفاده می‌کنید، می‌توانید به جای استفاده از iptables در Fail2Ban، از firewalld استفاده کنید. در این صورت، پیکربندی‌های Fail2Ban باید به گونه‌ای باشد که از firewalld به‌عنوان فایروال اصلی استفاده شود.

2. رفع مشکلات دسترسی به پورت‌ها در سیستم‌های لینوکسی

یکی دیگر از مشکلات رایج در هنگام پیکربندی Fail2Ban، مشکلات دسترسی به پورت‌ها برای سرویس‌های نظارت‌شده است. این مشکلات معمولاً به دلیل مسدود شدن پورت‌ها توسط فایروال یا تنظیمات اشتباه در پیکربندی فایروال پیش می‌آید.

راه‌حل:

  1. بررسی وضعیت پورت‌ها:اولین قدم برای رفع مشکلات دسترسی به پورت‌ها این است که وضعیت پورت‌های سیستم خود را بررسی کنید. به‌عنوان مثال، برای بررسی وضعیت پورت SSH (پورت پیش‌فرض برای ورود به سیستم از راه دور) از دستور زیر استفاده کنید:
    sudo netstat -tuln | grep :22
    

    این دستور بررسی می‌کند که آیا پورت 22 (پورت SSH) باز است یا خیر.

  2. بررسی تنظیمات فایروال:باید اطمینان حاصل کنید که فایروال تنظیمات مناسبی برای باز گذاشتن پورت‌های مورد نیاز مانند SSH، FTP یا HTTP دارد.
    • اگر از iptables استفاده می‌کنید، می‌توانید با دستور زیر پورت‌ها را بررسی و باز کنید:بررسی وضعیت پورت‌ها با iptables:
      sudo iptables -L
      

      اگر پورت مورد نظر بسته است، می‌توانید آن را باز کنید:

      sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
      
    • اگر از firewalld استفاده می‌کنید، می‌توانید وضعیت پورت‌ها را با دستور زیر بررسی کنید:
      sudo firewall-cmd --list-all
      

      برای باز کردن پورت SSH (پورت 22) از دستور زیر استفاده کنید:

      sudo firewall-cmd --zone=public --add-port=22/tcp --permanent
      sudo firewall-cmd --reload
      
  3. اطمینان از پیکربندی صحیح پورت‌ها در Fail2Ban:در پیکربندی Fail2Ban، باید از مشخص بودن پورت‌های درست در فایل‌های Jail اطمینان حاصل کنید. به‌طور پیش‌فرض، Fail2Ban پورت‌های سرویس‌ها را به‌درستی تشخیص می‌دهد، اما در صورتی که پورت‌ها به‌طور خاص تنظیم شده‌اند، باید فایل پیکربندی /etc/fail2ban/jail.conf را به‌روزرسانی کنید.به‌عنوان مثال، اگر پورت SSH شما متفاوت از پورت پیش‌فرض 22 است، باید پورت آن را به‌صورت زیر تنظیم کنید:
    [sshd]
    enabled = true
    port = 2222
    filter = sshd
    logpath = /var/log/auth.log
    maxretry = 3
    
  4. رفع مشکلات در فایروال‌های مشترک دیگر:در سیستم‌های لینوکسی، Fail2Ban ممکن است با مشکلاتی در فایروال‌های دیگر مانند UFW (Uncomplicated Firewall) نیز روبرو شود. برای رفع این مشکلات، باید از دستورهای UFW برای باز کردن پورت‌ها استفاده کنید:باز کردن پورت 22 برای SSH:
    sudo ufw allow 22/tcp
    

جمع‌بندی

مشکلات مربوط به فایروال در Fail2Ban می‌تواند ناشی از ناسازگاری بین iptables و firewalld باشد که با غیرفعال کردن یکی از آن‌ها می‌توان این مشکل را حل کرد. همچنین، مشکلات دسترسی به پورت‌ها می‌تواند به دلیل مسدود بودن پورت‌ها توسط فایروال باشد که باید با بررسی و تنظیم صحیح پورت‌ها در فایروال‌ها رفع شود. در نهایت، تنظیمات دقیق در فایل‌های پیکربندی Fail2Ban برای استفاده از پورت‌های صحیح نیز از اهمیت ویژه‌ای برخوردار است.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”مشکلات عملکردی Fail2Ban و روش‌های رفع آن” subtitle=”توضیحات کامل”]Fail2Ban ممکن است با مشکلات مختلفی در عملکرد روبرو شود که معمولاً به دلیل پیکربندی نادرست، تداخل با سایر سرویس‌ها، یا مشکلات در فایروال ایجاد می‌شود. در اینجا به روش‌های رفع مشکلات عملکردی Fail2Ban، عیب‌یابی و بررسی لاگ‌ها پرداخته‌ایم.


1. رفع خطاهای سرویس با دستور journalctl -xe

دستور journalctl ابزاری قدرتمند برای بررسی لاگ‌های سیستم در Linux است که به‌ویژه برای عیب‌یابی مشکلات سرویس‌ها بسیار مفید می‌باشد. با استفاده از دستور journalctl -xe می‌توانید اطلاعاتی دقیق از خطاها و مشکلات مربوط به سرویس Fail2Ban بدست آورید.

مراحل:

  1. اجرای دستور journalctl -xe:برای مشاهده خطاهای مرتبط با Fail2Ban، از دستور زیر استفاده کنید:
    sudo journalctl -xe | grep fail2ban
    

    این دستور لاگ‌های اخیر که شامل کلمه fail2ban است را نمایش می‌دهد و به شما کمک می‌کند تا سریع‌تر خطاهای مرتبط با Fail2Ban را شناسایی کنید.

  2. بررسی خطاها:معمولاً خطاهای رایج در Fail2Ban به صورت پیام‌های مرتبط با مشکلات پیکربندی یا ارتباط با فایروال ظاهر می‌شوند. به‌عنوان مثال:
    • خطاهای مربوط به عدم شناسایی پیکربندی‌های Jail
    • خطاهای مسدود شدن نادرست IP‌ها
    • مشکلات در ارتباط با iptables یا firewalld
    • خطاهای مربوط به عدم دسترسی به لاگ‌ها

    برای رفع هر یک از این خطاها باید مطابق با پیام خطا، اقدامات اصلاحی را انجام دهید.

  3. مثال‌هایی از پیام‌های خطا:
    • اگر پیامی مشابه با “Permission denied” (دسترسی رد شده) دریافت کردید، احتمالاً دسترسی‌های لازم برای خواندن لاگ‌ها برای Fail2Ban تنظیم نشده‌اند. در این صورت باید دسترسی‌های موردنیاز را اصلاح کنید.
    • اگر پیامی مشابه “No matching filter” (هیچ فیلتر مطابقی یافت نشد) مشاهده کردید، احتمالاً فیلترها در فایل پیکربندی نادرست تعریف شده‌اند.

2. عیب‌یابی و بررسی لاگ‌ها در مسیر /var/log/fail2ban.log

Fail2Ban تمامی فعالیت‌های خود را در فایل لاگ مربوطه ذخیره می‌کند که این فایل می‌تواند منبع خوبی برای عیب‌یابی مشکلات عملکردی باشد. مسیر پیش‌فرض این فایل در سیستم‌های لینوکسی معمولاً /var/log/fail2ban.log است.

مراحل:

  1. بررسی لاگ‌های Fail2Ban:برای مشاهده لاگ‌ها در فایل fail2ban.log می‌توانید از دستور cat یا less استفاده کنید:
    sudo cat /var/log/fail2ban.log
    

    یا برای مشاهده لاگ‌ها به‌صورت پیوسته از دستور زیر استفاده کنید:

    sudo tail -f /var/log/fail2ban.log
    

    این دستور تمامی رویدادهای جدید Fail2Ban را به صورت زنده نمایش می‌دهد.

  2. بررسی مشکلات رایج در لاگ‌ها:برخی از مشکلات رایج که در لاگ‌ها ممکن است مشاهده کنید، عبارتند از:
    • شناسایی نشدن فیلترها: این مشکل معمولاً به دلیل پیکربندی نادرست فیلترها در فایل jail.conf یا jail.local رخ می‌دهد. برای رفع آن باید فیلترها را در این فایل‌ها دوباره بررسی و اصلاح کنید.
    • آی‌پی‌های مسدود نشده: اگر Fail2Ban آی‌پی‌ها را مسدود نمی‌کند، باید بررسی کنید که آیا قوانین فایروال به‌درستی اعمال شده‌اند یا خیر. همچنین، ممکن است مشکلی در تنظیمات فایروال (مثل iptables یا firewalld) وجود داشته باشد.
    • مشکلات دسترسی به لاگ‌ها: اگر لاگ‌ها به درستی از سوی Fail2Ban خوانده نمی‌شوند، باید بررسی کنید که دسترسی‌های لازم به لاگ‌های سرویس‌های مختلف (مثل /var/log/auth.log برای SSH) داده شده باشد.
  3. تجزیه و تحلیل پیام‌های خطا:در هنگام عیب‌یابی باید به پیام‌های خطای موجود در لاگ توجه کنید. برخی از پیام‌های رایج شامل موارد زیر هستند:
    • ERROR [Filter]: Cannot open file
    • ERROR [Jail]: Unable to apply rule
    • ERROR [Fail2Ban]: No action found

    این خطاها به‌طور معمول به مشکلات مربوط به فیلترها، پیکربندی قوانین و یا مشکلات ارتباط با سرویس‌های نظارت‌شده اشاره دارند.

  4. مثال از لاگ‌ها:در لاگ‌های Fail2Ban ممکن است خطاهایی مشابه با موارد زیر مشاهده کنید:
    2025-01-30 14:30:45,123 fail2ban.actions [1234]: WARNING [sshd] Ban 192.168.1.100
    2025-01-30 14:31:45,456 fail2ban.actions [1234]: ERROR [sshd] Unable to read /var/log/auth.log: Permission denied
    

    در اینجا:

    • خط اول نشان می‌دهد که Fail2Ban موفق به مسدودسازی آی‌پی 192.168.1.100 شده است.
    • خط دوم نشان‌دهنده مشکل در دسترسی به فایل /var/log/auth.log است که باید دسترسی‌های لازم را تنظیم کنید.

جمع‌بندی

عیب‌یابی مشکلات عملکردی Fail2Ban با استفاده از ابزارهای مختلف مانند journalctl -xe و بررسی لاگ‌ها در مسیر /var/log/fail2ban.log امکان‌پذیر است. پیام‌های خطا و هشدار در این لاگ‌ها می‌توانند راه‌گشای مشکلات رایج مانند پیکربندی نادرست فیلترها، دسترسی‌های نامناسب یا مشکلات فایروال باشند. با تجزیه و تحلیل دقیق این لاگ‌ها و اعمال اصلاحات موردنیاز، می‌توانید عملکرد Fail2Ban را به‌طور مؤثر بهبود بخشید.[/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”بخش 3. پیکربندی Fail2Ban”][cdb_course_lesson title=”فصل 1. آشنایی با فایل‌های پیکربندی Fail2Ban”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بررسی ساختار فایل‌های اصلی در مسیر /etc/fail2ban/” subtitle=”توضیحات کامل”]پیکربندی Fail2Ban عمدتاً در دایرکتوری /etc/fail2ban/ قرار دارد. در این دایرکتوری چندین فایل پیکربندی وجود دارد که هریک وظایف خاصی دارند و به‌طور کلی نحوه عملکرد Fail2Ban را تنظیم می‌کنند. در این بخش به بررسی مهم‌ترین این فایل‌ها و ساختار آن‌ها خواهیم پرداخت.


1. fail2ban.conf

این فایل، فایل پیکربندی اصلی برای Fail2Ban است. در این فایل، تنظیمات عمومی و سطح بالای Fail2Ban که به عملکرد کلی این ابزار مربوط می‌شود، قرار دارد.

  • موقعیت فایل: /etc/fail2ban/fail2ban.conf
  • محتویات اصلی:
    • تنظیمات مربوط به لگ‌ها: مسیرهای مختلف لاگ‌هایی که Fail2Ban باید به آن‌ها دسترسی داشته باشد، مانند logtarget و loglevel.
    • تنظیمات مرتبط با زمان‌بندی و موارد دیگر که بر روی کلیت سیستم تأثیر می‌گذارد.

2. jail.conf (یا jail.local)

این فایل حاوی تنظیمات مربوط به jails یا همان زندان‌ها است. هر “زندان” شامل تنظیماتی برای سرویس خاص است (مثل SSH، FTP، Apache، Nginx) که Fail2Ban باید آن‌ها را نظارت کرده و در صورت شناسایی رفتار مشکوک، آی‌پی‌های مخرب را مسدود کند.

  • موقعیت فایل: /etc/fail2ban/jail.conf
  • محتویات اصلی:
    • [DEFAULT]: تنظیمات پیش‌فرض برای تمامی زندان‌ها. به‌عنوان مثال، زمان‌بندی مسدودسازی (مانند bantime)، تعداد تلاش‌های ناموفق (مانند maxretry)، و زمان مورد نیاز برای ریست کردن شمارش تلاش‌ها (findtime).
    • [sshd]: یک نمونه از تنظیمات زندان که برای سرویس SSH طراحی شده است.
    • تنظیمات مشابه برای سرویس‌های دیگر مانند FTP، HTTP و غیره.

    توجه: معمولاً فایل jail.conf فقط برای ارایه تنظیمات پیش‌فرض استفاده می‌شود. بهتر است تغییرات دلخواه در یک فایل جداگانه به نام jail.local انجام شود تا تغییرات هنگام به‌روزرسانی سیستم حفظ شود.

3. jail.local

این فایل برای انجام تغییرات سفارشی در پیکربندی jail.conf استفاده می‌شود. تمامی تنظیمات خاص برای هر سرویس یا فیلتر باید در این فایل قرار گیرد تا تغییرات شما از تغییرات پیش‌فرض و به‌روزرسانی‌های بعدی Fail2Ban محفوظ بماند.

  • موقعیت فایل: /etc/fail2ban/jail.local
  • محتویات اصلی: مشابه فایل jail.conf، اما برای تنظیمات سفارشی کاربران استفاده می‌شود.

4. fail2ban.conf.local

این فایل شبیه به fail2ban.conf است، اما برای اعمال تغییرات محلی و خاص در تنظیمات عمومی Fail2Ban به کار می‌رود. معمولاً این فایل زمانی ایجاد می‌شود که کاربر نیاز به سفارشی‌سازی فایل پیکربندی اصلی داشته باشد.

  • موقعیت فایل: /etc/fail2ban/fail2ban.conf.local
  • محتویات اصلی:
    • تغییرات تنظیمات عمومی مشابه آنچه که در fail2ban.conf وجود دارد.

    توجه: این فایل معمولاً توسط کاربر برای سفارشی‌سازی تنظیمات عمومی ایجاد می‌شود.

5. filter.d/

این دایرکتوری شامل فیلترهای مختلف است که به Fail2Ban اجازه می‌دهند رفتارهای مشکوک را در لاگ‌های سیستم شناسایی کند. این فایل‌ها شامل الگوهایی برای شناسایی تلاش‌های ورود ناموفق، حملات brute force و سایر فعالیت‌های مشکوک هستند.

  • موقعیت دایرکتوری: /etc/fail2ban/filter.d/
  • محتویات اصلی:
    • فیلترهای مختلف مانند:
      • sshd.conf: فیلتر برای سرویس SSH.
      • apache-auth.conf: فیلتر برای سرویس وب Apache.
      • nginx-http-auth.conf: فیلتر برای سرویس Nginx.

این فیلترها به‌طور معمول از عبارات منظم (regex) برای شناسایی الگوهای خاص در لاگ‌ها استفاده می‌کنند.

6. action.d/

در این دایرکتوری، Fail2Ban اقداماتی که باید پس از شناسایی آی‌پی‌های مشکوک انجام دهد، ذخیره می‌شود. این اقدامات معمولاً شامل مسدودسازی آی‌پی‌ها با استفاده از iptables، ارسال هشدار ایمیلی یا دیگر اقدامات امنیتی است.

  • موقعیت دایرکتوری: /etc/fail2ban/action.d/
  • محتویات اصلی:
    • فایل‌هایی مانند:
      • iptables.conf: مسدودسازی آی‌پی‌ها با استفاده از iptables.
      • mail.conf: ارسال هشدارهای ایمیلی در صورت شناسایی آی‌پی‌های مخرب.

7. fail2ban-client

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


جمع‌بندی

فایل‌ها و دایرکتوری‌های اصلی در مسیر /etc/fail2ban/ برای پیکربندی و تنظیم دقیق عملکرد Fail2Ban استفاده می‌شوند. این فایل‌ها به شما امکان می‌دهند که رفتار Fail2Ban را برای هر سرویس به‌طور جداگانه پیکربندی کرده و در صورت لزوم سفارشی‌سازی‌های لازم را انجام دهید. برای اعمال تغییرات، معمولاً توصیه می‌شود که تغییرات خود را در فایل‌هایی مانند jail.local و fail2ban.conf.local انجام دهید تا از بروز مشکلات در به‌روزرسانی‌های آینده جلوگیری شود.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”نقش فایل‌های پیکربندی در Fail2Ban” subtitle=”توضیحات کامل”]فایل‌ها و دایرکتوری‌هایی که در Fail2Ban برای پیکربندی استفاده می‌شوند، هرکدام نقش خاصی در تعیین نحوه عملکرد و تعامل این ابزار با سیستم دارند. در این بخش، به بررسی نقش و اهمیت سه فایل و دایرکتوری اصلی در پیکربندی Fail2Ban خواهیم پرداخت: jail.conf، jail.local، و دایرکتوری‌های action.d و filter.d.


1. jail.conf

نقش:

فایل jail.conf تنظیمات پیش‌فرض برای زندان‌ها (jails) را در Fail2Ban تعریف می‌کند. هر زندان به یک سرویس خاص مرتبط است که باید نظارت شود (مانند SSH، FTP، یا وب‌سرورها). این فایل شامل تنظیماتی است که رفتار کلی Fail2Ban را برای شناسایی حملات و مسدودسازی آی‌پی‌ها تعیین می‌کند.

جزئیات:

  • این فایل به طور پیش‌فرض برای ارایه تنظیمات کلی برای همه زندان‌ها به کار می‌رود.
  • [DEFAULT]: تنظیمات عمومی برای تمامی زندان‌ها. این تنظیمات شامل زمان‌های مسدودسازی، تعداد تلاش‌های مجاز، و مدت زمان برای تشخیص تلاش‌های ناموفق است.
  • برای هر سرویس مانند [sshd]، [apache] و غیره، تنظیمات خاص مربوط به آن سرویس (مانند maxretry و bantime) در این فایل قرار دارد.

نکته:

  • jail.conf فقط برای تنظیمات اولیه و پیش‌فرض استفاده می‌شود.
  • توصیه می‌شود که تغییرات در فایل‌های دیگری مانند jail.local انجام شود تا از هر گونه مشکلی در به‌روزرسانی‌های Fail2Ban جلوگیری شود.

2. jail.local

نقش:

فایل jail.local برای سفارشی‌سازی و تغییر تنظیمات jail.conf استفاده می‌شود. این فایل به‌طور خاص برای اعمال تغییرات محلی و بدون تأثیر بر تنظیمات پیش‌فرض ایجاد می‌شود.

جزئیات:

  • هر زمان که شما بخواهید تغییراتی مانند تنظیمات زمان‌بندی یا قوانین مسدودسازی برای یک سرویس خاص انجام دهید، این تغییرات را در jail.local اعمال می‌کنید.
  • تغییرات موجود در jail.local از تنظیمات پیش‌فرض در jail.conf ارجعیت دارند، یعنی در صورت وجود یک تنظیم مشابه در هر دو فایل، تنظیمات jail.local بر تنظیمات jail.conf اولویت دارند.

نکته:

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

3. action.d و filter.d

نقش:

دو دایرکتوری action.d و filter.d بخش‌های مهمی از پیکربندی Fail2Ban هستند که به ترتیب مسئول اقدامات (Actions) و فیلترها (Filters) در هنگام شناسایی رفتارهای مشکوک می‌باشند.

جزئیات:

action.d
  • نقش: دایرکتوری action.d شامل فایل‌های پیکربندی است که تعیین می‌کنند بعد از شناسایی یک آی‌پی مخرب توسط Fail2Ban، چه اقداماتی باید انجام شود.
  • محتویات: فایل‌هایی مانند:
    • iptables.conf: مسدودسازی آی‌پی‌ها با استفاده از iptables.
    • mail.conf: ارسال هشدارهای ایمیلی برای مدیر سرور.
    • sendmail.conf: استفاده از sendmail برای ارسال هشدار.
  • هر فایل در این دایرکتوری مسئول اعمال یک یا چند اقدام مختلف در صورتی است که آی‌پی‌ای به عنوان مخرب شناسایی شود.
filter.d
  • نقش: دایرکتوری filter.d شامل فایل‌هایی است که به Fail2Ban اجازه می‌دهند تا بر اساس الگوهای خاص، تلاش‌های ناموفق برای ورود به سیستم را شناسایی کند.
  • محتویات: فایل‌هایی مانند:
    • sshd.conf: فیلتر برای شناسایی حملات به سرویس SSH.
    • apache-auth.conf: فیلتر برای شناسایی تلاش‌های ناموفق در وب‌سرور Apache.
    • nginx-http-auth.conf: فیلتر برای شناسایی تلاش‌های ورود در Nginx.
  • این فایل‌ها معمولاً از عبارات منظم (regex) برای شناسایی و استخراج اطلاعات از لاگ‌ها استفاده می‌کنند.

نکته:

  • action.d مسئول اجرای اقدامات عملی مانند مسدودسازی آی‌پی‌ها است، در حالی که filter.d مسئول شناسایی رفتارهای مشکوک در لاگ‌ها است.

جمع‌بندی

  • jail.conf: فایل پیش‌فرض برای تنظیمات کلی و عمومی Fail2Ban است.
  • jail.local: فایل سفارشی برای تغییرات و تنظیمات محلی که به jail.conf اولویت دارد.
  • action.d: دایرکتوری برای تنظیم اقدامات اجرایی که پس از شناسایی آی‌پی‌های مخرب انجام می‌شود.
  • filter.d: دایرکتوری برای تنظیم فیلترها که به شناسایی حملات و تلاش‌های ناموفق از روی لاگ‌ها کمک می‌کند.

با استفاده از این فایل‌ها و دایرکتوری‌ها، می‌توان نحوه عملکرد Fail2Ban را به‌طور دقیق و منعطف تنظیم کرد تا از سرور در برابر تهدیدات مختلف محافظت کند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”دلیل استفاده از فایل jail.local به جای jail.conf برای جلوگیری از بازنویسی تنظیمات پیش‌فرض” subtitle=”توضیحات کامل”]استفاده از فایل jail.local به جای jail.conf در Fail2Ban به دلایل مختلفی توصیه می‌شود که اصلی‌ترین آن‌ها جلوگیری از بازنویسی تنظیمات شخصی هنگام به‌روزرسانی Fail2Ban است. در ادامه، به برخی دلایل این انتخاب اشاره می‌کنیم:

1. جلوگیری از بازنویسی تنظیمات هنگام به‌روزرسانی

  • فایل jail.conf تنظیمات پیش‌فرض Fail2Ban را شامل می‌شود. در صورتی که شما تغییراتی در این فایل اعمال کنید و سپس Fail2Ban به‌روزرسانی شود، این تغییرات ممکن است بازنویسی شده و از بین بروند.
  • از آنجا که فایل jail.local یک فایل سفارشی است، تغییرات شما در این فایل هیچ‌گاه توسط به‌روزرسانی‌ها تغییر نمی‌کنند و همیشه حفظ می‌شوند.

2. سفارشی‌سازی بدون تغییر در تنظیمات پیش‌فرض

  • استفاده از jail.local به شما امکان می‌دهد تنظیمات خود را بدون تغییر در فایل jail.conf که ممکن است تغییرات جدید از توسعه‌دهندگان Fail2Ban را داشته باشد، اعمال کنید.
  • این روش کمک می‌کند تا پیکربندی سیستم شما از تغییرات پیش‌فرض جدا باشد و در صورت نیاز به بروزرسانی، تغییرات سفارشی شما سالم باقی بمانند.

3. پشتیبانی بهتر از تنظیمات محلی

  • هنگام اعمال تغییرات در jail.local، شما فقط آن تنظیمات را برای سیستم خاص خود تغییر می‌دهید، در حالی که jail.conf برای تنظیمات عمومی و پیش‌فرض استفاده می‌شود.
  • این کار به بهبود مدیریت و نگهداری سیستم کمک می‌کند، زیرا تنظیمات محلی شما به‌طور مستقل از تنظیمات پیش‌فرض مدیریت می‌شوند.

4. مدیریت راحت‌تر تغییرات

  • زمانی که شما از jail.local استفاده می‌کنید، می‌توانید به راحتی تنظیمات خاص را تغییر داده و در صورت نیاز به رفع اشکال یا تغییر، فقط به jail.local مراجعه کنید بدون اینکه نگران تغییرات ناشی از بروزرسانی‌های آینده باشید.

جمع‌بندی:

استفاده از jail.local به جای jail.conf راه‌حلی برای حفظ تنظیمات شخصی و محلی است که به‌راحتی می‌توانند از به‌روزرسانی‌های Fail2Ban محافظت شوند و در نتیجه از تغییرات ناخواسته جلوگیری می‌کنند. این عمل به ایجاد یک محیط امن‌تر و قابل مدیریت‌تر برای سرور شما کمک می‌کند.[/cdb_course_lesson][cdb_course_lesson title=”فصل 2. تنظیمات اولیه در فایل jail.conf”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تنظیمات عمومی (Global) در Fail2Ban” subtitle=”توضیحات کامل”]تنظیمات عمومی یا Global در Fail2Ban به شما این امکان را می‌دهند که برخی از پارامترهای اصلی عملکرد Fail2Ban را به‌صورت کلی برای همه جیل‌ها (Jails) تنظیم کنید. این تنظیمات در فایل jail.conf یا jail.local قابل تعریف هستند و شامل پارامترهایی هستند که نحوه عملکرد Fail2Ban را تحت تاثیر قرار می‌دهند. در اینجا به توضیح چهار تنظیم اصلی و مهم می‌پردازیم:

1. ignoreip: تعریف آدرس‌های IP مجاز (Whitelist)

  • پارامتر ignoreip به شما این امکان را می‌دهد که برخی از آدرس‌های IP را از مسدودسازی‌های Fail2Ban مستثنی کنید.
  • این ویژگی برای جلوگیری از مسدود شدن آدرس‌های IP که شما از آن‌ها استفاده می‌کنید (مثلاً آدرس‌های داخلی شبکه یا آدرس‌های مدیریتی سرور) بسیار مفید است.
  • چندین آدرس IP یا محدوده IP می‌توانند با استفاده از فاصله یا ویرگول (,) به هم وصل شوند.

مثال:

ignoreip = 127.0.0.1/8 ::1 192.168.1.100

در این مثال، آدرس‌های 127.0.0.1/8 (آدرس لوپ‌بک)، ::1 (آدرس لوپ‌بک IPv6) و 192.168.1.100 از هرگونه مسدودسازی توسط Fail2Ban مستثنی هستند.

2. bantime: مدت زمان مسدودسازی IP‌های مشکوک

  • پارامتر bantime مدت زمانی را تعیین می‌کند که یک IP مشکوک باید مسدود بماند.
  • این مدت زمان به‌طور معمول به‌صورت ثانیه تعریف می‌شود. در صورتی که یک آدرس IP بعد از رسیدن به حداکثر تعداد تلاش‌های ناموفق (maxretry) در مدت زمان مشخص‌شده (توسط findtime) مسدود شود، مدت زمان مسدودسازی به میزان تعیین‌شده در bantime خواهد بود.

مثال:

bantime = 600

در این مثال، Fail2Ban هر آدرس IP را به مدت 600 ثانیه (10 دقیقه) مسدود می‌کند.

3. findtime: زمان بازبینی تعداد تلاش‌های ناموفق

  • findtime مدت زمانی است که Fail2Ban برای بررسی تلاش‌های ناموفق ورودی در نظر می‌گیرد. این زمان معمولاً به‌صورت ثانیه تعریف می‌شود.
  • زمانی که تلاش‌های ناموفق از یک آدرس IP در این بازه زمانی مشخص بیشتر از حد مجاز (که توسط maxretry تعیین می‌شود) باشد، آن IP مسدود خواهد شد.

مثال:

findtime = 600

در این مثال، Fail2Ban تلاش‌های ناموفق را در بازه زمانی 600 ثانیه (10 دقیقه) بررسی می‌کند.

4. maxretry: حداکثر تعداد تلاش‌های مجاز پیش از مسدودسازی

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

مثال:

maxretry = 5

در این مثال، Fail2Ban اجازه می‌دهد که یک آدرس IP پنج تلاش ناموفق را انجام دهد، و اگر بیشتر از آن باشد، IP مربوطه مسدود می‌شود.

جمع‌بندی

این تنظیمات عمومی به شما کمک می‌کنند تا نحوه عملکرد Fail2Ban را تنظیم کنید و از دسترسی غیرمجاز به سیستم جلوگیری نمایید. با تنظیم مقادیر صحیح برای پارامترهای ignoreip، bantime، findtime و maxretry می‌توانید به بهترین نحو از امنیت سرور خود اطمینان حاصل کنید و منابع را به‌طور بهینه مدیریت کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تنظیم لاگ‌های Fail2Ban” subtitle=”توضیحات کامل”]برای نظارت دقیق و شفاف بر عملکرد Fail2Ban و بررسی رخدادهای مسدودسازی و تلاش‌های ناموفق، تنظیمات لاگ‌ها اهمیت زیادی دارند. در Fail2Ban، می‌توانید مسیر فایل‌های لاگ سرویس‌های مختلف را تعیین کنید و همچنین تنظیمات syslog را برای ارسال و ثبت هشدارها و خطاها مدیریت کنید.

1. logpath: مسیر فایل‌های لاگ سرویس‌ها

  • پارامتر logpath مشخص می‌کند که Fail2Ban کدام فایل‌های لاگ را برای جستجوی تلاش‌های ناموفق و بررسی حملات باید نظارت کند.
  • به‌طور معمول، مسیر فایل‌های لاگ باید شامل لاگ‌های مربوط به سرویس‌هایی باشد که می‌خواهید نظارت کنید، مانند SSH، FTP، وب‌سرورها (Apache یا Nginx) و غیره.
  • اگر Fail2Ban به درستی تنظیم شده باشد، این فایل‌ها به‌طور مداوم بررسی می‌شوند تا تلاش‌های ناموفق یا حملات مشکوک شناسایی شوند.

مثال:

logpath = /var/log/auth.log

در این مثال، Fail2Ban فایل /var/log/auth.log را برای تلاش‌های ناموفق ورود به سیستم، مانند SSH، بررسی می‌کند.

اگر چندین فایل لاگ وجود داشته باشد که باید نظارت شوند، می‌توانید از الگوهای wildcard یا استفاده از چندین خط تنظیمی برای logpath بهره ببرید:

logpath = /var/log/auth.log
logpath = /var/log/secure

2. فعال‌سازی و مدیریت تنظیمات syslog

  • syslog یک سیستم گزارش‌دهی است که برای ثبت و ارسال هشدارها و پیام‌ها از سیستم‌های مختلف استفاده می‌شود. شما می‌توانید در Fail2Ban، گزارشات مربوط به مسدودسازی‌ها، تلاش‌های ناموفق و سایر رویدادهای مرتبط با امنیت را به syslog ارسال کنید.
  • فعال‌سازی گزارش‌دهی به syslog به شما کمک می‌کند که گزارش‌های جامع‌تری از Fail2Ban داشته باشید و این گزارش‌ها می‌توانند در مدیریت سیستم یا نظارت روی سرورها مفید واقع شوند.

برای فعال‌سازی syslog در Fail2Ban، باید در پیکربندی‌ها آن را تنظیم کنید. این کار می‌تواند به‌صورت زیر باشد:

syslog = true

با این تنظیم، Fail2Ban تمامی پیام‌ها و هشدارها را به سیستم syslog ارسال می‌کند. اگر شما بخواهید پیام‌ها را به فایل لاگ خاصی ارسال کنید، می‌توانید مسیر فایل را در تنظیمات مشخص کنید.

مثال:

syslog = /var/log/fail2ban.log

همچنین، می‌توانید اولویت‌های پیام‌های syslog را تنظیم کنید تا اهمیت بیشتری به برخی رویدادها داده شود:

syslog-facility = local0
syslog-level = INFO

جمع‌بندی

تنظیمات لاگ‌ها در Fail2Ban به شما این امکان را می‌دهد که نظارت دقیقی روی عملکرد سیستم امنیتی خود داشته باشید و تمامی اطلاعات مربوط به مسدودسازی‌ها و حملات را در اختیار داشته باشید. با استفاده از پارامترهای logpath برای تعیین فایل‌های لاگ و تنظیمات syslog برای مدیریت گزارش‌ها و هشدارها، می‌توانید به‌راحتی مشکلات را شناسایی کرده و اقدام به رفع آن‌ها کنید. این تنظیمات کمک می‌کنند تا روند شناسایی تهدیدات و حملات در سیستم‌های شما شفاف‌تر و مؤثرتر شود.[/cdb_course_lesson][cdb_course_lesson title=”فصل 3. ایجاد فایل‌های پیکربندی سفارشی”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”ساخت فایل‌ جدید jail.local برای تغییرات سفارشی” subtitle=”توضیحات کامل”]در Fail2Ban، فایل jail.local برای تنظیمات سفارشی و خاص سیستم استفاده می‌شود. این فایل به شما این امکان را می‌دهد که تنظیمات پیش‌فرض موجود در فایل jail.conf را بازنویسی کنید یا تنظیمات جدیدی را برای سرویس‌های مختلف ایجاد نمایید.

استفاده از jail.local به جای ویرایش مستقیم فایل jail.conf مزایای زیادی دارد، زیرا تغییرات موجود در jail.conf هنگام به‌روزرسانی‌های بعدی Fail2Ban ممکن است بازنویسی شوند. بنابراین، jail.local مکان ایده‌آلی برای نگهداری تنظیمات سفارشی است که با به‌روزرسانی‌های نرم‌افزار از بین نمی‌روند.

1. ساخت فایل jail.local

اگر فایل jail.local به‌طور پیش‌فرض در سیستم شما وجود ندارد، می‌توانید به راحتی آن را بسازید.

برای ساخت و ویرایش فایل jail.local، می‌توانید از ویرایشگر متن دلخواه خود مانند nano یا vim استفاده کنید:

sudo nano /etc/fail2ban/jail.local

اگر فایل موجود نباشد، با دستور فوق به‌راحتی می‌توانید آن را بسازید.

2. ساختار کلی فایل jail.local

فایل jail.local مشابه jail.conf است، اما تنظیمات سفارشی شما در این فایل قرار می‌گیرد. در اینجا می‌توانید فیلترها، تنظیمات فایروال، مدت مسدودسازی، و سایر تنظیمات مربوط به هر سرویس را تنظیم کنید.

در فایل jail.local، بخش‌های مختلف مانند [DEFAULT]، [sshd] (برای SSH) و [apache] (برای وب‌سرورها) وجود دارند که به شما امکان می‌دهند برای هر سرویس تنظیمات خاصی تعریف کنید.

3. نمونه تنظیمات برای فایل jail.local

در زیر یک نمونه ساده از فایل jail.local را مشاهده می‌کنید که برخی از تنظیمات اولیه را برای سرویس‌های مختلف در Fail2Ban مشخص کرده است.

[DEFAULT]
# مدت زمان مسدودسازی آی‌پی‌ها (به ثانیه)
bantime = 3600
# زمان یافتن تلاش‌های ناموفق
findtime = 600
# حداکثر تعداد تلاش‌های ناموفق
maxretry = 3
# مسیر فایل لاگ
logpath = /var/log/auth.log
# پروتکل‌هایی که Fail2Ban باید به آنها توجه کند
ignoreip = 127.0.0.1/8 ::1

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 600

[apache]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/*error.log
maxretry = 3
bantime = 600

[nginx-http-auth]
enabled = true
port = http,https
filter = nginx-http-auth
logpath = /var/log/nginx/*error.log
maxretry = 3
bantime = 600

4. شرح تنظیمات در فایل jail.local:

  • [DEFAULT]:
    • bantime: مدت زمانی که یک آی‌پی پس از چندین تلاش ناموفق مسدود می‌شود.
    • findtime: مدت زمان جستجو برای تعداد تلاش‌های ناموفق.
    • maxretry: تعداد تلاش‌های ناموفق مجاز پیش از مسدودسازی.
    • logpath: مسیر فایل لاگ که Fail2Ban باید آن را برای جستجوی تلاش‌های ناموفق بررسی کند.
    • ignoreip: آی‌پی‌هایی که باید از مسدودسازی معاف شوند، مانند آی‌پی محلی (127.0.0.1).
  • [sshd]:
    • enabled: فعال‌سازی تنظیمات برای سرویس SSH.
    • port: پورت SSH که معمولاً 22 است.
    • filter: فیلتر مربوط به SSH که در فایل‌های /etc/fail2ban/filter.d وجود دارد.
    • logpath: مسیر فایل لاگ مربوط به سرویس SSH.
    • maxretry و bantime برای SSH تنظیم شده است.
  • [apache] و [nginx-http-auth]:
    • تنظیمات مشابه برای وب‌سرورها مانند Apache و Nginx.
    • مسیر لاگ مربوط به هر وب‌سرور و فیلتر خاص آن برای شناسایی تلاش‌های ناموفق.

5. فعال‌سازی و تست تنظیمات جدید

پس از ایجاد و ویرایش فایل jail.local، باید Fail2Ban را دوباره راه‌اندازی کنید تا تنظیمات جدید اعمال شوند:

sudo systemctl restart fail2ban

برای اطمینان از اعمال درست تنظیمات جدید، از دستور زیر استفاده کنید تا وضعیت Fail2Ban را بررسی کنید:

sudo fail2ban-client status

جمع‌بندی

فایل jail.local به شما این امکان را می‌دهد که تنظیمات پیش‌فرض Fail2Ban را سفارشی کرده و تنظیمات اختصاصی خود را برای سرویس‌های مختلف اعمال کنید. استفاده از این فایل به شما کمک می‌کند تا از بازنویسی تنظیمات در هنگام به‌روزرسانی‌های Fail2Ban جلوگیری کرده و کنترل بیشتری بر امنیت سرور خود داشته باشید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تعریف Jail‌ها برای سرویس‌های خاص در Fail2Ban” subtitle=”توضیحات کامل”]در Fail2Ban، هر Jail مجموعه‌ای از تنظیمات است که برای نظارت بر یک سرویس خاص طراحی شده است. Jail‌ها به طور خاص برای شناسایی و مسدودسازی تلاش‌های ناموفق در هر سرویس یا پورت استفاده می‌شوند. به عبارت دیگر، هر Jail مشخص می‌کند که Fail2Ban کجا به دنبال تلاش‌های ناموفق می‌گردد، چه زمانی باید مسدودسازی صورت گیرد و چه اقداماتی باید انجام شود.

در اینجا، ما به طور خاص نحوه تنظیم Jail برای سرویس‌های معروف مانند SSH، Apache/Nginx، FTP و Postfix/Dovecot را بررسی می‌کنیم.


1. Jail برای سرویس SSH

SSH یکی از حساس‌ترین سرویس‌ها برای حملات Brute Force است. برای جلوگیری از تلاش‌های ورود غیرمجاز از طریق SSH، می‌توانید Jail مخصوص SSH را در فایل jail.local اضافه کنید.

تنظیمات نمونه برای SSH:

[sshd]
enabled = true          # فعال‌سازی Jail برای SSH
port = ssh              # پورت SSH، که معمولاً 22 است
filter = sshd           # فیلتر مربوط به SSH
logpath = /var/log/auth.log  # مسیر لاگ‌های SSH
maxretry = 3            # حداکثر تعداد تلاش‌های ناموفق
bantime = 600           # مدت زمان مسدودسازی (600 ثانیه یا 10 دقیقه)
findtime = 600          # زمان جستجو برای تلاش‌های ناموفق (600 ثانیه)

این تنظیمات به Fail2Ban می‌گویند که به دنبال تلاش‌های ناموفق ورود از طریق SSH باشد و در صورتی که تعداد تلاش‌ها از حد مجاز بیشتر شود، آی‌پی مهاجم را برای مدت 10 دقیقه مسدود کند.


2. Jail برای سرویس Apache/Nginx

برای وب‌سرورهایی مانند Apache یا Nginx، Jail‌های مخصوص به هرکدام می‌تواند برای شناسایی تلاش‌های ناموفق در لاگ‌های سرور وب ایجاد شود. این تلاش‌ها می‌توانند شامل تلاش‌های ورود غیرمجاز یا استفاده از مسیرهای خاص برای حملات باشند.

تنظیمات نمونه برای Apache:

[apache]
enabled = true
port = http,https           # پورت‌های HTTP و HTTPS
filter = apache-auth        # فیلتر مربوط به Apache
logpath = /var/log/apache2/*error.log  # مسیر لاگ‌های Apache
maxretry = 3
bantime = 600
findtime = 600

تنظیمات نمونه برای Nginx:

[nginx-http-auth]
enabled = true
port = http,https           # پورت‌های HTTP و HTTPS
filter = nginx-http-auth    # فیلتر مربوط به Nginx
logpath = /var/log/nginx/*error.log  # مسیر لاگ‌های Nginx
maxretry = 3
bantime = 600
findtime = 600

در این تنظیمات، Fail2Ban به لاگ‌های Apache یا Nginx برای شناسایی تلاش‌های ناموفق در ورود به وب‌سایت‌ها نظارت می‌کند و آی‌پی‌هایی که تعداد تلاش‌های ناموفقشان از حد مجاز بیشتر می‌شود را مسدود می‌کند.


3. Jail برای سرویس FTP

برای FTP، Jail مربوط به این سرویس می‌تواند برای جلوگیری از حملات Brute Force به سرورهای FTP تنظیم شود. این سرویس معمولاً از پورت‌های خاصی مانند 21 برای FTP و 22 برای SFTP استفاده می‌کند.

تنظیمات نمونه برای FTP:

[vsftpd]
enabled = true
port = ftp,ftps            # پورت‌های FTP و FTPS
filter = vsftpd            # فیلتر مربوط به vsftpd
logpath = /var/log/vsftpd.log  # مسیر لاگ‌های FTP
maxretry = 3
bantime = 600
findtime = 600

در اینجا، Fail2Ban تلاش می‌کند تا تلاش‌های ناموفق برای ورود به سرور FTP را در لاگ‌ها شناسایی کرده و آی‌پی‌های مشکوک را مسدود کند.


4. Jail برای سرویس‌های ایمیل (Postfix/Dovecot)

Postfix و Dovecot دو سرویس اصلی در سرورهای ایمیل هستند که مسئول ارسال و دریافت ایمیل‌ها می‌باشند. Jail برای این سرویس‌ها می‌تواند به شناسایی حملات brute force و ورود غیرمجاز به سرور ایمیل کمک کند.

تنظیمات نمونه برای Postfix:

[postfix]
enabled = true
port = smtp,submission,smptd    # پورت‌های مربوط به Postfix
filter = postfix-auth            # فیلتر مربوط به Postfix
logpath = /var/log/mail.log      # مسیر لاگ‌های Postfix
maxretry = 3
bantime = 600
findtime = 600

تنظیمات نمونه برای Dovecot:

[dovecot]
enabled = true
port = imap,imap2,imap3,imaps    # پورت‌های IMAP
filter = dovecot-auth              # فیلتر مربوط به Dovecot
logpath = /var/log/mail.log        # مسیر لاگ‌های Dovecot
maxretry = 3
bantime = 600
findtime = 600

در این تنظیمات، Fail2Ban به لاگ‌های Postfix و Dovecot نظارت می‌کند تا تلاش‌های ناموفق ورود به سرور ایمیل را شناسایی کرده و آی‌پی‌های مشکوک را مسدود نماید.


جمع‌بندی

در Fail2Ban، Jailها به شما این امکان را می‌دهند که به‌طور مؤثری تلاش‌های ناموفق ورود به سرویس‌های مختلف سرور خود را شناسایی کرده و مسدود کنید. تنظیم Jail برای سرویس‌های مختلف مانند SSH، Apache/Nginx، FTP و Postfix/Dovecot یکی از بهترین روش‌ها برای تقویت امنیت سرور شما در برابر حملات Brute Force و دیگر تلاش‌های نفوذ به سیستم است. با استفاده از این تنظیمات، می‌توانید دسترسی به سرویس‌های حساس خود را محدود کرده و از امنیت بیشتری برخوردار شوید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تنظیمات پیشرفته برای هر Jail” subtitle=”توضیحات کامل”]برای تنظیمات پیشرفته Fail2Ban، می‌توانیم زمان‌بندی‌های خاص، مانند مدت زمان مسدودسازی (ban time) و زمان جستجو برای تلاش‌های ناموفق (find time) را تنظیم کرده و همچنین پیام‌های هشدار به مدیر سیستم ارسال کنیم. این تنظیمات به شما این امکان را می‌دهند که کنترل دقیقی روی نحوه مسدودسازی و اعلان‌های مربوط به امنیت سرور خود داشته باشید.

در اینجا به بررسی تنظیمات پیشرفته برای هر Jail می‌پردازیم:


1. تنظیم زمان‌بندی‌های خاص (ban time و find time)

  • bantime: این پارامتر زمان مسدودسازی آی‌پی‌های مشکوک را تعیین می‌کند. می‌توانید این مقدار را بر حسب ثانیه، دقیقه، ساعت یا روز تنظیم کنید.
  • findtime: این پارامتر مدت زمانی است که Fail2Ban تلاش می‌کند تعداد تلاش‌های ناموفق را در آن بازه زمانی بررسی کند. اگر تعداد تلاش‌ها در این بازه زمانی بیشتر از حد مجاز باشد، Fail2Ban آی‌پی مهاجم را مسدود می‌کند.
  • maxretry: تعداد تلاش‌های ناموفق مجاز پیش از مسدودسازی آی‌پی. این عدد معمولاً 3 یا 5 است.

مثال تنظیمات پیشرفته برای Jail SSH:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5                # حداکثر تعداد تلاش‌های ناموفق
bantime = 3600              # مدت زمان مسدودسازی آی‌پی (1 ساعت)
findtime = 600              # زمان جستجو برای تلاش‌های ناموفق (10 دقیقه)

در اینجا:

  • تعداد تلاش‌های ناموفق مجاز 5 بار است.
  • اگر تعداد تلاش‌ها در مدت زمان 10 دقیقه بیشتر از 5 بار باشد، آی‌پی مهاجم به مدت 1 ساعت (3600 ثانیه) مسدود می‌شود.

مثال تنظیمات پیشرفته برای Jail Apache:

[apache]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/*error.log
maxretry = 3
bantime = 1800              # مدت زمان مسدودسازی (30 دقیقه)
findtime = 300              # زمان جستجو برای تلاش‌های ناموفق (5 دقیقه)

در اینجا:

  • اگر تعداد تلاش‌های ناموفق در مدت زمان 5 دقیقه بیشتر از 3 بار باشد، آی‌پی مهاجم به مدت 30 دقیقه مسدود می‌شود.

2. تعریف پیام‌های هشدار برای مدیر سیستم

در Fail2Ban، می‌توانید پیام‌های هشدار سفارشی برای اطلاع‌رسانی به مدیر سیستم در زمان مسدودسازی آی‌پی‌های مشکوک تنظیم کنید. این کار معمولاً از طریق ارسال ایمیل یا دیگر سیستم‌های اطلاع‌رسانی انجام می‌شود.

برای ارسال ایمیل به مدیر سیستم در زمان مسدودسازی آی‌پی، می‌توانید از actionهای پیش‌فرض مانند action_mwl استفاده کنید که علاوه بر مسدودسازی، پیام‌های ایمیل را ارسال می‌کند.

تنظیم ارسال ایمیل هشدار برای Jail SSH:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
findtime = 600
action = %(action_mwl)s   # ارسال ایمیل هشدار همراه با گزارش کامل

در اینجا:

  • %(action_mwl)s برای ارسال ایمیل هشدار استفاده می‌شود. این اقدام شامل اطلاعات لاگ و جزئیات مسدودسازی در ایمیل است.

تنظیم ارسال ایمیل هشدار برای Jail Apache:

[apache]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/*error.log
maxretry = 3
bantime = 1800
findtime = 300
action = %(action_mwl)s   # ارسال ایمیل هشدار همراه با گزارش کامل

3. تنظیمات پیشرفته برای Jail‌های مختلف

Fail2Ban این امکان را می‌دهد که برای هر Jail تنظیمات پیشرفته‌ای را اعمال کنید. برخی از تنظیمات پیشرفته می‌تواند شامل فیلترهای خاص، تنظیمات مختلف ایمیل، یا حتی استفاده از ابزارهای امنیتی دیگر مانند fail2ban-client برای اعمال تنظیمات خاص باشد.

مثال تنظیمات پیشرفته برای سرویس FTP:

[vsftpd]
enabled = true
port = ftp,ftps
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 3
bantime = 86400            # مدت زمان مسدودسازی 1 روز
findtime = 3600            # زمان جستجو برای تلاش‌های ناموفق (1 ساعت)
action = %(action_mwl)s    # ارسال هشدار ایمیلی با گزارش کامل

در اینجا:

  • اگر تعداد تلاش‌های ناموفق برای دسترسی به FTP از 3 بار بیشتر شود، Fail2Ban آی‌پی را برای مدت 1 روز مسدود می‌کند و ایمیل هشدار ارسال می‌کند.

4. استفاده از فیلترهای سفارشی

شما می‌توانید فیلترهای سفارشی خود را برای هر Jail ایجاد کرده و آن‌ها را در تنظیمات استفاده کنید. این فیلترها به شما این امکان را می‌دهند که دقیق‌تر مشخص کنید که کدام لاگ‌ها باید برای شناسایی تلاش‌های ناموفق بررسی شوند.

مثال فیلتر سفارشی برای SSH:

فرض کنید که می‌خواهید فیلتر خود را برای SSH به گونه‌ای تنظیم کنید که علاوه بر تلاش‌های ناموفق ورود، به تلاش‌های غیرمجاز دیگر نیز توجه کند.

در فایل /etc/fail2ban/filter.d/sshd.conf می‌توانید فیلتر سفارشی خود را اضافه کنید.

[Definition]
failregex = .*sshd.*Failed password.*
ignoreregex = 

در اینجا، Fail2Ban به دنبال عبارت “Failed password” در لاگ‌های SSH می‌گردد.


جمع‌بندی

با استفاده از تنظیمات پیشرفته در Fail2Ban، می‌توانید کنترل دقیقی روی رفتار سرویس‌های مختلف سرور خود داشته باشید. تنظیم زمان‌بندی‌های خاص مانند ban time و find time به شما امکان می‌دهند که نحوه مسدودسازی مهاجمان را تنظیم کنید و به‌طور دقیق‌تری سرور خود را محافظت نمایید. همچنین، ارسال پیام‌های هشدار از طریق ایمیل به مدیر سیستم، این امکان را فراهم می‌آورد که همیشه از حملات و مسدودسازی‌های انجام شده مطلع شوید. این تنظیمات پیشرفته در کنار فیلترهای سفارشی و action‌های مختلف به شما کمک می‌کند تا امنیت سرور خود را به حداکثر برسانید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 4. مدیریت قوانین Jail”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”فعال و غیرفعال کردن Jail‌ها” subtitle=”توضیحات کامل”]در Fail2Ban، شما می‌توانید Jail‌های مختلفی را برای نظارت و مسدودسازی تلاش‌های غیرمجاز بر روی سرویس‌های مختلف فعال یا غیرفعال کنید. این عمل می‌تواند به بهبود عملکرد سرور کمک کند، زیرا فعال نگه‌داشتن Jailهای غیرضروری منابع اضافی را مصرف می‌کند. در ادامه نحوه فعال و غیرفعال کردن Jail‌ها برای سرویس‌های مختلف توضیح داده می‌شود.


1. نحوه غیرفعال کردن Jail‌ها

برای غیرفعال کردن Jail‌های غیرضروری، می‌توانید تنظیمات مربوط به Jail‌ها را در فایل پیکربندی jail.local یا jail.conf تغییر دهید. برای این کار کافی است گزینه enabled را برای Jail مورد نظر به false تنظیم کنید.

مثال: غیرفعال کردن Jail برای سرویس Apache

اگر شما از Apache استفاده نمی‌کنید و نیازی به نظارت Fail2Ban بر این سرویس ندارید، می‌توانید Jail آن را غیرفعال کنید.

  1. فایل /etc/fail2ban/jail.local یا /etc/fail2ban/jail.conf را باز کنید.
sudo nano /etc/fail2ban/jail.local
  1. به بخش مربوط به Apache بروید و گزینه enabled را به false تغییر دهید.
[apache]
enabled = false
  1. فایل را ذخیره کرده و تغییرات را اعمال کنید.
  2. برای بارگذاری مجدد تنظیمات، دستور زیر را وارد کنید:
sudo systemctl restart fail2ban

2. نحوه فعال کردن Jail‌ها

برای فعال کردن یک Jail، کافی است گزینه enabled را در فایل پیکربندی به true تغییر دهید. به‌طور معمول، Jailها برای سرویس‌هایی که به‌طور پیش‌فرض در Fail2Ban پیکربندی شده‌اند، غیرفعال هستند. برای فعال کردن آن‌ها، باید enabled را به true تغییر دهید.

مثال: فعال کردن Jail برای سرویس SSH

اگر Jail برای SSH به دلایلی غیرفعال شده باشد و شما می‌خواهید آن را فعال کنید، می‌توانید تنظیمات آن را به‌صورت زیر تغییر دهید:

  1. فایل /etc/fail2ban/jail.local یا /etc/fail2ban/jail.conf را باز کنید.
sudo nano /etc/fail2ban/jail.local
  1. به بخش مربوط به SSH بروید و گزینه enabled را به true تغییر دهید.
[sshd]
enabled = true
  1. فایل را ذخیره کرده و تغییرات را اعمال کنید.
  2. برای بارگذاری مجدد تنظیمات، دستور زیر را وارد کنید:
sudo systemctl restart fail2ban

3. غیرفعال کردن Jail‌های پیش‌فرض در jail.conf

در فایل پیکربندی /etc/fail2ban/jail.conf، ممکن است برخی از Jail‌ها به‌طور پیش‌فرض فعال باشند. این فایل معمولاً برای تنظیمات پیش‌فرض است و بهتر است از آن برای ویرایش مستقیم استفاده نکنید. به‌جای آن، از jail.local برای تنظیمات سفارشی استفاده کنید. با این حال، اگر نیاز به تغییر در jail.conf دارید، می‌توانید Jail‌ها را غیرفعال کنید.

مثال: غیرفعال کردن Jail برای سرویس FTP در jail.conf

[vsftpd]
enabled = false

4. استفاده از Fail2Ban برای لیست Jail‌ها

برای مشاهده Jail‌های فعال یا غیرفعال در Fail2Ban، می‌توانید از دستور fail2ban-client استفاده کنید. این دستور به شما امکان می‌دهد که وضعیت Jail‌ها را بررسی کنید.

بررسی وضعیت Jail‌ها:

sudo fail2ban-client status

این دستور تمامی Jail‌های فعال را نشان می‌دهد.

بررسی وضعیت Jail خاص:

اگر می‌خواهید وضعیت یک Jail خاص (مثلاً SSH) را بررسی کنید:

sudo fail2ban-client status sshd

5. بهبود عملکرد با غیرفعال کردن Jail‌های غیرضروری

غیرفعال کردن Jail‌های غیرضروری می‌تواند به بهبود عملکرد Fail2Ban و سرور شما کمک کند. برای مثال، اگر شما از سرویس FTP یا Apache استفاده نمی‌کنید، غیرفعال کردن Jail این سرویس‌ها از مصرف منابع اضافی جلوگیری می‌کند. این کار به‌ویژه در سرورهایی با منابع محدود یا در سرورهایی که تنها از یک یا دو سرویس خاص استفاده می‌کنند، مفید است.


جمع‌بندی

با تنظیم درست Fail2Ban و فعال یا غیرفعال کردن Jail‌ها بر اساس نیازهای سرور، می‌توانید عملکرد بهتری از سیستم خود دریافت کنید. غیرفعال کردن Jail‌های غیرضروری به کاهش مصرف منابع سیستم کمک می‌کند، در حالی که فعال نگه‌داشتن Jail‌های ضروری برای محافظت از سرویس‌های حساس ضروری است. استفاده از فایل‌های jail.local برای تنظیمات سفارشی و مدیریت Jail‌ها، روشی امن و کارآمد برای مدیریت امنیت سرور است.

 

 [/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تست Jail‌ها با استفاده از دستور fail2ban-client” subtitle=”توضیحات کامل”]Fail2Ban ابزار قدرتمندی برای حفاظت از سرور در برابر حملات brute force است. برای اطمینان از عملکرد صحیح Jail‌ها و شناسایی مشکلات احتمالی، می‌توان از دستور fail2ban-client استفاده کرد. این دستور به شما کمک می‌کند تا وضعیت Jail‌ها را بررسی کرده و از عملکرد صحیح آن‌ها مطمئن شوید.

در اینجا نحوه تست Jail‌ها و بررسی وضعیت آن‌ها با استفاده از fail2ban-client آورده شده است:


1. بررسی وضعیت کلی Jail‌ها

برای مشاهده وضعیت کلی Jail‌های فعال و غیر فعال، می‌توانید از دستور زیر استفاده کنید:

sudo fail2ban-client status

این دستور تمام Jail‌های فعال و وضعیت آن‌ها را نمایش می‌دهد. برای هر Jail، اطلاعاتی مانند تعداد آی‌پی‌های مسدودشده، تعداد تلاش‌های ناموفق و … را خواهید دید.

خروجی نمونه:

Status
|- Number of jail:      3
`- Jail list:           sshd, apache, nginx

در این مثال، سه Jail فعال است: sshd, apache, و nginx.


2. بررسی وضعیت یک Jail خاص

اگر بخواهید وضعیت یک Jail خاص (مثلاً SSH) را بررسی کنید، از دستور زیر استفاده کنید:

sudo fail2ban-client status sshd

این دستور اطلاعات بیشتری در مورد Jail مربوط به SSH نمایش می‌دهد، از جمله تعداد آی‌پی‌های مسدودشده و تعداد تلاش‌های ناموفق.

خروجی نمونه:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 5
|  |- Total failed: 50
|  `- File list:    /var/log/auth.log
`- Actions
   |- Currently banned: 3
   |- Total banned: 15
   `- Banned IP list: 192.168.1.100, 192.168.1.101, 192.168.1.102

در این مثال، 5 تلاش ناموفق اخیراً شناسایی شده است و 3 آی‌پی به‌دلیل تلاش‌های متعدد برای دسترسی مسدود شده‌اند.


3. بررسی لاگ‌های یک Jail خاص

برای مشاهده جزئیات لاگ‌های یک Jail خاص، می‌توانید از دستور زیر استفاده کنید:

sudo fail2ban-client get sshd logpath

این دستور مسیر فایل لاگ مربوط به Jail sshd را نشان می‌دهد. شما می‌توانید به این فایل مراجعه کنید تا ببینید چرا یک آی‌پی خاص مسدود شده است.


4. جستجو برای آی‌پی‌های مسدودشده

اگر می‌خواهید آی‌پی‌های مسدودشده توسط یک Jail خاص را مشاهده کنید، می‌توانید از دستور زیر استفاده کنید:

sudo fail2ban-client status sshd | grep "Banned IP list"

این دستور لیست آی‌پی‌های مسدودشده برای Jail sshd را نمایش می‌دهد.


5. رفع مسدودیت آی‌پی‌ها

اگر شما تصمیم دارید که آی‌پی خاصی را که به اشتباه مسدود شده از لیست مسدودشده‌ها حذف کنید، می‌توانید از دستور زیر استفاده کنید:

sudo fail2ban-client unban <IP_Address>

برای مثال، برای رفع مسدودیت آی‌پی 192.168.1.100، دستور زیر را وارد کنید:

sudo fail2ban-client unban 192.168.1.100

6. بررسی وضعیت Jail پس از تغییرات

پس از انجام تغییرات در فایل پیکربندی jail.local یا jail.conf، توصیه می‌شود که وضعیت Jail‌ها را دوباره بررسی کنید تا اطمینان حاصل کنید که تغییرات به درستی اعمال شده‌اند.

برای اعمال تغییرات و بازنشانی Fail2Ban، می‌توانید از دستور زیر استفاده کنید:

sudo systemctl restart fail2ban

پس از آن، مجدداً از دستور fail2ban-client status برای بررسی وضعیت Jail‌ها استفاده کنید.


جمع‌بندی

دستور fail2ban-client ابزار مفیدی برای بررسی وضعیت Jail‌ها و مدیریت Fail2Ban است. با استفاده از این دستور می‌توانید وضعیت کلی Jail‌ها، وضعیت یک Jail خاص، لاگ‌ها و آی‌پی‌های مسدودشده را مشاهده کنید. همچنین، این ابزار به شما اجازه می‌دهد که آی‌پی‌های مسدودشده را رفع مسدود کنید و از صحت عملکرد Jail‌ها اطمینان حاصل کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تنظیمات مرتبط با مدت زمان بلاک و رفع بلاک” subtitle=”توضیحات کامل”]برای مدیریت مدت زمان مسدودسازی آی‌پی‌ها و نحوه رفع مسدودیت آن‌ها، Fail2Ban تنظیماتی را ارائه می‌دهد که به شما امکان می‌دهد کنترل دقیقی بر فرآیند مسدودسازی داشته باشید. دو تنظیم اصلی که به این موضوع مربوط می‌شود عبارتند از:


1. bantime: مدت زمان بلاک

تنظیم bantime به شما این امکان را می‌دهد که مدت زمانی که آی‌پی‌های مشکوک مسدود خواهند شد را مشخص کنید. به‌طور پیش‌فرض، این مقدار معمولاً به صورت یک ساعت (3600 ثانیه) تنظیم شده است.

  • اگر bantime را به مقدار پایین‌تری تنظیم کنید، آی‌پی‌ها پس از مدت زمان کوتاه‌تری از دسترسی به سرور مسدود می‌شوند.
  • اگر این مقدار را افزایش دهید، آی‌پی‌ها برای مدت زمان طولانی‌تری مسدود خواهند ماند.

نحوه تنظیم:

برای تغییر مدت زمان بلاک، می‌توانید تنظیم bantime را در فایل پیکربندی jail.local یا jail.conf ویرایش کنید:

bantime = 600   # مدت زمان بلاک به ثانیه، برای مثال 600 ثانیه (10 دقیقه)

این تنظیم باعث می‌شود که آی‌پی‌ها برای مدت 10 دقیقه مسدود شوند. اگر می‌خواهید مدت زمان بیشتری تعیین کنید، این مقدار را افزایش دهید.


2. persistent: مسدودسازی مداوم آی‌پی‌ها پس از راه‌اندازی مجدد سیستم

اگر می‌خواهید که آی‌پی‌هایی که توسط Fail2Ban مسدود شده‌اند، پس از راه‌اندازی مجدد سیستم همچنان مسدود بمانند (یعنی تنظیمات مسدودسازی حفظ شوند)، می‌توانید از گزینه persistent استفاده کنید.

به‌طور پیش‌فرض، زمانی که سیستم راه‌اندازی مجدد می‌شود، لیست مسدودسازی‌ها پاک می‌شود و آی‌پی‌هایی که قبلاً مسدود شده‌اند، مجدداً امکان دسترسی به سرور پیدا می‌کنند.

اگر این تنظیم را فعال کنید، Fail2Ban تمام آی‌پی‌های مسدودشده را ذخیره کرده و حتی پس از راه‌اندازی مجدد سیستم نیز آن‌ها را مسدود می‌کند.

نحوه تنظیم:

برای فعال‌سازی مسدودسازی مداوم آی‌پی‌ها، می‌توانید گزینه persistent را در فایل پیکربندی jail.local یا jail.conf تنظیم کنید:

persistent = true   # مسدودسازی مداوم آی‌پی‌ها پس از راه‌اندازی مجدد

اگر persistent را به true تنظیم کنید، Fail2Ban لیست آی‌پی‌های مسدودشده را در فایل لاگ ذخیره کرده و پس از راه‌اندازی مجدد سیستم، مسدودسازی‌ها را دوباره اعمال می‌کند.


3. **تنظیمات مثال برای bantime و persistent

در اینجا یک مثال از تنظیمات مربوط به مدت زمان بلاک و مسدودسازی مداوم در Fail2Ban آورده شده است:

[sshd]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
bantime  = 3600          # مدت زمان مسدودسازی 1 ساعت (3600 ثانیه)
findtime = 600           # اگر تعداد تلاش‌های ناموفق در 600 ثانیه بیشتر از 5 باشد، آی‌پی مسدود می‌شود
maxretry = 5             # حداکثر تعداد تلاش‌های ناموفق مجاز قبل از مسدودسازی
persistent = true        # حفظ مسدودسازی‌ها پس از راه‌اندازی مجدد سیستم

در این تنظیمات:

  • bantime = 3600: آی‌پی‌هایی که بیش از 5 تلاش ناموفق برای ورود به سیستم SSH دارند، به مدت 1 ساعت مسدود می‌شوند.
  • persistent = true: حتی پس از راه‌اندازی مجدد سیستم، آی‌پی‌هایی که مسدود شده‌اند، همچنان مسدود خواهند ماند.

جمع‌بندی

  • bantime: مدت زمان مسدودسازی آی‌پی‌ها را مشخص می‌کند. این زمان به ثانیه تنظیم می‌شود و می‌توانید آن را برای هر Jail به صورت جداگانه پیکربندی کنید.
  • persistent: این تنظیم باعث می‌شود که آی‌پی‌هایی که مسدود شده‌اند، پس از راه‌اندازی مجدد سیستم همچنان مسدود بمانند. این گزینه مفید است زمانی که می‌خواهید از حفظ امنیت سیستم پس از راه‌اندازی مجدد اطمینان حاصل کنید.

این دو تنظیم به شما این امکان را می‌دهند که کنترل بیشتری بر روی مدت زمان مسدودسازی و رفتار Fail2Ban در شرایط مختلف داشته باشید.

 

[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بررسی و اصلاح پیکربندی‌های پیش‌فرض برای سرویس‌ها” subtitle=”توضیحات کامل”]در Fail2Ban، پیکربندی پیش‌فرض برای هر سرویس به‌طور خاص در فایل‌های پیکربندی تعیین می‌شود. این تنظیمات معمولاً شامل نحوه مسدودسازی آی‌پی‌ها، مدت زمان مسدودسازی، و تنظیمات خاص برای هر سرویس است. مهم است که این تنظیمات را بررسی و در صورت نیاز برای هر سرویس خاص اصلاح کنید تا از امنیت سرور خود اطمینان حاصل کنید.


1. بررسی پیکربندی پیش‌فرض سرویس‌ها

برای بررسی پیکربندی‌های پیش‌فرض سرویس‌ها، باید فایل‌های پیکربندی مانند jail.conf را بررسی کنید که در مسیر /etc/fail2ban/jail.conf قرار دارند. این فایل حاوی تنظیمات پیش‌فرض برای Jail‌ها (سرویس‌ها) مانند SSH, Apache, Nginx, FTP و سایر سرویس‌های شبکه است.

  • jail.conf: این فایل شامل تنظیمات پیش‌فرض است و به‌طور کلی نباید مستقیماً تغییر داده شود. به‌جای آن، باید از فایل jail.local برای انجام تغییرات استفاده کنید.در فایل jail.conf، برای هر سرویس یک بخش وجود دارد که شامل تنظیماتی مانند bantime, findtime, maxretry و enabled است.

2. اصلاح پیکربندی‌ها برای سرویس‌ها

پس از بررسی پیکربندی پیش‌فرض، ممکن است بخواهید آن را برای نیازهای خاص خود تنظیم کنید. در اینجا چند نکته برای اصلاح پیکربندی‌ها آورده شده است:

الف) اصلاح Jail برای SSH

برای مثال، اگر بخواهید تنظیمات SSH را برای جلوگیری از حملات Brute Force بهینه کنید، باید بخش مربوط به SSH را در فایل jail.local یا jail.conf تغییر دهید.

[sshd]
enabled  = true              # فعال‌سازی Jail برای SSH
port     = ssh               # پورت SSH
filter   = sshd              # استفاده از فیلتر sshd
logpath  = /var/log/auth.log  # مسیر فایل لاگ SSH
bantime  = 3600              # مدت زمان مسدودسازی 1 ساعت
findtime = 600               # اگر تعداد تلاش‌های ناموفق در 600 ثانیه بیشتر از 5 باشد، آی‌پی مسدود می‌شود
maxretry = 5                 # حداکثر تعداد تلاش‌های ناموفق مجاز قبل از مسدودسازی

این تنظیمات باعث می‌شود که اگر کسی تلاش کند که بیش از 5 بار به طور ناموفق وارد سیستم شود، آی‌پی آن به مدت یک ساعت مسدود شود.

ب) اصلاح Jail برای سرویس‌های وب (Apache/Nginx)

برای جلوگیری از حملات به وب‌سرورهای مانند Apache و Nginx، تنظیمات Fail2Ban باید به‌طور خاص برای این سرویس‌ها انجام شود. به‌طور پیش‌فرض، Fail2Ban از فیلترهایی مانند apache و nginx برای این سرویس‌ها استفاده می‌کند.

برای Apache، می‌توانید پیکربندی زیر را اعمال کنید:

[apache]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/*error.log
maxretry = 3
bantime = 3600
findtime = 600

این تنظیمات به این معنی است که اگر سه تلاش ناموفق برای ورود به سیستم Apache در مدت زمان 10 دقیقه صورت بگیرد، آی‌پی به مدت یک ساعت مسدود می‌شود.

برای Nginx، پیکربندی مشابهی را خواهید داشت:

[nginx]
enabled = true
port = http,https
filter = nginx-http-auth
logpath = /var/log/nginx/*error.log
maxretry = 3
bantime = 3600
findtime = 600

ج) اصلاح Jail برای سرویس‌های ایمیل (Postfix/Dovecot)

برای سرویس‌های ایمیل مانند Postfix و Dovecot، Fail2Ban می‌تواند تلاش‌های ناموفق برای ورود به سیستم ایمیل را شناسایی کرده و آی‌پی‌های مخرب را مسدود کند. تنظیمات مشابهی برای این سرویس‌ها می‌توان اعمال کرد.

برای Postfix, پیکربندی زیر را در jail.local یا jail.conf اضافه کنید:

[postfix]
enabled = true
port = smtp,ssmtp
filter = postfix
logpath = /var/log/mail.log
maxretry = 3
bantime = 3600
findtime = 600

این پیکربندی به این معناست که اگر سه تلاش ناموفق برای ورود به Postfix در مدت زمان 10 دقیقه صورت بگیرد، آی‌پی به مدت یک ساعت مسدود خواهد شد.


3. مراحل اصلاح و بررسی

  1. باز کردن فایل پیکربندی: فایل /etc/fail2ban/jail.local را باز کنید (یا اگر این فایل وجود ندارد، از jail.conf استفاده کنید، اما بهتر است فایل jail.local را برای جلوگیری از بازنویسی تغییرات در هنگام به‌روزرسانی‌ها استفاده کنید).
  2. تنظیمات Jail‌ها را بررسی و ویرایش کنید: Jail‌های مربوط به سرویس‌های مختلف را یافته و تنظیمات مناسب را اعمال کنید.
  3. بررسی صحت تغییرات: پس از اعمال تغییرات، می‌توانید با استفاده از دستور زیر وضعیت Fail2Ban را بررسی کنید:
    sudo fail2ban-client status
    

    همچنین می‌توانید برای مشاهده جزئیات بیشتر در مورد Jail‌های فعال از این دستور استفاده کنید:

    sudo fail2ban-client status <jail_name>
    

    به عنوان مثال، برای بررسی Jail مربوط به SSH:

    sudo fail2ban-client status sshd
    
  4. ریستارت سرویس Fail2Ban: پس از اعمال تغییرات، برای اعمال تنظیمات جدید سرویس Fail2Ban را ریستارت کنید:
    sudo systemctl restart fail2ban
    

جمع‌بندی

  • بررسی و اصلاح پیکربندی‌های پیش‌فرض برای سرویس‌ها در Fail2Ban به شما این امکان را می‌دهد که اقدامات امنیتی بیشتری برای هر سرویس اعمال کنید.
  • با تغییر تنظیمات Jail‌ها برای هر سرویس خاص، می‌توانید از سرور خود در برابر حملات Brute Force، حملات به وب‌سایت‌ها، و تلاش‌های ورود غیرمجاز به سرویس‌های ایمیل محافظت کنید.
  • استفاده از فایل jail.local به جای jail.conf بهترین روش برای انجام تنظیمات سفارشی است، زیرا تغییرات شما پس از به‌روزرسانی نرم‌افزار حفظ خواهند شد.

[/cdb_course_lesson][cdb_course_lesson title=”فصل 5. پیکربندی رفتار Fail2Ban”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تنظیم اقدامات پیش‌فرض (Actions)” subtitle=”توضیحات کامل”]در Fail2Ban، اقدامات یا Actions مسئول اجرایی کردن عمل مسدودسازی آی‌پی‌ها و ارسال هشدارها هستند. به طور پیش‌فرض، Fail2Ban از iptables-multiport برای مسدودسازی آی‌پی‌ها استفاده می‌کند و از sendmail برای ارسال هشدارهای ایمیلی به مدیران سیستم بهره می‌برد. این اقدامات می‌توانند با توجه به نیازهای خاص شما تنظیم شوند.


1. iptables-multiport: استفاده از iptables برای بلاک کردن آی‌پی‌ها

iptables ابزار اصلی فایروال در لینوکس است که برای تنظیم و مدیریت ترافیک شبکه استفاده می‌شود. در Fail2Ban، از iptables-multiport به‌عنوان یک اقدام پیش‌فرض برای مسدودسازی آی‌پی‌های مخرب استفاده می‌شود. این اقدام باعث می‌شود که آی‌پی‌های مشکوک به‌طور خودکار از دسترسی به پورت‌های خاص مسدود شوند.

تنظیمات پیش‌فرض برای استفاده از iptables

در فایل پیکربندی action.d/iptables-multiport.conf، اقدام پیش‌فرض iptables-multiport به‌طور زیر تنظیم می‌شود:

# مثال پیکربندی اقدام iptables-multiport
[Definition]
actionban = iptables -I f2b-<name> -s <ip> -j REJECT --reject-with icmp-port-unreachable
actionunban = iptables -D f2b-<name> -s <ip> -j REJECT
  • actionban: این دستور زمانی اجرا می‌شود که یک آی‌پی باید مسدود شود. در اینجا از دستور iptables -I برای وارد کردن یک قانون جدید استفاده می‌شود تا ترافیک آی‌پی مربوطه را به‌طور موقت مسدود کند.
  • actionunban: زمانی که مدت زمان مسدودسازی پایان یابد و آی‌پی باید از فایروال حذف شود، دستور iptables -D استفاده می‌شود.
  • : نام Jail که Fail2Ban آن را به‌طور خودکار در نظر می‌گیرد (برای مثال، sshd برای SSH).

نحوه تنظیم فایروال برای Jail خاص

برای هر Jail خاص، مانند SSH, می‌توانید به فایل پیکربندی jail.local رفته و تنظیمات iptables را بررسی و تغییر دهید.

مثال:

[sshd]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
bantime  = 3600
findtime = 600
maxretry = 5
action   = iptables-multiport[name=SSH, port="ssh"]

در اینجا، Fail2Ban از iptables-multiport برای مسدودسازی آی‌پی‌های مشکوک که تلاش‌های ورود ناموفق به SSH دارند استفاده می‌کند.


2. sendmail: ارسال ایمیل هشدار

یکی از امکانات Fail2Ban این است که می‌تواند به مدیر سیستم ایمیل هشدار ارسال کند زمانی که یک آی‌پی به دلیل تلاش‌های ناموفق مسدود می‌شود. برای این منظور، از ابزار sendmail استفاده می‌شود.

پیکربندی ارسال ایمیل هشدار

در فایل action.d/sendmail.conf، تنظیمات مربوط به ارسال ایمیل در Fail2Ban به‌طور پیش‌فرض به شکل زیر است:

# مثال پیکربندی اقدام sendmail
[Definition]
actionban = sendmail -t
actionunban = sendmail -t
  • actionban: این دستور زمانی اجرا می‌شود که Fail2Ban بخواهد هشدار ارسال کند. در این حالت، از دستور sendmail برای ارسال ایمیل به آدرس مشخص‌شده استفاده می‌شود.
  • actionunban: این دستور برای ارسال ایمیل هشدار هنگام رفع مسدودسازی آی‌پی اجرا می‌شود.

نحوه تنظیم ارسال ایمیل

برای تنظیم ارسال ایمیل هشدار، باید فایل jail.local را ویرایش کرده و گزینه action را به‌صورت زیر تنظیم کنید:

[sshd]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
bantime  = 3600
findtime = 600
maxretry = 5
action   = sendmail[name=SSH, dest=admin@example.com]

در اینجا:

  • name=SSH: نام Jail که از آن استفاده می‌شود.
  • dest=admin@example.com: آدرس ایمیل که هشدار به آن ارسال می‌شود.

3. استفاده از ترکیب اقدامات مختلف

یکی از ویژگی‌های قوی Fail2Ban این است که می‌توانید چندین اقدام را برای یک Jail خاص تنظیم کنید. به این صورت، Fail2Ban می‌تواند علاوه بر مسدودسازی آی‌پی، یک ایمیل هشدار نیز ارسال کند.

برای مثال:

[sshd]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
bantime  = 3600
findtime = 600
maxretry = 5
action   = iptables-multiport[name=SSH, port="ssh"]
           sendmail[name=SSH, dest=admin@example.com]

در این پیکربندی، اگر آی‌پی به دلیل تلاش‌های ناموفق مسدود شود، علاوه بر مسدودسازی با iptables، یک ایمیل هشدار به آدرس admin@example.com ارسال خواهد شد.


جمع‌بندی

  • iptables-multiport: این اقدام به شما اجازه می‌دهد تا آی‌پی‌های مخرب را با استفاده از iptables مسدود کنید. این ابزار برای فیلتر کردن ترافیک بر اساس پورت‌های مشخص شده به‌کار می‌رود.
  • sendmail: این اقدام به شما این امکان را می‌دهد که هشدارهای ایمیلی برای مدیر سیستم ارسال کنید. این می‌تواند شامل اطلاعاتی مانند آی‌پی مسدود شده و تعداد تلاش‌های ناموفق باشد.
  • ترکیب این دو اقدام (مسدودسازی آی‌پی و ارسال ایمیل هشدار) می‌تواند به‌طور مؤثری امنیت سرور شما را تقویت کند و شما را از حملات بالقوه آگاه کند.

[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تعریف اقدامات سفارشی در Fail2Ban” subtitle=”توضیحات کامل”]Fail2Ban این امکان را به شما می‌دهد که علاوه بر اقدامات پیش‌فرض مانند iptables و sendmail، اقدامات سفارشی خود را تعریف کنید. به این صورت، می‌توانید پیام‌هایی به سرویس‌های دیگر مانند Slack یا Telegram ارسال کنید یا از ابزارهای دیگری برای اقدامات امنیتی استفاده نمایید.


1. اضافه کردن اکشن‌های جدید مانند ارسال پیام به Slack یا Telegram

برای ارسال پیام به Slack یا Telegram به‌عنوان یک اقدام سفارشی، باید از اسکریپت‌ها یا ابزارهای خط فرمان استفاده کنید که این سرویس‌ها از آن پشتیبانی می‌کنند. به‌طور مثال، می‌توانید از webhook یا APIهای این سرویس‌ها برای ارسال هشدار استفاده کنید.

مثال: ارسال پیام به Slack

برای ارسال پیام به Slack، ابتدا باید یک Incoming Webhook در Slack ایجاد کنید. سپس از این webhook برای ارسال پیام‌ها به کانال‌های خاص در Slack استفاده می‌کنید.

مراحل ایجاد Webhook در Slack:

  1. به صفحه مدیریت Slack بروید.
  2. به App Directory بروید و Incoming Webhooks را جستجو کنید.
  3. یک Incoming Webhook جدید ایجاد کنید.
  4. URL تولید شده را کپی کنید.

تعریف اقدام سفارشی برای ارسال پیام به Slack

  1. ابتدا یک فایل جدید برای اکشن‌ها ایجاد کنید، برای مثال /etc/fail2ban/action.d/slack.conf.
  2. در این فایل، از ابزار curl برای ارسال پیام استفاده می‌کنیم:
# slack.conf
[Definition]
actionban = curl -X POST -H 'Content-type: application/json' --data '{"text":"IP <ip> has been banned for <bantime> seconds."}' <SLACK_WEBHOOK_URL>
actionunban = curl -X POST -H 'Content-type: application/json' --data '{"text":"IP <ip> has been unbanned."}' <SLACK_WEBHOOK_URL>

در اینجا:

  • actionban: پیامی به Slack ارسال می‌کند زمانی که یک آی‌پی مسدود می‌شود.
  • actionunban: پیامی به Slack ارسال می‌کند زمانی که یک آی‌پی از مسدودسازی خارج می‌شود.
  • <SLACK_WEBHOOK_URL>: URL Webhook شما که از Slack گرفته‌اید.
  • و : مقادیر مربوط به آی‌پی مسدود شده و مدت زمان مسدودسازی که توسط Fail2Ban به‌طور خودکار جایگزین می‌شود.

اضافه کردن اقدام به Jail

در فایل jail.local، اقدام جدید را به Jail مربوطه اضافه کنید:

[sshd]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
bantime  = 3600
findtime = 600
maxretry = 5
action   = slack

در اینجا، از اکشن slack که خودتان تعریف کرده‌اید استفاده می‌شود.


2. ارسال پیام به Telegram

برای ارسال پیام به Telegram، ابتدا باید یک Bot در Telegram ایجاد کنید و سپس از API آن برای ارسال پیام‌ها استفاده کنید.

مراحل ایجاد Bot در Telegram:

  1. به BotFather در Telegram بروید.
  2. دستور /newbot را ارسال کنید و مراحل ساخت Bot را دنبال کنید.
  3. Token مربوط به Bot خود را دریافت کنید.

تعریف اقدام سفارشی برای ارسال پیام به Telegram

  1. مشابه روش Slack، یک فایل جدید برای اکشن‌های Telegram در /etc/fail2ban/action.d/telegram.conf ایجاد کنید.
# telegram.conf
[Definition]
actionban = curl -s -X POST https://api.telegram.org/bot<TELEGRAM_BOT_TOKEN>/sendMessage -d chat_id=<CHAT_ID> -d text="IP <ip> has been banned for <bantime> seconds."
actionunban = curl -s -X POST https://api.telegram.org/bot<TELEGRAM_BOT_TOKEN>/sendMessage -d chat_id=<CHAT_ID> -d text="IP <ip> has been unbanned."

در اینجا:

  • <TELEGRAM_BOT_TOKEN>: توکن مخصوص Bot خود.
  • <CHAT_ID>: شناسه چت Telegram شما که می‌خواهید پیام‌ها به آن ارسال شود.
  • actionban: ارسال پیام به چت Telegram زمانی که آی‌پی مسدود می‌شود.
  • actionunban: ارسال پیام زمانی که آی‌پی از مسدودسازی خارج می‌شود.

اضافه کردن اقدام به Jail

در فایل jail.local، اقدام جدید Telegram را به Jail اضافه کنید:

[sshd]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
bantime  = 3600
findtime = 600
maxretry = 5
action   = telegram

3. تست اکشن‌ها برای بررسی صحت عملکرد

برای اطمینان از اینکه اقدامات سفارشی شما به‌درستی کار می‌کنند، می‌توانید از دستور fail2ban-client برای تست و مشاهده عملکرد آن‌ها استفاده کنید.

تست Jail‌ها و اکشن‌ها

  1. ابتدا Jail مربوطه را با دستور زیر بررسی کنید:
sudo fail2ban-client status sshd

این دستور به شما وضعیت Jail را نشان می‌دهد و تعداد آی‌پی‌های مسدود شده را نمایش می‌دهد.

  1. برای بررسی صحت عملکرد اکشن‌ها (مثلاً ارسال پیام به Slack یا Telegram)، می‌توانید با دستورات زیر Jail را به‌صورت دستی مسدود و سپس رفع مسدودسازی کنید:
sudo fail2ban-client set sshd banip <IP_ADDRESS>
sudo fail2ban-client set sshd unbanip <IP_ADDRESS>
  1. سپس بررسی کنید که پیام‌های ارسال شده به Slack یا Telegram به‌درستی دریافت می‌شوند.

جمع‌بندی

  • Fail2Ban اجازه می‌دهد که شما اقدامات سفارشی خود را برای ارسال هشدار به سرویس‌های مختلف مانند Slack یا Telegram تعریف کنید.
  • می‌توانید از curl برای ارسال پیام‌ها از طریق webhook یا API سرویس‌ها استفاده کنید.
  • پس از ایجاد اقدامات سفارشی، می‌توانید با استفاده از fail2ban-client عملکرد آن‌ها را تست کنید و از صحت عملکرد آن‌ها اطمینان حاصل نمایید.

[/cdb_course_lesson][cdb_course_lesson title=”فصل 6. پیکربندی Fail2Ban برای سرویس‌های خاص”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تنظیمات پیکربندی برای سرویس SSH” subtitle=”توضیحات کامل”]برای حفظ امنیت سرویس SSH و جلوگیری از حملات brute force، باید از ابزارهایی مانند Fail2Ban بهره‌برداری کنید. علاوه بر این، می‌توان دسترسی به این سرویس را محدود کرد تا فقط آی‌پی‌های خاص بتوانند به سرور متصل شوند.

1. جلوگیری از حملات brute force

برای جلوگیری از حملات brute force، Fail2Ban با نظارت بر تلاش‌های ورود به سیستم SSH و مسدودسازی آی‌پی‌هایی که تلاش‌های مکرر ناموفق دارند، از دسترسی غیرمجاز جلوگیری می‌کند. این اقدامات شامل تنظیمات زیر است:

پیکربندی Jail برای SSH:

در فایل /etc/fail2ban/jail.local، Jail مربوط به SSH را تنظیم کنید.

[sshd]
enabled = true               # فعال‌سازی Jail برای SSH
port    = ssh                # پورت SSH (به‌طور پیش‌فرض 22)
filter  = sshd               # فیلتر SSH
logpath = /var/log/auth.log   # مسیر فایل لاگ SSH
bantime = 600                # مدت زمان مسدودسازی آی‌پی‌ها (مثلاً 10 دقیقه)
findtime = 600               # مدت زمانی که Fail2Ban برای جستجوی تلاش‌های ناموفق در نظر می‌گیرد (600 ثانیه = 10 دقیقه)
maxretry = 3                 # حداکثر تعداد تلاش‌های ناموفق پیش از مسدودسازی آی‌پی

در این تنظیمات:

  • enabled: Jail مربوط به SSH فعال شده است.
  • port: پورت SSH که به‌طور پیش‌فرض برابر با ssh یا 22 است.
  • filter: فیلتر پیش‌فرض SSH به‌نام sshd.
  • logpath: مسیر فایل لاگ که تلاش‌های ورود غیرمجاز در آن ثبت می‌شود. برای بیشتر توزیع‌های لینوکسی، این مسیر /var/log/auth.log است.
  • bantime: مدت زمان مسدودسازی آی‌پی پس از تعداد تلاش‌های ناموفق. در این مثال، مدت زمان مسدودسازی 600 ثانیه (10 دقیقه) تنظیم شده است.
  • findtime: مدت زمانی که Fail2Ban برای شمارش تلاش‌های ناموفق در نظر می‌گیرد (در اینجا 10 دقیقه).
  • maxretry: حداکثر تعداد تلاش‌های ناموفق پیش از مسدودسازی آی‌پی. در اینجا 3 تلاش ناموفق باعث مسدودسازی آی‌پی می‌شود.

2. محدودسازی دسترسی به SSH به آی‌پی‌های خاص

برای افزایش امنیت بیشتر، می‌توان دسترسی به سرویس SSH را محدود کرد تا تنها آی‌پی‌های خاص یا شبکه‌های خاص بتوانند به سرور متصل شوند.

محدودسازی دسترسی SSH با استفاده از fail2ban و تنظیمات iptables
  1. تنظیمات برای Whitelist کردن آی‌پی‌ها: در Fail2Ban، می‌توانید آی‌پی‌هایی که مجاز به دسترسی هستند را از مسدودسازی جدا کنید. برای انجام این کار، تنظیمات ignoreip را در فایل /etc/fail2ban/jail.local وارد کنید. به این ترتیب، آی‌پی‌هایی که در این فیلد قرار دارند، هرگز مسدود نخواهند شد.مثال:
    ignoreip = 127.0.0.1/8 ::1 192.168.1.100
    

    در این مثال:

    • 127.0.0.1/8: اجازه دسترسی به آی‌پی لوکال (localhost).
    • ::1: اجازه دسترسی به IPv6 لوکال.
    • 192.168.1.100: اجازه دسترسی به آی‌پی خاص (در اینجا آی‌پی 192.168.1.100).
  2. محدود کردن دسترسی به SSH از آی‌پی‌های خاص: می‌توانید دسترسی SSH را به آی‌پی‌های خاص محدود کنید. برای این کار از دستور /etc/ssh/sshd_config استفاده می‌کنید.
    • وارد فایل /etc/ssh/sshd_config شوید:
      sudo nano /etc/ssh/sshd_config
      
    • سپس دستورات زیر را برای محدود کردن دسترسی به آی‌پی‌های خاص اضافه کنید:
      AllowUsers user@192.168.1.100 user@192.168.1.101
      

    در این تنظیمات، فقط آی‌پی‌های 192.168.1.100 و 192.168.1.101 می‌توانند به SSH دسترسی داشته باشند.

  3. استفاده از فایروال برای محدودسازی دسترسی: می‌توانید از فایروال iptables یا firewalld برای محدودسازی دسترسی به پورت SSH استفاده کنید.
    • برای iptables:
      sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT
      sudo iptables -A INPUT -p tcp --dport 22 -j DROP
      

      در این تنظیمات، فقط آی‌پی 192.168.1.100 می‌تواند به پورت 22 (SSH) متصل شود و باقی آی‌پی‌ها مسدود خواهند شد.

  4. تغییر پورت SSH: تغییر پورت پیش‌فرض SSH از 22 به یک پورت دیگر می‌تواند به امنیت سیستم کمک کند. این کار می‌تواند جلوی برخی از حملات brute force که به پورت 22 هدف می‌زنند را بگیرد.
    • در فایل /etc/ssh/sshd_config، پورت SSH را تغییر دهید:
      Port 2222
      
    • پس از تغییر پورت، SSH را مجدداً راه‌اندازی کنید:
      sudo systemctl restart sshd
      

3. پیکربندی Fail2Ban برای محدود کردن تلاش‌های ناموفق در SSH

برای محدود کردن تعداد تلاش‌های ناموفق و جلوگیری از حملات brute force، می‌توان تنظیمات bantime و findtime را تنظیم کرد:

  • bantime: مدت زمانی که آی‌پی پس از تلاش‌های ناموفق مسدود می‌شود.
  • findtime: مدت زمانی که Fail2Ban برای شناسایی تلاش‌های ناموفق در نظر می‌گیرد.
  • maxretry: حداکثر تعداد تلاش‌های ناموفق قبل از مسدودسازی آی‌پی.

به‌طور مثال:

bantime = 600               # 10 دقیقه مسدودسازی
findtime = 600              # 10 دقیقه برای شمارش تلاش‌ها
maxretry = 3                # 3 تلاش ناموفق پیش از مسدودسازی

جمع‌بندی

با استفاده از Fail2Ban و اعمال تنظیمات مناسب می‌توان از سرویس SSH در برابر حملات brute force محافظت کرد و دسترسی را به آی‌پی‌های خاص محدود کرد. این اقدامات شامل پیکربندی صحیح Jail برای SSH، استفاده از Whitelist برای آی‌پی‌های مجاز، تغییر پورت SSH و اعمال محدودیت‌های فایروالی برای دسترسی به پورت SSH است. این تنظیمات به شدت به بهبود امنیت سرویس SSH و جلوگیری از تلاش‌های غیرمجاز کمک می‌کنند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تنظیمات پیکربندی Fail2Ban برای سرویس‌های وب (Apache/Nginx)” subtitle=”توضیحات کامل”]برای حفظ امنیت سرورهای وب مانند Apache یا Nginx و جلوگیری از حملات DDoS و شناسایی و مسدودسازی درخواست‌های غیرمجاز، می‌توان از Fail2Ban استفاده کرد. در اینجا به نحوه پیکربندی Fail2Ban برای جلوگیری از این حملات و مسدودسازی درخواست‌های مشکوک پرداخته می‌شود.

1. جلوگیری از حملات DDoS با استفاده از Fail2Ban

حملات DDoS (Distributed Denial of Service) معمولاً با ارسال تعداد زیادی درخواست به سرور در مدت زمان کوتاه صورت می‌گیرند تا منابع سرور را مصرف کنند. برای کاهش تأثیر چنین حملاتی، می‌توان از Fail2Ban برای مسدودسازی آی‌پی‌هایی که تعداد زیادی درخواست ارسال می‌کنند، استفاده کرد.

پیکربندی Jail برای Apache یا Nginx:

برای تنظیم Jail در Fail2Ban برای سرویس‌های Apache یا Nginx، باید از فیلترهایی استفاده کنید که رفتار مشکوک مانند ارسال درخواست‌های بیش از حد را شناسایی کنند.

Apache:
  1. فعال‌سازی Jail برای Apache:

در فایل /etc/fail2ban/jail.local، باید Jail برای Apache را تنظیم کنید. این پیکربندی به طور خودکار درخواست‌های غیرمجاز و حملات DDoS را شناسایی می‌کند.

[apache]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/*access.log
maxretry = 300           # تعداد درخواست‌های مجاز در زمان تعیین شده
findtime = 300           # زمان برای بازبینی درخواست‌ها (300 ثانیه = 5 دقیقه)
bantime = 600            # مدت زمان مسدودسازی آی‌پی‌ها (10 دقیقه)

در این تنظیمات:

  • enabled: Jail برای Apache فعال است.
  • port: پورت‌های HTTP و HTTPS برای Apache.
  • filter: فیلتر برای شناسایی درخواست‌های غیرمجاز یا حملات. فیلتر apache-auth برای شناسایی تلاش‌های ناموفق ورود و apache-badbots می‌تواند برای شناسایی ربات‌های مخرب استفاده شود.
  • logpath: مسیر فایل‌های لاگ که تلاش‌های دسترسی در آن ثبت می‌شود. برای Apache معمولاً فایل /var/log/apache2/*access.log است.
  • maxretry: تعداد درخواست‌های مجاز در مدت زمان مشخص قبل از مسدودسازی آی‌پی. برای مثال، اگر بیش از 300 درخواست در 5 دقیقه ارسال شود، آی‌پی مسدود می‌شود.
  • findtime: مدت زمانی که Fail2Ban برای شمارش درخواست‌های ورودی در نظر می‌گیرد.
  • bantime: مدت زمانی که Fail2Ban آی‌پی را پس از تلاش‌های ناموفق مسدود می‌کند.
Nginx:

برای Nginx نیز مشابه Apache، می‌توان Jail را تنظیم کرد تا درخواست‌های مشکوک را شناسایی کرده و آی‌پی‌های مخرب را مسدود کند.

  1. فعال‌سازی Jail برای Nginx:

در فایل /etc/fail2ban/jail.local، تنظیمات زیر را برای Nginx وارد کنید:

[nginx]
enabled = true
port = http,https
filter = nginx-http-auth
logpath = /var/log/nginx/*access.log
maxretry = 100             # تعداد درخواست‌های مجاز در زمان مشخص
findtime = 600             # زمان برای بازبینی درخواست‌ها (600 ثانیه = 10 دقیقه)
bantime = 600              # مدت زمان مسدودسازی آی‌پی‌ها

در اینجا:

  • filter: فیلتر برای Nginx که می‌تواند تلاش‌های ناموفق ورود را شناسایی کند. در این مثال از nginx-http-auth استفاده شده است.
  • logpath: مسیر فایل‌های لاگ Nginx که در آن درخواست‌ها ثبت می‌شود. معمولاً این مسیر /var/log/nginx/*access.log است.
  • maxretry: تعداد درخواست‌هایی که می‌تواند ارسال شود قبل از اینکه Fail2Ban آی‌پی را مسدود کند.
  • findtime: مدت زمان برای بررسی تعداد درخواست‌ها.
  • bantime: مدت زمان مسدودسازی آی‌پی‌ها.

2. شناسایی و مسدودسازی درخواست‌های غیرمجاز (Unauthorized Requests)

یکی دیگر از اقدامات مهم برای محافظت در برابر حملات brute force یا درخواست‌های غیرمجاز، شناسایی و مسدودسازی آی‌پی‌هایی است که در تلاش برای نفوذ به سرور هستند.

پیکربندی فیلترهای اضافی برای شناسایی ربات‌ها و درخواست‌های مشکوک:

برای شناسایی و مسدودسازی ربات‌ها و درخواست‌های غیرمجاز، می‌توان از فیلترهایی مانند apache-badbots یا nginx-badbots استفاده کرد. این فیلترها می‌توانند درخواست‌هایی که از ربات‌های شناخته‌شده می‌آیند را مسدود کنند.

برای فعال‌سازی این فیلترها، تنظیمات زیر را به فایل jail.local اضافه کنید:

Apache – Bad Bots Filter:
[apache-badbots]
enabled = true
filter = apache-badbots
logpath = /var/log/apache2/*access.log
bantime = 86400           # مدت زمان مسدودسازی (24 ساعت)
maxretry = 1              # به محض شناسایی درخواست از ربات‌ها مسدود شود
Nginx – Bad Bots Filter:
[nginx-badbots]
enabled = true
filter = nginx-badbots
logpath = /var/log/nginx/*access.log
bantime = 86400           # مدت زمان مسدودسازی (24 ساعت)
maxretry = 1              # به محض شناسایی درخواست از ربات‌ها مسدود شود

در اینجا:

  • filter: فیلتر apache-badbots یا nginx-badbots برای شناسایی درخواست‌هایی که به‌طور معمول از ربات‌ها می‌آیند.
  • logpath: مسیر فایل‌های لاگ Apache یا Nginx.
  • bantime: مدت زمانی که Fail2Ban آی‌پی‌های مشکوک را مسدود می‌کند.
  • maxretry: تعداد تلاش‌های مجاز. در اینجا هرگونه تلاش برای ارسال درخواست از ربات‌ها فوراً مسدود می‌شود.

3. تنظیمات اضافی برای جلوگیری از حملات DDoS

برای تقویت حفاظت از سرور در برابر حملات DDoS، می‌توان از تنظیمات مربوط به limiting rate در Nginx و Apache استفاده کرد تا تعداد درخواست‌هایی که از یک آی‌پی در مدت زمان کوتاه دریافت می‌شود، محدود گردد.

Nginx:

در فایل /etc/nginx/nginx.conf، می‌توانید محدودیت‌های rate limiting را اضافه کنید.

http {
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=30r/m;
    
    server {
        location / {
            limit_req zone=mylimit burst=10;
            ...
        }
    }
}

در این تنظیمات:

  • limit_req_zone: ایجاد محدودیت برای درخواست‌ها که به آی‌پی‌های مختلف از نرخ 30 درخواست در هر دقیقه اجازه داده می‌شود.
  • burst: تعداد درخواست‌های اضافی که می‌توانند در صورت لزوم پذیرفته شوند.
Apache:

برای Apache، می‌توان از ماژول mod_evasive استفاده کرد تا تعداد درخواست‌هایی که از یک آی‌پی در مدت زمان مشخصی ارسال می‌شود را محدود کرد.

LoadModule evasive20_module modules/mod_evasive.so

<IfModule mod_evasive20.c>
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
</IfModule>

جمع‌بندی

با استفاده از Fail2Ban، می‌توان سرویس‌های وب مانند Apache و Nginx را در برابر حملات DDoS و درخواست‌های غیرمجاز محافظت کرد. از طریق پیکربندی Jail‌های مناسب، شناسایی تلاش‌های مشکوک و اعمال محدودیت‌های صحیح برای تعداد درخواست‌ها، می‌توان سطح امنیت این سرویس‌ها را بهبود بخشید و از نفوذ‌های غیرمجاز جلوگیری کرد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تنظیمات پیکربندی Fail2Ban برای سرویس FTP (مانند vsftpd و ProFTPD)” subtitle=”توضیحات کامل”]سرویس‌های FTP (File Transfer Protocol) مانند vsftpd و ProFTPD یکی از سرویس‌های حساس در سرورها هستند که باید در برابر حملات مختلف، از جمله حملات brute force و brute-force login محافظت شوند. Fail2Ban می‌تواند به شناسایی تلاش‌های ناموفق ورود به این سرویس‌ها کمک کرده و آی‌پی‌های مشکوک را مسدود کند.

1. پیکربندی Jail برای vsftpd یا ProFTPD

برای محافظت از FTP، باید Jailهای خاصی برای vsftpd و ProFTPD تعریف کرده و پیکربندی کنید تا تلاش‌های ناموفق ورود به سرویس‌های FTP شناسایی و آی‌پی‌های مخرب مسدود شوند.

پیکربندی Fail2Ban برای vsftpd:

برای vsftpd، ابتدا باید فیلتر مناسب برای شناسایی تلاش‌های ناموفق ورود و همچنین مسدودسازی آی‌پی‌های مشکوک را ایجاد و Jail را فعال کنید.

  1. فعال‌سازی Jail برای vsftpd:

در فایل /etc/fail2ban/jail.local، تنظیمات زیر را برای vsftpd اضافه کنید:

[vsftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 3
findtime = 600
bantime = 600

در این تنظیمات:

  • enabled: فعال‌سازی Jail برای سرویس vsftpd.
  • port: پورت‌های مربوط به FTP و FTPS که باید برای شناسایی تلاش‌ها مورد بررسی قرار گیرند.
  • filter: فیلتر vsftpd برای شناسایی تلاش‌های ناموفق ورود در سرویس vsftpd.
  • logpath: مسیر فایل لاگ مربوط به vsftpd که معمولاً در /var/log/vsftpd.log قرار دارد.
  • maxretry: تعداد تلاش‌های مجاز برای ورود قبل از مسدودسازی آی‌پی. در اینجا، ۳ تلاش مجاز است.
  • findtime: زمان برای بازبینی تعداد تلاش‌های ناموفق (در اینجا 10 دقیقه).
  • bantime: مدت زمانی که آی‌پی پس از تلاش‌های ناموفق مسدود می‌شود (در اینجا 10 دقیقه).
پیکربندی Fail2Ban برای ProFTPD:

برای ProFTPD، به طور مشابه باید Jail مخصوص این سرویس را پیکربندی کنید. فایل لاگ برای ProFTPD معمولاً در /var/log/proftpd/proftpd.log قرار دارد.

  1. فعال‌سازی Jail برای ProFTPD:

در فایل /etc/fail2ban/jail.local، تنظیمات زیر را برای ProFTPD اضافه کنید:

[proftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = proftpd
logpath = /var/log/proftpd/proftpd.log
maxretry = 3
findtime = 600
bantime = 600

تنظیمات مشابه با vsftpd:

  • enabled: فعال‌سازی Jail برای ProFTPD.
  • filter: فیلتر proftpd که تلاش‌های ناموفق ورود را شناسایی می‌کند.
  • logpath: مسیر فایل لاگ مربوط به ProFTPD.
  • maxretry: تعداد تلاش‌های مجاز برای ورود.
  • findtime: مدت زمان برای شمارش تلاش‌های ناموفق.
  • bantime: مدت زمان مسدودسازی آی‌پی‌ها پس از تلاش‌های ناموفق.

2. تعریف فیلترها (Filters) برای FTP

فیلترها وظیفه شناسایی تلاش‌های ناموفق ورود را بر عهده دارند. برای هر سرویس FTP (vsftpd یا ProFTPD) باید فیلتر مناسب را در /etc/fail2ban/filter.d/ ایجاد یا ویرایش کرد.

فیلتر vsftpd:

برای vsftpd، فیلتر به صورت پیش‌فرض در /etc/fail2ban/filter.d/vsftpd.conf موجود است. این فیلتر معمولاً شامل الگوهایی برای شناسایی پیام‌های خطای ورود ناموفق می‌باشد.

یک نمونه فیلتر برای vsftpd می‌تواند به صورت زیر باشد:

[Definition]
failregex = ^%(__prefix_line)s(?:(?:ERROR: Failed to set uid for user|530 Login incorrect))
ignoreregex =

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

فیلتر ProFTPD:

فیلتر برای ProFTPD نیز مشابه است و معمولاً در /etc/fail2ban/filter.d/proftpd.conf قرار دارد. یک نمونه فیلتر می‌تواند به این شکل باشد:

[Definition]
failregex = ^%(__prefix_line)s(?:ERROR: Unable to set uid|530 Login incorrect)
ignoreregex =

این فیلتر به دنبال پیام‌هایی مانند “Login incorrect” و “Unable to set uid” در فایل لاگ ProFTPD می‌گردد.

3. تست Jail‌ها با استفاده از دستور fail2ban-client

پس از پیکربندی Jail برای vsftpd و ProFTPD، می‌توانید از دستور fail2ban-client برای تست عملکرد Jailها استفاده کنید.

  1. بررسی وضعیت Jail برای vsftpd:
sudo fail2ban-client status vsftpd

این دستور وضعیت Jail مربوط به vsftpd را نشان می‌دهد و به شما اطلاع می‌دهد که Jail فعال است و چند آی‌پی مسدود شده‌اند.

  1. بررسی وضعیت Jail برای ProFTPD:
sudo fail2ban-client status proftpd

این دستور نیز وضعیت Jail مربوط به ProFTPD را نشان می‌دهد.

4. مدیریت و رفع مسدودیت آی‌پی‌ها

برای رفع مسدودیت یک آی‌پی در vsftpd یا ProFTPD، می‌توانید از دستور زیر استفاده کنید:

sudo fail2ban-client set vsftpd unbanip <IP>

یا برای ProFTPD:

sudo fail2ban-client set proftpd unbanip <IP>

جمع‌بندی

با استفاده از Fail2Ban برای سرویس‌های FTP مانند vsftpd و ProFTPD، می‌توان به راحتی حملات brute force را شناسایی و از مسدود شدن آی‌پی‌های مخرب جلوگیری کرد. با پیکربندی مناسب Jailها و فیلترها، سرورهای FTP می‌توانند در برابر حملات و تلاش‌های ناموفق ورود محافظت شوند. همچنین تست و بررسی وضعیت Jailها با استفاده از دستور fail2ban-client به شما امکان می‌دهد تا عملکرد صحیح سیستم را تضمین کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تنظیمات پیکربندی Fail2Ban برای سرویس‌های ایمیل (Postfix، Exim و Dovecot)” subtitle=”توضیحات کامل”]Fail2Ban می‌تواند به‌عنوان یک ابزار قدرتمند برای محافظت از سرورهای ایمیل در برابر حملات brute force و تلاش‌های ورود غیرمجاز به‌کار گرفته شود. سرویس‌های ایمیل مانند Postfix، Exim و Dovecot به‌طور ویژه نیاز به محافظت در برابر حملات دارند، زیرا این سرویس‌ها از سیستم‌های احراز هویت برای دسترسی به حساب‌های ایمیل استفاده می‌کنند.

در اینجا به نحوه پیکربندی Fail2Ban برای این سرویس‌های ایمیل پرداخته شده است.


1. پیکربندی Fail2Ban برای Postfix

Postfix یک سرویس ارسال ایمیل است که اغلب برای ارسال ایمیل‌های خروجی از سرور استفاده می‌شود. محافظت از این سرویس در برابر حملات brute force و تلاش‌های ورود غیرمجاز اهمیت زیادی دارد.

1.1. فعال‌سازی Jail برای Postfix:

برای Postfix، Jail مربوط به این سرویس باید در فایل /etc/fail2ban/jail.local پیکربندی شود. تنظیمات به‌صورت زیر است:

[postfix]
enabled = true
port = smtp,ssmtp
filter = postfix
logpath = /var/log/mail.log
maxretry = 3
findtime = 600
bantime = 600

توضیحات:

  • enabled: فعال‌سازی Jail برای Postfix.
  • port: پورت‌های مربوط به SMTP که باید نظارت شوند.
  • filter: فیلتر postfix برای شناسایی تلاش‌های ناموفق.
  • logpath: مسیر فایل لاگ Postfix که به طور پیش‌فرض در /var/log/mail.log ذخیره می‌شود.
  • maxretry: تعداد تلاش‌های مجاز برای ورود (در اینجا ۳ تلاش).
  • findtime: مدت زمانی که تلاش‌های ناموفق برای شمارش بررسی می‌شوند (۱۰ دقیقه).
  • bantime: مدت زمانی که IP‌های مشکوک مسدود می‌شوند (۱۰ دقیقه).

1.2. پیکربندی فیلتر برای Postfix:

در مسیر /etc/fail2ban/filter.d/postfix.conf، فیلتر باید به‌گونه‌ای تنظیم شود که تلاش‌های ناموفق ورود را شناسایی کند. نمونه فیلتر به صورت زیر است:

[Definition]
failregex = ^%(__prefix_line)s(?:NOQUEUE: reject: RCPT from .*\[<HOST>\]: 554.*|authentication failure;.*)
ignoreregex =

این فیلتر به دنبال پیام‌هایی می‌گردد که نشان‌دهنده تلاش‌های ناموفق ورود به سرویس Postfix هستند، مانند خطاهای مربوط به RCPT و authentication failure.


2. پیکربندی Fail2Ban برای Exim

Exim یکی دیگر از سرویس‌های ایمیل محبوب است که برای ارسال و دریافت ایمیل‌ها استفاده می‌شود. مانند Postfix، Exim نیز باید در برابر تلاش‌های ورود غیرمجاز و حملات brute force محافظت شود.

2.1. فعال‌سازی Jail برای Exim:

برای Exim، تنظیمات Jail را در فایل /etc/fail2ban/jail.local به‌صورت زیر اضافه کنید:

[exim]
enabled = true
port = smtp,ssmtp
filter = exim
logpath = /var/log/exim/mainlog
maxretry = 3
findtime = 600
bantime = 600

توضیحات:

  • enabled: فعال‌سازی Jail برای Exim.
  • port: پورت‌های مربوط به SMTP که باید بررسی شوند.
  • filter: فیلتر exim برای شناسایی تلاش‌های ناموفق.
  • logpath: مسیر فایل لاگ Exim که به طور پیش‌فرض در /var/log/exim/mainlog قرار دارد.
  • maxretry: تعداد تلاش‌های مجاز برای ورود به سیستم (۳ تلاش).
  • findtime: مدت زمان برای شمارش تلاش‌های ناموفق (۱۰ دقیقه).
  • bantime: مدت زمان مسدودسازی آی‌پی‌های مشکوک (۱۰ دقیقه).

2.2. پیکربندی فیلتر برای Exim:

در مسیر /etc/fail2ban/filter.d/exim.conf، فیلتر باید برای شناسایی تلاش‌های ورود ناموفق به‌روزرسانی شود. یک نمونه فیلتر برای Exim به شکل زیر است:

[Definition]
failregex = ^%(__prefix_line)s(?:authentication failure;|failed to authenticate to .*\[<HOST>\].*)
ignoreregex =

این فیلتر به دنبال پیام‌هایی می‌گردد که حاکی از تلاش‌های ناموفق ورود به Exim باشند.


3. پیکربندی Fail2Ban برای Dovecot

Dovecot سرویس ایمیل است که برای دریافت ایمیل‌ها از طریق پروتکل‌هایی مانند IMAP و POP3 استفاده می‌شود. مثل Postfix و Exim، Dovecot نیز به محافظت در برابر حملات brute force نیاز دارد.

3.1. فعال‌سازی Jail برای Dovecot:

برای Dovecot، تنظیمات Jail را در فایل /etc/fail2ban/jail.local به شکل زیر اضافه کنید:

[dovecot]
enabled = true
port = imap,imaps,pop3,pop3s
filter = dovecot
logpath = /var/log/dovecot.log
maxretry = 3
findtime = 600
bantime = 600

توضیحات:

  • enabled: فعال‌سازی Jail برای Dovecot.
  • port: پورت‌های مربوط به IMAP و POP3 که باید تحت نظارت قرار گیرند.
  • filter: فیلتر dovecot برای شناسایی تلاش‌های ناموفق.
  • logpath: مسیر فایل لاگ Dovecot که معمولاً در /var/log/dovecot.log قرار دارد.
  • maxretry: تعداد تلاش‌های ناموفق مجاز قبل از مسدودسازی آی‌پی (۳ تلاش).
  • findtime: مدت زمانی که برای شمارش تلاش‌های ناموفق در نظر گرفته می‌شود (۱۰ دقیقه).
  • bantime: مدت زمانی که آی‌پی‌ها پس از تلاش‌های ناموفق مسدود می‌شوند (۱۰ دقیقه).

3.2. پیکربندی فیلتر برای Dovecot:

در مسیر /etc/fail2ban/filter.d/dovecot.conf، فیلتر باید برای شناسایی تلاش‌های ناموفق ورود به Dovecot تنظیم شود. نمونه فیلتر به شکل زیر است:

[Definition]
failregex = ^%(__prefix_line)s(?:dovecot: auth: Aborted login attempt|dovecot: auth: login failure|auth-worker.*: (?:auth: )?unknown user \(.*\) \[<HOST>\])
ignoreregex =

این فیلتر به‌طور خاص به شناسایی تلاش‌های ناموفق ورود به Dovecot می‌پردازد.


4. تست Jail‌ها با استفاده از دستور fail2ban-client

برای بررسی صحت عملکرد Jail‌ها پس از پیکربندی، می‌توانید از دستور fail2ban-client برای بررسی وضعیت Jailها استفاده کنید:

  1. بررسی وضعیت Jail برای Postfix:
    sudo fail2ban-client status postfix
    
  2. بررسی وضعیت Jail برای Exim:
    sudo fail2ban-client status exim
    
  3. بررسی وضعیت Jail برای Dovecot:
    sudo fail2ban-client status dovecot
    

جمع‌بندی

با استفاده از Fail2Ban برای سرویس‌های ایمیل مانند Postfix، Exim و Dovecot، می‌توان از سرورها در برابر تلاش‌های ناموفق ورود و حملات brute force محافظت کرد. با پیکربندی مناسب Jail‌ها و فیلترها، می‌توان جلوی دسترسی‌های غیرمجاز به سیستم‌های ایمیلی را گرفت. همچنین با استفاده از دستور fail2ban-client می‌توان وضعیت Jailها را بررسی و صحت عملکرد پیکربندی‌ها را تست کرد.[/cdb_course_lesson][cdb_course_lesson title=”فصل 7. پیکربندی مدیریت گزارش‌ها و هشدارها”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تنظیم Fail2Ban برای ارسال گزارش‌ها و هشدارها با استفاده از Sendmail” subtitle=”توضیحات کامل”]یکی از قابلیت‌های مفید Fail2Ban ارسال هشدار به مدیر سیستم هنگام شناسایی حملات و تلاش‌های غیرمجاز است. این هشدارها می‌توانند از طریق ایمیل ارسال شوند. در اینجا نحوه پیکربندی Fail2Ban برای ارسال ایمیل‌های هشدار با استفاده از ابزار Sendmail آورده شده است.


1. پیکربندی Fail2Ban برای ارسال ایمیل هشدار

برای ارسال ایمیل هشدار در زمان شناسایی حملات، باید از actions در پیکربندی Fail2Ban استفاده کنید. به طور پیش‌فرض، Fail2Ban از ابزار sendmail برای ارسال ایمیل‌های هشدار استفاده می‌کند.

1.1. پیکربندی فایل action.d

در ابتدا باید اطمینان حاصل کنید که فایلی برای ارسال ایمیل‌ها به نام sendmail در مسیر /etc/fail2ban/action.d/ موجود است. این فایل معمولاً به‌طور پیش‌فرض در نصب‌های معمولی Fail2Ban موجود است.

مسیر فایل به این صورت است:

/etc/fail2ban/action.d/sendmail.conf

در این فایل تنظیمات پیش‌فرض ارسال ایمیل وجود دارد. به طور خاص، برای ارسال ایمیل هشدار از دستور sendmail استفاده می‌شود.

1.2. تنظیم پیکربندی برای ارسال ایمیل هشدار

در فایل /etc/fail2ban/jail.local، باید تنظیماتی برای ارسال ایمیل هشدار اضافه کنید. در این تنظیمات، شما می‌توانید آدرس ایمیل گیرنده هشدارها، موضوع ایمیل و محتوای هشدار را پیکربندی کنید.

در اینجا یک نمونه پیکربندی برای ارسال ایمیل هشدار آورده شده است:

[DEFAULT]
# تنظیم آدرس ایمیل مدیر سیستم
destemail = admin@example.com

# موضوع ایمیل هشدار
mta = sendmail

# تنظیم سرور ایمیل ارسال کننده (این تنظیمات معمولاً در محیط‌های خاص مثل ارسال از طریق سرورهای SMTP یا همان ارسال از طریق sendmail اعمال می‌شود)
sendername = fail2ban

# فعال‌سازی ارسال ایمیل هشدار
action = %(action_mwl)s
  • destemail: آدرس ایمیل دریافت‌کننده هشدارها (مدیر سیستم).
  • mta: تعیین نوع سرویس ارسال ایمیل. در اینجا از sendmail استفاده می‌شود.
  • sendername: نام ارسال‌کننده ایمیل هشدار.
  • action: تعیین نوع اکشن که شامل ارسال ایمیل همراه با لاگ‌ها و اطلاعات مربوط به مسدودسازی است.

در اینجا از %(action_mwl)s استفاده شده است که یک اکشن پیش‌ساخته است و اطلاعاتی مانند محتوای هشدار و آدرس‌های IP مسدود شده را در ایمیل ارسال می‌کند.


2. تست پیکربندی ارسال ایمیل

برای تست اینکه آیا Fail2Ban به درستی ایمیل هشدار ارسال می‌کند یا خیر، می‌توانید به صورت دستی یک حمله تقلبی ایجاد کنید. به عنوان مثال، می‌توانید چندین تلاش ناموفق برای ورود به SSH انجام دهید تا ببینید آیا ایمیل هشدار ارسال می‌شود یا خیر.

2.1. بررسی لاگ‌ها

پس از انجام تلاش‌های تقلبی، می‌توانید لاگ‌های Fail2Ban را بررسی کنید:

sudo tail -f /var/log/fail2ban.log

این لاگ‌ها به شما نشان می‌دهند که آیا Fail2Ban در حال ارسال ایمیل هشدار است یا خیر.

2.2. بررسی ایمیل‌های ارسال‌شده

اگر همه چیز به درستی پیکربندی شده باشد، باید ایمیلی از طرف Fail2Ban به آدرس destemail ارسال شود. در صورت عدم دریافت ایمیل، ممکن است مشکلی در پیکربندی sendmail یا تنظیمات پیکربندی Fail2Ban وجود داشته باشد.


3. نکات اضافی برای پیکربندی Sendmail

  • پیکربندی Sendmail: اگر sendmail به درستی روی سیستم نصب و پیکربندی نشده باشد، ممکن است ایمیل‌ها ارسال نشوند. در این صورت باید بررسی کنید که sendmail روی سیستم شما نصب است و به درستی پیکربندی شده است.برای نصب sendmail در سیستم‌های مبتنی بر Debian/Ubuntu می‌توانید از دستور زیر استفاده کنید:
    sudo apt-get install sendmail
    

    برای سیستم‌های مبتنی بر RHEL/CentOS:

    sudo yum install sendmail
    
  • آزمایش ارسال ایمیل با دستور sendmail: برای اطمینان از اینکه sendmail به درستی کار می‌کند، می‌توانید یک ایمیل آزمایشی ارسال کنید:
    echo "This is a test email" | sendmail -v admin@example.com
    

    اگر ایمیل با موفقیت ارسال شد، این نشان‌دهنده کارکرد صحیح sendmail است.


جمع‌بندی

با پیکربندی Fail2Ban برای ارسال ایمیل هشدار از طریق sendmail، می‌توانیم از حملات و تلاش‌های غیرمجاز به‌سرعت آگاه شویم. این کار با تنظیم فایل‌های action.d/sendmail.conf و فایل پیکربندی jail.local برای ارسال ایمیل به آدرس مشخص‌شده انجام می‌شود. به‌علاوه، اطمینان از عملکرد صحیح sendmail و تست ایمیل‌ها می‌تواند به‌عنوان یک روش اضافی برای بررسی صحت پیکربندی مورد استفاده قرار گیرد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”ذخیره گزارش‌های مسدودسازی در فایل‌های جداگانه در Fail2Ban” subtitle=”توضیحات کامل”]یکی از ویژگی‌های مفید Fail2Ban، ذخیره‌سازی اطلاعات مربوط به مسدودسازی‌ها و هشدارها در فایل‌های گزارش (log files) است. به طور پیش‌فرض، Fail2Ban تمامی رویدادها را در یک فایل گزارش اصلی به نام /var/log/fail2ban.log ذخیره می‌کند. با این حال، گاهی اوقات ممکن است بخواهید گزارش‌های مربوط به مسدودسازی‌ها را در فایل‌های جداگانه ذخیره کنید تا مدیریت و تجزیه و تحلیل این گزارش‌ها ساده‌تر شود.

در اینجا نحوه پیکربندی Fail2Ban برای ذخیره گزارش‌های مسدودسازی در فایل‌های جداگانه آورده شده است.


1. پیکربندی برای ذخیره گزارش‌ها در فایل‌های جداگانه

برای انجام این کار، باید تنظیمات مربوط به گزارش‌گذاری را در پیکربندی Fail2Ban تغییر دهید. می‌توانید این تنظیمات را در فایل‌های پیکربندی مختلف مانند fail2ban.conf یا jail.local انجام دهید.

1.1. تنظیم مسیر فایل گزارش جدید

اولین مرحله این است که تعیین کنید کدام فایل گزارش برای ذخیره‌سازی اطلاعات مسدودسازی‌ها باید استفاده شود. برای این کار، تنظیمات logtarget را در فایل پیکربندی Fail2Ban اضافه یا ویرایش کنید.

  1. فایل /etc/fail2ban/fail2ban.conf را باز کنید:
sudo nano /etc/fail2ban/fail2ban.conf
  1. سپس خط زیر را در بخش پیکربندی اضافه کنید یا ویرایش کنید تا گزارش‌ها در یک فایل جداگانه ذخیره شوند:
logtarget = /var/log/fail2ban-ban.log

در اینجا، ما از فایل /var/log/fail2ban-ban.log به‌عنوان مقصد ذخیره گزارش‌ها استفاده کرده‌ایم. شما می‌توانید نام فایل و مسیر آن را به دلخواه تغییر دهید.

1.2. تنظیم گزارش برای هر Jail به‌صورت جداگانه

برای ذخیره‌سازی گزارش‌ها در فایل‌های جداگانه برای هر Jail (مثلاً برای Jailهای SSH، Apache و غیره)، می‌توانید تنظیمات زیر را در فایل /etc/fail2ban/jail.local اضافه کنید.

در اینجا یک مثال برای تنظیم گزارش‌ها به‌صورت جداگانه برای Jail SSH آورده شده است:

[sshd]
enabled  = true
port     = ssh
logpath  = /var/log/auth.log
logtarget = /var/log/fail2ban-ssh.log

با این تنظیمات، گزارش‌های مربوط به Jail sshd به طور خاص در فایل /var/log/fail2ban-ssh.log ذخیره خواهند شد.

1.3. تنظیمات Global برای ذخیره گزارش‌ها

اگر می‌خواهید تمام Jailها به‌صورت جداگانه گزارش‌ها را ذخیره کنند، می‌توانید تنظیمات مربوط به logtarget را در بخش [DEFAULT] فایل /etc/fail2ban/jail.local اضافه کنید.

در اینجا نمونه‌ای از تنظیمات کلی برای گزارش‌گذاری در فایل‌های جداگانه آورده شده است:

[DEFAULT]
logtarget = /var/log/fail2ban.log

اگر بخواهید برای هر Jail یک فایل گزارش جداگانه داشته باشید، می‌توانید به‌صورت خاص برای هر Jail، logtarget را مشخص کنید.


2. مراقبت از فایل‌های گزارش

هنگام ذخیره گزارش‌ها در فایل‌های جداگانه، باید مراقب مصرف فضای دیسک باشید. هر Jail ممکن است تعداد زیادی تلاش ناموفق برای ورود و سایر رویدادها را ثبت کند که می‌تواند باعث پر شدن دیسک شود. برای حل این مشکل، می‌توانید از ابزارهایی مانند logrotate برای چرخش (rotation) و آرشیو کردن گزارش‌ها استفاده کنید.

2.1. تنظیم logrotate برای گزارش‌های Fail2Ban

برای پیکربندی logrotate جهت چرخش گزارش‌های Fail2Ban، می‌توانید یک پیکربندی جدید برای فایل‌های گزارش Fail2Ban اضافه کنید:

  1. فایل پیکربندی جدیدی برای logrotate ایجاد کنید، مثلاً:
sudo nano /etc/logrotate.d/fail2ban
  1. سپس تنظیمات چرخش برای گزارش‌های Fail2Ban را اضافه کنید:
/var/log/fail2ban*.log {
    missingok
    notifempty
    compress
    delaycompress
    weekly
    rotate 4
    create 0640 root adm
}

این تنظیمات باعث می‌شود که فایل‌های گزارش Fail2Ban هر هفته بچرخند و 4 نسخه قدیمی از گزارش‌ها نگه داشته شوند.


3. بررسی صحت عملکرد ذخیره گزارش‌ها

بعد از اعمال تغییرات و تنظیمات جدید برای ذخیره گزارش‌ها، می‌توانید از دستورات زیر برای بررسی صحت عملکرد استفاده کنید:

3.1. بررسی وجود فایل گزارش

با استفاده از دستور ls می‌توانید بررسی کنید که فایل‌های گزارش جدید ایجاد شده‌اند یا خیر:

ls -l /var/log/fail2ban*

3.2. مشاهده محتوای فایل گزارش

برای مشاهده محتوای فایل گزارش Fail2Ban می‌توانید از دستور cat یا tail استفاده کنید:

sudo tail -f /var/log/fail2ban-ban.log

این دستور به شما امکان می‌دهد به‌طور زنده رویدادهای جدید را در فایل گزارش مشاهده کنید.


جمع‌بندی

با تنظیم پیکربندی Fail2Ban برای ذخیره گزارش‌های مسدودسازی در فایل‌های جداگانه، می‌توانید گزارش‌ها را به‌طور دقیق‌تر و دسته‌بندی شده بررسی کنید. این کار با ویرایش تنظیمات logtarget در فایل‌های پیکربندی fail2ban.conf و jail.local انجام می‌شود. همچنین با استفاده از ابزار logrotate می‌توانید از پر شدن فضای دیسک جلوگیری کرده و گزارش‌ها را به‌طور دوره‌ای بچرخانید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از فرمان‌های fail2ban-client برای مشاهده وضعیت Jail‌ها” subtitle=”توضیحات کامل”]Fail2Ban ابزار قدرتمندی است که به راحتی می‌توان از طریق دستوراتی برای مدیریت و نظارت بر وضعیت Jailها (که نمایانگر سرویس‌ها و تنظیمات نظارتی هستند) استفاده کرد. یکی از ابزارهای اصلی برای مدیریت Fail2Ban، فرمان fail2ban-client است که امکان مشاهده وضعیت، مدیریت و انجام تنظیمات مختلف را فراهم می‌کند.

در اینجا نحوه استفاده از فرمان‌های fail2ban-client برای مشاهده وضعیت Jailها و دیگر اطلاعات مرتبط توضیح داده می‌شود.


1. مشاهده وضعیت کلی سرویس Fail2Ban

برای مشاهده وضعیت کلی سرویس Fail2Ban، می‌توانید از دستور زیر استفاده کنید:

sudo fail2ban-client status

این دستور وضعیت کلی Fail2Ban را نشان می‌دهد، شامل تعداد Jailهای فعال و تعداد آی‌پی‌های مسدود شده. خروجی ممکن است چیزی مشابه این باشد:

Status of Fail2Ban
-------------------
|- Number of jail: 3
`- Jail list:  sshd, apache, vsftpd
  • در اینجا، تعداد Jailهای فعال ۳ است و Jailهایی که فعال هستند به ترتیب sshd، apache و vsftpd هستند.

2. مشاهده وضعیت Jail خاص

برای مشاهده وضعیت دقیق یک Jail خاص، باید نام آن Jail را به دستور اضافه کنید. به عنوان مثال، برای مشاهده وضعیت Jail مربوط به SSH:

sudo fail2ban-client status sshd

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

Status for the jail: sshd
---------------------------
|- Filter file    : /etc/fail2ban/filter.d/sshd.conf
|- Currently banned: 5
|- Total banned   : 30
|- File list      : /var/log/auth.log
  • در اینجا، تعداد آی‌پی‌های مسدود شده در حال حاضر برای Jail sshd برابر با ۵ است و تعداد کل آی‌پی‌های مسدود شده ۳۰ می‌باشد.

3. مشاهده لیست آی‌پی‌های مسدود شده در یک Jail خاص

برای مشاهده آی‌پی‌هایی که در یک Jail خاص مسدود شده‌اند، می‌توانید از دستور زیر استفاده کنید:

sudo fail2ban-client banned IPs sshd

این دستور لیستی از آی‌پی‌هایی که در Jail sshd مسدود شده‌اند، نمایش می‌دهد:

Banned IP list:
----------------
 192.168.1.100
 192.168.1.101
 192.168.1.102

این دستور به شما کمک می‌کند تا بررسی کنید کدام آی‌پی‌ها مسدود شده‌اند و دلایل احتمالی آن‌ها.


4. مشاهده جزئیات لاگ و رویدادهای یک Jail

اگر نیاز به مشاهده جزئیات بیشتر از لاگ‌های یک Jail خاص دارید، می‌توانید از دستور fail2ban-client با آرگومان log استفاده کنید:

sudo fail2ban-client get sshd logpath

این دستور مسیر فایل لاگ را که Fail2Ban برای این Jail خاص استفاده می‌کند، نمایش می‌دهد.


5. باز کردن دستی یک آی‌پی مسدود شده

اگر به طور خاص نیاز به باز کردن یک آی‌پی مسدود شده دارید، می‌توانید از دستور unban استفاده کنید. برای باز کردن دستی آی‌پی از Jail خاص، دستور زیر را وارد کنید:

sudo fail2ban-client unban 192.168.1.100

در اینجا، آی‌پی 192.168.1.100 از لیست مسدود شده‌ها در تمامی Jailها حذف می‌شود.


6. فعال‌سازی یا غیرفعال‌سازی یک Jail

اگر می‌خواهید یک Jail خاص را فعال یا غیرفعال کنید، می‌توانید از دستور زیر استفاده کنید:

  • برای فعال کردن Jail:
sudo fail2ban-client enable sshd
  • برای غیرفعال کردن Jail:
sudo fail2ban-client disable sshd

این دستورات برای مدیریت فعال یا غیرفعال کردن Jailها بسیار مفید هستند.


7. آغاز مجدد سرویس Fail2Ban

گاهی اوقات بعد از تغییرات در پیکربندی یا فایل‌های تنظیمات Jail، نیاز به راه‌اندازی مجدد Fail2Ban است. برای این کار از دستور زیر استفاده کنید:

sudo systemctl restart fail2ban

این دستور Fail2Ban را مجدداً راه‌اندازی کرده و تغییرات جدید را بارگذاری می‌کند.


جمع‌بندی

با استفاده از فرمان‌های fail2ban-client می‌توانید وضعیت Jailها را مشاهده کرده، لیست آی‌پی‌های مسدود شده را بررسی کرده و در صورت نیاز اقدامات مختلفی مانند باز کردن دستی آی‌پی‌ها یا فعال/غیرفعال کردن Jailها را انجام دهید. این دستورات ابزار قدرتمندی برای مدیریت و نظارت بر عملکرد Fail2Ban هستند و به شما این امکان را می‌دهند که امنیت سرور خود را به بهترین نحو کنترل کنید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 8. تست و عیب‌یابی تنظیمات پیکربندی”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تست و عیب‌یابی تنظیمات پیکربندی Fail2Ban با دستورات خاص” subtitle=”توضیحات کامل”]برای اطمینان از اینکه تنظیمات Fail2Ban به درستی پیکربندی شده‌اند و عملکرد مورد انتظار را دارند، می‌توانید از دستورات خاصی برای تست و عیب‌یابی استفاده کنید. این دستورات به شما کمک می‌کنند تا وضعیت Jailها را بررسی کرده و مشکلات احتمالی را شناسایی کنید.


1. تست وضعیت کلی Fail2Ban

برای بررسی وضعیت کلی Fail2Ban و اطمینان از اینکه سرویس به درستی در حال اجرا است، از دستور زیر استفاده کنید:

sudo fail2ban-client status

این دستور وضعیت کلی Fail2Ban را به شما نمایش می‌دهد، از جمله تعداد Jailهای فعال و نام‌های آن‌ها. اگر Fail2Ban به درستی پیکربندی و راه‌اندازی شده باشد، خروجی باید مشابه چیزی شبیه به زیر باشد:

Status of Fail2Ban
-------------------
|- Number of jail: 3
`- Jail list:  sshd, apache, vsftpd
  • اگر تعداد Jailها صفر باشد یا لیست Jailها خالی باشد، ممکن است تنظیمات به درستی بارگذاری نشده باشند و نیاز به بازبینی پیکربندی‌ها وجود داشته باشد.

2. تست وضعیت یک Jail خاص

برای بررسی وضعیت دقیق یک Jail خاص (به عنوان مثال sshd)، می‌توانید از دستور زیر استفاده کنید:

sudo fail2ban-client status sshd

این دستور وضعیت Jail مربوط به SSH را نمایش می‌دهد. اگر این Jail به درستی پیکربندی شده باشد، خروجی مشابه این خواهد بود:

Status for the jail: sshd
---------------------------
|- Filter file    : /etc/fail2ban/filter.d/sshd.conf
|- Currently banned: 5
|- Total banned   : 30
|- File list      : /var/log/auth.log

در اینجا، نشان داده می‌شود که تعداد ۵ آی‌پی در حال حاضر مسدود شده‌اند و ۳۰ آی‌پی در مجموع مسدود شده‌اند.


3. مشاهده آی‌پی‌های مسدود شده در یک Jail خاص

برای مشاهده آی‌پی‌هایی که در یک Jail خاص مسدود شده‌اند، می‌توانید از دستور زیر استفاده کنید:

sudo fail2ban-client get sshd banip

این دستور لیست آی‌پی‌هایی که در Jail sshd مسدود شده‌اند را نشان می‌دهد. خروجی ممکن است مشابه زیر باشد:

Banned IP list:
----------------
 192.168.1.100
 192.168.1.101
 192.168.1.102

اگر مشکلی در عملکرد Fail2Ban وجود داشته باشد و آی‌پی‌ها به درستی مسدود نشده‌اند، ممکن است نیاز به بررسی پیکربندی Jailها و تنظیمات logpath وجود داشته باشد.


4. بررسی و اصلاح پیکربندی Jailها

اگر متوجه شدید که یک Jail به درستی کار نمی‌کند یا آی‌پی‌ها به درستی مسدود نمی‌شوند، باید تنظیمات پیکربندی Jail را بررسی کنید. برای بررسی تنظیمات پیکربندی sshd، به فایل پیکربندی آن در مسیر زیر نگاه کنید:

sudo nano /etc/fail2ban/jail.local

اطمینان حاصل کنید که تنظیمات مانند logpath، bantime و maxretry به درستی پیکربندی شده‌اند.


5. بررسی لاگ‌ها برای یافتن مشکلات احتمالی

اگر نتایج دستورات فوق نشان‌دهنده وجود مشکلی هستند، باید لاگ‌های Fail2Ban را بررسی کنید تا دلایل احتمالی مشکلات را شناسایی کنید. برای مشاهده لاگ‌های Fail2Ban از دستور زیر استفاده کنید:

sudo tail -f /var/log/fail2ban.log

این دستور به شما کمک می‌کند تا بررسی کنید که آیا Fail2Ban در حال انجام اقدامات مسدودسازی است و یا خطاهای خاصی در حال رخ دادن هستند.


6. عیب‌یابی خطاهای سرویس Fail2Ban

اگر سرویس Fail2Ban به درستی راه‌اندازی نشده است یا مشکلاتی در آن وجود دارد، می‌توانید از دستور journalctl برای مشاهده گزارش‌های خطا استفاده کنید:

sudo journalctl -u fail2ban

این دستور گزارش‌های مربوط به سرویس Fail2Ban را نشان می‌دهد و می‌توانید از آن برای شناسایی مشکلات راه‌اندازی یا سایر خطاهای احتمالی استفاده کنید.


جمع‌بندی

با استفاده از دستورات fail2ban-client status و fail2ban-client get banip می‌توانید وضعیت Jailها و مسدودسازی‌های انجام شده را به راحتی مشاهده کنید. این دستورات به شما امکان می‌دهند که به سرعت مشکلات احتمالی را شناسایی کرده و پیکربندی Fail2Ban را برای عملکرد بهتر اصلاح کنید. همچنین، بررسی لاگ‌ها و استفاده از دستور journalctl می‌تواند به عیب‌یابی مشکلات عملکردی کمک کند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”عیب‌یابی مشکلات پیکربندی Fail2Ban” subtitle=”توضیحات کامل”]برای اطمینان از عملکرد صحیح Fail2Ban و شناسایی مشکلات احتمالی در پیکربندی، بررسی لاگ‌ها و تشخیص علت مسدودسازی‌های نادرست از اهمیت ویژه‌ای برخوردار است. در اینجا چند مرحله برای عیب‌یابی مشکلات Fail2Ban آورده شده است.


1. بررسی لاگ‌ها در مسیر /var/log/fail2ban.log

لاگ‌های Fail2Ban اطلاعاتی مفصل در مورد مسدودسازی‌ها، خطاها و رفتار Jailها در اختیار شما قرار می‌دهند. برای مشاهده این لاگ‌ها از دستور زیر استفاده کنید:

sudo tail -f /var/log/fail2ban.log

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

  • بفهمید کدام IPها مسدود شده‌اند.
  • دلایل مسدودسازی‌ها و هرگونه خطای احتمالی در پیکربندی را پیدا کنید.
  • به مشکلات مربوط به Jailها و اقدامات مربوطه پی ببرید.

نمونه خروجی لاگ:

2025-01-30 15:10:56,507 fail2ban.actions        [3245]: WARNING [sshd] Ban 192.168.1.100
2025-01-30 15:11:05,334 fail2ban.actions        [3245]: WARNING [sshd] Ban 192.168.1.101
2025-01-30 15:15:40,965 fail2ban.jail          [3245]: INFO    Jail sshd started
2025-01-30 15:20:15,554 fail2ban.actions        [3245]: ERROR   [sshd] Could not find log file /var/log/auth.log

در این مثال:

  • IPهایی که به دلیل تلاش‌های ناموفق وارد شده‌اند مسدود شده‌اند.
  • اگر خطایی در پیدا کردن فایل لاگ وجود داشته باشد، باید مسیر لاگ‌ها را بررسی و تصحیح کنید.

2. حل مشکلات مربوط به مسدودسازی‌های نادرست

اگر مشاهده کردید که Fail2Ban آی‌پی‌های نادرست یا غیرمجاز را به اشتباه مسدود می‌کند، چند عامل وجود دارد که می‌توانید بررسی کنید:

2.1. **بررسی پیکربندی Jail

مسدودسازی نادرست ممکن است به دلیل تنظیمات اشتباه در پیکربندی Jailها باشد. برای بررسی پیکربندی‌ها، فایل jail.local را بررسی کنید و مطمئن شوید که تنظیمات به درستی اعمال شده‌اند.

مثلاً اگر در Jail مربوط به sshd مدت زمان مسدودسازی (bantime) خیلی طولانی باشد، می‌تواند باعث مسدودسازی‌های نامناسب شود.

2.2. **بررسی logpath

یکی از دلایل رایج مسدودسازی نادرست، نادرست بودن مسیر فایل‌های لاگ است. بررسی کنید که فایل‌های لاگ که در پیکربندی ذکر شده‌اند (مثل /var/log/auth.log برای SSH) به درستی در دسترس باشند و به‌روز باشند. اگر این مسیر اشتباه باشد یا فایل لاگ وجود نداشته باشد، Fail2Ban نمی‌تواند فعالیت‌های مشکوک را شناسایی کند.

در پیکربندی sshd:

logpath = /var/log/auth.log

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

2.3. **بررسی **filter.d

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

مثلاً اگر فیلتر sshd.conf به درستی برای شناسایی تلاش‌های ناموفق ورود پیکربندی نشده باشد، Fail2Ban ممکن است به اشتباه واردات درست را نیز مسدود کند.

برای بررسی فیلتر sshd:

sudo nano /etc/fail2ban/filter.d/sshd.conf

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

2.4. فعال‌سازی تنظیمات Logging بیشتر

برای مشاهده جزئیات بیشتر از Fail2Ban در هنگام عیب‌یابی، می‌توانید سطح لاگ‌گیری را افزایش دهید. برای این کار، تنظیمات loglevel را در فایل پیکربندی fail2ban.conf تغییر دهید.

مثال:

loglevel = DEBUG

این تغییر باعث می‌شود که Fail2Ban لاگ‌های بیشتری با جزئیات دقیق‌تری از فعالیت‌ها و خطاها ایجاد کند.

2.5. مشکلات در بررسی تلاش‌های ناموفق

اگر Fail2Ban تلاش‌های ناموفق ورود را به درستی شناسایی نمی‌کند، ممکن است مشکل در تنظیمات مربوط به findtime یا maxretry وجود داشته باشد. این دو پارامتر به شما کمک می‌کنند تا تعیین کنید که چه زمانی باید تعداد تلاش‌های ناموفق را برای مسدودسازی IP بررسی کنید و بعد از چند تلاش ناموفق باید IP مسدود شود.

بررسی findtime و maxretry:

findtime = 600
maxretry = 3

اگر findtime خیلی کوتاه تنظیم شده باشد، ممکن است باعث شود که تنها یک یا دو تلاش ناموفق باعث مسدودسازی شود. اگر maxretry خیلی زیاد باشد، ممکن است Fail2Ban نتواند از حملات brute force جلوگیری کند.


جمع‌بندی

عیب‌یابی مشکلات پیکربندی Fail2Ban نیازمند بررسی دقیق پیکربندی‌های مربوط به Jailها، فیلترها، مسیرهای لاگ و تنظیمات عمومی است. با استفاده از لاگ‌ها و تنظیمات مناسب، می‌توانید مشکلات مسدودسازی‌های نادرست را شناسایی و رفع کنید. همچنین، تنظیمات loglevel می‌تواند به شما در دریافت اطلاعات بیشتر برای عیب‌یابی کمک کند.[/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”بخش 4. پیکربندی فیلترهای Fail2Ban”][cdb_course_lesson title=”فصل 1. آشنایی با فیلترهای Fail2Ban”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تعریف فیلتر در Fail2Ban و اهمیت آن در شناسایی حملات” subtitle=”توضیحات کامل”]فیلترها در Fail2Ban ابزارهایی هستند که برای شناسایی تلاش‌های مخرب و ناموفق در تلاش برای نفوذ به سرویس‌های مختلف سرور (مثل SSH، FTP، وب‌سرورها، و …) استفاده می‌شوند. این فیلترها با اسکن کردن لاگ‌های سرور و تجزیه و تحلیل محتوای آن‌ها، الگوهای خاصی از تلاش‌های حمله (مثل حملات brute force) را شناسایی می‌کنند و سپس به Fail2Ban این امکان را می‌دهند که آدرس‌های IP مهاجم را مسدود کند.


ساختار فیلترها

در Fail2Ban، فیلترها به صورت فایل‌های پیکربندی در پوشه /etc/fail2ban/filter.d/ قرار دارند. هر فیلتر برای یک سرویس خاص طراحی شده است و شامل الگوهای regular expression (regex) برای شناسایی تلاش‌های ناموفق در فایل‌های لاگ است.

به طور مثال، فیلتر sshd.conf برای شناسایی تلاش‌های ناموفق ورود به سرور SSH طراحی شده است.


نحوه عملکرد فیلترها

  1. اسکن لاگ‌ها: فیلترها محتوای لاگ‌ها (مانند /var/log/auth.log برای SSH) را بررسی می‌کنند و به دنبال تلاش‌های ناموفق ورود می‌گردند. فیلترها معمولاً از عبارات منظم (regex) استفاده می‌کنند تا الگوهای خاصی را شناسایی کنند که نشان‌دهنده حملات باشند.
  2. شناسایی حملات: فیلترها تلاش‌های مشکوک را از لاگ‌ها استخراج می‌کنند. به عنوان مثال، اگر تعداد مشخصی از تلاش‌های ورود ناموفق از یک IP خاص در مدت زمان مشخصی انجام شده باشد، فیلتر آن را به عنوان حمله brute force شناسایی می‌کند.
  3. اعمال اقدامات: پس از شناسایی تلاش‌های مشکوک، Fail2Ban اقدام به مسدودسازی آدرس IP مهاجم می‌کند. این کار معمولاً با استفاده از iptables یا ابزارهای مشابه انجام می‌شود.

مثال فیلترها

  • فیلتر SSH (sshd.conf): فیلتر برای شناسایی تلاش‌های ناموفق ورود به سیستم از طریق SSH.

    محتوای این فیلتر می‌تواند به صورت زیر باشد:

    [Definition]
    failregex = Authentication failure.*rhost=<HOST>
    ignoreregex =
    

    در اینجا، عبارت failregex به دنبال تلاش‌های ناموفق ورود به سیستم از طریق SSH می‌گردد که حاوی عبارت Authentication failure و rhost= هستند.

  • فیلتر Apache (apache-auth.conf): فیلتر برای شناسایی تلاش‌های ناموفق در دسترسی به سرور وب Apache.

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

    [Definition]
    failregex = \[authz_core:error\].* client denied by server configuration: <HOST>
    ignoreregex =
    

    این فیلتر تلاش‌های دسترسی غیرمجاز به سرور Apache را شناسایی می‌کند.


اهمیت فیلترها در شناسایی حملات

  1. شناسایی خودکار حملات brute force: فیلترها به طور خودکار تلاش‌های ورود ناموفق را شناسایی کرده و آدرس‌های IP مهاجم را مسدود می‌کنند. این امر به ویژه برای مقابله با حملات brute force ضروری است، که در آن مهاجم سعی می‌کند به طور مکرر با رمزهای عبور مختلف وارد سیستم شود.
  2. کاهش بار مدیر سیستم: با استفاده از فیلترها، مدیران سیستم نیازی به بررسی دستی لاگ‌ها و شناسایی حملات ندارند. این فرآیند به طور خودکار انجام می‌شود و منابع سرور از حملات حفظ می‌شود.
  3. پیشگیری از حملات DDoS و شبیه‌سازی ترافیک مخرب: فیلترها می‌توانند حملات DDoS (Denial of Service) یا حملات مشابه را شناسایی کنند که ممکن است با ایجاد ترافیک زیاد یا درخواست‌های مشکوک سعی در مختل کردن خدمات سرور داشته باشند.
  4. حفاظت از سرویس‌های مختلف: فیلترها می‌توانند برای شناسایی حملات به سرویس‌های مختلف سرور مانند SSH، FTP، Apache/Nginx، Postfix/Dovecot و غیره استفاده شوند. این شناسایی‌ها می‌توانند به کاهش آسیب‌پذیری و جلوگیری از نفوذ به سیستم کمک کنند.
  5. سفارشی‌سازی برای نیازهای خاص: فیلترها می‌توانند بر اساس نیازهای خاص هر سرور یا سرویس سفارشی‌سازی شوند. به عنوان مثال، می‌توانند الگوهای خاص حملات را شناسایی کنند که در سرویس‌های مختلف وجود دارند.

نحوه تنظیم و سفارشی‌سازی فیلترها

  • فیلتر پیش‌فرض (Default Filters):
    هر فیلتر در Fail2Ban با تنظیمات پیش‌فرض خود همراه است. این فیلترها به طور عمومی برای شناسایی حملات رایج طراحی شده‌اند.
  • سفارشی‌سازی فیلترها:
    شما می‌توانید فیلترها را با استفاده از regular expressions برای شناسایی الگوهای خاص حملات خود سفارشی کنید. این کار به شما امکان می‌دهد که فیلترها را بهینه کنید تا حملات جدید یا خاص خود را شناسایی کنید.
  • استفاده از فیلترهای موجود:
    برای سرویس‌هایی مانند SSH، Apache و FTP، فیلترهای از پیش تعریف‌شده وجود دارند که می‌توانید مستقیماً از آن‌ها استفاده کنید.
  • ساخت فیلترهای جدید:
    اگر Fail2Ban فیلتر مناسبی برای سرویس خاص شما ندارد، می‌توانید یک فیلتر جدید بسازید و آن را در مسیر /etc/fail2ban/filter.d/ قرار دهید.

جمع‌بندی

فیلترها در Fail2Ban نقشی حیاتی در شناسایی و مسدودسازی حملات دارند. آن‌ها با اسکن کردن لاگ‌ها و شناسایی الگوهای مشکوک، به طور خودکار به دفاع از سرور شما در برابر حملات مختلف می‌پردازند. این سیستم خودکار کمک می‌کند تا از حملات brute force، DDoS و سایر حملات مشابه جلوگیری شود. با استفاده از فیلترهای سفارشی، می‌توانید به راحتی سرویس‌های مختلف خود را بهینه‌سازی کرده و به طور مؤثر از امنیت سرور خود حفاظت کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”مکان و ساختار فایل‌های فیلتر در Fail2Ban” subtitle=”توضیحات کامل”]در Fail2Ban، فیلترها به عنوان ابزارهایی برای شناسایی تلاش‌های مخرب از طریق تجزیه و تحلیل فایل‌های لاگ استفاده می‌شوند. این فیلترها معمولاً در دایرکتوری /etc/fail2ban/filter.d/ قرار دارند و به طور مستقیم با پیکربندی Jail‌ها در ارتباط هستند.


مکان فایل‌های فیلتر

فایل‌های فیلتر در مسیر زیر ذخیره می‌شوند:

/etc/fail2ban/filter.d/

هر فایل فیلتر معمولاً برای یک سرویس خاص طراحی شده است و شامل تنظیمات لازم برای شناسایی تلاش‌های مشکوک در لاگ‌های آن سرویس می‌باشد. به عنوان مثال:

  • /etc/fail2ban/filter.d/sshd.conf: برای فیلتر کردن تلاش‌های ناموفق SSH
  • /etc/fail2ban/filter.d/apache-auth.conf: برای فیلتر کردن تلاش‌های دسترسی غیرمجاز به Apache
  • /etc/fail2ban/filter.d/ftp.conf: برای فیلتر کردن تلاش‌های دسترسی غیرمجاز به FTP

ساختار فایل‌های فیلتر

فایل‌های فیلتر به طور معمول دارای ساختار خاصی هستند که شامل بخش‌های مختلف می‌شود. در این فایل‌ها، از Regular Expressions (Regex) برای شناسایی الگوهای خاص در لاگ‌ها استفاده می‌شود.

ساختار اصلی فایل فیلتر:

  1. [Definition]
    • این بخش شامل تنظیمات اصلی فیلتر است. معمولاً در این بخش از عبارت‌های منظم (regex) برای شناسایی حملات استفاده می‌شود.
    • مثال:
    [Definition]
    failregex = Authentication failure.*rhost=<HOST>
    ignoreregex =
    
    • failregex: این بخش الگوهایی را تعریف می‌کند که به دنبال شناسایی تلاش‌های ناموفق یا حملات می‌گردند. به عنوان مثال، در فیلتر sshd، عبارت Authentication failure برای شناسایی تلاش‌های ورود ناموفق به SSH استفاده می‌شود.
    • ignoreregex: در این بخش، می‌توانید الگوهایی را که باید نادیده گرفته شوند وارد کنید. به عنوان مثال، ممکن است بخواهید برخی از خطاهای خاص را نادیده بگیرید.
  2. [Init] (اختیاری)
    • در این بخش می‌توان تنظیمات اولیه را تعریف کرد. این بخش ممکن است شامل تعریف logpath (مسیر فایل لاگ) یا سایر پارامترهای مربوط به پیکربندی فیلتر باشد.
    • مثال:
    [Init]
    logpath = /var/log/auth.log
    
    • logpath: مسیر فایل لاگ که فیلتر باید برای شناسایی تلاش‌ها و حملات آن را اسکن کند.

مثال فایل فیلتر

در زیر، یک مثال ساده از فایل فیلتر برای SSH (/etc/fail2ban/filter.d/sshd.conf) آورده شده است:

[Definition]
failregex = Authentication failure.*rhost=<HOST>
ignoreregex =
  • failregex: به دنبال عبارت “Authentication failure” می‌گردد که معمولاً نشان‌دهنده یک تلاش ناموفق ورود به SSH است.
  • : این علامت به Fail2Ban می‌گوید که باید IP آدرس مهاجم را شناسایی کند.

نحوه ایجاد و سفارشی‌سازی فیلترها

  1. ایجاد فیلتر جدید: اگر نیاز به فیلتر جدیدی دارید، می‌توانید یک فایل جدید در پوشه /etc/fail2ban/filter.d/ ایجاد کنید و آن را به Jail خاصی در فایل jail.local یا jail.conf ارجاع دهید.

    برای مثال، برای ایجاد یک فیلتر سفارشی برای شناسایی تلاش‌های ناموفق در سرویس خاص خود، باید این مراحل را دنبال کنید:

    • یک فایل فیلتر جدید در /etc/fail2ban/filter.d/ بسازید. به عنوان مثال، برای یک فیلتر جدید به نام myservice.conf، یک فایل با محتوای زیر ایجاد کنید:
    [Definition]
    failregex = some regex pattern here
    ignoreregex =
    
    • سپس در فایل jail.local یا jail.conf، تنظیمات Jail را برای این فیلتر اضافه کنید تا Fail2Ban این فیلتر را فعال کند.
  2. سفارشی‌سازی فیلترها: اگر فیلترهای پیش‌فرض برای سرویس خاص شما کافی نباشند، می‌توانید فیلترها را با استفاده از Regular Expressions به دلخواه خود سفارشی کنید.

    برای مثال، اگر فیلتر sshd شما می‌خواهد فقط تلاش‌های ورود از یک IP خاص که بیش از 5 بار تلاش ناموفق داشته‌اند را شناسایی کند، می‌توانید عبارت failregex را به این شکل تغییر دهید:

    failregex = ^%(__prefix_line)sAuthentication failure for .* from <HOST> port
    

تأثیر فیلترها بر عملکرد Fail2Ban

  • عملکرد مؤثر: فیلترها باعث می‌شوند که Fail2Ban بتواند تنها به دنبال خطاهای خاص در لاگ‌ها بگردد و حملات مختلف را شناسایی کند. این باعث کاهش بار پردازشی سرور و افزایش کارایی سیستم می‌شود.
  • سفارشی‌سازی دقیق: با استفاده از فیلترهای سفارشی، می‌توانید دقیقاً الگوهای خاصی از تلاش‌های غیرمجاز را شناسایی کنید. این به شما این امکان را می‌دهد که نه‌تنها حملات رایج بلکه حملات خاص به سرویس‌های مختلف خود را نیز شناسایی کنید.
  • به‌روزرسانی و نگهداری: فیلترهای پیش‌فرض در Fail2Ban به طور مداوم توسط جامعه توسعه‌دهندگان و سایر کاربران به‌روزرسانی می‌شوند تا به جدیدترین روش‌های حمله پاسخ دهند.

جمع‌بندی

فایل‌های فیلتر در Fail2Ban ابزارهایی اساسی برای شناسایی حملات و تلاش‌های ناموفق هستند. با استفاده از این فیلترها، Fail2Ban قادر به تشخیص و مسدودسازی IP‌های مهاجم است که در حال تلاش برای نفوذ به سیستم شما هستند. این فیلترها قابل سفارشی‌سازی بوده و می‌توانند به راحتی برای سرویس‌های مختلف و نیازهای خاص تنظیم شوند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بررسی اجزای اصلی یک فایل فیلتر در Fail2Ban” subtitle=”توضیحات کامل”]در Fail2Ban، فایل‌های فیلتر برای شناسایی تلاش‌های مخرب در لاگ‌های سیستم استفاده می‌شوند. این فایل‌ها معمولاً شامل سه جزء اصلی هستند که در شناسایی و مسدودسازی حملات نقش دارند:

  1. failregex
  2. ignoreregex
  3. بخش‌های توضیحی و تنظیمات اضافی

در این بخش، به بررسی این اجزا خواهیم پرداخت.


1. failregex

failregex عبارت منظم (Regular Expression یا Regex) است که برای شناسایی الگوهای خاص در لاگ‌ها به کار می‌رود. هدف از این قسمت این است که Fail2Ban به دنبال تلاش‌های ناموفق یا حملات مختلف بگردد. عبارت‌های منظم به طور معمول به گونه‌ای نوشته می‌شوند که از لاگ‌های مختلف اطلاعاتی مثل IP آدرس مهاجم یا نوع تلاش ناموفق استخراج کنند.

ویژگی‌ها و کاربردهای failregex:

  • شناسایی تلاش‌های ورود ناموفق: به عنوان مثال، می‌تواند به دنبال تلاش‌های ورود ناموفق SSH باشد که در آن مهاجم تلاش می‌کند وارد سرور شود.
    failregex = Authentication failure for .* from <HOST>
    
  • شناسایی درخواست‌های غیرمجاز: می‌توان از این بخش برای شناسایی درخواست‌هایی که تلاش برای دسترسی به منابع غیرمجاز می‌کنند استفاده کرد.
    failregex = <HOST> -.*"(GET|POST).*(admin|login).*"
    
  • جمع‌آوری اطلاعات: در بعضی موارد، failregex می‌تواند داده‌هایی مانند IP آدرس مهاجم یا نام کاربری که مهاجم در تلاش برای وارد شدن به آن است را استخراج کند.
  • استفاده از متغیر <HOST>: این متغیر برای شناسایی IP آدرس مهاجم استفاده می‌شود. وقتی فیلتر تلاش می‌کند یک الگو را تطبیق دهد، <HOST> به عنوان یک نماد برای آدرس IP مهاجم در نظر گرفته می‌شود.
    failregex = Invalid user .* from <HOST>
    

2. ignoreregex

ignoreregex به عنوان معکوس failregex عمل می‌کند. به عبارت دیگر، این بخش الگوهایی را شامل می‌شود که باید نادیده گرفته شوند. اگر در لاگ‌ها خطی پیدا شد که با الگوی مشخص‌شده در ignoreregex مطابقت داشته باشد، آن خط از شناسایی توسط Fail2Ban مستثنی خواهد شد.

ویژگی‌ها و کاربردهای ignoreregex:

  • نادیده گرفتن لاگ‌های غیرضروری: ممکن است بعضی از خطاهای لاگ‌ها را بخواهید نادیده بگیرید، برای مثال، خطاهای مربوط به فعالیت‌های داخلی سرور یا فعالیت‌های مجاز.
    ignoreregex = ^.*pam_unix\(sshd\):.*:session opened for user
    

    در این مثال، خطاهای مربوط به شروع یک جلسه SSH معتبر از شناسایی خارج می‌شود.

  • استفاده در شناسایی الگوهای خاص: اگر بخواهید الگوهایی را نادیده بگیرید که مشابه به فعالیت‌های معمولی سرور هستند (مثل درخواست‌های GET به صفحه‌های عمومی وب‌سایت)، می‌توانید از این بخش استفاده کنید.

3. بخش‌های توضیحی و تنظیمات اضافی

در کنار failregex و ignoreregex، فایل‌های فیلتر ممکن است شامل بخش‌هایی برای تنظیمات اضافی یا توضیحات باشند. این بخش‌ها به طور معمول برای تخصیص مسیر فایل‌های لاگ، تخصیص تنظیمات اولیه، یا توضیح ساختار فایل استفاده می‌شوند.

بخش‌های متداول توضیحی و تنظیمات اضافی:

  • [Definition]: این بخش معمولاً در ابتدای فایل قرار دارد و شامل تنظیمات اصلی مانند مسیر لاگ‌ها و تنظیمات دیگر است.
    [Definition]
    failregex = <pattern>
    ignoreregex =
    
  • [Init]: این بخش در صورت نیاز به تنظیمات خاص یا مقادیر اولیه (مثل مسیر فایل لاگ) به کار می‌رود.
    [Init]
    logpath = /var/log/auth.log
    
    • logpath: مسیر فایل لاگ که فیلتر باید از آن برای شناسایی تلاش‌ها استفاده کند.
  • شناسایی متغیرهای سیستم: بعضی از فیلترها از متغیرهایی مانند host, port, user برای شناسایی اطلاعات اضافی استفاده می‌کنند.

مثال از یک فایل فیلتر کامل:

در زیر، یک نمونه ساده از یک فایل فیلتر برای سرویس SSH آورده شده است:

[Definition]
failregex = Authentication failure for .* from <HOST>
ignoreregex =

[Init]
logpath = /var/log/auth.log

در این مثال:

  • failregex: تلاش‌های ورود ناموفق به SSH را شناسایی می‌کند.
  • ignoreregex: هیچ الگویی برای نادیده گرفتن تعریف نشده است.
  • logpath: مسیر لاگ برای فایل‌های لاگ auth.log است.

جمع‌بندی

فایل‌های فیلتر در Fail2Ban ابزار بسیار مهمی برای شناسایی و مسدودسازی حملات هستند. با استفاده از failregex، ignoreregex و بخش‌های اضافی مانند [Init]، می‌توان الگوهای حملاتی را که نیاز به شناسایی دارند، تعیین کرد و در عین حال از شناسایی خطاهای غیرمؤثر جلوگیری نمود. تنظیم دقیق این بخش‌ها می‌تواند به بهبود عملکرد Fail2Ban کمک کرده و کارایی سیستم را افزایش دهد.[/cdb_course_lesson][cdb_course_lesson title=”فصل 2. فیلترهای پیش‌فرض”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بررسی فیلترهای از پیش تعریف‌شده برای سرویس‌های مختلف” subtitle=”توضیحات کامل”]در Fail2Ban، فیلترهای از پیش تعریف‌شده برای سرویس‌های مختلف به طور خاص برای شناسایی حملات متداول و جلوگیری از دسترسی‌های غیرمجاز طراحی شده‌اند. این فیلترها به صورت فایل‌های پیکربندی در پوشه /etc/fail2ban/filter.d/ قرار دارند و شامل عبارات منظم (Regex) برای شناسایی حملات هستند. در ادامه، فیلترهای از پیش تعریف‌شده برای برخی از سرویس‌های رایج معرفی می‌شوند.

1. SSH (ssh.conf)

فیلتر SSH به منظور شناسایی حملات Brute Force یا تلاش‌های ورود ناموفق به سرویس SSH طراحی شده است. این فیلتر تلاش می‌کند تا به طور خودکار حملات متعدد به سرور SSH را شناسایی کرده و آی‌پی‌های مهاجم را مسدود کند.

  • نام فایل پیکربندی: ssh.conf
  • مسیر فایل: /etc/fail2ban/filter.d/ssh.conf

عملکرد:

  • شناسایی تلاش‌های ورود ناموفق به SSH.
  • شناسایی تغییرات نام کاربری و رمز عبور نادرست.
failregex = Authentication failure for .* from <HOST>

2. FTP (vsftpd.conf، proftpd.conf)

فیلترهای FTP به طور خاص برای شناسایی تلاش‌های ناموفق در سرویس‌های vsftpd و ProFTPD طراحی شده‌اند. این فیلترها حملات brute force در پروتکل FTP را هدف قرار می‌دهند.

  • نام فایل پیکربندی: vsftpd.conf, proftpd.conf
  • مسیر فایل: /etc/fail2ban/filter.d/vsftpd.conf, /etc/fail2ban/filter.d/proftpd.conf

عملکرد:

  • شناسایی تلاش‌های ناموفق برای ورود به سرور FTP.
  • شناسایی آدرس‌های IP که به طور مداوم تلاش می‌کنند وارد شوند.
failregex = FAIL LOGIN:.*\<HOST\>

3. HTTP (apache-badbots.conf، nginx-http-auth.conf)

فیلترهای HTTP برای شناسایی حملات DDoS یا درخواست‌های مخرب به وب‌سرورها مانند Apache و Nginx طراحی شده‌اند. این فیلترها به شناسایی بات‌های مخرب و درخواست‌های غیرمجاز به وب‌سایت‌ها کمک می‌کنند.

  • نام فایل پیکربندی: apache-badbots.conf, nginx-http-auth.conf
  • مسیر فایل: /etc/fail2ban/filter.d/apache-badbots.conf, /etc/fail2ban/filter.d/nginx-http-auth.conf

عملکرد:

  • شناسایی درخواست‌های مشکوک از بات‌ها به سرورهای HTTP.
  • شناسایی حملات مربوط به ورود غیرمجاز به سرویس‌های HTTP مانند Basic Auth.
failregex = <HOST> -.*"(GET|POST).*(admin|login).*"

4. ایمیل (postfix.conf، dovecot.conf)

فیلترهای پست‌فیکس (Postfix) و دودوکات (Dovecot) برای شناسایی تلاش‌های ورود ناموفق به سرورهای ایمیل طراحی شده‌اند. این فیلترها می‌توانند به شناسایی تلاش‌های Brute Force برای دسترسی به حساب‌های ایمیل و ارسال ایمیل‌های غیرمجاز کمک کنند.

  • نام فایل پیکربندی: postfix.conf, dovecot.conf
  • مسیر فایل: /etc/fail2ban/filter.d/postfix.conf, /etc/fail2ban/filter.d/dovecot.conf

عملکرد:

  • شناسایی تلاش‌های ورود ناموفق به سرویس‌های پست‌فیکس و دودوکات.
  • جلوگیری از ارسال ایمیل‌های اسپم و شناسایی دسترسی‌های غیرمجاز به حساب‌های ایمیل.
failregex = postfix/smtpd.*authentication failure.*rhost=<HOST>
failregex = dovecot:.*Login failed for user=.* from <HOST>

جمع‌بندی:

فیلترهای از پیش تعریف‌شده در Fail2Ban به طور خودکار بسیاری از حملات رایج و تلاش‌های ناموفق را شناسایی و مسدود می‌کنند. این فیلترها برای سرویس‌های مختلف مانند SSH, FTP, HTTP و ایمیل طراحی شده‌اند و شامل الگوهای عبارات منظم (Regex) برای شناسایی درخواست‌های مخرب در لاگ‌ها هستند. استفاده از این فیلترها باعث بهبود امنیت و کاهش بار مدیریتی در سرورهایی می‌شود که با تهدیدات مختلف مواجه هستند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”نحوه شناسایی لاگ‌های مرتبط با این فیلترها” subtitle=”توضیحات کامل”]برای شناسایی لاگ‌های مرتبط با فیلترهای Fail2Ban، باید به فایل‌های لاگ سرویس‌های مختلف و همچنین لاگ‌های Fail2Ban مراجعه کنید. Fail2Ban برای شناسایی و مسدودسازی مهاجمین از عبارات منظم (regex) در فایل‌های پیکربندی استفاده می‌کند که این عبارات برای شناسایی الگوهای خاص در لاگ‌ها طراحی شده‌اند.

در اینجا نحوه شناسایی لاگ‌های مرتبط با فیلترها برای برخی از سرویس‌ها توضیح داده می‌شود:

1. SSH

برای SSH، Fail2Ban تلاش می‌کند تا ورودهای ناموفق و خطاهای مربوط به احراز هویت را در لاگ‌ها شناسایی کند. این خطاها معمولاً در فایل /var/log/auth.log (در سیستم‌های Debian/Ubuntu) یا /var/log/secure (در سیستم‌های RHEL/CentOS) ذخیره می‌شوند.

شناسایی لاگ‌های مرتبط:

  • لاگ مسیر: /var/log/auth.log یا /var/log/secure
  • الگوی جستجو: Authentication failure for .* from <HOST>

مثال از یک خط لاگ مرتبط با تلاش ورود ناموفق:

Jan 31 10:15:31 server sshd[12345]: Failed password for root from 192.168.1.10 port 22 ssh2

برای شناسایی این لاگ‌ها می‌توانید از دستور grep استفاده کنید:

grep "Failed password" /var/log/auth.log

2. FTP (vsftpd یا proftpd)

در صورتی که سرویس FTP مانند vsftpd یا proftpd نصب شده باشد، تلاش‌های ناموفق ورود به این سرویس‌ها معمولاً در لاگ‌های FTP ذخیره می‌شوند. این لاگ‌ها در مسیر /var/log/vsftpd.log یا /var/log/proftpd/proftpd.log قرار دارند.

شناسایی لاگ‌های مرتبط:

  • لاگ مسیر: /var/log/vsftpd.log یا /var/log/proftpd/proftpd.log
  • الگوی جستجو: FAIL LOGIN:.*\<HOST\>

مثال از یک خط لاگ مربوط به تلاش ورود ناموفق به FTP:

Feb  1 14:32:21 server vsftpd[12345]: FAIL LOGIN: Client "192.168.1.20", anonymous, no password

برای شناسایی این لاگ‌ها:

grep "FAIL LOGIN" /var/log/vsftpd.log

3. HTTP (Apache / Nginx)

برای وب‌سرورها مانند Apache و Nginx، Fail2Ban فیلترهایی برای شناسایی حملات DDoS، حملات Brute Force، و درخواست‌های غیرمجاز به سرویس‌های HTTP تنظیم می‌کند. این لاگ‌ها معمولاً در فایل‌هایی مانند /var/log/apache2/access.log و /var/log/nginx/access.log ذخیره می‌شوند.

شناسایی لاگ‌های مرتبط:

  • لاگ مسیر: /var/log/apache2/access.log یا /var/log/nginx/access.log
  • الگوی جستجو: "(GET|POST).*(admin|login).*"

مثال از یک خط لاگ در Apache یا Nginx:

127.0.0.1 - - [01/Feb/2025:10:15:32 +0000] "GET /admin HTTP/1.1" 403 1024

برای شناسایی این لاگ‌ها:

grep "admin" /var/log/apache2/access.log

4. ایمیل (Postfix / Dovecot)

برای پست‌فیکس (Postfix) و دودوکات (Dovecot)، Fail2Ban از لاگ‌های احراز هویت برای شناسایی تلاش‌های ورود ناموفق و ارسال ایمیل‌های غیرمجاز استفاده می‌کند. این لاگ‌ها در فایل‌هایی مانند /var/log/mail.log یا /var/log/maillog قرار دارند.

شناسایی لاگ‌های مرتبط:

  • لاگ مسیر: /var/log/mail.log یا /var/log/maillog
  • الگوی جستجو: authentication failure.*rhost=<HOST>

مثال از یک خط لاگ در پست‌فیکس:

Jan 31 11:20:31 server postfix/smtpd[12345]: authentication failure; rhost=192.168.1.30

برای شناسایی این لاگ‌ها:

grep "authentication failure" /var/log/mail.log

5. Fail2Ban Logs

علاوه بر لاگ‌های سرویس‌ها، Fail2Ban نیز خودش لاگ‌هایی تولید می‌کند که اطلاعات مربوط به مسدودسازی‌ها و آی‌پی‌های مشکوک را ذخیره می‌کند. این لاگ‌ها معمولاً در مسیر /var/log/fail2ban.log قرار دارند.

شناسایی لاگ‌های مربوط به Fail2Ban:

  • لاگ مسیر: /var/log/fail2ban.log
  • الگوی جستجو: Ban <HOST>

مثال از یک خط لاگ در Fail2Ban:

2025-01-31 10:15:45,123 fail2ban.actions[2345]: NOTICE [ssh] Ban 192.168.1.10

برای شناسایی این لاگ‌ها:

grep "Ban" /var/log/fail2ban.log

جمع‌بندی:

برای شناسایی لاگ‌های مرتبط با فیلترهای Fail2Ban، باید به لاگ‌های سرویس‌های مختلف (مانند SSH, FTP, Apache/Nginx, Postfix/Dovecot) و همچنین فایل لاگ خود Fail2Ban مراجعه کرد. با استفاده از دستور grep یا ابزارهای مشابه می‌توان این لاگ‌ها را برای الگوهای خاص جستجو کرده و مسدودسازی‌های غیرمجاز را شناسایی نمود.[/cdb_course_lesson][cdb_course_lesson title=”فصل 3. ساخت و ویرایش فیلترهای سفارشی”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”دلایل استفاده از فیلترهای سفارشی برای سرویس‌های غیرمتعارف یا خاص” subtitle=”توضیحات کامل”]استفاده از فیلترهای سفارشی در Fail2Ban برای سرویس‌های غیرمتعارف یا خاص اهمیت زیادی دارد. در اینجا به دلایل اصلی آن می‌پردازیم:

1. عدم شناسایی الگوهای تهاجمی در فیلترهای پیش‌فرض

سرویس‌های غیرمتعارف یا خاص ممکن است از ساختار لاگ خاص خود استفاده کنند که در فیلترهای پیش‌فرض Fail2Ban شناسایی نشده باشد. به عبارت دیگر، فیلترهای پیش‌فرض ممکن است برای همه سرویس‌ها مناسب نباشند و برای شناسایی دقیق‌تر تلاش‌های غیرمجاز به فیلترهای سفارشی نیاز است.

2. امنیت بالا برای سرویس‌های خاص

برخی سرویس‌ها مانند پایگاه‌های داده، برنامه‌های خاص یا سرویس‌های شرکتی ممکن است حساسیت بیشتری نسبت به سایر سرویس‌ها داشته باشند و نیاز به تنظیمات دقیق‌تر برای شناسایی حملات داشته باشند. این سرویس‌ها معمولاً رفتار و لاگ‌های خاصی دارند که نمی‌توانند به خوبی توسط فیلترهای عمومی شناسایی شوند.

3. شخصی‌سازی بهتر بر اساس نیازهای خاص

سرویس‌های غیرمتعارف ممکن است نیاز به تنظیمات خاصی داشته باشند که توسط فیلترهای پیش‌فرض پوشش داده نمی‌شود. مثلا، ممکن است یک سرویس با پورت یا پروتکل متفاوتی در حال اجرا باشد یا روش احراز هویت خاصی داشته باشد. در چنین مواردی، ساخت فیلترهای سفارشی که به طور خاص به آن سرویس اختصاص دارد، ضروری است.

4. گزارش‌دهی دقیق‌تر

با استفاده از فیلترهای سفارشی می‌توان گزارش‌ها و لاگ‌ها را برای سرویس خاص به صورت دقیق‌تری تنظیم کرد. این به مدیران سیستم کمک می‌کند که جزئیات بیشتری از تلاش‌های ناموفق، حملات بالقوه و دسترسی‌های مشکوک را شناسایی کنند.

5. بهینه‌سازی عملکرد

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

6. مقاومت در برابر حملات هدف‌مند

اگر سرویس خاصی هدف حملات هدفمند قرار گیرد (مثلاً یک سرویس دولتی یا یک برنامه کاربردی در داخل سازمان)، فیلترهای پیش‌فرض نمی‌توانند تمامی رفتارهای مهاجمان را شناسایی کنند. در اینجا، فیلترهای سفارشی می‌توانند به شناسایی تلاش‌های نفوذ دقیق‌تر کمک کنند.

7. عدم وجود فیلتر پیش‌فرض برای برخی پروتکل‌ها یا سرویس‌ها

در بسیاری از موارد، Fail2Ban فیلترهای پیش‌فرض برای پروتکل‌ها یا سرویس‌های خاص ندارد. برای مثال، یک سرویس خاص یا پروتکل خاص ممکن است در میان فیلترهای از پیش تعریف‌شده نباشد، و در این صورت باید فیلترهای سفارشی برای آن تعریف کرد تا حملات علیه آن شناسایی و مسدود شود.

8. سفارشی‌سازی قوانین مسدودسازی

در سرویس‌های خاص، ممکن است نیاز به قوانین خاصی برای مسدودسازی و مدت زمان مسدودسازی داشته باشید. با فیلترهای سفارشی می‌توان سیاست‌های امنیتی متناسب با سرویس یا نیاز خاص خود تنظیم کرد. به عنوان مثال، ممکن است بخواهید برای یک سرویس خاص مسدودسازی طولانی‌تری اعمال کنید یا هشدارهای متفاوتی برای آن ارسال کنید.


جمع‌بندی:

استفاده از فیلترهای سفارشی برای سرویس‌های غیرمتعارف یا خاص به مدیران سرور این امکان را می‌دهد که سیستم امنیتی خود را به طور دقیق‌تر و کارآمدتری تنظیم کنند. این فیلترها به شناسایی و مسدودسازی حملات خاص و شفاف‌سازی گزارش‌ها کمک کرده و از بروز مشکلات امنیتی جلوگیری می‌کند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”فرآیند ایجاد یک فایل فیلتر جدید” subtitle=”توضیحات کامل”]ایجاد یک فایل فیلتر جدید در Fail2Ban فرآیندی است که به شما امکان می‌دهد تا حملات خاص را شناسایی و مسدود کنید. برای انجام این کار، باید چندین مرحله را طی کنید. در اینجا به توضیح گام‌های مختلف این فرآیند می‌پردازیم:

1. انتخاب نام مناسب برای فیلتر

اولین قدم در ایجاد یک فیلتر جدید انتخاب یک نام مناسب است که نشان‌دهنده نوع یا سرویس هدف فیلتر باشد. به عنوان مثال، اگر فیلتر را برای سرویس FTP می‌سازید، ممکن است از نام‌هایی مانند ftp-login یا vsftpd استفاده کنید. این نام‌ها باید به گونه‌ای باشند که شما به راحتی بتوانید آنها را در تنظیمات Fail2Ban شناسایی کنید.

2. تعریف مسیر لاگ فایل

در مرحله بعد باید مسیر دقیق فایل‌های لاگ مربوط به سرویس مورد نظر خود را تعریف کنید. این فایل‌ها اطلاعات ضروری درباره فعالیت‌های سرویس و تلاش‌های دسترسی را ذخیره می‌کنند. به طور معمول، این مسیرها در دایرکتوری‌هایی مانند /var/log قرار دارند. برای مثال، برای سرویس SSH مسیر لاگ ممکن است /var/log/auth.log باشد.

در فایل فیلتر، این مسیر را با استفاده از گزینه logpath تعریف می‌کنید:

logpath = /var/log/auth.log

3. نوشتن failregex برای شناسایی الگوهای مشکوک

بعد از تعیین مسیر لاگ، باید الگوهای مشکوک یا حملات را شناسایی کنید. این کار با استفاده از failregex انجام می‌شود. این الگوها معمولاً برای شناسایی تلاش‌های ورود ناموفق (مثلاً تلاش‌های متعدد برای ورود به SSH) طراحی می‌شوند. برای مثال، اگر می‌خواهید تلاش‌های ورود ناموفق را شناسایی کنید، می‌توانید از الگوی مشابه زیر استفاده کنید:

failregex = Authentication failure for .* from <HOST>

در اینجا، <HOST> به طور خودکار به آدرس IP مهاجم اشاره می‌کند.

4. افزودن ignoreregex برای نادیده گرفتن برخی پیام‌های لاگ

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

ignoreregex = ^Accepted publickey for .* from <HOST>

این الگو به Fail2Ban می‌گوید که تلاش‌های ورود موفق را نادیده بگیرد.


جمع‌بندی:

فرآیند ایجاد یک فایل فیلتر جدید در Fail2Ban شامل مراحل مختلفی از جمله انتخاب نام مناسب برای فیلتر، تعیین مسیر لاگ، نوشتن failregex برای شناسایی الگوهای مشکوک، و افزودن ignoreregex برای نادیده گرفتن پیام‌های خاص است. با انجام این مراحل، می‌توانید یک فیلتر سفارشی برای شناسایی و مسدودسازی حملات به سرویس‌های خاص ایجاد کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”نمونه‌هایی از failregex برای شناسایی تلاش‌های brute-force” subtitle=”توضیحات کامل”]در این بخش، به چند نمونه از failregexها پرداخته می‌شود که برای شناسایی تلاش‌های brute-force در سرویس‌های مختلف مورد استفاده قرار می‌گیرند. این الگوها معمولاً برای شناسایی حملات ورود غیرمجاز طراحی شده‌اند که در آنها مهاجم تلاش می‌کند پس از چندین تلاش ناموفق وارد سیستم شود.

1. SSH (برای شناسایی تلاش‌های brute-force در SSH)

تلاش‌های brute-force معمولاً با پیغام‌های “authentication failure” در لاگ‌ها ثبت می‌شوند. یک failregex برای شناسایی این تلاش‌ها در فایل لاگ /var/log/auth.log به شکل زیر خواهد بود:

failregex = Authentication failure for .* from <HOST>

در اینجا، <HOST> نمایانگر آدرس IP مهاجم است که در تلاش برای ورود به سرور از طریق SSH می‌باشد.

2. FTP (برای شناسایی تلاش‌های brute-force در FTP)

در سرویس FTP (برای مثال، در سرویس‌های vsftpd یا proftpd)، می‌توان با استفاده از failregex شناسایی کرد که یک آدرس IP در تلاش برای ورود با اطلاعات غیرمعتبر است. برای شناسایی این نوع تلاش‌ها در لاگ /var/log/vsftpd.log، الگو می‌تواند به صورت زیر باشد:

failregex = FAIL LOGIN: Client "<HOST>" not allowed to connect

این الگو به دنبال تلاش‌های ورود ناموفق است که در لاگ‌های سرویس FTP ثبت می‌شوند.

3. Apache (برای شناسایی تلاش‌های brute-force در Apache)

در سرویس‌های وب مانند Apache، حملات brute-force معمولاً به شکل تلاش‌های متعدد برای دسترسی به صفحات خاص یا استفاده از پروتکل‌هایی مانند HTTP Authentication ثبت می‌شوند. برای شناسایی این نوع حملات در لاگ /var/log/apache2/access.log، می‌توان از الگوی زیر استفاده کرد:

failregex = ^<HOST> - - \[.*\] "POST /.* HTTP/1.1" 401

این الگو به دنبال درخواست‌های HTTP POST با کد پاسخ 401 (Unauthorized) می‌گردد که معمولاً نشان‌دهنده تلاش‌های ناموفق برای ورود به سیستم است.

4. Postfix (برای شناسایی تلاش‌های brute-force در Postfix)

در سرورهای ایمیل مانند Postfix، حملات brute-force معمولاً به صورت تلاش‌های متعدد برای ورود به حساب‌های ایمیل مشاهده می‌شوند. برای شناسایی این نوع حملات در لاگ /var/log/mail.log، یک failregex ممکن است به این صورت باشد:

failregex = postfix/smtpd.*client=<HOST>.*NOQUEUE: reject: RCPT from <HOST>: 450 4.7.1

این الگو به دنبال تلاش‌های ناموفق برای ارسال ایمیل می‌گردد که معمولاً نشان‌دهنده حملات brute-force به سرور ایمیل است.


جمع‌بندی:

با استفاده از failregexها می‌توانید تلاش‌های brute-force را در سرویس‌های مختلف شناسایی و مسدود کنید. این الگوها معمولاً برای شناسایی پیام‌های خاص در لاگ‌ها طراحی می‌شوند که نشان‌دهنده تلاش‌های ناموفق برای ورود به سیستم هستند. در اینجا نمونه‌هایی از failregex برای سرویس‌های SSH، FTP، Apache و Postfix آورده شد که می‌توانید برای شناسایی و مقابله با حملات brute-force از آنها استفاده کنید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 4. تست و اعتبارسنجی فیلترها”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از ابزار fail2ban-regex برای تست فیلترهای نوشته‌شده” subtitle=”توضیحات کامل”]fail2ban-regex یک ابزار مفید برای آزمایش و بررسی صحت failregexها در فیلترهای نوشته‌شده است. این ابزار به شما اجازه می‌دهد تا یک failregex را در برابر داده‌های واقعی از لاگ‌ها آزمایش کرده و ببینید که آیا الگوهای شما به درستی پیام‌های مشکوک را شناسایی می‌کنند یا خیر.

1. بررسی صحت failregex با داده‌های لاگ واقعی

برای استفاده از fail2ban-regex، ابتدا نیاز دارید تا لاگ واقعی که می‌خواهید از آن برای تست استفاده کنید، داشته باشید. به عنوان مثال، فرض کنید می‌خواهید تلاش‌های ناموفق SSH را شناسایی کنید.

ابتدا، فایل لاگ مربوطه را مشخص کنید (مثلاً /var/log/auth.log) و سپس دستور زیر را اجرا کنید:

sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/ssh.conf

این دستور به fail2ban-regex می‌گوید که failregex موجود در فایل فیلتر ssh.conf را برای شناسایی الگوهای مشکوک در فایل /var/log/auth.log آزمایش کند.

در خروجی، خواهید دید که ابزار به شما می‌گوید که آیا failregexها موفق به شناسایی الگوهای موردنظر شده‌اند یا نه. این ابزار تعداد دفعاتی که الگوها با پیام‌های لاگ تطابق پیدا کرده‌اند را نمایش خواهد داد.

2. تحلیل تطابق regex با پیام‌های لاگ

پس از اجرای دستور fail2ban-regex، به خروجی توجه کنید. اگر تطابقی پیدا نشود یا اگر چندین تلاش ناموفق به درستی شناسایی نشوند، ممکن است نیاز به اصلاح failregex داشته باشید.

در اینجا مثالی از خروجی این ابزار آورده شده است:

Results
=======

Failregex:
| 1 | Authentication failure for .* from <HOST>  |

Number of found matches: 3

Summary:
========
Failregex found 3 matches, which means 3 failed login attempts were detected in the log file.

در این مثال، failregex به درستی سه تلاش ناموفق را در فایل لاگ شناسایی کرده است.

اگر fail2ban-regex نتواند تطابق پیدا کند، یا پیغام‌های “No match” در خروجی مشاهده شود، ممکن است نیاز به بررسی و اصلاح failregex یا تنظیمات فیلترها باشد.

جمع‌بندی:

ابزار fail2ban-regex یک روش مؤثر برای تست صحت و تطابق failregexها با داده‌های واقعی از لاگ‌ها است. با استفاده از این ابزار، می‌توانید اطمینان حاصل کنید که failregexها به درستی تلاش‌های ناموفق و حملات brute-force را شناسایی می‌کنند. این کار به شما کمک می‌کند تا قبل از اجرای فیلترها در محیط تولید، از کارکرد صحیح آنها اطمینان حاصل کنید و مشکلات احتمالی را شناسایی و برطرف کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”عیب‌یابی و اصلاح فیلترهای غیرکارآمد ” subtitle=”توضیحات کامل”]فیلترهای ناکارآمد یا غیرعملی می‌توانند باعث شوند که Fail2Ban نتواند به درستی حملات را شناسایی کرده یا تلاش‌های ناموفق را مسدود کند. این مشکلات می‌تواند از عدم تطابق failregex با الگوهای لاگ گرفته تا تنظیمات نادرست فیلترها باشد. در اینجا روش‌هایی برای عیب‌یابی و اصلاح این فیلترها آورده شده است.

1. بررسی تطابق failregex با داده‌های لاگ

اولین قدم در عیب‌یابی فیلترهای Fail2Ban، بررسی تطابق failregex با داده‌های لاگ واقعی است. برای این منظور می‌توان از ابزار fail2ban-regex استفاده کرد.

مراحل:
  • ابتدا، یک لاگ واقعی را انتخاب کنید (برای مثال /var/log/auth.log برای SSH).
  • سپس دستور زیر را اجرا کنید تا بررسی کنید که آیا failregex به درستی تلاش‌های ناموفق را شناسایی می‌کند یا خیر:
sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/ssh.conf
  • بررسی کنید که آیا نتایج نشان‌دهنده تطابق موفق است. اگر fail2ban-regex نشان دهد که هیچ تطابقی وجود ندارد یا تعداد تطابق‌ها کمتر از حد انتظار است، احتمالاً failregex به درستی پیاده‌سازی نشده است.

2. بررسی و اصلاح failregex

اگر در آزمایش با fail2ban-regex مشکلی پیدا کردید، لازم است failregex را اصلاح کنید. ممکن است لازم باشد که الگوهای منظم (regular expressions) خود را دقیق‌تر کنید تا بتوانند پیام‌های لاگ را بهتر شناسایی کنند.

به عنوان مثال، ممکن است یک failregex برای شناسایی تلاش‌های ورود SSH به شکل زیر باشد:

^.*sshd\[.*\]: Failed password for .+ from <HOST>

اگر این الگو نتواند تمام تلاش‌های ناموفق را شناسایی کند، شما باید آن را اصلاح کنید. برای مثال، می‌توانید موارد خاص یا خطاهای دیگر را هم به الگو اضافه کنید.

3. بررسی تنظیمات logpath و ignoreregex

در بعضی مواقع، ممکن است failregex به درستی تنظیم شده باشد، اما مشکل از تنظیمات logpath باشد. مطمئن شوید که مسیر فایل لاگ به درستی تنظیم شده است. برای مثال، اگر فایل لاگ در مسیر غیرمعمولی قرار دارد یا نام فایل تغییر کرده باشد، Fail2Ban قادر به پیدا کردن داده‌های لاگ نخواهد بود.

همچنین، ignoreregex می‌تواند پیام‌های لاگ معتبر را از تشخیص نادرست مسدود کند. در صورتی که برخی از پیام‌های لاگ موردنظر شما به اشتباه نادیده گرفته شوند، ممکن است به تنظیمات ignoreregex نیاز داشته باشید.

4. بررسی تنظیمات jail.local

گاهی اوقات مشکل از پیکربندی سرویس یا Jail است. برای این که Jail برای هر سرویس به درستی پیکربندی شود، باید تنظیمات jail.local را بررسی کنید. اطمینان حاصل کنید که Jail مربوطه فعال باشد و تنظیمات bantime، findtime، و maxretry به درستی پیکربندی شده‌اند.

5. بررسی لاگ‌های Fail2Ban

برای دریافت جزئیات بیشتر در مورد مشکلات فیلترها و Jail‌ها، باید لاگ‌های Fail2Ban را بررسی کنید. فایل‌های لاگ معمولاً در مسیر /var/log/fail2ban.log قرار دارند. بررسی این لاگ‌ها به شما کمک می‌کند تا مشکلات دقیق‌تری مانند خطاهای مرتبط با فیلترها و یا Jail‌های مسدود نشده را شناسایی کنید.

برای مشاهده لاگ‌های Fail2Ban از دستور زیر استفاده کنید:

sudo tail -f /var/log/fail2ban.log

6. بازنگری در فیلترها و Jail‌ها

در نهایت، بررسی دقیق فیلترها و تنظیمات Jail‌ها از جمله زمان‌بندی‌ها، ایمیل‌ها و اقدامات پیش‌فرض می‌تواند مشکلات را شناسایی کند. اگر Jail‌ها به درستی پیکربندی نشده باشند، Fail2Ban قادر نخواهد بود تا تلاش‌های ناموفق را به درستی شناسایی کند.

جمع‌بندی:

عیب‌یابی فیلترهای غیرکارآمد در Fail2Ban شامل بررسی تطابق failregex با داده‌های لاگ، اصلاح فیلترها، بررسی تنظیمات logpath و ignoreregex، بررسی پیکربندی Jail‌ها و لاگ‌های Fail2Ban می‌شود. با پیگیری این مراحل، می‌توان مشکلات فیلترهای Fail2Ban را شناسایی کرده و به درستی اصلاح کرد تا سیستم به بهترین نحو از حملات brute force و دیگر تهدیدات امنیتی محافظت شود.[/cdb_course_lesson][cdb_course_lesson title=”فصل 5. اعمال فیلترها در Jailها”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”نحوه تعریف و مرتبط کردن فیلترها با Jailها در فایل jail.local” subtitle=”توضیحات کامل”]Jail‌ها در Fail2Ban به‌طور مشخصی مسئول اعمال فیلترها و اقدامات (Actions) برای نظارت بر سرویس‌ها و جلوگیری از حملات هستند. برای تعریف و مرتبط کردن فیلترها با Jailها در فایل jail.local، باید مراحل زیر را دنبال کنید:

1. مقدمه‌ای بر Jail‌ها و فیلترها

  • Jail‌ها: Jail‌ها از ترکیب یک یا چند فیلتر و اقدامات برای مسدودسازی آی‌پی‌ها استفاده می‌کنند. هر Jail مربوط به یک سرویس خاص است (برای مثال SSH، Apache، FTP).
  • فیلترها: فیلترها وظیفه شناسایی و شبیه‌سازی تلاش‌های ناموفق و حملات brute force را دارند. این فیلترها می‌توانند به‌صورت پیش‌فرض (مانند ssh.conf، apache-badbots.conf) یا به‌صورت سفارشی باشند.
  • Actions: اقدامات برای اجرای عملیات‌هایی مانند مسدود کردن آی‌پی‌ها یا ارسال هشدار ایمیل به مدیر سیستم استفاده می‌شوند.

2. تعریف Jail‌ها در فایل jail.local

در این مرحله، باید فیلتر و اقدام مناسب برای هر سرویس خاص را به Jail مربوطه نسبت دهید. به طور معمول، فایل jail.local برای این کار استفاده می‌شود، زیرا این فایل از فایل پیش‌فرض jail.conf اولویت بالاتری دارد و امکان تنظیمات سفارشی را فراهم می‌کند.

نمونه‌ای از Jail برای سرویس SSH:
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
action = iptables[name=SSH, port=ssh, protocol=tcp]

توضیحات:

  • enabled: فعال‌سازی Jail برای سرویس SSH.
  • port: پورت سرویس که Fail2Ban باید نظارت کند (پورت پیش‌فرض SSH: 22).
  • filter: نام فیلتر (در اینجا sshd برای SSH). فیلتر باید در مسیر /etc/fail2ban/filter.d/ موجود باشد.
  • logpath: مسیر فایل لاگ مربوط به سرویس (در اینجا /var/log/auth.log برای SSH).
  • maxretry: حداکثر تعداد تلاش‌های ناموفق مجاز پیش از مسدودسازی آی‌پی.
  • bantime: مدت زمان مسدودسازی آی‌پی (در اینجا 3600 ثانیه معادل 1 ساعت).
  • findtime: مدت زمانی که Fail2Ban به آن توجه می‌کند تا تلاش‌های ناموفق را شناسایی کند.
  • action: اقداماتی که باید در صورت مسدودسازی آی‌پی اجرا شود. در اینجا از iptables برای مسدود کردن آی‌پی استفاده شده است.

3. تعریف فیلتر سفارشی برای Jail‌ها

اگر نیاز به فیلتر سفارشی دارید، باید ابتدا فیلتر جدید را در دایرکتوری /etc/fail2ban/filter.d/ ایجاد کنید و سپس آن را به Jail مربوطه مرتبط کنید.

مثال از تعریف یک فیلتر سفارشی برای سرویس SSH:
  1. ایجاد فایل فیلتر سفارشی (مثلاً my-ssh.conf) در مسیر /etc/fail2ban/filter.d/:
[Definition]
failregex = ^%(__prefix_line)sFailed password for .* from <HOST>
ignoreregex =
  1. پس از ایجاد فایل فیلتر، باید آن را به Jail موردنظر مرتبط کنید. برای این کار در فایل jail.local، به‌جای استفاده از فیلتر پیش‌فرض، از فیلتر سفارشی استفاده کنید.
[ssh]
enabled = true
port = ssh
filter = my-ssh
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
action = iptables[name=SSH, port=ssh, protocol=tcp]

4. تعریف Jail‌های اضافی برای سایر سرویس‌ها

نمونه Jail برای Apache:
[apache]
enabled = true
port = http,https
filter = apache-badbots
logpath = /var/log/apache2/access.log
maxretry = 5
bantime = 3600
findtime = 300
action = iptables[name=Apache, port=http, protocol=tcp]

توضیحات:

  • filter: اینجا از فیلتر پیش‌فرض apache-badbots استفاده شده است.
  • logpath: مسیر فایل لاگ Apache برای شناسایی حملات.
  • action: مانند قبلی، از iptables برای مسدود کردن آی‌پی استفاده می‌شود.

5. فعال‌سازی Jail‌ها در jail.local

برای فعال‌سازی Jail‌ها در فایل jail.local، باید مقدار enabled را برابر با true قرار دهید و تنظیمات مربوطه را بر اساس نیاز خود پیکربندی کنید.

مثال Jail برای سرویس FTP (vsftpd):
[vsftpd]
enabled = true
port = ftp
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 3
bantime = 3600
findtime = 600
action = iptables[name=FTP, port=ftp, protocol=tcp]

6. اعمال تغییرات و راه‌اندازی مجدد Fail2Ban

پس از انجام تنظیمات لازم در فایل jail.local، باید Fail2Ban را برای اعمال تغییرات مجدد راه‌اندازی کنید.

sudo systemctl restart fail2ban

جمع‌بندی:

برای تعریف و مرتبط کردن فیلترها با Jail‌ها در فایل jail.local، ابتدا باید Jail‌ها را بر اساس سرویس‌های مختلف (مانند SSH، Apache، FTP) ایجاد کرده و فیلترهای مناسب را به آن‌ها نسبت دهید. از ابزار fail2ban-regex می‌توان برای بررسی صحت عملکرد فیلترها استفاده کرد و در نهایت، Fail2Ban را با استفاده از دستور systemctl restart مجدداً راه‌اندازی کرد تا تغییرات اعمال شوند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تنظیمات برای محدود کردن دسترسی براساس فیلترها ” subtitle=”توضیحات کامل”]

در Fail2Ban، محدود کردن دسترسی به سرویس‌ها براساس فیلترهای خاص به این معناست که با استفاده از پیکربندی Jail‌ها و فیلترها، می‌توان تلاش‌های ناموفق یا مشکوک را شناسایی کرده و دسترسی‌های غیرمجاز را مسدود کرد. این فرآیند می‌تواند به ویژه برای سرویس‌های حساس مثل SSH، FTP، یا وب‌سایت‌های Apache/Nginx مهم باشد.

1. محدود کردن دسترسی با استفاده از فیلترها

فیلترها در Fail2Ban الگوهایی هستند که برای شناسایی رفتارهای خاص در لاگ‌ها استفاده می‌شوند. این فیلترها می‌توانند به‌طور خودکار تلاش‌های ناموفق ورود را شناسایی کنند و یا از سایر حملات مشکوک مانند DDoS یا اسکن‌های پورت جلوگیری کنند.

مراحل تنظیم فیلترها برای محدود کردن دسترسی:
  • تعریف فیلترها: فیلترها در Fail2Ban مسئول شناسایی تلاش‌های غیرمجاز و مشکوک هستند. این فیلترها معمولاً شامل failregex و ignoreregex هستند که الگوهای منظم (regex) برای شناسایی تلاش‌های ناموفق یا الگوهای غیرمجاز را مشخص می‌کنند.

2. محدود کردن دسترسی به سرویس SSH (برای جلوگیری از حملات brute-force)

برای محدود کردن دسترسی به سرویس SSH و جلوگیری از حملات brute-force، می‌توان فیلتر مربوطه را در jail.local تنظیم کرد. در این حالت، Fail2Ban تعداد تلاش‌های ناموفق برای ورود به سیستم را شمارش کرده و آی‌پی‌هایی که تلاش‌های زیادی برای ورود دارند، مسدود می‌کند.

نمونه تنظیمات Jail برای SSH:
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 600
findtime = 600
action = iptables[name=SSH, port=ssh, protocol=tcp]

توضیحات:

  • filter: از فیلتر پیش‌فرض sshd استفاده می‌شود.
  • maxretry: تعداد تلاش‌های ناموفق قبل از مسدودسازی آی‌پی. در اینجا ۳ تلاش ناموفق مجاز است.
  • bantime: مدت زمان مسدودسازی آی‌پی (در اینجا 600 ثانیه یا 10 دقیقه).
  • findtime: مدت زمانی که Fail2Ban تلاش‌های ناموفق را بررسی می‌کند (در اینجا 10 دقیقه).
  • action: اقداماتی که باید اجرا شوند، مانند مسدودسازی آی‌پی با استفاده از iptables.

3. محدود کردن دسترسی به سرویس‌های FTP (مانند vsftpd یا proftpd)

برای سرویس‌های FTP (مانند vsftpd یا proftpd)، می‌توانید فیلترهای مخصوص FTP را برای شناسایی تلاش‌های ناموفق و مسدود کردن آی‌پی‌های مشکوک تنظیم کنید.

نمونه تنظیمات Jail برای FTP (vsftpd):
[vsftpd]
enabled = true
port = ftp
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 5
bantime = 600
findtime = 600
action = iptables[name=FTP, port=ftp, protocol=tcp]

توضیحات:

  • filter: از فیلتر vsftpd استفاده می‌شود که مربوط به تلاش‌های ناموفق ورود به سرویس FTP است.
  • maxretry: اینجا می‌توان حداکثر تعداد تلاش‌های ناموفق را بیشتر کرد (در اینجا ۵ تلاش).
  • bantime و findtime مشابه تنظیمات قبلی برای مدت زمان مسدودسازی و بازه زمانی تلاش‌های ناموفق هستند.

4. محدود کردن دسترسی به وب‌سایت‌ها با Apache یا Nginx (برای جلوگیری از حملات DDoS و brute-force)

برای جلوگیری از حملات DDoS و مسدود کردن درخواست‌های غیرمجاز به وب‌سرورها (Apache یا Nginx)، از فیلترهای مربوط به هر سرویس وب استفاده می‌شود.

نمونه تنظیمات Jail برای Apache:
[apache]
enabled = true
port = http,https
filter = apache-badbots
logpath = /var/log/apache2/access.log
maxretry = 5
bantime = 600
findtime = 600
action = iptables[name=Apache, port=http, protocol=tcp]

توضیحات:

  • filter: از فیلتر apache-badbots برای شناسایی ربات‌های بد و درخواست‌های مشکوک استفاده می‌شود.
  • maxretry: تعداد تلاش‌های ناموفق برای درخواست‌های HTTP.
  • bantime و findtime مشابه تنظیمات قبلی برای مدت زمان مسدودسازی و بازه زمانی تلاش‌های ناموفق هستند.

5. محدود کردن دسترسی به سرویس‌های ایمیل (مانند Postfix و Dovecot)

برای سرویس‌های ایمیل مانند Postfix و Dovecot، می‌توان فیلترهای خاصی برای شناسایی تلاش‌های ناموفق ورود یا ارسال ایمیل‌های مشکوک تنظیم کرد.

نمونه تنظیمات Jail برای Postfix:
[postfix]
enabled = true
port = smtp
filter = postfix
logpath = /var/log/mail.log
maxretry = 3
bantime = 600
findtime = 600
action = iptables[name=Postfix, port=smtp, protocol=tcp]

توضیحات:

  • filter: از فیلتر postfix استفاده می‌شود که تلاش‌های ناموفق برای ارسال ایمیل را شناسایی می‌کند.
  • maxretry: حداکثر تعداد تلاش‌های ناموفق برای دسترسی به سرویس ایمیل.
  • bantime و findtime مشابه تنظیمات قبلی برای مدت زمان مسدودسازی و بازه زمانی تلاش‌های ناموفق هستند.

6. استفاده از تنظیمات پیشرفته برای محدود کردن دسترسی به سرویس‌ها

  • limitfreq: برای محدود کردن تعداد درخواست‌ها از یک آی‌پی خاص در مدت زمان مشخص، از این گزینه می‌توان استفاده کرد.
  • ignoreip: این تنظیم برای تعریف IP‌هایی است که باید نادیده گرفته شوند و مسدود نشوند (لیست سفید).
  • maxretry: تنظیم حداقل تعداد تلاش‌های ناموفق برای مسدودسازی آی‌پی.

7. اعمال تغییرات و راه‌اندازی مجدد Fail2Ban

پس از اعمال تغییرات در فایل jail.local، برای اعمال تنظیمات جدید، باید سرویس Fail2Ban را راه‌اندازی مجدد کنید:

sudo systemctl restart fail2ban

جمع‌بندی:

محدود کردن دسترسی به سرویس‌ها با استفاده از فیلترها در Fail2Ban می‌تواند یک لایه امنیتی بسیار قوی در برابر حملات brute-force، DDoS، و سایر حملات ناموفق باشد. با تنظیم Jail‌ها برای سرویس‌های مختلف مانند SSH، FTP، Apache، و سرویس‌های ایمیل، می‌توان به‌طور مؤثری از حملات جلوگیری کرده و آی‌پی‌های مشکوک را مسدود کرد.

[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”پیکربندی میزان زمان نگهداری لاگ‌ها برای بررسی توسط فیلتر ” subtitle=”توضیحات کامل”]یکی از جنبه‌های مهم در استفاده از Fail2Ban، تعیین مدت زمانی است که داده‌های لاگ در سیستم باقی می‌مانند و برای شناسایی حملات یا تلاش‌های ناموفق از آن‌ها استفاده می‌شود. این مدت زمان (یا “log retention time”) به‌طور مستقیم بر کارایی فیلترها و توانایی Fail2Ban برای شناسایی و مسدودسازی حملات تأثیر می‌گذارد.

1. مدت زمان نگهداری لاگ‌ها:

در Fail2Ban، پیکربندی نگهداری لاگ‌ها به دو عامل اصلی بستگی دارد:

  • مدت زمانی که Fail2Ban برای بررسی تلاش‌های ناموفق از لاگ‌ها استفاده می‌کند (که توسط تنظیمات findtime در فایل پیکربندی Jail مشخص می‌شود).
  • مدت زمانی که لاگ‌ها در سیستم ذخیره می‌شوند (که توسط تنظیمات مربوط به لاگ‌روتیشن سیستم عامل یا سرویس‌های مدیریت لاگ‌ها مانند logrotate تعیین می‌شود).

2. پیکربندی مدت زمان نگهداری لاگ‌ها در Fail2Ban:

برای اینکه Fail2Ban بتواند تلاش‌های ناموفق را شناسایی و مسدود کند، باید لاگ‌ها برای مدت زمان مشخصی در سیستم موجود باشند. به همین دلیل، پیکربندی‌های Fail2Ban باید به‌طور دقیق با مدت زمان نگهداری لاگ‌ها و تنظیمات findtime هماهنگ شوند.

مراحل پیکربندی زمان نگهداری لاگ‌ها در Fail2Ban:
  1. تنظیم findtime:
    • findtime مدت زمانی است که Fail2Ban بررسی می‌کند تا تعداد تلاش‌های ناموفق را شمارش کند. این پارامتر معمولاً در فایل‌های jail.conf یا jail.local تعیین می‌شود.

    به‌طور پیش‌فرض، این مقدار معمولاً به‌صورت 600 ثانیه (10 دقیقه) تنظیم می‌شود، اما شما می‌توانید آن را بر اساس نیاز خود تغییر دهید.

    برای مثال:

    [ssh]
    enabled = true
    port = ssh
    filter = sshd
    logpath = /var/log/auth.log
    maxretry = 3
    bantime = 600
    findtime = 600  # مدت زمان بررسی تلاش‌های ناموفق (10 دقیقه)
    action = iptables[name=SSH, port=ssh, protocol=tcp]
    
  2. تنظیم logrotate برای مدیریت لاگ‌ها:
    • تنظیمات logrotate به مدیریت نگهداری و چرخش (rotation) لاگ‌ها در سیستم کمک می‌کند. از طریق این ابزار می‌توانیم زمان نگهداری لاگ‌ها را محدود کرده و آن‌ها را به‌طور خودکار حذف کنیم.
    • معمولاً سرویس‌های لاگ‌نویسی مانند syslog یا rsyslog از logrotate برای مدیریت لاگ‌ها استفاده می‌کنند.

    نمونه تنظیمات logrotate برای auth.log: فایل پیکربندی logrotate معمولاً در /etc/logrotate.d/ قرار دارد. برای مثال، فایل پیکربندی برای auth.log به صورت زیر می‌تواند باشد:

    /var/log/auth.log {
        rotate 5                    # تعداد نسخه‌های نگهداری‌شده از لاگ‌ها
        daily                       # چرخش روزانه لاگ‌ها
        missingok                   # اگر لاگ‌ها موجود نباشند خطا ندهد
        notifempty                  # اگر لاگ‌ها خالی بودند چرخش نکن
        compress                    # فشرده‌سازی نسخه‌های قدیمی
        delaycompress               # فشرده‌سازی بعد از نسخه‌های بعدی
        create 0640 root adm        # دسترسی به لاگ‌ها برای فایل‌های جدید
    }
    

    در این مثال، لاگ‌ها به‌طور روزانه چرخش می‌کنند و ۵ نسخه از آن‌ها نگهداری می‌شود. همچنین پس از چرخش، لاگ‌ها فشرده خواهند شد.

  3. تنظیمات مربوط به مدت زمان نگهداری لاگ‌ها در سرویس‌های مختلف: برای سرویس‌های خاص مانند Apache، Nginx، یا Postfix، ممکن است نیاز باشد تا تنظیمات مشابهی در logrotate برای نگهداری یا چرخش لاگ‌ها پیکربندی شود.

    برای مثال، پیکربندی logrotate برای apache2 ممکن است به شکل زیر باشد:

    /var/log/apache2/*.log {
        weekly                      # چرخش هفتگی لاگ‌ها
        missingok                   # اگر لاگ‌ها موجود نباشند خطا ندهد
        rotate 4                    # نگهداری ۴ نسخه از لاگ‌ها
        compress                    # فشرده‌سازی
        delaycompress               # فشرده‌سازی بعد از نسخه‌های بعدی
        notifempty                  # اگر لاگ خالی باشد چرخش نکند
    }
    

3. تأثیر مدت زمان نگهداری لاگ‌ها بر عملکرد Fail2Ban:

  • اگر مدت زمان نگهداری لاگ‌ها خیلی کوتاه باشد، Fail2Ban قادر نخواهد بود تا تمامی تلاش‌های ناموفق را شناسایی کند و به مسدودسازی حملات ادامه دهد.
  • از سوی دیگر، اگر مدت زمان نگهداری لاگ‌ها خیلی طولانی باشد، ممکن است حجم بالای داده‌های لاگ عملکرد سیستم را تحت تأثیر قرار دهد.

جمع‌بندی:

  • تنظیم findtime در Fail2Ban به شما این امکان را می‌دهد که بازه زمانی را مشخص کنید که در آن تلاش‌های ناموفق توسط Fail2Ban بررسی می‌شوند.
  • پیکربندی logrotate برای مدیریت مدت زمان نگهداری لاگ‌ها به شما کمک می‌کند تا فضای دیسک را مدیریت کرده و لاگ‌های قدیمی‌تر را حذف کنید.
  • هماهنگ‌سازی این دو پارامتر بسیار مهم است تا هم Fail2Ban بتواند حملات را شناسایی کند و هم سیستم با مشکل کمبود فضای دیسک روبرو نشود.

[/cdb_course_lesson][cdb_course_lesson title=”فصل 6. نکات پیشرفته در پیکربندی فیلترها”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”ترکیب چندین regex برای شناسایی انواع مختلف حملات در یک سرویس ” subtitle=”توضیحات کامل”]در Fail2Ban، استفاده از چندین regex (عبارت منظم) به شما این امکان را می‌دهد که انواع مختلف تلاش‌های مخرب یا حملات را شناسایی کرده و آن‌ها را به درستی مسدود کنید. برای شناسایی حملات مختلف از جمله Brute Force، DDoS، نرم‌افزارهای مخرب و حملات امنیتی، می‌توان از مجموعه‌ای از عبارات منظم (regex) استفاده کرد.

1. چرا ترکیب regex‌ها مهم است؟

حملات متنوعی ممکن است در یک سرویس خاص رخ دهند که هرکدام نیازمند شناسایی با الگوهای خاص خود باشند. ترکیب چندین regex در یک فیلتر به Fail2Ban این امکان را می‌دهد که با دقت بیشتری تلاش‌های مخرب را شناسایی و مسدود کند. به عنوان مثال:

  • حملات Brute Force SSH
  • حملات DDoS HTTP
  • تلاش‌های ورود غیرمجاز به FTP
  • محافظت از سرویس‌های ایمیل

2. نحوه ترکیب چندین regex در یک فیلتر Fail2Ban

برای ایجاد یک فیلتر که چندین الگوی مختلف را پوشش دهد، باید از چندین failregex در یک فایل فیلتر استفاده کنید. این کار به شما این امکان را می‌دهد که چندین نوع تلاش غیرمجاز را در یک فایل فیلتر شناسایی کنید.

ساختار یک فایل فیلتر با چندین regex:

یک فایل فیلتر معمولا به صورت زیر نوشته می‌شود:

[Definition]
failregex = 
    ^%(__prefix_line)sFailed password for .* from <HOST> port .* ssh2$
    ^%(__prefix_line)sInvalid user .* from <HOST>$
    ^%(__prefix_line)sNo supported authentication methods available (.*) for <HOST>$
    ^%(__prefix_line)sFailed password for invalid user .* from <HOST>$
    ^%(__prefix_line)sAuthentication failure for .* from <HOST>$
    
ignoreregex =

در این مثال، failregex شامل چندین الگوی مختلف برای شناسایی تلاش‌های ناموفق در SSH است:

  • تلاش‌های ورود ناموفق با استفاده از رمز عبور اشتباه
  • تلاش‌های ورود با نام کاربری نامعتبر
  • پیام‌های مربوط به عدم دسترسی به روش‌های احراز هویت

3. ترکیب regex برای شناسایی انواع حملات

برای شناسایی انواع مختلف حملات در یک فایل فیلتر، می‌توانید از ترکیب regex‌های مختلف استفاده کنید. به عنوان مثال، برای SSH، FTP، و HTTP می‌توانید چندین regex را در یک فایل فیلتر به‌طور همزمان تعریف کنید.

نمونه ترکیب چند regex برای شناسایی حملات Brute Force به SSH و HTTP:

[Definition]
failregex = 
    # حملات Brute Force SSH
    ^%(__prefix_line)sFailed password for .* from <HOST> port .* ssh2$
    ^%(__prefix_line)sInvalid user .* from <HOST>$
    ^%(__prefix_line)sFailed password for invalid user .* from <HOST>$
    
    # حملات Brute Force HTTP
    ^%(__prefix_line)sFailed request from <HOST>.*$
    ^%(__prefix_line)s404 Not Found from <HOST>$
    ^%(__prefix_line)sSuspicious login attempt from <HOST>$
    
ignoreregex =

در اینجا:

  • اولین سه regex مربوط به حملات Brute Force به SSH است.
  • دو regex بعدی مربوط به تلاش‌های مشکوک یا حملات Brute Force در HTTP است.

4. نحوه استفاده از چندین regex در فایل فیلتر

در Fail2Ban، می‌توانید هر نوع حمله را با استفاده از failregex در یک فیلتر جداگانه شناسایی کنید و سپس از آن فیلتر در jail.local استفاده کنید تا سرویس‌ها را محافظت کنید.

نمونه فایل jail.local:

[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 600
findtime = 600
action = iptables[name=SSH, port=ssh, protocol=tcp]

[http]
enabled = true
port = http,https
filter = http-bad-bots
logpath = /var/log/apache2/access.log
maxretry = 3
bantime = 600
findtime = 600
action = iptables[name=HTTP, port=http, protocol=tcp]

در این مثال:

  • Jail برای SSH از فیلتر sshd استفاده می‌کند.
  • Jail برای HTTP از فیلتر http-bad-bots استفاده می‌کند.

5. استفاده از ابزار fail2ban-regex برای تست چندین regex

قبل از اعمال فیلتر‌ها، بهتر است از ابزار fail2ban-regex برای تست صحت عملکرد regex‌ها استفاده کنید. این ابزار به شما کمک می‌کند تا بفهمید آیا regex نوشته‌شده توانسته است تلاش‌های ناموفق را شناسایی کند یا خیر.

مثال استفاده از fail2ban-regex:

fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf

این دستور تمام تلاش‌های ناموفق SSH را که در فایل لاگ auth.log موجود است، با استفاده از regex موجود در فیلتر sshd.conf بررسی می‌کند.

جمع‌بندی:

  • ترکیب چندین regex در یک فایل فیلتر به شما این امکان را می‌دهد که انواع مختلف حملات را شناسایی کنید.
  • برای هر نوع سرویس یا پروتکل، می‌توانید regex‌های مختلفی برای شناسایی تلاش‌های مخرب داشته باشید.
  • استفاده از ابزار fail2ban-regex به شما کمک می‌کند تا مطمئن شوید regex‌ها به درستی کار می‌کنند.

این کار باعث می‌شود که Fail2Ban دقت بیشتری در شناسایی حملات داشته باشد و بتواند از سرور شما در برابر انواع مختلف حملات محافظت کند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از Wildcards در failregex برای شناسایی الگوهای متنوع” subtitle=”توضیحات کامل”]در Fail2Ban، برای شناسایی حملات و تلاش‌های ناموفق از regex (عبارات منظم) استفاده می‌شود. Wildcards (نمادهای خاص برای تطابق با الگوهای متغیر) ابزاری مفید در regex هستند که به شما این امکان را می‌دهند که با شناسایی بخش‌های متغیر از متن، حملات مختلف را به صورت عمومی‌تر شبیه‌سازی کنید. استفاده از wildcards در regex می‌تواند کار شما را در شناسایی حملات پیچیده‌تر، تلاش‌های متغیر یا غیرمعمول آسان‌تر کند.

1. Wildcards در regex چیستند؟

Wildcards نمادهایی هستند که به شما اجازه می‌دهند تا الگوهای عمومی‌تری را برای تطابق با متون مختلف تعریف کنید. مهم‌ترین wildcards در regex عبارتند از:

  • .: مطابقت با هر کاراکتر واحد (به جز خط جدید).
  • *: مطابقت با هر تعداد تکرار از کاراکتر قبلی (شامل صفر تکرار).
  • +: مطابقت با یک یا چند تکرار از کاراکتر قبلی.
  • ?: مطابقت با صفر یا یک تکرار از کاراکتر قبلی.
  • []: برای مطابقت با هر کاراکتر در یک مجموعه.
  • () : برای گروه‌بندی و ارجاع به الگوها.

2. چگونه از Wildcards در failregex استفاده کنیم؟

در Fail2Ban، شما می‌توانید wildcards را برای شناسایی تلاش‌های ناموفق از الگوهای متنوع استفاده کنید. برای مثال، در صورت نیاز به شناسایی پیام‌های متنوع و متفاوتی که به یک حمله مشابه اشاره دارند، می‌توانید از wildcards برای پوشش دادن الگوهای مختلف استفاده کنید.

3. نمونه‌هایی از استفاده از Wildcards در failregex

مثال 1: شناسایی تلاش‌های ورود ناموفق به SSH

فرض کنید که شما می‌خواهید هر تلاش ورود ناموفق به SSH را شناسایی کنید، که ممکن است در چندین فرمت مختلف ظاهر شود.

failregex = 
    ^%(__prefix_line)sFailed password for .* from <HOST> port .* ssh2$
    ^%(__prefix_line)sInvalid user .* from <HOST>$
    ^%(__prefix_line)sAuthentication failure for .* from <HOST>$

در اینجا:

  • .* به این معنی است که می‌تواند هر رشته‌ای از کاراکترها را در آن محل‌ها تطبیق دهد، یعنی الگوهای مختلف از جمله Failed password و Invalid user پوشش داده می‌شوند.

مثال 2: شناسایی حملات Brute Force به FTP (برای vsftpd)

در این مثال، wildcards به شما این امکان را می‌دهند که شناسایی کنید که چندین تلاش برای ورود به FTP با استفاده از فرمت‌های مختلف ممکن است انجام شود.

failregex = 
    ^%(__prefix_line)sFailed login attempt for user .* from <HOST>$
    ^%(__prefix_line)sInvalid login from <HOST>$
    ^%(__prefix_line)s421 Service not available for remote host <HOST>$

در اینجا:

  • .* برای شناسایی هر نام کاربری مختلف و متن‌های مختلفی که در لاگ‌های FTP ممکن است وجود داشته باشد، استفاده می‌شود.
  • . در اینجا برای تطبیق هر کاراکتر در هر نقطه‌ای از متن استفاده می‌شود.

مثال 3: شناسایی تلاش‌های ورود به سیستم از آدرس‌های IP خاص

در این مثال، می‌خواهیم هر IP که چندین تلاش ناموفق انجام داده است را شناسایی کنیم.

failregex = 
    ^%(__prefix_line)sFailed password for .* from <HOST> port .* ssh2$
    ^%(__prefix_line)sAuthentication failure for .* from <HOST>$
    ^%(__prefix_line)sInvalid user .* from <HOST>$

در اینجا:

  • .* می‌تواند هر رشته‌ای از کاراکترها را تطبیق دهد و . می‌تواند هر کاراکتر واحدی را در آدرس IP تطبیق دهد.

4. آیا wildcards در failregex همیشه مناسب است؟

اگرچه wildcards ابزاری قدرتمند برای پوشش انواع مختلف حملات هستند، باید از آن‌ها به دقت استفاده کرد، زیرا استفاده نادرست می‌تواند منجر به false positives (شناسایی اشتباه موارد غیرمخرب) شود. به عنوان مثال، اگر از .* به صورت بیش از حد استفاده کنید، ممکن است برخی از پیام‌های لاگ که اصلاً حملات نیستند، به اشتباه شناسایی شوند.

برای جلوگیری از این مسئله، توصیه می‌شود که:

  1. از wildcards فقط در قسمت‌هایی استفاده کنید که واقعا نیاز به تطبیق متنی متغیر دارند.
  2. از failregex با دقت و مطابق با فرمت دقیق لاگ‌ها استفاده کنید.
  3. از ابزار fail2ban-regex برای آزمایش و اطمینان از صحت regex‌ها پیش از استفاده در تولید استفاده کنید.

جمع‌بندی:

  • استفاده از wildcards در failregex کمک می‌کند تا شناسایی حملات با الگوهای متنوع راحت‌تر شود.
  • wildcards می‌توانند در regex‌های مختلف مانند .* و ? برای شناسایی تلاش‌های ناموفق به کار روند.
  • برای جلوگیری از شناسایی اشتباه‌ها و false positives، باید wildcards را به صورت هدفمند و با دقت به کار برد.

این قابلیت‌ها کمک می‌کنند که Fail2Ban به‌طور موثرتر و دقیق‌تر حملات مختلف را شناسایی کند و سیستم شما را امن‌تر نگه دارد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”پیاده‌سازی فیلترهایی با حساسیت بیشتر برای لاگ‌های پیچیده” subtitle=”توضیحات کامل”]برای شناسایی حملات پیچیده‌تر و جلوگیری از تلاش‌های نفوذ مخرب در سیستم، نیاز است که فیلترهایی با حساسیت بالاتر طراحی و پیاده‌سازی کنیم. این فیلترها باید قادر به شناسایی انواع حملات پیچیده و چندمرحله‌ای باشند که در لاگ‌های پیچیده ظاهر می‌شوند.

1. فیلترهای حساس به تلاش‌های متوالی برای ورود به سیستم

برای شناسایی حملات brute-force در سرویس‌هایی مانند SSH، باید حساسیت بیشتری به زمان و تعداد تلاش‌های ورود ناموفق داشته باشیم. این نوع حملات معمولاً شامل تعداد زیادی درخواست ورود با رمز عبور اشتباه از یک آدرس IP واحد هستند.

نمونه فیلتر SSH با حساسیت بیشتر:

failregex = 
    ^%(__prefix_line)sFailed password for .* from <HOST> port .* ssh2$
    ^%(__prefix_line)sInvalid user .* from <HOST>$
    ^%(__prefix_line)sAuthentication failure for .* from <HOST>$
    ^%(__prefix_line)sReceived disconnect from <HOST> port .*:11: Bye Bye$

در اینجا:

  • حساسیت فیلتر بیشتر شده است چون سعی می‌کنیم ترکیب‌هایی از خطاهای متعدد (مثل “Failed password” و “Authentication failure”) را شناسایی کنیم.
  • با دقت به فیلترهای متن دقیق‌تری مانند “Received disconnect” توجه داریم که به احتمال زیاد مربوط به قطع اتصال پس از تلاش‌های ناموفق مکرر است.

2. شناسایی حملات DDoS (Distributed Denial of Service)

در وب‌سرورها مانند Apache یا Nginx، حملات DDoS معمولاً شامل درخواست‌های زیادی از منابع مختلف (آدرس‌های IP مختلف) به طور هم‌زمان است. برای شناسایی این نوع حملات، باید فیلترهای پیچیده‌تری طراحی کرد که بتوانند تعداد زیاد درخواست‌های مشابه از IPهای مختلف را شناسایی کنند.

نمونه فیلتر DDoS برای Apache:

failregex = 
    ^%(__prefix_line)sclient <HOST> .* request failed: .*$
    ^%(__prefix_line)sclient <HOST> .* too many requests$
    ^%(__prefix_line)sclient <HOST> .* connection reset$

در اینجا:

  • توجه داریم که درخواست‌های زیادی از یک آدرس IP مشخص ممکن است به دلیل حملات DDoS به سیستم ارسال شود. لذا شناسایی تعداد زیاد درخواست‌ها از یک IP خاص می‌تواند به شناسایی حملات کمک کند.
  • فیلترهای دیگری مانند “connection reset” می‌توانند به‌طور خاص برای شناسایی رفتارهای حملات در سطح شبکه و وب‌سرور استفاده شوند.

3. شناسایی تلاش‌های ناموفق ورود به سرویس FTP (vsftpd یا proftpd)

در سرویس‌های FTP، ممکن است حملات brute-force با هدف دسترسی به سرور با استفاده از ترکیب‌های مختلف نام کاربری و رمز عبور انجام شوند. برای شناسایی این تلاش‌ها باید لاگ‌ها را به‌دقت تجزیه و تحلیل کرد.

نمونه فیلتر FTP با حساسیت بیشتر:

failregex = 
    ^%(__prefix_line)sFailed login attempt for user .* from <HOST>$
    ^%(__prefix_line)sLogin attempt by user .* from <HOST>$
    ^%(__prefix_line)s421 Service not available for remote host <HOST>$

در اینجا:

  • فیلترهای حساس‌تر به تلاش‌های متعدد ورود ناموفق به سیستم FTP با استفاده از نام‌های مختلف کاربری طراحی شده‌اند.
  • دقت بیشتری به ثبت تلاش‌های ناموفق در هنگام ورود می‌شود و آن‌ها را از IPهای خاص شناسایی می‌کنیم.

4. شناسایی حملات به سرورهای ایمیل (Postfix, Exim, Dovecot)

برای شناسایی حملات به سرورهای ایمیل، نظیر تلاش‌های brute-force برای دسترسی به حساب‌های ایمیل، باید حساسیت بیشتری نسبت به پیام‌های لاگ و الگوهای ارسال شده توسط مهاجم داشته باشیم.

نمونه فیلتر برای Postfix:

failregex = 
    ^%(__prefix_line)sNOQUEUE: reject: RCPT from <HOST>: 550 .*$
    ^%(__prefix_line)swarning:.*from=<.*@.*> to=<.*> .*$

در اینجا:

  • فیلتر تلاش‌های ناموفق ارسال ایمیل را به‌دقت شناسایی می‌کند.
  • از regex دقیق‌تری برای شناسایی مسدودسازی درخواست‌ها و آدرس‌های غیرمجاز استفاده می‌شود.

5. استفاده از فیلترهای سفارشی برای شناسایی حملات جدید

با توجه به اینکه انواع حملات روز به روز پیچیده‌تر و متنوع‌تر می‌شوند، لازم است که فیلترهای خود را به‌طور مداوم به‌روزرسانی و اصلاح کنید. برای این منظور، می‌توانید از regex سفارشی استفاده کنید که قادر به شناسایی حملات خاص در سیستم شما باشد.

مراحل پیاده‌سازی فیلترهای سفارشی:

  1. تحلیل لاگ‌ها: ابتدا باید لاگ‌های موجود در سیستم را بررسی کنید و الگوهای جدید حملات را شناسایی کنید.
  2. نوشتن failregex: با توجه به الگوهای شناسایی شده، فیلترهای مناسب را طراحی کنید.
  3. تست و ارزیابی: از ابزار fail2ban-regex برای تست صحت regexها و تطابق آن‌ها با لاگ‌های واقعی استفاده کنید.

جمع‌بندی:

  • پیاده‌سازی فیلترهای حساس برای شناسایی حملات پیچیده نیاز به تنظیمات دقیق و تجزیه و تحلیل عمیق لاگ‌ها دارد.
  • با استفاده از regex پیچیده‌تر، می‌توانید تلاش‌های نفوذ به سرویس‌ها را به‌طور مؤثری شناسایی کنید.
  • به روز رسانی و طراحی فیلترهای سفارشی برای حملات جدید، از اهمیت بالایی برخوردار است.

[/cdb_course_lesson][cdb_course_lesson title=”فصل 7. بهینه‌سازی عملکرد فیلترها”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”محدود کردن فیلترها برای بررسی لاگ‌های مربوط به زمان مشخص” subtitle=”توضیحات کامل”]برای بهینه‌سازی عملکرد Fail2Ban و کاهش حجم بررسی‌ها، می‌توانیم فیلترها را به گونه‌ای تنظیم کنیم که فقط لاگ‌های مربوط به یک زمان مشخص را بررسی کنند. این کار به ویژه در سرویس‌های پرحجم که لاگ‌های زیادی تولید می‌کنند، به مدیریت منابع و جلوگیری از ایجاد بار اضافی روی سیستم کمک می‌کند.

1. استفاده از findtime برای محدود کردن زمان بررسی لاگ‌ها

پارامتر findtime در تنظیمات Fail2Ban مشخص می‌کند که تلاش‌های ناموفق در چه بازه زمانی (در واحد ثانیه) بررسی شوند. با تنظیم این گزینه، می‌توانید فقط تلاش‌های ناموفق در یک بازه زمانی مشخص را در نظر بگیرید.

برای مثال، اگر بخواهید بررسی کنید که چند تلاش ناموفق در 15 دقیقه اخیر از یک IP واحد صورت گرفته، می‌توانید findtime را به 900 ثانیه (15 دقیقه) تنظیم کنید:

findtime = 900

این به این معناست که Fail2Ban فقط تلاش‌های ناموفق را در یک بازه زمانی 15 دقیقه‌ای بررسی می‌کند. اگر تعداد تلاش‌های ناموفق از حد مجاز (که با maxretry تعیین شده است) بیشتر شود، Fail2Ban اقدام به مسدودسازی IP می‌کند.

2. استفاده از logpath برای محدود کردن منابع لاگ

با تنظیم صحیح پارامتر logpath می‌توانید مشخص کنید که Fail2Ban فقط به لاگ‌های مرتبط با سرویس‌های خاص (مثلاً SSH، Apache، FTP) دسترسی داشته باشد. در این صورت، از بررسی لاگ‌های غیر ضروری جلوگیری می‌شود.

برای مثال، برای سرویس SSH، ممکن است مسیر لاگ به صورت زیر باشد:

logpath = /var/log/auth.log

این مسیر باعث می‌شود که Fail2Ban فقط لاگ‌های مربوط به سرویس SSH را بررسی کند و سایر لاگ‌ها را نادیده بگیرد.

3. شناسایی زمان دقیق در failregex

برای شناسایی تلاش‌های ناموفق در یک بازه زمانی خاص، می‌توانید از قسمت failregex استفاده کنید. با این کار، می‌توانید دقیقاً الگوهایی را شناسایی کنید که شامل اطلاعات زمانی مشخصی باشند.

برای مثال، اگر می‌خواهید فقط تلاش‌های ناموفق از یک IP خاص در یک زمان معین را شناسایی کنید، می‌توانید از regexهای پیشرفته‌تری استفاده کنید که بخش زمان را هم شامل شوند:

failregex = ^%(__prefix_line)sFailed password for .* from <HOST> port .* ssh2.*\[(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\]$

در اینجا، زمان در قالب YYYY-MM-DD HH:MM:SS شبیه به فرمت رایج در لاگ‌ها در نظر گرفته شده است.

4. محدود کردن مسدودسازی به بازه زمانی خاص

با استفاده از تنظیمات bantime، می‌توانید مدت زمان مسدودسازی IPهایی که حملات ناموفق به سیستم انجام داده‌اند را محدود کنید. این پارامتر می‌تواند برای هر Jail به صورت جداگانه تنظیم شود.

برای مثال، اگر بخواهید که یک IP برای 30 دقیقه مسدود شود، می‌توانید bantime را به 1800 ثانیه (30 دقیقه) تنظیم کنید:

bantime = 1800

این باعث می‌شود که Fail2Ban بعد از تعداد مشخصی تلاش ناموفق، آن IP را برای مدت زمان 30 دقیقه مسدود کند.

5. استفاده از maxretry برای تنظیم تلاش‌های ناموفق

پارامتر maxretry تعداد تلاش‌های ناموفق مجاز قبل از اعمال مسدودسازی را مشخص می‌کند. شما می‌توانید این مقدار را به گونه‌ای تنظیم کنید که فقط در صورت تلاش‌های مکرر از یک IP خاص در مدت زمان مشخص، اقدام به مسدودسازی شود.

برای مثال، اگر می‌خواهید Fail2Ban را تنظیم کنید که پس از 3 تلاش ناموفق در مدت 15 دقیقه، IP را مسدود کند، می‌توانید تنظیمات زیر را اعمال کنید:

maxretry = 3
findtime = 900
bantime = 1800

6. شناسایی الگوهای خاص زمانی در لاگ‌ها

با استفاده از فیلترهای failregex می‌توانید تلاش‌هایی را که در یک زمان خاص رخ داده‌اند، شناسایی کنید. این کار می‌تواند برای شناسایی حملات خاص مانند Brute Force در مدت زمان محدود یا حتی شناسایی حملات در ساعات خاص شبانه‌روز مفید باشد.

جمع‌بندی

محدود کردن فیلترها برای بررسی لاگ‌های مربوط به زمان مشخص باعث می‌شود که Fail2Ban تنها لاگ‌های مرتبط با تلاش‌های ناموفق در یک بازه زمانی خاص را بررسی کند، که این امر به کاهش بار سیستم کمک کرده و دقیق‌تر حملات را شناسایی می‌کند. همچنین، استفاده از پارامترهای findtime, bantime, و maxretry به شما کمک می‌کند که امنیت سیستم را به طور بهینه مدیریت کنید و از مسدودسازی‌های اشتباه جلوگیری کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”کاهش سربار منابع سیستم با تنظیمات دقیق regex” subtitle=”توضیحات کامل”]استفاده بهینه از منابع سیستم برای عملکرد بهتر Fail2Ban و جلوگیری از مصرف بی‌رویه پردازش‌ها و حافظه یکی از جنبه‌های مهم در پیکربندی آن است. یکی از روش‌های اصلی برای کاهش سربار منابع، تنظیم دقیق و بهینه‌ی failregex ها برای شناسایی الگوهای مشکوک در لاگ‌هاست. در اینجا به چند روش برای بهینه‌سازی regexها و کاهش سربار پردازش اشاره می‌کنیم:

1. استفاده از regexهای خاص و دقیق

یک اشتباه رایج در نوشتن regexهای عمومی برای شناسایی حملات، استفاده از الگوهایی بسیار عمومی است که باعث می‌شود هر خط لاگ بررسی شود و در نتیجه عملکرد سیستم کندتر شود. برای مثال، به جای استفاده از regex عمومی مانند:

failregex = .*

که هر خط لاگ را تطبیق می‌دهد، باید regexهایی دقیق و خاص بنویسید که فقط خطوط مرتبط با تلاش‌های ناموفق را شناسایی کند.

برای مثال، یک regex بهینه‌تر برای شناسایی تلاش‌های ناموفق SSH می‌تواند به شکل زیر باشد:

failregex = ^%(__prefix_line)sFailed password for .* from <HOST> port .* ssh2$

این regex فقط خطوط لاگ مربوط به “Failed password” از پورت‌های SSH را شناسایی می‌کند و از بررسی خطوط غیرضروری جلوگیری می‌کند.

2. استفاده از گروه‌ها و الگوهای ساده‌تر

در regexها از گروه‌بندی‌های غیرضروری و پیچیده پرهیز کنید. هر گروه یا الگوی پیچیده‌تر باعث می‌شود که پردازش بیشتری برای تطبیق نیاز باشد. به جای استفاده از الگوهایی که شامل گروه‌بندی‌های متعدد هستند، از نسخه‌های ساده‌تر استفاده کنید.

مثال: به جای نوشتن regexهای پیچیده مانند:

failregex = ^%(__prefix_line)s.*(Failed password|authentication failure).*<HOST>.*$

می‌توانید از نسخه ساده‌تر و دقیق‌تر استفاده کنید:

failregex = ^%(__prefix_line)sFailed password for .* from <HOST>$

این باعث کاهش بار پردازشی می‌شود زیرا به طور خاص تنها تلاش‌های ناموفق را شناسایی می‌کند.

3. استفاده از محدودیت‌های زمانی و مکانی

اگر فیلتر شما برای شناسایی حملات در بازه‌های زمانی خاص یا مکان‌های خاص تنظیم شده باشد، می‌توانید regex خود را محدودتر کنید تا تنها خطوط لاگ مرتبط با آن زمان یا مکان خاص را بررسی کند.

برای مثال، اگر فقط تلاش‌های ناموفق در یک بازه زمانی خاص (مثلاً در طول یک ساعت) مدنظر باشد، می‌توانید regex خود را به شکل زیر تنظیم کنید که تنها خطوط لاگ حاوی تاریخ خاص را شناسایی کند:

failregex = ^%(__prefix_line)sFailed password for .* from <HOST>.*\[(\d{4}-\d{2}-\d{2} \d{2}:\d{2}):00\]$

این regex فقط تلاش‌های ناموفق در ساعت خاصی را شناسایی می‌کند و از شناسایی تلاش‌های ناموفق در ساعات دیگر جلوگیری می‌کند.

4. اجتناب از استفاده از wildcards گسترده

استفاده از wildcards (به ویژه .* در ابتدای regex) می‌تواند باعث کند شدن عملیات تطبیق و بار اضافی روی سیستم شود. در صورتی که نیاز به تطبیق با بخش‌های مشخصی از پیام‌ها دارید، بهتر است که از wildcards حداقلی استفاده کنید.

مثال: به جای نوشتن regex عمومی مانند:

failregex = ^.*Failed.*from.*<HOST>.*$

که همه تلاش‌ها را شبیه‌سازی می‌کند، بهتر است از یک الگوی دقیق‌تر استفاده کنید:

failregex = ^%(__prefix_line)sFailed password for .* from <HOST>$

این الگو دقیق‌تر است و فقط تلاش‌های ناموفق از یک IP خاص را شناسایی می‌کند.

5. استفاده از ignoreregex برای نادیده گرفتن موارد غیر ضروری

برای جلوگیری از بررسی پیام‌های لاگ که نیازی به شناسایی آن‌ها نیست (مانند پیام‌های سیستم یا اطلاعات معمولی که به امنیت سرور مربوط نمی‌شود)، از ignoreregex استفاده کنید. این امر باعث می‌شود که Fail2Ban تنها روی تلاش‌های واقعی حمله تمرکز کند.

مثال:

ignoreregex = ^%(__prefix_line)sAccepted password for .* from <HOST>$

این خط باعث می‌شود که تلاش‌های موفق برای ورود (که در اینجا به SSH مربوط است) نادیده گرفته شوند و فقط تلاش‌های ناموفق بررسی شوند.

6. استفاده از لاگ‌های خاص برای هر سرویس

یکی دیگر از روش‌های بهینه‌سازی استفاده از logpath خاص برای هر سرویس است. به این ترتیب، Fail2Ban فقط لاگ‌های مربوط به سرویس مورد نظر را پردازش می‌کند و از پردازش لاگ‌های غیرضروری جلوگیری می‌شود.

مثال: برای سرویس SSH، می‌توانید از مسیر خاص لاگ‌ها استفاده کنید:

logpath = /var/log/auth.log

این کار باعث می‌شود که Fail2Ban فقط به لاگ‌های مرتبط با SSH توجه کند و از بررسی لاگ‌های دیگر سرویس‌ها پرهیز کند.

جمع‌بندی

با استفاده از تنظیمات دقیق و بهینه regex، می‌توانید سربار پردازشی و استفاده از منابع سیستم را کاهش دهید. استفاده از الگوهای دقیق، اجتناب از wildcards عمومی، و محدود کردن بررسی به لاگ‌های ضروری تنها برخی از روش‌های بهینه‌سازی هستند که می‌توانند تأثیر زیادی در عملکرد Fail2Ban و کاهش بار سیستم داشته باشند. این تنظیمات کمک می‌کنند تا Fail2Ban سریع‌تر و با کمترین مصرف منابع اقدام به شناسایی حملات کند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”مرتب‌سازی و سازمان‌دهی فایل‌های فیلتر برای نگهداری و مدیریت آسان‌تر” subtitle=”توضیحات کامل”]برای اطمینان از عملکرد بهینه و نگهداری راحت‌تر فیلترها در Fail2Ban، سازمان‌دهی صحیح فایل‌ها و فیلترها ضروری است. این امر به شما کمک می‌کند تا به سرعت مشکلات را شناسایی کرده و از ایجاد اختلالات در پیکربندی جلوگیری کنید. در ادامه، روش‌هایی برای مرتب‌سازی و سازمان‌دهی فایل‌های فیلتر برای نگهداری بهتر و مدیریت آسان‌تر آورده شده است.

1. ساختار پوشه‌ای سازمان‌دهی شده

اولین قدم در سازمان‌دهی فایل‌های فیلتر، استفاده از پوشه‌های منطقی است. تمام فایل‌های فیلتر معمولاً در مسیر /etc/fail2ban/filter.d/ قرار دارند، اما می‌توانید ساختار پوشه‌ای برای دسته‌بندی فیلترها ایجاد کنید.

مثال ساختار پوشه‌ای:

/etc/fail2ban/filter.d/
    ├── apache/
    │   ├── apache-badbots.conf
    │   └── apache-404.conf
    ├── nginx/
    │   ├── nginx-http-auth.conf
    │   └── nginx-ddos.conf
    ├── ssh/
    │   └── ssh.conf
    └── custom/
        └── custom-ftp.conf

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

2. نام‌گذاری منطقی فایل‌ها

برای هر فایل فیلتر از نام‌گذاری منطقی و معنادار استفاده کنید. این نام‌ها باید به طور واضح نشان‌دهنده محتوای فایل و کاربرد آن باشند.

  • به عنوان مثال، برای فیلتر مربوط به SSH، از نامی مانند ssh.conf یا ssh-login-failures.conf استفاده کنید.
  • برای فیلتر مربوط به HTTP، نام‌هایی مانند apache-badbots.conf یا nginx-404-errors.conf مناسب هستند.
  • برای فیلترهایی که به نوع خاصی از حملات مربوط می‌شوند، مانند DDoS، از نام‌های خاص‌تر مانند nginx-ddos.conf یا apache-ddos.conf استفاده کنید.

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

3. فایل‌های فیلتر سفارشی در پوشه جداگانه

برای فیلترهای سفارشی که شما به‌طور ویژه برای سازمان خود ایجاد کرده‌اید، بهتر است یک پوشه خاص به نام custom یا مشابه آن ایجاد کنید. این کار به شما کمک می‌کند که فیلترهای سفارشی و پیش‌فرض را از هم جدا کنید و در صورت نیاز به روزرسانی یا حذف فیلترهای خاص، بتوانید به راحتی این کار را انجام دهید.

4. مستندسازی فیلترها

حتماً هر فایل فیلتر را با توضیحات مناسب مستند کنید. برای این کار می‌توانید از بخش توضیحات در بالای هر فایل فیلتر استفاده کنید تا دلایل استفاده از regexها و نحوه عملکرد فیلتر را شرح دهید. این مستندسازی به تیم‌های دیگر کمک می‌کند که به راحتی بفهمند چرا فیلترها به شکلی خاص پیکربندی شده‌اند.

مثال مستندات در بالا یا داخل فایل:

# فیلتر برای شناسایی تلاش‌های ناموفق SSH
# این فیلتر تلاش‌های ناموفق SSH را از لاگ‌های auth.log شناسایی می‌کند
# و IPهایی که بیش از سه بار تلاش ناموفق داشته‌اند را مسدود می‌کند.

این توضیحات باید حاوی اطلاعاتی درباره هدف فیلتر، نحوه تنظیمات و تغییرات سفارشی‌شده باشد.

5. استخراج فیلترهای عمومی و استفاده مجدد

اگر فیلترهایی دارید که در چندین سرویس مشابه استفاده می‌شوند، می‌توانید آن‌ها را در یک فایل فیلتر عمومی قرار دهید و در فایل‌های دیگر آن را فراخوانی کنید. به این ترتیب، می‌توانید تغییرات را تنها یک‌بار اعمال کرده و آن‌ها را برای چندین سرویس به کار ببرید.

مثال: اگر فیلتر مشابهی برای شناسایی تلاش‌های ورود ناموفق در چندین سرویس دارید، می‌توانید یک فایل فیلتر عمومی به نام common-login-failures.conf ایجاد کرده و آن را در فایل‌های فیلتر سرویس‌های مختلف وارد کنید.

[Definition]
failregex = ^%(__prefix_line)sFailed password for .* from <HOST>$

در فایل سرویس‌ها می‌توانید این فیلتر را به‌طور مستقیم فراخوانی کنید:

[apache]
filter = common-login-failures

این روش باعث کاهش تکرار کد و سادگی در مدیریت فیلترها می‌شود.

6. استفاده از تست و بررسی منظم فیلترها

هر چند وقت یک‌بار، فیلترها را با استفاده از ابزار fail2ban-regex تست کنید تا اطمینان حاصل کنید که فیلترها به درستی کار می‌کنند و هیچ مشکلی در پردازش لاگ‌ها ایجاد نمی‌کنند. همچنین، به‌روزرسانی‌های مربوط به سیستم یا تغییرات جدید در برنامه‌ها و سرویس‌ها را در نظر بگیرید و بر اساس آن‌ها فیلترها را به‌روزرسانی کنید.

جمع‌بندی

مرتب‌سازی و سازمان‌دهی فایل‌های فیلتر برای نگهداری و مدیریت آسان‌تر یکی از بخش‌های حیاتی در پیکربندی Fail2Ban است. با استفاده از ساختار پوشه‌ای مناسب، نام‌گذاری دقیق و مستندسازی درست، می‌توانید فیلترها را به شکلی بهینه و قابل‌درک سازمان‌دهی کنید. این روش‌ها باعث می‌شود که مدیریت فیلترها راحت‌تر شده و شما بتوانید به راحتی مشکلات را شناسایی کرده و فیلترهای جدید را به سیستم اضافه کنید.[/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”بخش 5. استفاده از Fail2Ban با Iptables”][cdb_course_lesson title=”فصل 1. مقدمه‌ای بر Iptables و تعامل آن با Fail2Ban”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”توضیح Iptables و نقش آن در مدیریت ترافیک شبکه” subtitle=”توضیحات کامل”]Iptables یکی از ابزارهای قدرتمند فایروال در سیستم‌های لینوکسی است که برای کنترل و مدیریت ترافیک شبکه استفاده می‌شود. این ابزار از قوانین و سیاست‌ها برای فیلتر کردن و مدیریت ترافیک ورودی و خروجی استفاده می‌کند و به مدیران سیستم امکان می‌دهد تا رفتار بسته‌ها را بر اساس معیارهایی نظیر آدرس IP، پورت مقصد، نوع پروتکل و سایر ویژگی‌های ترافیک، کنترل کنند.

مفهوم پایه‌ای Iptables:

Iptables در واقع یک فایروال مبتنی بر بسته است که به طور پیش‌فرض در بیشتر توزیع‌های لینوکس نصب شده و به مدیران سیستم اجازه می‌دهد تا قواعدی برای مسدود کردن، مجاز کردن یا تغییر مسیر بسته‌های داده‌ای که وارد یا از سیستم خارج می‌شوند، تعیین کنند.

این ابزار به وسیله چندین جدول (tables) مختلف عمل می‌کند که هرکدام برای نوع خاصی از ترافیک کاربرد دارند:

  1. Filter Table: این جدول برای مسدودسازی یا مجاز کردن بسته‌های داده‌ای به کار می‌رود و به طور پیش‌فرض برای کنترل ترافیک ورودی، خروجی و انتقالی استفاده می‌شود.
  2. NAT Table: برای ترجمه آدرس شبکه (Network Address Translation) به کار می‌رود و بیشتر در مواقعی که نیاز به تغییر آدرس IP بسته‌ها باشد، استفاده می‌شود.
  3. Mangle Table: برای اصلاح یا تغییر بسته‌ها قبل از رسیدن به مقصد خود استفاده می‌شود.
  4. Raw Table: این جدول به طور عمده برای مدیریت بسته‌های خاص یا بررسی ترافیک قبل از اعمال فیلترها به کار می‌رود.

نقش Iptables در مدیریت ترافیک شبکه:

1. کنترل دسترسی به سیستم: Iptables به شما اجازه می‌دهد تا به طور دقیق مشخص کنید که کدام آدرس‌های IP و پورت‌ها می‌توانند به سیستم شما دسترسی پیدا کنند. برای مثال، می‌توانید دسترسی به پورت SSH را تنها برای یک یا چند آدرس IP خاص محدود کنید و از حملات brute-force جلوگیری کنید.

2. جلوگیری از حملات DDoS: با استفاده از قوانین مناسب در Iptables، می‌توان جلوی حملات Distributed Denial of Service (DDoS) را گرفت. برای مثال، می‌توانید تعداد تلاش‌های اتصال در واحد زمان را محدود کنید تا از بروز حملات درخواست‌های مکرر جلوگیری کنید.

3. تقسیم‌بندی ترافیک و مدیریت آن: Iptables این امکان را فراهم می‌کند که ترافیک شبکه را به صورت دقیق‌تر مدیریت کنید. این قابلیت به ویژه در محیط‌های پیچیده‌تر که چندین سرویس یا سرویس‌دهنده مختلف وجود دارد، مفید است. می‌توانید قوانین متفاوتی برای هر سرویس در نظر بگیرید.

4. نظارت بر ترافیک ورودی و خروجی: Iptables قابلیت‌های نظارتی فوق‌العاده‌ای دارد که به مدیران سیستم این امکان را می‌دهد که ترافیک ورودی و خروجی را ثبت و تجزیه و تحلیل کنند. این ویژگی در تشخیص حملات امنیتی و مدیریت منابع مفید است.

5. مسیریابی ترافیک (Routing): Iptables قادر است که بسته‌های داده‌ای را براساس شرایط مختلف، مسیریابی یا انتقال دهد. به عنوان مثال، می‌توانید ترافیک خاصی را از یک پورت به پورت دیگری هدایت کنید یا ترافیک مربوط به یک پروتکل خاص را مسدود کنید.

جمع‌بندی:

Iptables ابزاری بسیار قوی برای مدیریت ترافیک شبکه است که نقش مهمی در امنیت شبکه ایفا می‌کند. با کمک این ابزار، می‌توان ترافیک را به طور دقیق کنترل کرد، از سیستم در برابر حملات مختلف محافظت نمود و نظارت بر فعالیت‌های شبکه را انجام داد. به طور کلی، Iptables ابزار اساسی برای مدیریت و تنظیم دسترسی به سیستم‌های مبتنی بر لینوکس و نظارت بر ترافیک ورودی و خروجی است.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”نحوه تعامل Fail2Ban با Iptables برای مسدودسازی IP‌های مشکوک” subtitle=”توضیحات کامل”]Fail2Ban و Iptables به طور مشترک می‌توانند برای محافظت از سرور در برابر حملات مختلف، به‌ویژه حملات brute force، به‌کار روند. Iptables به‌عنوان فایروال لینوکسی عمل می‌کند و ترافیک ورودی و خروجی را فیلتر می‌کند، در حالی که Fail2Ban ابزاری برای نظارت بر لاگ‌های سیستم و شناسایی رفتارهای مشکوک و نامطلوب است. وقتی Fail2Ban حمله‌ای را شناسایی می‌کند، از Iptables برای مسدودسازی آدرس IP مهاجم استفاده می‌کند.

مراحل تعامل Fail2Ban با Iptables:

  1. شناسایی تلاش‌های ناموفق در لاگ‌ها: Fail2Ban به صورت مداوم فایل‌های لاگ سیستم را بررسی می‌کند. برای مثال، لاگ‌های SSH یا FTP را تحت نظر دارد تا تلاش‌های ناموفق ورود به سیستم را شناسایی کند.
  2. تطبیق لاگ‌ها با فیلترهای تعریف‌شده: در Fail2Ban، فیلترهایی تعریف می‌شود که الگوهای خاصی را در لاگ‌ها جستجو می‌کنند. این فیلترها معمولاً با استفاده از regular expressions (regex) تنظیم می‌شوند. وقتی یک تلاش ناموفق ورود به سیستم (مثلاً تلاش برای ورود به SSH) بیش از حد تعیین‌شده (maxretry) باشد، Fail2Ban آن IP را مشکوک می‌داند.
  3. اعمال قوانین مسدودسازی توسط Iptables: پس از شناسایی یک IP مشکوک، Fail2Ban از Iptables برای مسدودسازی آن IP استفاده می‌کند. این مسدودسازی معمولاً به مدت زمان مشخصی (bantime) انجام می‌شود تا مهاجم نتواند دوباره تلاش کند. Fail2Ban از دستوراتی مانند iptables -A INPUT -s <IP_ADDRESS> -j DROP استفاده می‌کند تا ترافیک از آن IP خاص را مسدود کند.
  4. مدیریت زمان مسدودسازی با bantime: Fail2Ban یک فیلد به نام bantime دارد که تعیین می‌کند برای چه مدت زمانی IP مشکوک باید مسدود باشد. این مدت زمان می‌تواند به صورت دقیقه، ساعت یا حتی روز تنظیم شود. پس از گذشت زمان تعیین‌شده، IP مسدودشده توسط Fail2Ban دوباره آزاد می‌شود.
  5. رفع مسدودسازی پس از زمان تعیین‌شده: وقتی مدت زمان bantime به پایان رسید، Fail2Ban به طور خودکار IP مسدودشده را از فهرست مسدود شده‌ها حذف می‌کند. این عملیات با استفاده از دستوراتی مانند iptables -D INPUT -s <IP_ADDRESS> -j DROP انجام می‌شود.
  6. پیکربندی‌های سفارشی: Fail2Ban به شما این امکان را می‌دهد که پیکربندی‌های خاصی برای هر سرویس (مثلاً SSH، Apache یا Nginx) انجام دهید و مشخص کنید که کدام سرویس‌ها باید تحت نظارت Fail2Ban باشند. برای هر سرویس، می‌توانید قوانینی برای maxretry، bantime و findtime تنظیم کنید.

جمع‌بندی:

تعامل بین Fail2Ban و Iptables یک روش مؤثر برای محافظت از سرورها در برابر حملات brute force است. Fail2Ban از لاگ‌های سیستم برای شناسایی رفتارهای مشکوک استفاده می‌کند و در صورت شناسایی یک IP مشکوک، از Iptables برای مسدودسازی آن استفاده می‌کند. این سیستم به‌صورت خودکار و با تنظیمات سفارشی، می‌تواند از سرور در برابر بسیاری از حملات محافظت کند و نیاز به مداخله دستی را کاهش دهد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”اهمیت هماهنگی بین Fail2Ban و Iptables برای ایجاد یک سیستم امنیتی قوی” subtitle=”توضیحات کامل”]برای حفظ امنیت سرورها و جلوگیری از حملات مختلف، استفاده از ابزارهای مختلف امنیتی ضروری است. Fail2Ban و Iptables دو ابزار مهم هستند که به‌صورت مکمل عمل می‌کنند. در اینجا اهمیت هماهنگی بین این دو ابزار را بررسی می‌کنیم:

1. ارتباط مستقیم با فایروال و جلوگیری از دسترسی‌های غیرمجاز

Iptables به‌عنوان فایروالی که در سطح شبکه عمل می‌کند، امکان کنترل دسترسی به سیستم از طریق پورت‌ها و آدرس‌های IP مختلف را فراهم می‌آورد. Fail2Ban از این قابلیت بهره‌برداری کرده و با شناسایی IP‌های مشکوک و ایجاد قوانین مسدودسازی در Iptables، از دسترسی‌های غیرمجاز جلوگیری می‌کند. این هماهنگی باعث می‌شود که مهاجمین نتوانند به راحتی از پورت‌ها یا سرویس‌های آسیب‌پذیر سیستم استفاده کنند.

2. مدیریت خودکار مسدودسازی IP‌ها

Fail2Ban به‌طور خودکار تلاش‌های ناموفق و رفتارهای مشکوک را شناسایی کرده و Iptables را برای مسدودسازی IP‌هایی که بیش از حد تلاش کرده‌اند، هدایت می‌کند. این خودکارسازی باعث می‌شود تا تیم امنیتی نیازی به انجام مداخله دستی نداشته باشد. بدین ترتیب، سرعت پاسخ‌دهی به تهدیدات بالا می‌رود و خطر حملات کاهش می‌یابد.

3. پیکربندی سفارشی برای سرویس‌های مختلف

هر سرویس ممکن است نیاز به تنظیمات متفاوتی برای محافظت از خود داشته باشد. Fail2Ban به شما این امکان را می‌دهد که برای هر سرویس، مانند SSH، FTP، وب‌سرورها و ایمیل‌ها، تنظیمات خاصی اعمال کنید و با هماهنگی با Iptables، فقط آدرس‌های IP مرتبط با حملات بر روی آن سرویس‌ها مسدود شوند. این قابلیت به شما این امکان را می‌دهد که به‌طور دقیق‌تر تهدیدات را مدیریت کنید.

4. کاهش حملات و بار سیستم

ترکیب Fail2Ban و Iptables باعث کاهش بار سیستم می‌شود. به‌طور معمول، حملات brute force می‌توانند سیستم را با درخواست‌های ناموفق بارگذاری کنند. با مسدودسازی خودکار IP‌های مهاجم توسط Iptables، Fail2Ban جلوی این تلاش‌ها را می‌گیرد و از مصرف بیش‌ازحد منابع سیستم جلوگیری می‌کند.

5. انعطاف‌پذیری در تنظیمات و مقیاس‌پذیری

با Fail2Ban می‌توان انواع مختلف حملات را شناسایی کرد و برای هر یک، قوانین مسدودسازی متفاوتی را در Iptables پیاده‌سازی کرد. به این ترتیب، اگر یک حمله جدید شناسایی شود، تنظیمات آن به راحتی قابل تغییر و بسط هستند. این انعطاف‌پذیری موجب می‌شود که سیستم امنیتی به سرعت قادر به مقابله با تهدیدات جدید باشد.

6. هماهنگی در زمان مسدودسازی و رفع مسدودسازی IP‌ها

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

جمع‌بندی

هماهنگی صحیح بین Fail2Ban و Iptables به‌عنوان یک لایه امنیتی مکمل، می‌تواند سیستم شما را در برابر حملات مختلف محافظت کند. از شناسایی تلاش‌های غیرمجاز گرفته تا مسدودسازی خودکار IPهای مشکوک و کاهش بار سیستم، این هماهنگی باعث می‌شود که امنیت سرور به طرز مؤثری افزایش یابد.[/cdb_course_lesson][cdb_course_lesson title=”فصل 2. تنظیمات پایه Iptables برای Fail2Ban”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”نصب و فعال‌سازی Iptables بر روی سیستم” subtitle=”توضیحات کامل”]برای ایجاد یک سیستم امنیتی پایدار، استفاده از فایروال مانند Iptables ضروری است. این ابزار برای مسدودسازی و مدیریت ترافیک ورودی و خروجی به سیستم‌ها و شبکه‌ها طراحی شده است. در اینجا نحوه نصب و فعال‌سازی Iptables را در سیستم‌های مختلف توضیح می‌دهیم.

1. نصب Iptables در سیستم‌های مبتنی بر Debian/Ubuntu

در سیستم‌های مبتنی بر Debian یا Ubuntu، معمولاً Iptables به‌طور پیش‌فرض نصب شده است. اما اگر به هر دلیلی نیاز به نصب مجدد آن داشته باشید، مراحل زیر را دنبال کنید:

  1. به‌روزرسانی پکیج‌ها: ابتدا پکیج‌های سیستم خود را به‌روز کنید:
    sudo apt update
    
  2. نصب Iptables: اگر Iptables نصب نشده باشد، آن را با دستور زیر نصب کنید:
    sudo apt install iptables
    
  3. فعال‌سازی و بررسی وضعیت فایروال: برای فعال‌سازی فایروال و بررسی وضعیت آن:
    sudo systemctl start iptables
    sudo systemctl enable iptables
    sudo systemctl status iptables
    

2. نصب Iptables در سیستم‌های مبتنی بر RHEL/CentOS

در سیستم‌های Red Hat Enterprise Linux (RHEL) یا CentOS، مراحل نصب و فعال‌سازی Iptables به شرح زیر است:

  1. نصب Iptables: به‌طور پیش‌فرض Iptables در این سیستم‌ها نصب است، اما اگر به هر دلیلی نصب نباشد، با دستور زیر آن را نصب کنید:
    sudo yum install iptables
    
  2. فعال‌سازی Iptables: پس از نصب، برای فعال‌سازی و بررسی وضعیت Iptables، دستورهای زیر را اجرا کنید:
    sudo systemctl start iptables
    sudo systemctl enable iptables
    sudo systemctl status iptables
    

3. فعال‌سازی و پیکربندی فایروال با Iptables

بعد از نصب و فعال‌سازی Iptables، شما می‌توانید قوانین فایروال را برای کنترل ترافیک شبکه پیکربندی کنید. به‌طور معمول، فایل‌های پیکربندی Iptables به صورت دستی در /etc/iptables/ یا مشابه آن قرار دارند.

4. استفاده از iptables-save و iptables-restore برای ذخیره و بارگذاری قوانین فایروال

  1. ذخیره قوانین فایروال: بعد از تنظیم قوانین، می‌توانید آن‌ها را ذخیره کنید تا بعد از راه‌اندازی مجدد سیستم به‌طور خودکار بارگذاری شوند:
    sudo iptables-save > /etc/iptables/rules.v4
    
  2. بارگذاری قوانین فایروال بعد از راه‌اندازی مجدد: برای بارگذاری قوانین ذخیره‌شده به هنگام راه‌اندازی مجدد، دستور زیر را وارد کنید:
    sudo iptables-restore < /etc/iptables/rules.v4
    

5. پیکربندی فایروال برای شروع خودکار

برای اطمینان از اینکه Iptables بعد از راه‌اندازی سیستم به‌طور خودکار فعال باشد، می‌توانید از دستور زیر برای پیکربندی آن استفاده کنید:

sudo systemctl enable iptables

6. بررسی وضعیت قوانین فایروال

برای بررسی وضعیت و قوانین فعلی Iptables، از دستور زیر استفاده کنید:

sudo iptables -L

این دستور فهرستی از قوانین فایروال فعلی شما را نشان خواهد داد.

جمع‌بندی

نصب و فعال‌سازی Iptables در سیستم‌های لینوکسی یک گام اساسی برای حفاظت از سرور است. با نصب آن و پیکربندی قوانین مناسب، می‌توانید از سرور خود در برابر تهدیدات و حملات مختلف محافظت کنید. پس از نصب و فعال‌سازی، با استفاده از دستوراتی مانند iptables-save و iptables-restore می‌توانید از پیکربندی‌های خود نسخه پشتیبان تهیه کرده و در صورت نیاز آن‌ها را بازگردانید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بررسی تنظیمات پیش‌فرض Iptables در لینوکس” subtitle=”توضیحات کامل”]در لینوکس، Iptables به‌عنوان یک ابزار فایروال برای مدیریت ترافیک ورودی و خروجی به سیستم استفاده می‌شود. تنظیمات پیش‌فرض Iptables معمولاً به‌طور خودکار توسط سیستم‌عامل در هنگام نصب پیکربندی می‌شوند، اما می‌توانند در صورت نیاز تغییر کنند.

1. زنجیره‌های پیش‌فرض (Chains)

Iptables از سه زنجیره اصلی برای مدیریت ترافیک شبکه استفاده می‌کند:

  • INPUT: برای مدیریت ترافیک ورودی به سیستم (پکت‌هایی که به سرور می‌آیند).
  • OUTPUT: برای مدیریت ترافیک خروجی از سیستم (پکت‌هایی که از سرور به بیرون می‌روند).
  • FORWARD: برای مدیریت ترافیک که از طریق سرور عبور می‌کند (در صورتی که سرور به‌عنوان یک روتر یا گیت‌وی باشد).

این زنجیره‌ها به‌طور پیش‌فرض به‌صورت زیر پیکربندی می‌شوند:

Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)

به‌عبارت دیگر، به‌طور پیش‌فرض همه ترافیک‌ها در این زنجیره‌ها پذیرفته می‌شود (پالیسی پیش‌فرض ACCEPT است).

2. قوانین پیش‌فرض (Default Rules)

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

3. محدودیت‌ها و سیاست‌ها (Policies)

  • پالیسی پیش‌فرض INPUT: همان‌طور که گفته شد، پالیسی پیش‌فرض برای زنجیره ورودی ACCEPT است. یعنی تمام پکت‌هایی که وارد سیستم می‌شوند، تا زمانی که قانون خاصی برای آن‌ها تعریف نشده باشد، پذیرفته می‌شوند.
  • پالیسی پیش‌فرض OUTPUT: به‌طور مشابه، پالیسی پیش‌فرض برای زنجیره خروجی هم ACCEPT است.
  • پالیسی پیش‌فرض FORWARD: پالیسی پیش‌فرض برای زنجیره فوروارد نیز ACCEPT است.

این سیاست‌ها به این معنی هستند که در صورت عدم تعریف قوانین خاص برای ترافیک، همه ترافیک‌ها مجاز خواهند بود.

4. پیکربندی به‌صورت دستی

اگر شما می‌خواهید از Iptables برای فیلتر کردن ترافیک استفاده کنید، باید قوانین را به‌طور دستی اضافه کنید. به‌عنوان مثال، اگر می‌خواهید ترافیک ورودی به پورت 22 (SSH) را مسدود کنید، باید این قانون را به‌طور دستی وارد کنید.

مثال:

sudo iptables -A INPUT -p tcp --dport 22 -j DROP

این دستور به‌طور خاص ترافیک ورودی به پورت 22 (SSH) را مسدود می‌کند.

5. ثبت و مشاهده وضعیت قوانین

برای مشاهده قوانین موجود در هر زنجیره از دستور زیر استفاده کنید:

sudo iptables -L

برای مشاهده قوانین به‌طور خاص در یک زنجیره خاص (مثلاً INPUT) می‌توانید از دستور زیر استفاده کنید:

sudo iptables -L INPUT

6. مدیریت قوانین پیش‌فرض

برای تغییر پالیسی پیش‌فرض هر زنجیره از دستور زیر استفاده کنید. به‌طور مثال، اگر می‌خواهید پالیسی پیش‌فرض INPUT را به DROP تغییر دهید (یعنی به‌طور پیش‌فرض همه ترافیک‌های ورودی را مسدود کنید مگر آنکه قانون خاصی برای آن‌ها تعریف کنید):

sudo iptables -P INPUT DROP

به‌طور مشابه، برای تغییر پالیسی پیش‌فرض OUTPUT یا FORWARD نیز می‌توانید از دستور مشابه استفاده کنید.

7. فعال‌سازی یا غیرفعال‌سازی مسدودسازی‌های پیش‌فرض

همچنین می‌توانید برای غیرفعال‌سازی مسدودسازی‌ها یا تعیین استثنا برای برخی سرویس‌ها، از قوانین خاص استفاده کنید. به‌طور پیش‌فرض، اگر هیچ قانون خاصی برای مسدودسازی ترافیک نداشته باشید، تمام ترافیک‌ها مجاز هستند.

8. ذخیره و بارگذاری تنظیمات

در سیستم‌های لینوکس، پس از تنظیم قوانین Iptables، برای ذخیره آن‌ها به‌طور دائمی، باید از دستوراتی مانند iptables-save و iptables-restore استفاده کنید. برای ذخیره قوانین:

sudo iptables-save > /etc/iptables/rules.v4

برای بارگذاری قوانین بعد از راه‌اندازی مجدد سیستم:

sudo iptables-restore < /etc/iptables/rules.v4

جمع‌بندی

تنظیمات پیش‌فرض Iptables در لینوکس به‌طور معمول به‌گونه‌ای است که تمام ترافیک‌ها از هر سه زنجیره ورودی، خروجی و عبوری پذیرفته می‌شود. این تنظیمات به‌طور کلی برای حفظ دسترسی و جلوگیری از مشکلات احتمالی در طول استفاده اولیه از سیستم‌عامل لینوکس طراحی شده است. برای افزایش امنیت، باید قوانین خاصی را برای مسدودسازی حملات یا محدودسازی دسترسی به منابع سیستم تنظیم کرد و پالیسی‌های پیش‌فرض را تغییر داد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”افزودن قوانین اولیه در Iptables برای Fail2Ban” subtitle=”توضیحات کامل”]برای اینکه Fail2Ban بتواند به‌درستی با Iptables برای مسدودسازی آی‌پی‌های مشکوک همکاری کند، باید قوانین اولیه در Iptables تنظیم شوند. این قوانین به Fail2Ban اجازه می‌دهند تا از فایروال (Iptables) برای مسدود کردن آی‌پی‌ها به‌طور خودکار استفاده کند.

در این بخش، نحوه افزودن قوانین اولیه در Iptables برای کارکرد بهتر Fail2Ban توضیح داده می‌شود.

1. فعال‌سازی و راه‌اندازی Iptables

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

sudo systemctl start iptables
sudo systemctl enable iptables

2. افزودن قوانین برای Fail2Ban

برای اینکه Fail2Ban بتواند از Iptables برای مسدودسازی آی‌پی‌ها استفاده کند، باید چند قانون اولیه در Iptables تنظیم کنید. این قوانین معمولاً شامل موارد زیر است:

  • ایجاد یک زنجیره جدید برای Fail2Ban.
  • ایجاد قوانین برای مسدودسازی آی‌پی‌ها در این زنجیره.
  • تغییر قوانین پیش‌فرض برای قبول یا رد ترافیک‌های ورودی.
2.1 ایجاد یک زنجیره جدید برای Fail2Ban

ابتدا یک زنجیره جدید در Iptables ایجاد می‌کنیم که به‌طور خاص برای Fail2Ban طراحی شده است. برای این کار از دستور زیر استفاده کنید:

sudo iptables -N f2b-SSH

در اینجا، f2b-SSH نام زنجیره‌ای است که مخصوص ترافیک SSH خواهد بود.

2.2 اتصال زنجیره جدید به زنجیره اصلی INPUT

سپس، باید این زنجیره جدید را به زنجیره اصلی INPUT وصل کنیم تا بتواند ترافیک ورودی را بررسی کند. برای این کار دستور زیر را وارد کنید:

sudo iptables -A INPUT -p tcp --dport 22 -j f2b-SSH

این دستور به‌طور خاص تمامی درخواست‌های ورودی به پورت SSH (پورت 22) را به زنجیره f2b-SSH هدایت می‌کند.

2.3 افزودن قوانین مسدودسازی به زنجیره جدید

حالا باید قوانینی برای مسدود کردن آی‌پی‌های مشکوک در این زنجیره اضافه کنیم. در اینجا Fail2Ban به‌طور خودکار آی‌پی‌های مشکوک را شناسایی و مسدود می‌کند، اما این قوانین برای ایجاد هماهنگی بین Fail2Ban و Iptables ضروری هستند.

برای مثال، برای مسدودسازی آی‌پی‌هایی که بیش از حد تلاش کرده‌اند به پورت SSH دسترسی پیدا کنند، باید قوانینی مشابه زیر را اضافه کنید:

sudo iptables -A f2b-SSH -s 192.168.1.100 -j DROP

در این مثال، آی‌پی 192.168.1.100 مسدود می‌شود. این قانون توسط Fail2Ban به‌صورت خودکار با توجه به تلاش‌های ناموفق ورود به سیستم اعمال خواهد شد.

2.4 تغییر پالیسی پیش‌فرض برای مسدودسازی ترافیک‌های غیرمجاز

برای مسدودسازی تمام ترافیک‌هایی که توسط Fail2Ban شناسایی و به زنجیره جدید هدایت می‌شوند، می‌توانید پالیسی پیش‌فرض زنجیره INPUT را تغییر دهید. برای مسدودسازی تمام ترافیک‌های ورودی پس از بررسی قوانین، دستور زیر را وارد کنید:

sudo iptables -P INPUT DROP

این دستور همه ترافیک‌های ورودی را مسدود می‌کند، مگر آنکه قوانین خاصی برای اجازه دادن به آن‌ها تعریف شده باشد.

3. ذخیره تغییرات

پس از تنظیم قوانین در Iptables، باید این تغییرات را ذخیره کنید تا در زمان راه‌اندازی مجدد سیستم، تغییرات حفظ شوند. برای ذخیره قوانین Iptables در سیستم‌های مبتنی بر Debian/Ubuntu از دستور زیر استفاده کنید:

sudo iptables-save > /etc/iptables/rules.v4

برای سیستم‌های مبتنی بر RHEL/CentOS، دستور زیر را وارد کنید:

sudo service iptables save

4. تست قوانین و همکاری با Fail2Ban

برای تست صحت عملکرد Fail2Ban و Iptables، می‌توانید از دستور fail2ban-client برای مشاهده وضعیت Jail‌ها استفاده کنید:

sudo fail2ban-client status

همچنین، می‌توانید از دستور زیر برای مشاهده آی‌پی‌هایی که توسط Fail2Ban مسدود شده‌اند استفاده کنید:

sudo fail2ban-client get <jail-name> banip

جمع‌بندی

افزودن قوانین اولیه در Iptables برای Fail2Ban ضروری است تا این ابزار بتواند به‌درستی با فایروال همکاری کند و آی‌پی‌های مشکوک را مسدود نماید. این قوانین شامل ایجاد زنجیره‌های خاص برای سرویس‌های مختلف (مانند SSH)، اتصال آن‌ها به زنجیره‌های اصلی، و افزودن قوانین مسدودسازی آی‌پی‌ها است. همچنین، برای حفظ این تنظیمات پس از راه‌اندازی مجدد سیستم، باید تغییرات را ذخیره کنید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 3. پیکربندی Fail2Ban برای استفاده از Iptables”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بررسی فایل‌های پیکربندی مرتبط: jail.local و jail.conf” subtitle=”توضیحات کامل”]در Fail2Ban، فایل‌های پیکربندی مختلفی برای تنظیم نحوه عملکرد Jail‌ها و فیلترها وجود دارند. از مهم‌ترین این فایل‌ها می‌توان به jail.conf و jail.local اشاره کرد که در ادامه به بررسی هرکدام و تفاوت‌های آن‌ها خواهیم پرداخت.

1. فایل jail.conf

فایل jail.conf فایل اصلی پیکربندی Fail2Ban است که شامل تنظیمات پیش‌فرض و تعاریف Jail‌ها برای سرویس‌های مختلف (مانند SSH، FTP، HTTP) می‌باشد. این فایل به‌طور خودکار توسط Fail2Ban برای پیکربندی اولیه استفاده می‌شود.

  • محتویات این فایل شامل:
    • تعریف Jail‌ها برای سرویس‌های مختلف
    • تنظیمات پیش‌فرض فیلتر‌ها
    • تنظیمات مربوط به iptables یا فایروال‌ها برای مسدودسازی آی‌پی‌ها
    • تنظیمات عمومی مانند زمان‌بندی‌ها، تعداد تلاش‌های مجاز و مدت زمان بلاک

توجه: تغییرات مستقیم در فایل jail.conf توصیه نمی‌شود، زیرا اگر Fail2Ban به‌روزرسانی شود، این فایل ممکن است بازنویسی گردد و تغییرات شما از دست بروند.

2. فایل jail.local

برای جلوگیری از بازنویسی تنظیمات در jail.conf، Fail2Ban به شما امکان می‌دهد تا تنظیمات خود را در فایل jail.local قرار دهید. این فایل مخصوص تنظیمات سفارشی است که شما برای پیکربندی Jail‌ها و سایر تنظیمات نیاز دارید. تغییرات در jail.local همیشه اولویت دارند و در صورت وجود، تنظیمات موجود در jail.conf را لغو خواهند کرد.

  • محتویات این فایل شامل:
    • تنظیمات خاص برای Jail‌های مختلف
    • تنظیمات سفارشی مانند bantime، findtime، maxretry و سایر پارامترهای مرتبط با مسدودسازی
    • تغییرات مربوط به فیلتر‌ها و قوانین مربوط به هر سرویس
    • محدود کردن دسترسی‌های خاص برای IP‌های مشخص
    • تعریف پیام‌های هشدار و اقداماتی که باید انجام شوند

نکته: jail.local به‌طور معمول برای تنظیمات خاص و سفارشی به کار می‌رود و تغییرات در آن تأثیر فوری دارند.

3. تفاوت‌های کلیدی بین jail.conf و jail.local

  • محتوا و هدف:
    • jail.conf شامل تنظیمات پیش‌فرض است که توسط Fail2Ban برای همه سرویس‌ها استفاده می‌شود.
    • jail.local برای تعریف تنظیمات سفارشی و خاص برای هر سرور یا محیط استفاده می‌شود.
  • اولویت:
    • در صورت وجود jail.local، تنظیمات آن اولویت دارند و بر تنظیمات موجود در jail.conf تأثیر می‌گذارند.
  • توصیه‌ها:
    • تغییرات باید در jail.local انجام شود، چرا که تغییرات در jail.conf می‌تواند در هنگام بروزرسانی Fail2Ban از بین برود.

4. ساختار و نحوه تنظیمات در jail.local

در فایل jail.local، شما می‌توانید هر Jail خاص را به‌طور جداگانه تنظیم کنید. برای مثال، برای تنظیم Jail مربوط به SSH، می‌توانید تنظیمات مشابه زیر را اعمال کنید:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
bantime = 600
findtime = 600
maxretry = 3

در اینجا:

  • enabled: فعال بودن Jail برای SSH را تعیین می‌کند.
  • port: پورت موردنظر برای نظارت (در اینجا پورت SSH).
  • filter: فیلتر مربوطه که به sshd اختصاص داده شده است.
  • logpath: مسیر لاگ که Fail2Ban باید آن را برای تلاش‌های ناموفق جستجو کند.
  • bantime: مدت زمان مسدودسازی آی‌پی‌ها (در اینجا ۱۰ دقیقه).
  • findtime: مدت زمانی که Fail2Ban تلاش‌های ناموفق را بررسی می‌کند.
  • maxretry: حداکثر تعداد تلاش‌های ناموفق قبل از مسدودسازی.

5. نحوه اعمال تغییرات

پس از ویرایش jail.local، برای اعمال تغییرات و اطمینان از اعمال صحیح تنظیمات، باید سرویس Fail2Ban را مجدداً راه‌اندازی کنید:

sudo systemctl restart fail2ban

برای بررسی وضعیت Jail‌ها نیز می‌توانید از دستور زیر استفاده کنید:

sudo fail2ban-client status

جمع‌بندی

jail.conf در Fail2Ba فایل پیکربندی پیش‌فرض است که تنظیمات عمومی و اولیه را برای Jail‌ها و فیلترها مشخص می‌کند، در حالی که jail.local برای تنظیمات سفارشی و جلوگیری از بازنویسی تنظیمات در هنگام بروزرسانی نرم‌افزار به کار می‌رود. توصیه می‌شود تنظیمات سفارشی و تغییرات خاص را در jail.local اعمال کنید تا تنظیمات شما حفظ شود.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تعریف فیلترها و Jail‌ها برای سرویس‌های مختلف با استفاده از Iptables ” subtitle=”توضیحات کامل”]در Fail2Ban، فیلترها و Jail‌ها برای نظارت بر تلاش‌های ناموفق در سرویس‌های مختلف و مسدودسازی آدرس‌های IP مشکوک استفاده می‌شوند. Iptables به‌عنوان ابزاری برای مسدودسازی ترافیک شبکه در سطح فایروال، به Fail2Ban این امکان را می‌دهد که درخواست‌های ناموفق را شناسایی کرده و سپس اقدام به مسدودسازی IP‌های مشکوک کند. در اینجا، به توضیح نحوه تعریف فیلترها و Jail‌ها برای سرویس‌های مختلف با استفاده از Iptables خواهیم پرداخت.

1. فیلترها در Fail2Ban

فیلترها در Fail2Ban مسئول شناسایی الگوهای حملات و تلاش‌های ناموفق از طریق لاگ‌های سرویس‌ها هستند. این فیلترها با استفاده از regex (عبارات منظم) تنظیم می‌شوند تا خطوط خاصی را در لاگ‌ها شناسایی کنند که نشان‌دهنده تلاش‌های مشکوک برای نفوذ به سیستم هستند.

ساختار فایل‌های فیلتر:

فیلترها در مسیر /etc/fail2ban/filter.d/ قرار دارند و شامل فیلترهای مختلف برای سرویس‌های رایج مانند SSH، FTP، Apache و غیره هستند. این فایل‌ها معمولاً از دو بخش اصلی تشکیل می‌شوند:

  • failregex: شامل عبارات منظم برای شناسایی تلاش‌های مشکوک در لاگ‌ها.
  • ignoreregex: شامل عبارات منظم برای نادیده گرفتن برخی پیام‌های لاگ که ممکن است به اشتباه به‌عنوان تلاش‌های حمله شناسایی شوند.
نمونه فیلتر برای SSH (sshd.conf):
[Definition]
failregex = ^%(__prefix_line)sFailed password for.* from <HOST> port \d+ ssh2
ignoreregex =

در اینجا:

  • failregex: به دنبال پیام‌های خاصی در لاگ می‌گردد که حاکی از تلاش‌های ناموفق برای ورود به SSH است.
  • : نشان‌دهنده آی‌پی است که درخواست از آن آمده است.

2. تعریف Jail‌ها برای سرویس‌ها

Jail‌ها در Fail2Ban مجموعه‌ای از تنظیمات هستند که برای نظارت و مسدودسازی تلاش‌های ناموفق در سرویس‌های خاص استفاده می‌شوند. هر Jail یک سرویس خاص را هدف قرار می‌دهد و به‌طور مستقیم با فیلترها و قوانین فایروال (مانند Iptables) در ارتباط است.

ساختار فایل Jail:

در Fail2Ban، فایل‌های Jail معمولاً در /etc/fail2ban/jail.local یا /etc/fail2ban/jail.conf قرار دارند. در این فایل‌ها، تنظیمات هر Jail به‌طور جداگانه برای سرویس‌های مختلف تعریف می‌شوند.

نمونه تنظیم Jail برای SSH در jail.local:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
bantime = 600
findtime = 600
maxretry = 3

در اینجا:

  • enabled: Jail را برای SSH فعال می‌کند.
  • port: پورت سرویس SSH.
  • filter: فیلتر مربوط به SSH که باید از filter.d/sshd.conf بارگذاری شود.
  • logpath: مسیر لاگ SSH.
  • bantime: مدت زمان مسدودسازی IP پس از بیش از حد تلاش ناموفق.
  • findtime: بازه زمانی که تلاش‌های ناموفق بررسی می‌شوند.
  • maxretry: حداکثر تعداد تلاش‌های ناموفق پیش از مسدودسازی IP.

3. ارتباط Jail با Iptables

یکی از ویژگی‌های اصلی Fail2Ban استفاده از Iptables برای مسدودسازی IP‌های مشکوک است. پس از شناسایی یک تلاش مشکوک از طریق فیلتر، Fail2Ban می‌تواند با استفاده از دستور Iptables، ترافیک ورودی از IP مشکوک را مسدود کند.

تنظیمات مرتبط با Iptables در Fail2Ban:

در فایل‌های Jail، می‌توان تعیین کرد که Fail2Ban از Iptables برای مسدودسازی استفاده کند. به‌طور پیش‌فرض، Fail2Ban از iptables-multiport به‌عنوان اکشن مسدودسازی استفاده می‌کند.

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
action = iptables-multiport[name=SSH, port="ssh"]
bantime = 600
findtime = 600
maxretry = 3

در اینجا:

  • action = iptables-multiport: این اکشن از Iptables برای مسدودسازی آی‌پی‌ها استفاده می‌کند.
  • name=SSH: نام Jail.
  • port=”ssh”: پورت مربوط به SSH.

4. نحوه کار Fail2Ban با Iptables

زمانی که Fail2Ban یک تلاش مشکوک را شناسایی کند (مثلاً یک تلاش ناموفق برای ورود به SSH)، آن را به‌طور خودکار مسدود می‌کند. این کار با استفاده از Iptables و فرمان‌هایی مانند زیر انجام می‌شود:

iptables -A INPUT -s <IP_ADDRESS> -j DROP

این دستور باعث می‌شود تا درخواست‌ها از IP_ADDRESS مسدود شوند.

5. بررسی وضعیت Jail‌ها با استفاده از fail2ban-client

پس از پیکربندی Jail‌ها و فیلترها، می‌توان با استفاده از دستور fail2ban-client وضعیت Jail‌ها را بررسی کرد. این دستور می‌تواند به شما کمک کند تا ببینید آیا Jail‌ها به‌درستی کار می‌کنند و آیا آی‌پی‌های مشکوک مسدود شده‌اند یا خیر.

برای بررسی وضعیت کلی:

sudo fail2ban-client status

برای بررسی وضعیت Jail خاص:

sudo fail2ban-client status sshd

جمع‌بندی

در Fail2Ban، فیلترها مسئول شناسایی تلاش‌های مشکوک در لاگ‌ها هستند و Jail‌ها مجموعه‌ای از تنظیمات برای مسدودسازی IP‌های مشکوک در سرویس‌های مختلف می‌باشند. Fail2Ban از Iptables برای مسدودسازی ترافیک شبکه از آی‌پی‌های مشکوک استفاده می‌کند، که این ترکیب باعث می‌شود تا امنیت سرور در برابر حملات مختلف به‌ویژه حملات brute force به‌شدت افزایش یابد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تنظیم Ban Action به عنوان iptables-multiport یا iptables-allports ” subtitle=”توضیحات کامل”]در Fail2Ban، اقداماتی که برای مسدودسازی IP‌ها انجام می‌شود، تحت عنوان Actions تعریف می‌شوند. یکی از مهم‌ترین بخش‌های این اقدامات، استفاده از iptables برای مسدودسازی ترافیک مشکوک از IP‌های آسیب‌دیده است. Fail2Ban این قابلیت را دارد که مسدودسازی‌ها را با استفاده از چندین روش مختلف انجام دهد که شامل استفاده از iptables-multiport و iptables-allports برای تنظیمات دقیق‌تر مسدودسازی ترافیک می‌شود.

1. iptables-multiport

عملکرد iptables-multiport این است که اجازه می‌دهد ترافیک از یک IP خاص را فقط برای پورت‌های خاصی مسدود کند. این کار برای زمانی مفید است که بخواهید ترافیک از یک IP را تنها برای سرویس‌هایی خاص مانند SSH، HTTP، FTP و غیره مسدود کنید.

نحوه استفاده از iptables-multiport

برای استفاده از iptables-multiport، باید تنظیمات Jail مربوطه را در فایل jail.local به‌گونه‌ای تنظیم کنید که از این اکشن برای مسدودسازی استفاده کند.

نمونه تنظیمات در jail.local:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
action = iptables-multiport[name=SSH, port="ssh"]
bantime = 600
findtime = 600
maxretry = 3

در اینجا:

  • action = iptables-multiport: مسدودسازی IP با استفاده از iptables برای پورت‌های مشخص شده.
  • port=”ssh”: این پیکربندی به‌طور خاص ترافیک ورودی به پورت SSH را مسدود می‌کند.

2. iptables-allports

در صورتی که بخواهید ترافیک از یک IP خاص را برای تمام پورت‌ها مسدود کنید (یعنی مسدودسازی عمومی برای همه سرویس‌ها و پورت‌ها)، باید از iptables-allports استفاده کنید. این نوع مسدودسازی زمانی مفید است که بخواهید از دسترسی به تمام سرویس‌های سرور از یک IP خاص جلوگیری کنید.

نحوه استفاده از iptables-allports

برای استفاده از iptables-allports، باید در فایل jail.local تنظیمات را به‌گونه‌ای تنظیم کنید که از این اکشن برای مسدودسازی استفاده کند.

نمونه تنظیمات در jail.local:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
action = iptables-allports[name=SSH, port="ssh"]
bantime = 600
findtime = 600
maxretry = 3

در اینجا:

  • action = iptables-allports: مسدودسازی IP با استفاده از iptables برای تمام پورت‌ها.
  • port=”ssh”: این پیکربندی به‌طور خاص ترافیک ورودی به پورت SSH را مسدود می‌کند، اما به‌طور کلی ترافیک برای تمام پورت‌ها نیز مسدود خواهد شد.

3. مقایسه بین iptables-multiport و iptables-allports

ویژگی iptables-multiport iptables-allports
هدف مسدودسازی IP برای پورت‌های خاص مسدودسازی IP برای تمام پورت‌ها
کاربرد زمانی که فقط بخواهید ترافیک برای سرویس‌های خاص (مثل SSH) مسدود شود زمانی که می‌خواهید دسترسی به تمامی سرویس‌ها را مسدود کنید
انعطاف‌پذیری بیشتر برای تنظیمات خاص و دقیق‌تر ساده‌تر و عمومی‌تر
پیکربندی نیاز به تعیین پورت‌ها برای مسدودسازی مسدودسازی همه پورت‌ها به‌طور پیش‌فرض

4. تست و نظارت

برای بررسی اینکه آیا Fail2Ban به‌درستی از iptables-multiport یا iptables-allports برای مسدودسازی استفاده می‌کند یا نه، می‌توان از دستورات زیر استفاده کرد:

برای بررسی وضعیت Jail:

sudo fail2ban-client status sshd

برای مشاهده قوانین iptables:

sudo iptables -L

با این دستورات، می‌توانید وضعیت Jail‌ها و قوانین iptables مربوط به Fail2Ban را بررسی کرده و از صحت عملکرد مسدودسازی مطمئن شوید.

جمع‌بندی

استفاده از iptables-multiport یا iptables-allports در Fail2Ban بستگی به نیاز امنیتی شما دارد. اگر قصد دارید که تنها پورت‌های خاصی را مسدود کنید، استفاده از iptables-multiport بهترین گزینه است. اما اگر نیاز به مسدودسازی ترافیک برای تمام پورت‌ها از یک IP خاص دارید، استفاده از iptables-allports مناسب‌تر است.[/cdb_course_lesson][cdb_course_lesson title=”فصل 4. قوانین مسدود سازی در Iptables”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”نحوه تعریف قوانین مسدودسازی IP‌های مشکوک با استفاده از Fail2Ban و Iptables” subtitle=”توضیحات کامل”]در اینجا به شما نشان خواهیم داد که چگونه می‌توانید با استفاده از Fail2Ban و Iptables، قوانین مسدودسازی IP‌های مشکوک را برای محافظت از سرور خود تنظیم کنید. Fail2Ban ابزاری است که از لاگ‌های سیستم برای شناسایی حملات و تلاش‌های ناموفق ورود به سیستم استفاده کرده و سپس IP‌های مهاجم را مسدود می‌کند. برای اعمال این مسدودسازی‌ها، Fail2Ban به طور پیش‌فرض از iptables برای اعمال قوانین فایروال استفاده می‌کند.

1. پیکربندی Fail2Ban برای مسدودسازی IP‌های مشکوک

برای مسدودسازی IP‌های مشکوک، ابتدا باید Fail2Ban را به درستی پیکربندی کنید تا از فایل‌های لاگ سیستم (مانند /var/log/auth.log برای SSH) به‌طور مرتب خوانده شود و حملات را شناسایی کند. پس از شناسایی یک حمله، Fail2Ban با استفاده از Iptables قوانینی را برای مسدود کردن IP موردنظر اعمال می‌کند.

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

  1. پیکربندی Jail برای سرویس‌های خاص: در ابتدا باید Jail‌ها را برای سرویس‌هایی که می‌خواهید تحت نظارت Fail2Ban قرار بگیرند، پیکربندی کنید. مثلاً، برای پیکربندی SSH، در فایل jail.local موارد زیر را تنظیم می‌کنید.

    نمونه پیکربندی برای SSH در jail.local:

    [sshd]
    enabled  = true
    port     = ssh
    filter   = sshd
    logpath  = /var/log/auth.log
    maxretry = 3
    bantime  = 600
    findtime = 600
    action   = iptables-multiport[name=SSH, port="ssh"]
    

    در اینجا:

    • enabled: Jail را فعال می‌کند.
    • port: پورت موردنظر (در اینجا پورت SSH).
    • filter: فیلتر مربوط به سرویس (در اینجا فیلتر SSH).
    • logpath: مسیر فایل لاگ که Fail2Ban باید آن را برای شناسایی تلاش‌های ناموفق بررسی کند.
    • maxretry: تعداد تلاش‌های ناموفق مجاز قبل از مسدودسازی IP.
    • bantime: مدت زمانی که IP مسدود خواهد ماند.
    • action: اقداماتی که پس از شناسایی حمله باید انجام شود (در اینجا استفاده از iptables-multiport برای مسدودسازی IP برای پورت‌های خاص).
  2. تنظیم Action برای مسدودسازی IP با استفاده از Iptables برای هر Jail، شما می‌توانید action را تنظیم کنید تا پس از شناسایی IP‌های مشکوک، Fail2Ban قوانینی را در iptables اضافه کند. action می‌تواند به صورت زیر باشد:
    • iptables-multiport: مسدودسازی ترافیک از IP برای پورت‌های خاص.
    • iptables-allports: مسدودسازی ترافیک از IP برای تمام پورت‌ها.

    برای مثال:

    action = iptables-multiport[name=SSH, port="ssh"]
    

2. پیکربندی Iptables برای مسدودسازی IP‌ها

اگر قوانین فایروال به درستی پیکربندی نشده باشند، Fail2Ban قادر نخواهد بود که از آنها برای مسدودسازی IP‌های مشکوک استفاده کند. بنابراین باید اطمینان حاصل کنید که Iptables به درستی بر روی سیستم فعال شده است.

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

  1. بررسی وضعیت Iptables: ابتدا باید بررسی کنید که آیا Iptables بر روی سیستم شما فعال است یا خیر. برای بررسی وضعیت آن، دستور زیر را وارد کنید:
    sudo systemctl status iptables
    

    اگر Iptables فعال نباشد، باید آن را فعال کنید.

  2. تعریف قوانین ابتدایی در Iptables: برای اینکه Fail2Ban بتواند IP‌ها را مسدود کند، باید قوانین اولیه را در iptables تعریف کنید. یکی از این قوانین، اجازه دادن به ترافیک از IP‌های مجاز (whitelist) است، و قوانین دیگر برای مسدودسازی IP‌های مهاجم.

    برای مثال، دستور زیر ترافیک به پورت SSH (پورت 22) را اجازه می‌دهد و سایر درخواست‌ها را مسدود می‌کند:

    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    sudo iptables -A INPUT -p tcp --dport 22 -j DROP
    
  3. بررسی قوانین فایروال پس از تنظیم Fail2Ban: پس از پیکربندی Fail2Ban و Iptables، می‌توانید با استفاده از دستور زیر، قوانین فایروال را بررسی کنید:
    sudo iptables -L
    

    این دستور تمام قوانین فایروال جاری را نمایش می‌دهد و شما می‌توانید ببینید که Fail2Ban چه قوانینی را برای مسدودسازی IP‌ها اعمال کرده است.

3. رفع مشکلات احتمالی و عیب‌یابی

  1. بررسی لاگ‌ها: اگر Fail2Ban قادر به مسدودسازی IP‌ها نیست، ممکن است لازم باشد لاگ‌ها را بررسی کنید. فایل‌های لاگ مربوط به Fail2Ban معمولاً در مسیر /var/log/fail2ban.log قرار دارند.

    برای مشاهده لاگ‌ها:

    tail -f /var/log/fail2ban.log
    
  2. بررسی قوانین مسدودسازی IP: برای بررسی اینکه آیا IP خاصی مسدود شده است یا خیر، می‌توانید دستور زیر را اجرا کنید:
    sudo iptables -L -v
    

    این دستور تعداد بسته‌هایی که از هر قانون عبور کرده‌اند را نمایش می‌دهد و می‌توانید ببینید که آیا IP‌ها مسدود شده‌اند یا خیر.

جمع‌بندی

با استفاده از Fail2Ban و Iptables می‌توانید به راحتی قوانینی برای مسدودسازی IP‌های مشکوک ایجاد کنید. Fail2Ban با بررسی لاگ‌های سیستم و شناسایی حملات، IP‌های آسیب‌دیده را شناسایی کرده و به‌طور خودکار آنها را با استفاده از قوانین iptables مسدود می‌کند. این کار به طور موثر از سرور شما در برابر حملات brute-force و سایر تهدیدات حفاظت می‌کند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”افزودن آدرس‌های مسدود شده به Chain‌های سفارشی در Iptables” subtitle=”توضیحات کامل”]در اینجا به شما نحوه افزودن آدرس‌های IP مسدود شده به Chain‌های سفارشی در Iptables را توضیح می‌دهیم. این روش به شما کمک می‌کند که از مدیریت دقیق‌تری برای IP‌های مسدود شده و نظارت بر وضعیت فایروال بهره ببرید.

1. مفهوم Chain‌های سفارشی در Iptables

در Iptables، Chain‌ها به مجموعه‌ای از قوانین اطلاق می‌شوند که تعیین می‌کنند بسته‌ها چگونه باید در سیستم پردازش شوند. به طور پیش‌فرض، Iptables چندین Chain از پیش تعریف‌شده دارد، مانند:

  • INPUT: بسته‌هایی که به سیستم شما وارد می‌شوند.
  • OUTPUT: بسته‌هایی که از سیستم شما خارج می‌شوند.
  • FORWARD: بسته‌هایی که از یک رابط به رابط دیگر می‌روند.

اما شما می‌توانید Chain‌های سفارشی برای کنترل دقیق‌تر بر مسدودسازی IP‌ها یا اعمال قوانین خاص ایجاد کنید.

2. ایجاد یک Chain سفارشی

ابتدا باید یک Chain سفارشی ایجاد کنید که بتوانید آدرس‌های IP مسدود شده را به آن اضافه کنید.

برای ایجاد یک Chain سفارشی به نام blocked دستور زیر را وارد کنید:

sudo iptables -N blocked

این دستور یک Chain جدید به نام blocked می‌سازد که در آن می‌توانید آدرس‌های IP مسدود شده را ذخیره کنید.

3. افزودن آدرس‌های مسدود شده به Chain سفارشی

پس از ایجاد Chain سفارشی، می‌توانید قوانین مربوط به مسدودسازی آدرس‌های IP را به آن اضافه کنید. برای مثال، اگر بخواهید یک آدرس IP را مسدود کنید، از دستور زیر استفاده کنید:

sudo iptables -A blocked -s <IP_ADDRESS> -j DROP

در این دستور:

  • -A blocked: به Chain سفارشی blocked اضافه می‌کند.
  • -s <IP_ADDRESS>: مشخص می‌کند که IP مسدود شده، <IP_ADDRESS> باشد.
  • -j DROP: به معنای مسدود کردن بسته‌ها از این آدرس IP است.

4. انتقال Chain سفارشی به Chain اصلی

پس از اضافه کردن قوانین به Chain سفارشی، شما باید این Chain را به Chain اصلی اضافه کنید تا قوانین اعمال شوند. برای مثال، برای اضافه کردن Chain سفارشی به Chain INPUT، دستور زیر را وارد کنید:

sudo iptables -A INPUT -j blocked

این دستور به Chain INPUT، Chain سفارشی blocked را اضافه می‌کند. به این ترتیب، هر بسته‌ای که وارد سیستم می‌شود ابتدا بررسی می‌شود و در صورت تطابق با IP‌های مسدود شده، مسدود خواهد شد.

5. بررسی قوانین مسدودسازی

برای بررسی قوانین فعلی Iptables و مشاهده وضعیت Chain‌های سفارشی و قوانین موجود، می‌توانید دستور زیر را وارد کنید:

sudo iptables -L

این دستور تمام قوانین موجود در Iptables و Chain‌های مختلف را نمایش می‌دهد. شما می‌توانید ببینید که آدرس‌های IP مسدود شده به Chain سفارشی شما اضافه شده‌اند.

6. حفظ تنظیمات پس از راه‌اندازی مجدد سیستم

به طور پیش‌فرض، پس از راه‌اندازی مجدد سیستم، تنظیمات Iptables شما از بین می‌روند. برای حفظ تنظیمات پس از راه‌اندازی مجدد سیستم، می‌توانید قوانین را ذخیره کرده و آنها را بارگذاری کنید.

برای ذخیره تنظیمات Iptables در سیستم‌های مبتنی بر Debian/Ubuntu، از دستور زیر استفاده کنید:

sudo iptables-save > /etc/iptables/rules.v4

در سیستم‌های مبتنی بر RHEL/CentOS، از دستور زیر استفاده کنید:

sudo service iptables save

این دستورات تنظیمات Iptables را ذخیره کرده و باعث می‌شود که پس از راه‌اندازی مجدد سیستم، این تنظیمات به طور خودکار بارگذاری شوند.

جمع‌بندی

با استفاده از Chain‌های سفارشی در Iptables می‌توانید کنترل دقیق‌تری بر روی مسدودسازی آدرس‌های IP مشکوک داشته باشید. این روش به شما این امکان را می‌دهد که قوانین را بر اساس نیازهای خاص خود تعریف کنید و به راحتی آنها را مدیریت کنید. پس از تعریف این قوانین، می‌توانید آنها را ذخیره کرده تا پس از هر راه‌اندازی مجدد سیستم، تنظیمات حفظ شوند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تست مسدودسازی و بررسی عملکرد قوانین” subtitle=”توضیحات کامل”]برای اطمینان از عملکرد صحیح قوانین مسدودسازی در Iptables، می‌توانید چندین تست انجام دهید. در اینجا نحوه تست مسدودسازی IP‌ها و بررسی عملکرد قوانین آورده شده است.

1. تست مسدودسازی یک آدرس IP

برای تست قوانین مسدودسازی، ابتدا باید یک آدرس IP را به لیست مسدود شده اضافه کنید. فرض کنید که شما یک آدرس IP مشخص را به Chain سفارشی blocked اضافه کرده‌اید. اکنون می‌توانید از ابزاری مانند ping یا ssh برای تلاش به اتصال از این IP به سرور استفاده کنید.

مراحل تست:

  • از یک سیستم دیگر با آدرس IP مورد نظر، تلاش کنید که به سرور شما ping بزنید:
ping <Server_IP>

اگر IP مسدود شده باشد، پاسخ نخواهید گرفت و پیام‌هایی شبیه به زیر مشاهده خواهید کرد:

Request timeout for icmp_seq 1
  • همچنین، می‌توانید تلاش کنید که از این IP به سرور SSH متصل شوید (اگر SSH مسدود شده باشد):
ssh user@<Server_IP>

این اتصال باید مسدود شده و شما با خطای Connection Refused یا Connection Timeout مواجه شوید.

2. بررسی وضعیت قوانین مسدودسازی

برای بررسی وضعیت قوانین مسدودسازی در Iptables، از دستور زیر استفاده کنید:

sudo iptables -L -v

این دستور قوانین موجود در Iptables را با جزئیات نمایش می‌دهد. شما می‌توانید در اینجا مشاهده کنید که آدرس‌های IP مسدود شده به Chain مربوطه اضافه شده‌اند و تعداد بسته‌هایی که مسدود شده‌اند را نیز مشاهده کنید.

اگر IP خاصی را مسدود کرده باشید، در این لیست باید نام Chain و IP Address مسدود شده را مشاهده کنید.

3. بررسی ترافیک ورودی

برای بررسی وضعیت بسته‌های ورودی که توسط Iptables مسدود می‌شوند، از دستور زیر استفاده کنید:

sudo iptables -L -v -n

این دستور، علاوه بر قوانین موجود، تعداد بسته‌ها و بایت‌های مسدود شده را نشان می‌دهد. همچنین با استفاده از -n از تبدیل آدرس‌ها به نام‌های میزبان جلوگیری می‌شود و خروجی به صورت عددی خواهد بود که اطلاعات بیشتری را به شما می‌دهد.

4. تست قوانین با استفاده از fail2ban-client

اگر از Fail2Ban برای مسدودسازی استفاده می‌کنید، می‌توانید از دستور fail2ban-client برای بررسی وضعیت Jail‌ها و IP‌های مسدود شده استفاده کنید. دستور زیر را برای مشاهده وضعیت Fail2Ban اجرا کنید:

sudo fail2ban-client status

این دستور وضعیت کلی Fail2Ban را نمایش می‌دهد. برای مشاهده جزئیات Jail خاص، دستور زیر را وارد کنید:

sudo fail2ban-client status <jail_name>

در اینجا <jail_name> می‌تواند نام Jail مربوطه باشد (مثلاً ssh برای Jail مربوط به SSH).

5. بررسی لاگ‌های Iptables و Fail2Ban

اگر به مشکلاتی برخوردید یا نیاز به بررسی جزئیات بیشتری داشتید، می‌توانید لاگ‌ها را بررسی کنید.

لاگ‌های Iptables:

برای بررسی لاگ‌ها در Iptables، معمولاً از syslog یا dmesg استفاده می‌شود. برای مشاهده لاگ‌های مرتبط با Iptables، دستور زیر را وارد کنید:

sudo tail -f /var/log/syslog

یا برای سیستم‌های مبتنی بر RHEL/CentOS:

sudo tail -f /var/log/messages

لاگ‌های Fail2Ban:

همچنین، برای مشاهده لاگ‌های مربوط به Fail2Ban می‌توانید از دستور زیر استفاده کنید:

sudo tail -f /var/log/fail2ban.log

این لاگ‌ها شامل اطلاعاتی از قبیل زمان مسدودسازی IP‌ها و دلایل آن‌ها هستند.

6. حذف IP‌های مسدود شده

پس از انجام تست‌ها و بررسی عملکرد، اگر بخواهید IP مسدود شده را از قوانین Iptables حذف کنید، می‌توانید از دستور زیر استفاده کنید:

sudo iptables -D blocked -s <IP_ADDRESS> -j DROP

در اینجا <IP_ADDRESS> همان آدرس IP مسدود شده است که می‌خواهید از Chain حذف کنید.

جمع‌بندی

با انجام این تست‌ها، می‌توانید عملکرد صحیح قوانین Iptables و Fail2Ban را بررسی کرده و اطمینان حاصل کنید که آدرس‌های IP مشکوک به درستی مسدود می‌شوند. همچنین بررسی لاگ‌ها و وضعیت قوانین به شما کمک می‌کند تا مشکلات احتمالی را شناسایی و اصلاح کنید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 5. تنظیمات پیشرفته در Fail2Ban و Iptables”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از IP Sets برای بهبود کارایی مسدودسازی در مقیاس بزرگ” subtitle=”توضیحات کامل”]یکی از چالش‌های مدیریت سرورهای امن در مقیاس بزرگ، مسدودسازی تعداد زیادی از آدرس‌های IP است. استفاده از IP Sets در Iptables می‌تواند عملکرد سیستم را بهبود بخشیده و به شما امکان مدیریت بهتر آدرس‌های IP مسدود شده را بدهد. این روش به ویژه برای محیط‌هایی که تعداد زیادی آدرس IP برای مسدود کردن دارند، مانند سرورهای با ترافیک بالا یا در سیستم‌های نظارت امنیتی بسیار مفید است.

IP Sets چیست؟

IP Sets یک ویژگی در Iptables است که به شما اجازه می‌دهد مجموعه‌ای از آدرس‌های IP، شبکه‌ها یا دامنه‌ها را به طور مؤثری مدیریت کنید. به جای اینکه هر بار که می‌خواهید یک آدرس IP جدید را مسدود کنید، یک قانون جدید در Iptables اضافه کنید، می‌توانید یک IP Set ایجاد کنید و آدرس‌ها را در آن ذخیره کنید. سپس با استفاده از یک قانون Iptables، به راحتی تمامی آدرس‌های IP داخل IP Set را مسدود کنید.

این روش باعث کاهش پیچیدگی پیکربندی، بهبود کارایی، و به حداقل رساندن استفاده از منابع سیستم می‌شود.

مراحل استفاده از IP Sets برای مسدودسازی

1. نصب و بارگذاری ماژول IP Sets

ابتدا باید اطمینان حاصل کنید که ماژول ip_set روی سیستم شما نصب شده و بارگذاری شده است. در بیشتر سیستم‌های لینوکس، این ماژول به طور پیش‌فرض نصب و بارگذاری می‌شود، اما در صورت نیاز می‌توانید آن را به صورت دستی بارگذاری کنید:

sudo modprobe ip_set

2. ایجاد یک IP Set جدید

برای شروع، شما باید یک IP Set جدید ایجاد کنید. فرض کنید که می‌خواهید مجموعه‌ای از آدرس‌های IP مسدود شده به نام blocked_ips ایجاد کنید:

sudo ipset create blocked_ips hash:ip

این دستور یک IP Set با نام blocked_ips ایجاد می‌کند که نوع آن hash:ip است. این نوع برای ذخیره آدرس‌های IP استفاده می‌شود.

3. اضافه کردن آدرس‌های IP به IP Set

برای اضافه کردن آدرس‌های IP به IP Set، از دستور زیر استفاده می‌کنید:

sudo ipset add blocked_ips 192.168.1.100
sudo ipset add blocked_ips 192.168.1.101

این دستورات آدرس‌های 192.168.1.100 و 192.168.1.101 را به مجموعه blocked_ips اضافه می‌کند.

4. استفاده از IP Set در قوانین Iptables

پس از ایجاد و پر کردن IP Set با آدرس‌های IP، شما می‌توانید از آن در قوانین Iptables استفاده کنید. به عنوان مثال، برای مسدود کردن تمامی آدرس‌های IP در IP Set، دستور زیر را وارد کنید:

sudo iptables -I INPUT -m set --match-set blocked_ips src -j DROP

این قانون تمام بسته‌های ورودی از آدرس‌های IP که در مجموعه blocked_ips قرار دارند را مسدود می‌کند.

5. بررسی IP Set و قوانین Iptables

برای مشاهده محتویات IP Set و بررسی آدرس‌های IP مسدود شده، از دستور زیر استفاده کنید:

sudo ipset list blocked_ips

برای مشاهده قوانین Iptables که از IP Set استفاده می‌کنند، دستور زیر را وارد کنید:

sudo iptables -L -v

6. حذف آدرس‌های IP از IP Set

اگر بخواهید یک آدرس IP را از مجموعه blocked_ips حذف کنید، از دستور زیر استفاده کنید:

sudo ipset del blocked_ips 192.168.1.100

7. حذف IP Set

در نهایت، اگر دیگر به IP Set نیازی نداشته باشید، می‌توانید آن را حذف کنید:

sudo ipset destroy blocked_ips

مزایای استفاده از IP Sets

  1. کاهش بار سیستم: به جای اضافه کردن هزاران قانون مسدودسازی به Iptables، شما فقط نیاز به یک قانون برای اشاره به IP Set دارید. این به طور چشمگیری منابع سیستم را کاهش می‌دهد.
  2. سازمان‌دهی بهتر: IP Set‌ها به شما این امکان را می‌دهند که آدرس‌های IP را به راحتی گروه‌بندی کرده و مدیریت کنید.
  3. عملکرد بهتر: با استفاده از IP Sets، Iptables می‌تواند به طور مؤثری جستجوها را برای مسدودسازی IP‌ها انجام دهد که باعث بهبود عملکرد در سیستم‌هایی با ترافیک بالا می‌شود.
  4. آسانی در مدیریت: می‌توانید به راحتی آدرس‌های IP را به IP Set اضافه یا حذف کنید بدون نیاز به ویرایش دستی قوانین Iptables.

جمع‌بندی

استفاده از IP Sets در ترکیب با Iptables، به ویژه در مقیاس بزرگ، می‌تواند عملکرد و کارایی سیستم شما را به طرز چشم‌گیری بهبود دهد. این روش نه تنها به بهبود کارایی کمک می‌کند، بلکه فرآیند مدیریت و مسدودسازی IP‌های مشکوک را نیز ساده‌تر می‌سازد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”ترکیب Fail2Ban و Iptables با ابزارهای دیگر امنیتی” subtitle=”توضیحات کامل”]برای داشتن یک لایه امنیتی چندگانه و قدرتمند در مقابل حملات مختلف، ترکیب Fail2Ban و Iptables با سایر ابزارهای امنیتی می‌تواند به طور چشمگیری امنیت سرور شما را تقویت کند. این ترکیب به شما امکان می‌دهد که از مزایای هر یک از ابزارها بهره‌برداری کنید و از نقاط ضعف آن‌ها جلوگیری نمایید. در اینجا برخی از ابزارهای امنیتی که می‌توانند با Fail2Ban و Iptables ترکیب شوند، مورد بررسی قرار می‌گیرند:

1. سیستم تشخیص نفوذ (IDS) – مثل Snort یا Suricata

Snort و Suricata ابزارهای IDS هستند که ترافیک شبکه را مانیتور می‌کنند و تلاش‌های نفوذ را شناسایی می‌کنند. این سیستم‌ها از طریق تحلیل الگوهای ترافیک شبکه، حملات مشکوک را شناسایی می‌کنند و هشدار می‌دهند.

نحوه ترکیب:

  • Fail2Ban می‌تواند از گزارش‌های تولید شده توسط Snort یا Suricata برای شناسایی تلاش‌های نفوذ و مسدودسازی IPهای مهاجم استفاده کند.
  • برای مثال، Snort ممکن است به شما هشدار دهد که یک IP خاص در حال تلاش برای نفوذ است، و سپس Fail2Ban می‌تواند این IP را مسدود کرده و از طریق Iptables آن را به لیست مسدود شده اضافه کند.

مزایا:

  • این ترکیب می‌تواند شناسایی حملات را تقویت کرده و Fail2Ban را با داده‌های بیشتری برای مسدودسازی خودکار آدرس‌های IP مخرب تجهیز کند.

2. سیستم پیشگیری از نفوذ (IPS) – مثل OSSEC

OSSEC یک سیستم HIDS (Host-based Intrusion Detection System) است که نه تنها به شناسایی حملات بلکه به پیشگیری از آن‌ها کمک می‌کند. این سیستم می‌تواند به صورت فعال با Iptables برای مسدودسازی مهاجمان ادغام شود.

نحوه ترکیب:

  • OSSEC می‌تواند از طریق Fail2Ban تلاش‌های نفوذ را شناسایی کرده و بر اساس آن‌ها دستورات مسدودسازی را به Iptables ارسال کند. Fail2Ban به عنوان یک ابزار مانیتورینگ برای OSSEC عمل کرده و به محض شناسایی حملات، IPهای مخرب را مسدود می‌کند.

مزایا:

  • این ترکیب به ایجاد یک سیستم واکنش فوری در برابر حملات کمک می‌کند و از دو لایه امنیتی برای پیشگیری و شناسایی استفاده می‌کند.

3. سیستم مدیریت فایروال – مثل UFW یا firewalld

UFW و firewalld ابزارهایی برای مدیریت فایروال هستند که ممکن است به جای Iptables در برخی سیستم‌ها استفاده شوند. این ابزارها ساده‌تر از Iptables هستند و مدیریت فایروال را برای کاربران آسان‌تر می‌کنند.

نحوه ترکیب:

  • Fail2Ban می‌تواند از ابزارهای فایروال مانند UFW یا firewalld به جای Iptables استفاده کند تا IPهای مشکوک را مسدود کند.
  • Fail2Ban به طور خودکار قوانین مسدودسازی را به این فایروال‌ها اضافه می‌کند، به این ترتیب حملات به طور مؤثر مسدود می‌شوند.

مزایا:

  • این ترکیب برای کسانی که به دنبال سادگی در پیکربندی و مدیریت فایروال هستند، بسیار مفید است و در عین حال امنیت خوبی را فراهم می‌کند.

4. آنتی ویروس و سیستم‌های امنیتی میزبان – مثل ClamAV و Rkhunter

ClamAV یک نرم‌افزار آنتی‌ویروس رایگان است که برای شناسایی ویروس‌ها و بدافزارها در سیستم‌های لینوکس طراحی شده است. Rkhunter یک ابزار امنیتی برای شناسایی rootkitها و بدافزارها است.

نحوه ترکیب:

  • Fail2Ban می‌تواند از هشدارهای این ابزارها برای شناسایی آدرس‌های IP مربوط به فعالیت‌های مشکوک استفاده کند. به عنوان مثال، اگر Rkhunter شواهدی از حملات rootkit را شناسایی کند، Fail2Ban می‌تواند آن IP را مسدود کند.

مزایا:

  • این ترکیب به شما این امکان را می‌دهد که تهدیدات مختلف از جمله بدافزارها، ویروس‌ها و rootkit‌ها را شناسایی کرده و از طریق Fail2Ban مسدود کنید.

5. WAF (Web Application Firewall) – مثل ModSecurity

ModSecurity یک WAF است که به طور خاص برای محافظت از برنامه‌های وب طراحی شده است. این ابزار قادر است حملات خاص مانند SQL Injection یا Cross-Site Scripting (XSS) را شناسایی و مسدود کند.

نحوه ترکیب:

  • Fail2Ban می‌تواند از گزارش‌های ModSecurity برای شناسایی تلاش‌های نفوذ به برنامه‌های وب استفاده کند. به عنوان مثال، اگر ModSecurity تشخیص دهد که یک IP در حال تلاش برای SQL Injection است، Fail2Ban می‌تواند آن IP را در Iptables مسدود کند.

مزایا:

  • این ترکیب به افزایش امنیت برنامه‌های وب شما کمک می‌کند و لایه‌های امنیتی مختلفی را به کار می‌گیرد تا از حملات متنوع محافظت شود.

جمع‌بندی

ترکیب Fail2Ban و Iptables با سایر ابزارهای امنیتی می‌تواند به افزایش سطح امنیت سرور کمک کرده و در برابر تهدیدات پیچیده و حملات هدفمند مقاومت بیشتری ایجاد کند. این ترکیب به شما این امکان را می‌دهد که از مزایای هر ابزار به بهترین نحو بهره‌برداری کنید و به سرعت واکنش نشان دهید. استفاده از IDS/IPS، آنتی‌ویروس، WAF و فایروال‌های مختلف در کنار Fail2Ban می‌تواند راهی مؤثر برای محافظت از سرور و شبکه در برابر انواع حملات باشد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تنظیم چندین Jail برای سرویس‌های حساس (مانند SSH، FTP، HTTP)” subtitle=”توضیحات کامل”]یکی از ویژگی‌های مهم Fail2Ban این است که می‌توانید Jail‌های مختلفی برای سرویس‌های حساس سرور خود تنظیم کنید. Jail به مجموعه‌ای از قوانین و فیلترها گفته می‌شود که برای نظارت و مسدودسازی IPهای مشکوک به یک سرویس خاص اختصاص داده شده است. با تنظیم Jail‌های مختلف برای سرویس‌هایی مانند SSH، FTP و HTTP، می‌توانید به طور مؤثری از سرور خود در برابر حملات Brute Force، DDoS و سایر تهدیدات محافظت کنید.

در اینجا نحوه تنظیم چندین Jail برای سرویس‌های مختلف مانند SSH، FTP و HTTP آورده شده است:

1. تنظیم Jail برای SSH

SSH یکی از سرویس‌های حساس است که ممکن است هدف حملات brute force قرار گیرد. برای محافظت از آن، می‌توانید Jail مربوط به SSH را پیکربندی کنید.

مراحل تنظیم:

  1. باز کردن فایل پیکربندی Jail: فایل پیکربندی Jail معمولاً در مسیر /etc/fail2ban/jail.local قرار دارد. در این فایل می‌توانید تنظیمات Jail مربوط به سرویس‌های مختلف را اضافه کنید.
  2. اضافه کردن Jail برای SSH: به بخش [sshd] در فایل jail.local بروید یا آن را اضافه کنید. تنظیمات زیر می‌تواند برای محافظت از SSH مناسب باشد:
    [sshd]
    enabled = true
    port = ssh
    filter = sshd
    logpath = /var/log/auth.log
    maxretry = 3
    bantime = 600
    findtime = 600
    

    توضیحات:

    • enabled: Jail مربوط به SSH فعال است.
    • port: پورت SSH به طور پیش‌فرض 22 است.
    • filter: این فیلتر با استفاده از regex سعی می‌کند تلاش‌های نفوذ را شناسایی کند. در اینجا از فیلتر پیش‌فرض sshd استفاده شده است.
    • logpath: مسیر فایل لاگ که تلاش‌های ورود SSH در آن ذخیره می‌شود.
    • maxretry: حداکثر تعداد تلاش‌های ناموفق برای ورود قبل از مسدودسازی IP.
    • bantime: مدت زمانی که IP مسدود خواهد شد.
    • findtime: زمانی که باید در آن تلاش‌های ناموفق شمارش شوند.
  3. ریستارت کردن Fail2Ban: بعد از ویرایش فایل، سرویس Fail2Ban را ریستارت کنید:
    sudo systemctl restart fail2ban
    

2. تنظیم Jail برای FTP (vsftpd)

اگر از سرویس‌های FTP برای انتقال فایل‌ها استفاده می‌کنید، باید Jail مربوط به vsftpd یا هر سرویس FTP دیگری را تنظیم کنید.

مراحل تنظیم:

  1. اضافه کردن Jail برای FTP: برای vsftpd، بخش زیر را به فایل jail.local اضافه کنید:
    [vsftpd]
    enabled = true
    port = ftp
    filter = vsftpd
    logpath = /var/log/vsftpd.log
    maxretry = 3
    bantime = 600
    findtime = 600
    

    توضیحات:

    • filter: استفاده از فیلتر vsftpd برای شناسایی حملات مربوط به FTP.
    • logpath: مسیر لاگ‌های مربوط به FTP.
    • باقی تنظیمات مشابه با SSH است و برای محدود کردن تعداد تلاش‌های ناموفق و مدت زمان مسدودسازی استفاده می‌شود.
  2. ریستارت کردن Fail2Ban: بعد از اعمال تغییرات، سرویس Fail2Ban را ریستارت کنید:
    sudo systemctl restart fail2ban
    

3. تنظیم Jail برای HTTP (Apache/Nginx)

برای سرویس‌های وب مانند Apache یا Nginx، باید Jail مربوطه را تنظیم کنید تا از حملات DDoS و brute force به برنامه‌های وب جلوگیری کنید.

مراحل تنظیم:

  1. اضافه کردن Jail برای Apache: اگر از Apache استفاده می‌کنید، بخش زیر را به فایل jail.local اضافه کنید:
    [apache]
    enabled = true
    port = http,https
    filter = apache-auth
    logpath = /var/log/apache2/*error.log
    maxretry = 3
    bantime = 600
    findtime = 600
    

    برای Nginx هم مشابه عمل کنید:

    [nginx]
    enabled = true
    port = http,https
    filter = nginx-http-auth
    logpath = /var/log/nginx/error.log
    maxretry = 3
    bantime = 600
    findtime = 600
    
  2. توضیحات تنظیمات:
    • filter: برای Apache از apache-auth و برای Nginx از nginx-http-auth استفاده می‌شود.
    • logpath: مسیر لاگ‌های Apache یا Nginx که تلاش‌های ورود غیرمجاز در آن ثبت می‌شود.
    • تنظیمات دیگر مشابه با سایر Jailها است.
  3. ریستارت کردن Fail2Ban: بعد از تنظیم Jailها برای Apache یا Nginx، سرویس Fail2Ban را ریستارت کنید:
    sudo systemctl restart fail2ban
    

جمع‌بندی

با تنظیم Jail‌های مختلف برای سرویس‌های حساس مانند SSH، FTP و HTTP، می‌توانید از سرور خود در برابر حملات مختلف حفاظت کنید. Fail2Ban با استفاده از این Jail‌ها به طور خودکار تلاش‌های نفوذ را شناسایی کرده و آدرس‌های IP مشکوک را مسدود می‌کند. این امر به کاهش خطر حملات brute force و دیگر تهدیدات امنیتی کمک می‌کند و به طور قابل توجهی امنیت سرور شما را تقویت می‌سازد.[/cdb_course_lesson][cdb_course_lesson title=”فصل 6. مدیریت فهرست‌های سیاه و سفید”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”افزودن IP‌ها به لیست سفید (Whitelist) در Fail2Ban” subtitle=”توضیحات کامل”]افزودن IP‌ها به لیست سفید (Whitelist) یکی از ویژگی‌های مهم Fail2Ban است که اجازه می‌دهد برخی از آدرس‌های IP مشخص به طور خودکار از مسدودسازی‌های امنیتی نادیده گرفته شوند. این کار معمولاً برای آدرس‌های IP ایمن، مانند سرورهای مدیریتی، سرورهای داخلی یا آدرس‌های کاربرانی که نیاز به دسترسی مداوم به سرور دارند، انجام می‌شود.

1. نحوه افزودن IP‌ها به لیست سفید (Whitelist)

در Fail2Ban، برای اضافه کردن IP به لیست سفید از تنظیمات ignoreip در فایل پیکربندی jail.local استفاده می‌شود. این تنظیم باعث می‌شود که IP‌های مشخص شده همیشه نادیده گرفته شوند و حتی اگر تلاش‌های ناموفق ورود زیادی انجام دهند، مسدود نشوند.

مراحل تنظیم:

  1. ویرایش فایل jail.local: برای اضافه کردن آدرس‌های IP به لیست سفید، باید فایل پیکربندی jail.local را ویرایش کنید.

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

    sudo nano /etc/fail2ban/jail.local
    
  2. اضافه کردن IP‌ها به ignoreip: در بخش [DEFAULT] فایل jail.local، مقدار ignoreip را اضافه یا ویرایش کنید. این کار به Fail2Ban می‌گوید که این IP‌ها هیچ‌وقت مسدود نخواهند شد. به عنوان مثال:
    [DEFAULT]
    ignoreip = 127.0.0.1/8 ::1 192.168.1.100 203.0.113.5
    

    در اینجا:

    • 127.0.0.1/8 و ::1 برای آدرس‌های لوپ‌بک (localhost) است.
    • 192.168.1.100 و 203.0.113.5 آدرس‌های IP هستند که شما می‌خواهید از مسدودسازی‌های Fail2Ban نجات دهید.

    می‌توانید هر تعداد IP یا محدوده IP را به این لیست اضافه کنید.

  3. ذخیره فایل و خروج: پس از اضافه کردن IP‌ها، فایل را ذخیره کنید و از ویرایشگر خارج شوید.
  4. ریستارت کردن Fail2Ban: پس از اعمال تغییرات، باید سرویس Fail2Ban را ریستارت کنید تا تنظیمات جدید اعمال شوند.
    sudo systemctl restart fail2ban
    

2. چگونه لیست سفید IP را تست کنیم؟

برای اطمینان از اینکه IP‌ها به درستی در لیست سفید قرار گرفته‌اند و Fail2Ban آنها را مسدود نمی‌کند، می‌توانید از دستورات زیر برای بررسی وضعیت Fail2Ban استفاده کنید:

  1. بررسی وضعیت Jail‌ها: با استفاده از دستور زیر می‌توانید وضعیت Jail‌ها و اینکه آیا IP مورد نظر مسدود است یا نه را بررسی کنید.
    sudo fail2ban-client status <jail-name>
    

    به عنوان مثال برای بررسی وضعیت Jail مربوط به SSH:

    sudo fail2ban-client status sshd
    
  2. بررسی لاگ‌های Fail2Ban: بررسی لاگ‌ها نیز می‌تواند نشان دهد که آیا IP‌های مورد نظر به اشتباه مسدود نشده‌اند.
    sudo cat /var/log/fail2ban.log | grep "ignored"
    

    این دستور تمام IP‌های نادیده گرفته شده را نمایش می‌دهد.

3. اضافه کردن یک محدوده IP به لیست سفید

اگر بخواهید یک محدوده از IP‌ها را به لیست سفید اضافه کنید، می‌توانید از CIDR استفاده کنید. برای مثال، اگر می‌خواهید تمام IP‌های موجود در محدوده 192.168.0.0/24 را به لیست سفید اضافه کنید، تنظیمات به صورت زیر خواهد بود:

ignoreip = 127.0.0.1/8 ::1 192.168.0.0/24

این تنظیمات اجازه می‌دهند که تمام آدرس‌های IP در محدوده 192.168.0.0 تا 192.168.0.255 به طور خودکار نادیده گرفته شوند و از مسدودسازی محافظت شوند.

جمع‌بندی

افزودن IP‌ها به لیست سفید در Fail2Ban باعث می‌شود که آدرس‌های IP مشخص از مسدودسازی‌های خودکار جلوگیری کنند و به این ترتیب، در صورتی که تلاش‌های ناموفق زیادی از طرف این IP‌ها انجام شود، هیچ مسدودی ایجاد نمی‌شود. این ویژگی برای اطمینان از دسترسی پایدار به سرویس‌ها از سوی کاربران خاص یا سرورهای داخلی بسیار مفید است.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”مدیریت IP‌های مسدود شده در Iptables” subtitle=”توضیحات کامل”]Iptables یکی از ابزارهای قدرتمند برای فایروالینگ در سیستم‌های لینوکسی است که به شما اجازه می‌دهد قوانین مختلفی برای مدیریت ترافیک شبکه و امنیت سیستم خود اعمال کنید. هنگامی که Fail2Ban برای مسدودسازی IP‌های مخرب با استفاده از Iptables پیکربندی می‌شود، لازم است که IP‌های مسدود شده به‌طور مؤثری مدیریت شوند. در اینجا نحوه مدیریت این IP‌ها در Iptables آورده شده است.

1. مشاهده IP‌های مسدود شده

برای مشاهده IP‌های مسدود شده که توسط Fail2Ban در Iptables اضافه شده‌اند، از دستور iptables -L استفاده می‌شود. این دستور لیست قوانین فعلی فایروال را نمایش می‌دهد.

برای مشاهده فقط قوانین مسدودسازی که مربوط به Fail2Ban هستند، می‌توانید از دستور زیر استفاده کنید:

sudo iptables -L -v -n

این دستور تمام قوانین فایروال به همراه آمار ترافیک و IP‌هایی که تحت تأثیر قرار گرفته‌اند، نمایش می‌دهد.

برای مشاهده chain اختصاصی که توسط Fail2Ban ایجاد شده، مانند f2b-sshd، می‌توانید از دستور زیر استفاده کنید:

sudo iptables -L f2b-sshd -v -n

این دستور فقط قوانین فایروال مربوط به Jail sshd را نشان می‌دهد.

2. حذف IP‌های مسدود شده از Iptables

اگر بخواهید یک IP خاص را که توسط Fail2Ban مسدود شده از فهرست مسدود شده‌ها حذف کنید، می‌توانید از دستور iptables -D برای حذف قوانین مسدودسازی استفاده کنید.

فرض کنید که IP 192.168.1.100 باید از فهرست مسدودها حذف شود، دستور به این صورت خواهد بود:

sudo iptables -D f2b-sshd -s 192.168.1.100 -j REJECT

این دستور قوانین مسدودسازی که مربوط به این IP در chain f2b-sshd هستند را حذف می‌کند.

3. پاکسازی تمامی IP‌های مسدود شده

گاهی اوقات ممکن است بخواهید همه IP‌هایی که توسط Fail2Ban در Iptables مسدود شده‌اند را یک‌جا پاکسازی کنید. برای انجام این کار، می‌توانید از دستور زیر برای حذف تمام قوانین مرتبط با Fail2Ban استفاده کنید:

sudo iptables -F f2b-sshd

این دستور تمام IP‌های مسدود شده در chain f2b-sshd را پاک می‌کند. اگر می‌خواهید تمام Jail‌ها را از لیست مسدودسازی‌ها پاک کنید، باید از دستور زیر استفاده کنید:

sudo iptables -F

4. دستورات برای بازبینی و پاکسازی Chain‌های اضافی

اگر Fail2Ban برای Jail‌های مختلف قوانین خاصی اضافه کرده باشد، این chain‌ها می‌توانند در سیستم شما وجود داشته باشند. برای پاکسازی این chain‌ها، باید از دستورات زیر استفاده کنید:

  1. مشاهده Chain‌های موجود:
    sudo iptables -L
    

    این دستور تمامی chain‌ها را در فایروال نمایش می‌دهد.

  2. حذف Chain‌های اضافی:

    اگر یک Jail خاص دیگر استفاده نمی‌شود یا نیاز به حذف قوانین آن دارید، می‌توانید با دستور زیر chain را حذف کنید:

    sudo iptables -X f2b-sshd
    

    این دستور chain مربوط به Jail sshd را که دیگر نیازی به آن نیست حذف می‌کند.

5. ثبت IP‌های مسدود شده در یک فایل (Logging)

برای ثبت IP‌های مسدود شده در یک فایل و داشتن یک گزارش دقیق از مسدودسازی‌ها، می‌توانید از قابلیت logging در Iptables استفاده کنید. برای این کار، باید قوانینی برای log کردن IP‌ها به Iptables اضافه کنید.

برای مثال، برای ثبت تمامی مسدودسازی‌ها در یک فایل، می‌توانید این دستور را وارد کنید:

sudo iptables -A f2b-sshd -j LOG --log-prefix "Fail2Ban Blocked: " --log-level 4

این دستور باعث می‌شود که تمام IP‌های مسدود شده توسط Jail sshd در لاگ‌ها با پیشوند Fail2Ban Blocked: ثبت شوند.

سپس می‌توانید با استفاده از این دستور لاگ‌ها را مشاهده کنید:

sudo tail -f /var/log/syslog

این کار به شما کمک می‌کند تا دقیق‌تر متوجه شوید که کدام IP‌ها مسدود شده‌اند.

6. تنظیم زمان‌بندی برای پاکسازی IP‌های مسدود شده

اگر می‌خواهید پس از مدت زمان مشخصی، IP‌های مسدود شده به‌طور خودکار از Iptables حذف شوند، می‌توانید از cron job برای زمان‌بندی استفاده کنید.

برای مثال، دستور زیر را به فایل crontab اضافه کنید تا هر روز ساعت 3 صبح، تمامی IP‌های مسدود شده از Iptables حذف شوند:

sudo crontab -e

سپس خط زیر را در فایل crontab وارد کنید:

0 3 * * * iptables -F f2b-sshd

این دستور تمام IP‌های مسدود شده در chain f2b-sshd را در ساعت 3 صبح هر روز حذف می‌کند.

جمع‌بندی

مدیریت IP‌های مسدود شده در Iptables نقش کلیدی در نگهداری و بهینه‌سازی عملکرد فایروال ایفا می‌کند. از مشاهده و حذف IP‌های مسدود شده تا ثبت و زمان‌بندی پاکسازی، این فرایندها به شما کمک می‌کنند تا سرور خود را از تهدیدات محافظت کرده و کنترل بیشتری روی مسدودسازی‌ها و قوانین فایروال داشته باشید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بازبینی و ویرایش قوانین مرتبط با آدرس‌های IP خاص ” subtitle=”توضیحات کامل”]در سیستم‌های مبتنی بر Iptables، قوانین فایروال برای مسدودسازی یا مجاز کردن دسترسی به سرویس‌ها و پورت‌های مختلف توسط آدرس‌های IP خاص تنظیم می‌شوند. بازبینی و ویرایش این قوانین به‌ویژه زمانی که نیاز به اصلاح یا حذف دسترسی از برخی IP‌ها باشد، اهمیت ویژه‌ای دارد.

در اینجا روش‌هایی برای بازبینی و ویرایش قوانین مرتبط با آدرس‌های IP خاص آورده شده است.

1. مشاهده قوانین Iptables برای آدرس‌های IP خاص

برای بازبینی قوانین موجود در Iptables که به آدرس‌های IP خاص مرتبط هستند، دستور زیر را وارد کنید:

sudo iptables -L -v -n

این دستور تمام قوانین موجود در فایروال را به‌صورت دقیق و به‌همراه تعداد بسته‌ها و آدرس‌های IP نمایش می‌دهد. برای مشاهده قوانین مرتبط با یک chain خاص، مثلاً f2b-sshd، می‌توانید از دستور زیر استفاده کنید:

sudo iptables -L f2b-sshd -v -n

اگر می‌خواهید تنها قوانینی که IP خاصی را هدف قرار می‌دهند مشاهده کنید، می‌توانید از دستور جستجو با استفاده از grep بهره ببرید. به‌عنوان مثال:

sudo iptables -L -v -n | grep 192.168.1.100

این دستور فقط قوانینی که مربوط به IP 192.168.1.100 هستند را نشان می‌دهد.

2. ویرایش قوانین برای IP خاص

اگر بخواهید یک قانون خاص را ویرایش کنید، باید آن را ابتدا حذف کرده و سپس یک قانون جدید اضافه کنید. فرض کنید شما می‌خواهید یک IP خاص (مثل 192.168.1.100) را از chain f2b-sshd حذف کنید، دستور زیر را وارد کنید:

sudo iptables -D f2b-sshd -s 192.168.1.100 -j REJECT

این دستور، IP 192.168.1.100 را از مسدودسازی در f2b-sshd حذف می‌کند.

اگر بخواهید یک IP جدید را به لیست مسدودشده اضافه کنید، از دستور زیر استفاده می‌کنید:

sudo iptables -A f2b-sshd -s 192.168.1.100 -j REJECT

این دستور باعث می‌شود که IP 192.168.1.100 به‌طور دائم مسدود شود.

3. ویرایش قوانین مسدودسازی برای یک IP خاص در Jail‌ها

اگر از Fail2Ban برای مدیریت مسدودسازی IP‌ها استفاده می‌کنید، ممکن است بخواهید قوانینی که برای Jail خاص ایجاد شده‌اند را ویرایش کنید. به‌عنوان مثال، اگر یک IP خاص به اشتباه توسط Fail2Ban مسدود شده باشد، می‌توانید آن را با دستور زیر از لیست حذف کنید:

sudo fail2ban-client unban 192.168.1.100

این دستور Fail2Ban را دستور می‌دهد تا IP 192.168.1.100 را از تمامی Jail‌های فعال حذف کند.

4. افزودن قوانین سفارشی برای IP‌های خاص

گاهی اوقات نیاز به افزودن قوانین سفارشی برای یک IP خاص به‌طور دستی دارید. به‌عنوان مثال، اگر بخواهید فقط به یک IP خاص دسترسی به پورت SSH (port 22) را بدهید، از دستور زیر استفاده کنید:

sudo iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT

این دستور اجازه می‌دهد که IP 192.168.1.100 به پورت SSH دسترسی داشته باشد.

اگر بخواهید این دسترسی را برای همه IP‌ها مسدود کنید، دستور زیر را وارد می‌کنید:

sudo iptables -A INPUT -p tcp --dport 22 -j DROP

این دستور دسترسی به پورت SSH را برای همه IP‌ها به‌جز آن‌هایی که به‌طور خاص مجاز شده‌اند مسدود می‌کند.

5. ذخیره قوانین جدید

پس از ویرایش یا افزودن قوانین جدید، مهم است که تغییرات اعمال‌شده را ذخیره کنید تا در صورت راه‌اندازی مجدد سیستم یا فایروال از بین نروند. برای ذخیره قوانین در Debian/Ubuntu می‌توانید از دستور زیر استفاده کنید:

sudo iptables-save > /etc/iptables/rules.v4

در سیستم‌های RHEL/CentOS، برای ذخیره قوانین به‌صورت پیش‌فرض از دستور زیر استفاده کنید:

sudo service iptables save

6. پاکسازی قوانین مسدودسازی و IP‌های خاص

گاهی اوقات ممکن است بخواهید تمامی قوانین مسدودسازی را پاکسازی کرده یا IP‌های خاص را از همه قواعد حذف کنید. برای انجام این کار، می‌توانید از دستور زیر برای پاکسازی تمامی قوانین استفاده کنید:

sudo iptables -F

این دستور همه قوانین موجود را حذف می‌کند.

جمع‌بندی

بازبینی و ویرایش قوانین Iptables برای آدرس‌های IP خاص به شما این امکان را می‌دهد که کنترل بیشتری روی دسترسی به سیستم و امنیت آن داشته باشید. از حذف یا افزودن IP‌ها گرفته تا اصلاح قوانین برای Jail‌های مختلف، این فرآیندها به شما کمک می‌کنند که Fail2Ban و Iptables را به‌طور مؤثرتر و دقیق‌تر پیکربندی کنید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 7. مانیتورینگ و گزارش‌گیری از Iptables و Fail2Ban”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بررسی لاگ‌های Fail2Ban و Iptables برای تحلیل حملات” subtitle=”توضیحات کامل”]تحلیل لاگ‌ها یکی از مهم‌ترین مراحل در فرآیند شناسایی، پیشگیری و پاسخ به حملات است. Fail2Ban و Iptables هر دو ابزارهایی هستند که به مسدودسازی IP‌های مشکوک و حملات احتمالی کمک می‌کنند، و لاگ‌های این ابزارها اطلاعات ارزشمندی در مورد نوع حملات، آدرس‌های IP و زمان وقوع آن‌ها فراهم می‌آورند.

در اینجا به نحوه بررسی و تحلیل لاگ‌های Fail2Ban و Iptables پرداخته می‌شود.

1. بررسی لاگ‌های Fail2Ban

لاگ‌های Fail2Ban به‌طور پیش‌فرض در مسیر /var/log/fail2ban.log ذخیره می‌شوند و شامل اطلاعاتی در مورد فعالیت‌های Jail مختلف و IP‌های مسدود شده هستند. برای مشاهده این لاگ‌ها از دستور cat یا tail استفاده کنید:

مشاهده لاگ‌های اصلی Fail2Ban:

برای مشاهده لاگ‌های Fail2Ban به‌صورت زنده و بدون وقفه از دستور tail استفاده کنید:

sudo tail -f /var/log/fail2ban.log

این دستور به‌صورت زنده تمامی تغییرات جدید در فایل لاگ را نمایش می‌دهد. برای مشاهده محتویات فایل به‌طور کامل می‌توانید از دستور cat استفاده کنید:

sudo cat /var/log/fail2ban.log

جستجو در لاگ‌های Fail2Ban:

اگر می‌خواهید به‌دنبال اطلاعات خاصی مانند مسدودسازی یک IP خاص بگردید، می‌توانید از grep برای جستجو در لاگ‌ها استفاده کنید. به‌عنوان مثال، برای جستجو بر اساس یک IP خاص:

sudo grep '192.168.1.100' /var/log/fail2ban.log

این دستور تمام رخدادهای مرتبط با IP 192.168.1.100 را در لاگ‌های Fail2Ban نمایش می‌دهد.

بررسی مسدودسازی‌ها:

برای تحلیل دقیق‌تر نحوه مسدودسازی‌ها و دلایل آن‌ها می‌توانید از دستور grep برای جستجوی عبارت‌هایی مانند Ban یا Unban استفاده کنید:

sudo grep 'Ban' /var/log/fail2ban.log

این دستور تمامی IP‌هایی که توسط Fail2Ban مسدود شده‌اند را نمایش می‌دهد.

2. بررسی لاگ‌های Iptables

Iptables به‌طور پیش‌فرض لاگ‌هایی را در مورد ترافیک شبکه مسدود شده و قواعد اعمال‌شده ثبت می‌کند. این لاگ‌ها در مسیر /var/log/syslog (در سیستم‌های مبتنی بر Debian/Ubuntu) یا /var/log/messages (در سیستم‌های RHEL/CentOS) ذخیره می‌شوند.

مشاهده لاگ‌های Iptables:

برای مشاهده لاگ‌های Iptables می‌توانید از دستور tail برای مشاهده به‌روزترین لاگ‌ها استفاده کنید:

sudo tail -f /var/log/syslog

در صورتی که در حال استفاده از سیستم‌های RHEL/CentOS هستید، از این دستور استفاده کنید:

sudo tail -f /var/log/messages

جستجو در لاگ‌های Iptables:

اگر می‌خواهید تنها لاگ‌های مربوط به Iptables را بررسی کنید، می‌توانید از دستور grep برای جستجو استفاده کنید. به‌عنوان مثال:

sudo grep 'iptables' /var/log/syslog

این دستور تمامی لاگ‌های مرتبط با Iptables را نمایش می‌دهد.

تحلیل لاگ‌های مسدودسازی:

در صورتی که بخواهید بررسی کنید کدام IP‌ها به دلیل قوانین Iptables مسدود شده‌اند، می‌توانید از دستور grep برای جستجوی IP‌های خاص در لاگ‌ها استفاده کنید:

sudo grep 'DROP' /var/log/syslog

این دستور لاگ‌هایی را که نشان‌دهنده مسدودسازی ترافیک توسط Iptables هستند، فیلتر می‌کند.

3. تحلیل حملات با استفاده از لاگ‌ها

شناسایی حملات Brute Force:

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

برای مشاهده تلاش‌های ناموفق برای ورود به SSH، از دستور grep در لاگ‌های Fail2Ban استفاده کنید:

sudo grep 'Failed password' /var/log/auth.log

این دستور تمامی تلاش‌های ناموفق برای ورود به SSH را نشان می‌دهد. سپس می‌توانید این تلاش‌ها را با آی‌پی‌هایی که توسط Fail2Ban مسدود شده‌اند تطبیق دهید.

شناسایی حملات DDoS:

حملات DDoS به‌طور معمول ترافیک زیادی به سمت سرور ارسال می‌کنند. در این‌گونه حملات، تعداد زیادی درخواست از یک یا چندین IP به سرور فرستاده می‌شود. برای شناسایی این نوع حملات می‌توانید لاگ‌های Iptables را بررسی کنید تا ببینید کدام IP‌ها بیشتر از حد مجاز درخواست می‌فرستند.

sudo grep 'DROP' /var/log/syslog | awk '{print $8}' | sort | uniq -c | sort -nr

این دستور لیستی از IP‌هایی که بیشترین تعداد درخواست‌های مسدود شده را دارند، نمایش می‌دهد.

4. ترکیب لاگ‌های Fail2Ban و Iptables برای تحلیل دقیق‌تر حملات

برای تحلیل دقیق‌تر حملات، می‌توانید لاگ‌های Fail2Ban و Iptables را با یکدیگر ترکیب کنید. به‌عنوان مثال، اگر Fail2Ban یک IP را مسدود کرده است، می‌توانید بررسی کنید که آیا این IP در لاگ‌های Iptables نیز مسدود شده است یا خیر. برای این کار می‌توانید IP‌های مسدود شده در Fail2Ban را از لاگ‌های آن استخراج کرده و سپس در لاگ‌های Iptables جستجو کنید:

  1. ابتدا IP‌های مسدود شده در Fail2Ban را استخراج کنید:
sudo grep 'Ban' /var/log/fail2ban.log | awk '{print $8}' | sort | uniq
  1. سپس این IP‌ها را در لاگ‌های Iptables جستجو کنید:
sudo grep 'DROP' /var/log/syslog | grep -f ip_list.txt

که در آن ip_list.txt فایلی است که IP‌های مسدود شده را از مرحله اول در آن ذخیره کرده‌اید.

جمع‌بندی

بررسی و تحلیل لاگ‌های Fail2Ban و Iptables برای شناسایی حملات و مسدودسازی IP‌های مشکوک، گامی حیاتی در تقویت امنیت سرور است. با تجزیه و تحلیل لاگ‌ها می‌توانید حملات مختلف مانند Brute Force و DDoS را شناسایی کرده و اقدامات لازم برای مسدودسازی و پاسخ به حملات را انجام دهید. ترکیب این لاگ‌ها به شما این امکان را می‌دهد که دید وسیع‌تری از تهدیدات موجود داشته باشید و امنیت سیستم را ارتقا دهید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از دستور fail2ban-client برای مشاهده وضعیت Jail‌ها” subtitle=”توضیحات کامل”]دستور fail2ban-client یکی از ابزارهای اصلی برای تعامل با Fail2Ban است. این دستور به مدیران سیستم این امکان را می‌دهد تا وضعیت Jail ها را مشاهده کرده، آنها را مدیریت کرده و در صورت نیاز برخی تنظیمات را تغییر دهند.

در اینجا نحوه استفاده از دستور fail2ban-client برای مشاهده وضعیت Jail ها را بررسی می‌کنیم:

1. مشاهده وضعیت کلی Fail2Ban

برای مشاهده وضعیت کلی Fail2Ban و اطمینان از اینکه سرویس به‌درستی در حال اجرا است، می‌توانید از دستور زیر استفاده کنید:

sudo fail2ban-client status

این دستور اطلاعات کلی در مورد وضعیت Fail2Ban را نمایش می‌دهد. خروجی معمولاً به شکل زیر خواهد بود:

Status for the jail: fail2ban
|- Number of jail:      3
`- Jail list:           sshd, apache, vsftpd

در اینجا:

  • Number of jail تعداد Jail های فعال را نشان می‌دهد.
  • Jail list نام Jail هایی که در حال حاضر فعال هستند را لیست می‌کند.

2. مشاهده وضعیت یک Jail خاص

برای مشاهده وضعیت خاص یک Jail، از دستور زیر استفاده کنید. این دستور اطلاعات دقیقی در مورد Jail خاصی مانند SSH، Apache، یا هر Jail دیگری که تنظیم کرده‌اید، نمایش می‌دهد:

sudo fail2ban-client status <jail-name>

به‌عنوان مثال، اگر بخواهید وضعیت SSH را مشاهده کنید، از دستور زیر استفاده کنید:

sudo fail2ban-client status sshd

خروجی این دستور اطلاعاتی مانند تعداد IPهای مسدود شده، تعداد تلاش‌های ناموفق و زمان مسدودسازی را نمایش می‌دهد:

Status for the jail: sshd
|- filter
|  |- File list:    /var/log/auth.log
|  |- Currently failed: 2
|  `- Total failed: 50
|- action
|  |- Ban list: 192.168.1.100, 192.168.1.101
`- Jail list: sshd

در اینجا:

  • Currently failed تعداد تلاش‌های ناموفق اخیر برای ورود به SSH را نشان می‌دهد.
  • Total failed تعداد کل تلاش‌های ناموفق را تا به حال نمایش می‌دهد.
  • Ban list لیست IPهایی است که به دلیل تعداد تلاش‌های ناموفق مسدود شده‌اند.

3. مشاهده IP‌های مسدود شده

برای مشاهده IP‌هایی که توسط Fail2Ban مسدود شده‌اند، می‌توانید از دستور زیر استفاده کنید:

sudo fail2ban-client get <jail-name> banip

به‌عنوان مثال، برای مشاهده لیست IP های مسدود شده در Jail مربوط به SSH:

sudo fail2ban-client get sshd banip

خروجی ممکن است به این شکل باشد:

192.168.1.100
192.168.1.101

4. رفع مسدودسازی IP‌ها

در صورتی که بخواهید یک IP مسدود شده را از لیست مسدودها خارج کنید، می‌توانید از دستور زیر استفاده کنید:

sudo fail2ban-client set <jail-name> unbanip <IP-address>

برای مثال، اگر بخواهید IP 192.168.1.100 را از لیست مسدود شده در Jail SSH رفع مسدود کنید:

sudo fail2ban-client set sshd unbanip 192.168.1.100

5. اطلاع از تنظیمات Jail‌ها

برای مشاهده تنظیمات خاص هر Jail می‌توانید از دستور زیر استفاده کنید:

sudo fail2ban-client show <jail-name>

این دستور تنظیمات مختلف مربوط به Jail را مانند bantime، findtime، maxretry و سایر موارد نشان می‌دهد.

جمع‌بندی

دستور fail2ban-client ابزار قدرتمندی برای مشاهده و مدیریت وضعیت Jail ها در Fail2Ban است. با استفاده از این دستور می‌توانید وضعیت کلی سرویس، وضعیت Jail خاص، تعداد تلاش‌های ناموفق، IPهای مسدود شده و دیگر اطلاعات مرتبط را بررسی کنید. این اطلاعات برای تحلیل و تنظیمات دقیق‌تر در جهت ارتقای امنیت سیستم اهمیت بسیاری دارند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”ایجاد گزارش‌های سفارشی از قوانین Iptables و عملکرد Fail2Ban” subtitle=”توضیحات کامل”]برای بهبود فرآیند نظارت بر امنیت سرور و اطمینان از عملکرد صحیح ابزارهای امنیتی مانند Fail2Ban و Iptables، می‌توان گزارش‌های سفارشی ایجاد کرد. این گزارش‌ها می‌توانند شامل اطلاعاتی در مورد مسدودسازی‌های IP، تلاش‌های ناموفق، تعداد دفعات مسدودسازی و زمان‌بندی‌ها باشند. در اینجا به بررسی روش‌های ایجاد گزارش‌های سفارشی خواهیم پرداخت.

1. ایجاد گزارش از قوانین Iptables

برای دریافت گزارش از وضعیت Iptables و مشاهده قوانین فعلی آن، می‌توان از دستور زیر استفاده کرد:

sudo iptables -L -v -n

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

sudo iptables -L -v -n > /var/log/iptables_report.log

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

1.1 ایجاد گزارش از IPهای مسدود شده با Iptables

برای گزارش‌گیری از IPهایی که توسط Iptables مسدود شده‌اند، می‌توانید از دستورات زیر استفاده کنید تا لیست IPهای مسدود شده را از Chain خاصی استخراج کنید:

sudo iptables -L INPUT -v -n | grep DROP

این دستور تمام IPهایی را که در Chain ورودی (INPUT) مسدود شده‌اند، نمایش می‌دهد. اگر بخواهید این اطلاعات را ذخیره کنید، می‌توانید آن را در یک فایل ذخیره کنید:

sudo iptables -L INPUT -v -n | grep DROP > /var/log/blocked_ips.log

2. ایجاد گزارش‌های Fail2Ban

Fail2Ban به طور پیش‌فرض تمام اطلاعات مسدودسازی‌ها و تلاش‌های ناموفق را در لاگ‌های خود ذخیره می‌کند. این لاگ‌ها معمولاً در مسیر /var/log/fail2ban.log قرار دارند.

2.1 مشاهده لاگ‌های Fail2Ban

برای مشاهده فعالیت‌های Fail2Ban می‌توانید از دستور زیر استفاده کنید:

sudo tail -f /var/log/fail2ban.log

این دستور آخرین خط‌های لاگ را نمایش می‌دهد و به شما امکان می‌دهد تا به‌طور زنده تغییرات را مشاهده کنید.

2.2 ایجاد گزارش از مسدودسازی‌ها در Fail2Ban

برای ایجاد گزارش از مسدودسازی‌ها، می‌توانید از دستورات grep برای جستجو در لاگ‌ها استفاده کنید. به عنوان مثال، برای مشاهده تمامی IPهای مسدود شده می‌توانید از دستور زیر استفاده کنید:

grep 'Ban' /var/log/fail2ban.log > /var/log/fail2ban_ban_report.log

این دستور تمام پیام‌هایی که شامل کلمه “Ban” هستند (که نشان‌دهنده مسدود شدن IPها است) را استخراج کرده و در فایل fail2ban_ban_report.log ذخیره می‌کند.

2.3 شمارش تعداد تلاش‌های ناموفق در Fail2Ban

برای ایجاد گزارشی از تعداد تلاش‌های ناموفق برای ورود به سرویس‌های مختلف (مثل SSH) می‌توانید از دستور زیر استفاده کنید:

grep 'Failed' /var/log/fail2ban.log | wc -l

این دستور تعداد کل تلاش‌های ناموفق را در لاگ Fail2Ban شمارش می‌کند.

2.4 ایجاد گزارش از Jail‌های فعال در Fail2Ban

برای بررسی Jail‌های فعال و جزئیات آنها در Fail2Ban، از دستور زیر استفاده کنید:

sudo fail2ban-client status > /var/log/fail2ban_jail_status.log

این دستور وضعیت Jailهای مختلف را استخراج کرده و در فایل fail2ban_jail_status.log ذخیره می‌کند.

3. ترکیب گزارش‌های Fail2Ban و Iptables

برای ترکیب گزارش‌های Fail2Ban و Iptables در یک فایل، می‌توانید از ابزارهای خط فرمان مانند cat یا echo استفاده کنید. به عنوان مثال، برای ترکیب گزارش IPهای مسدود شده در Iptables و Fail2Ban:

cat /var/log/iptables_report.log /var/log/fail2ban_ban_report.log > /var/log/security_report.log

این دستور گزارش‌هایی از Iptables و Fail2Ban را در یک فایل مشترک به نام security_report.log ترکیب می‌کند.

4. ارسال گزارش‌ها به ایمیل

برای ارسال گزارش‌های امنیتی به ایمیل می‌توانید از ابزارهایی مانند sendmail یا mail استفاده کنید. به عنوان مثال، برای ارسال گزارش مسدودسازی‌ها به ایمیل خود:

cat /var/log/security_report.log | mail -s "Security Report" your_email@example.com

این دستور گزارش را به آدرس ایمیل مشخص شده ارسال می‌کند.

جمع‌بندی

ایجاد گزارش‌های سفارشی از قوانین Iptables و عملکرد Fail2Ban به مدیران سیستم این امکان را می‌دهد که به‌طور مؤثرتر نظارت بر امنیت سرور خود داشته باشند و حملات مختلف را شناسایی کنند. با استفاده از دستورات مختلف مانند iptables -L و grep، می‌توانید اطلاعات مرتبط با مسدودسازی‌ها را استخراج کرده و برای تجزیه و تحلیل و گزارش‌دهی به‌طور مؤثر از آنها استفاده کنید.[/cdb_course_lesson][cdb_course_lesson title=”فصل 8. تست و عیب‌یابی تنظیمات”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بررسی عملکرد Fail2Ban و Iptables با استفاده از ابزارهای تست حملات” subtitle=”توضیحات کامل”]برای ارزیابی و بررسی عملکرد ابزارهای امنیتی مانند Fail2Ban و Iptables، می‌توان از ابزارهای تست حملات مختلف استفاده کرد. این ابزارها به شما این امکان را می‌دهند که رفتار سیستم را در برابر حملات مختلف شبیه‌سازی کنید و مطمئن شوید که Fail2Ban و Iptables به درستی کار می‌کنند و IPهای مشکوک را مسدود می‌کنند.

1. آشنایی با ابزارهای تست حملات

چندین ابزار رایج برای شبیه‌سازی حملات و بررسی عملکرد Fail2Ban و Iptables وجود دارد که برخی از آنها عبارتند از:

1.1 Hydra

Hydra یکی از ابزارهای محبوب برای تست حملات brute force است. این ابزار می‌تواند تلاش‌های ورود ناموفق را به‌طور پیوسته شبیه‌سازی کند.

برای تست حمله brute force به سرویس SSH می‌توانید از دستور زیر استفاده کنید:

hydra -l root -P /path/to/wordlist.txt ssh://<IP address>

این دستور با استفاده از یک wordlist به SSH سرور موردنظر حمله خواهد کرد.

1.2 nmap

nmap برای شناسایی سرویس‌های فعال و آزمایش آسیب‌پذیری‌ها استفاده می‌شود. این ابزار می‌تواند برای شبیه‌سازی حملات DDoS یا حملات اسکن پورت استفاده شود.

برای شبیه‌سازی اسکن پورت با nmap می‌توانید از دستور زیر استفاده کنید:

nmap -p 22 --open <IP address>

این دستور پورت SSH (پورت 22) را اسکن می‌کند و تلاش می‌کند تا نقاط ضعف سرور را شبیه‌سازی کند.

1.3 Metasploit

Metasploit یک فریم‌ورک قدرتمند برای تست نفوذ و شبیه‌سازی انواع حملات است. این ابزار می‌تواند برای آزمایش آسیب‌پذیری‌های مختلف و تست عملکرد ابزارهای امنیتی استفاده شود.

برای شبیه‌سازی یک حمله brute force به SSH از داخل Metasploit می‌توانید از ماژول auxiliary/scanner/ssh/ssh_login استفاده کنید.

2. پیکربندی Fail2Ban برای نظارت بر حملات

قبل از تست حملات، مطمئن شوید که Fail2Ban به درستی پیکربندی شده است تا حملات brute force را شناسایی کرده و IPهای مشکوک را مسدود کند. برای این کار، مطمئن شوید که Jail SSH فعال است و مقادیر زیر تنظیم شده‌اند:

  • maxretry: تعداد تلاش‌های ناموفق مجاز برای ورود
  • findtime: مدت زمانی که Fail2Ban بررسی می‌کند که آیا تعداد تلاش‌های ناموفق بیشتر از مقدار maxretry است یا خیر.
  • bantime: مدت زمانی که IP مسدود خواهد شد.

در فایل jail.local باید موارد زیر تنظیم شده باشند:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 600
bantime = 3600

این پیکربندی به این معناست که اگر ۳ تلاش ناموفق برای ورود به SSH در مدت ۱۰ دقیقه انجام شود، IP موردنظر برای ۱ ساعت مسدود خواهد شد.

3. تست عملکرد Fail2Ban با Hydra

برای تست عملکرد Fail2Ban در برابر حملات brute force، می‌توانید از Hydra استفاده کنید. بعد از اجرای حمله با Hydra، می‌توانید با استفاده از دستور زیر وضعیت Fail2Ban را بررسی کنید:

sudo fail2ban-client status sshd

این دستور به شما نشان می‌دهد که آیا Fail2Ban توانسته است IPهایی که اقدام به حملات brute force کرده‌اند را مسدود کند یا خیر.

اگر حمله موفقیت‌آمیز باشد، خواهید دید که Fail2Ban IP را مسدود کرده است و در لیست Banned IPs نشان داده خواهد شد.

4. تست عملکرد Iptables

برای بررسی عملکرد Iptables و مشاهده اینکه آیا قوانین Fail2Ban به درستی در Iptables اعمال شده‌اند یا خیر، می‌توانید از دستور زیر استفاده کنید:

sudo iptables -L -v -n

این دستور لیستی از قوانین Iptables همراه با تعداد بسته‌هایی که هر قانون پردازش کرده است را نمایش می‌دهد. در صورتی که Fail2Ban موفق به مسدودسازی IPها شده باشد، باید ببینید که IPهای مشکوک در قوانین Iptables در بخش DROP قرار گرفته‌اند.

5. آزمون حملات DDoS با nmap

برای شبیه‌سازی حملات DDoS و بررسی اینکه آیا Iptables و Fail2Ban قادر به مسدود کردن ترافیک اضافی هستند یا نه، می‌توانید از nmap استفاده کنید.

برای تست حمله DDoS می‌توانید از دستور زیر استفاده کنید:

nmap --max-rate 1000 -p 80 <IP address>

این دستور تلاش می‌کند تا به سرعت پورت ۸۰ سرور موردنظر را اسکن کند، که به شبیه‌سازی حمله DDoS کمک می‌کند.

پس از اجرای این حمله، می‌توانید از دستور زیر برای بررسی وضعیت Iptables استفاده کنید و ببینید که آیا آدرس‌های IP حمله‌کننده مسدود شده‌اند یا خیر:

sudo iptables -L -v -n

6. بررسی لاگ‌ها برای تحلیل عملکرد

پس از اجرای تست‌ها، بررسی لاگ‌ها می‌تواند کمک بزرگی در ارزیابی عملکرد ابزارهای امنیتی باشد. برای بررسی لاگ‌های Fail2Ban، می‌توانید از دستور زیر استفاده کنید:

sudo tail -f /var/log/fail2ban.log

همچنین برای بررسی Iptables، می‌توانید از لاگ‌های مربوطه استفاده کنید که در مسیر /var/log/messages یا /var/log/syslog قرار دارند.

جمع‌بندی

استفاده از ابزارهای تست حملات مانند Hydra، nmap و Metasploit به شما این امکان را می‌دهد که عملکرد Fail2Ban و Iptables را در شرایط واقعی آزمایش کنید. این فرآیند کمک می‌کند تا از صحت عملکرد این ابزارها در شناسایی و مسدودسازی حملات brute force، DDoS و سایر تهدیدات اطمینان حاصل کنید. در این آزمایشات، بررسی لاگ‌ها و استفاده از دستورات مختلف برای مشاهده وضعیت مسدودسازی‌ها در Iptables و Fail2Ban اهمیت زیادی دارد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”رفع مشکلات رایج مانند عدم مسدودسازی IP‌ها” subtitle=”توضیحات کامل”]زمانی که Fail2Ban قادر به مسدودسازی IPهای مشکوک نیست، ممکن است مشکلات مختلفی در پیکربندی یا تنظیمات وجود داشته باشد. در اینجا به برخی از مشکلات رایج و روش‌های رفع آن‌ها پرداخته می‌شود:

1. بررسی پیکربندی نادرست Jail‌ها

یکی از دلایل رایج برای عدم مسدودسازی IPها، پیکربندی نادرست Jail‌ها است. Jail‌ها مسئول نظارت و مسدودسازی IPها برای هر سرویس خاص (مانند SSH، Apache، FTP و …) هستند. اگر پیکربندی Jail اشتباه باشد، Fail2Ban قادر به شناسایی تلاش‌های ناموفق و مسدودسازی آن‌ها نخواهد بود.

روش رفع مشکل:

  • مطمئن شوید که Jailها در فایل /etc/fail2ban/jail.local یا /etc/fail2ban/jail.conf به درستی فعال شده‌اند.
  • بررسی کنید که پورت‌ها و مسیرهای لاگ به درستی برای هر سرویس مشخص شده باشند.

برای مثال، برای SSH باید موارد زیر در فایل jail.local تنظیم شده باشد:

[sshd]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 3
findtime = 600
bantime  = 3600

2. بررسی مسیر لاگ‌ها و خطاهای مربوط به آن‌ها

یکی دیگر از مشکلات معمول عدم مسدودسازی، خطاهای مربوط به مسیرهای لاگ است. اگر Fail2Ban قادر به دسترسی به فایل‌های لاگ نباشد، نمی‌تواند تلاش‌های ناموفق ورود را شناسایی کند.

روش رفع مشکل:

  • مطمئن شوید که مسیر لاگ‌ها در فایل‌های پیکربندی صحیح است و Fail2Ban به این فایل‌ها دسترسی دارد.
  • برای بررسی، می‌توانید دستور زیر را برای بررسی دسترسی به لاگ‌ها استفاده کنید:
sudo tail -f /var/log/auth.log

اگر مسیر لاگ اشتباه باشد، باید آن را در فایل‌های پیکربندی مربوطه تصحیح کنید.

3. بررسی قوانین Iptables

ممکن است قوانین Iptables به درستی پیکربندی نشده باشد یا قوانین موجود برای مسدودسازی IPهای مشکوک به درستی اعمال نشده باشند. در این صورت، Fail2Ban به رغم شناسایی حملات، قادر به مسدودسازی IP‌ها نخواهد بود.

روش رفع مشکل:

  • بررسی کنید که Fail2Ban بتواند قوانین Iptables را به درستی اعمال کند. برای این کار می‌توانید از دستور زیر استفاده کنید:
sudo iptables -L -v -n
  • همچنین باید مطمئن شوید که Iptables یا firewalld به درستی فعال است و تداخل با Fail2Ban ایجاد نمی‌کند.

4. بررسی فیلترهای Fail2Ban

ممکن است failregex در فیلترهای Fail2Ban به درستی تنظیم نشده باشد. Fail2Ban برای شناسایی تلاش‌های ناموفق از regular expressions (regex) استفاده می‌کند. اگر این فیلترها به درستی تنظیم نشده باشند، Fail2Ban قادر به شناسایی الگوهای مشکوک نخواهد بود.

روش رفع مشکل:

  • بررسی کنید که فیلترهای Fail2Ban مانند sshd.conf برای SSH به درستی تنظیم شده باشد.
  • می‌توانید از دستور زیر برای بررسی صحت فیلتر استفاده کنید:
fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf

این دستور فیلتر sshd.conf را با لاگ‌های موجود بررسی کرده و می‌تواند به شما کمک کند که ببینید آیا failregex به درستی تنظیم شده است یا خیر.

5. بررسی دسترسی‌ها به فایل‌های پیکربندی و لاگ‌ها

اگر Fail2Ban دسترسی مناسبی به فایل‌های پیکربندی و لاگ‌ها نداشته باشد، نمی‌تواند عملکرد درستی داشته باشد.

روش رفع مشکل:

  • بررسی کنید که فایل‌های پیکربندی Fail2Ban و لاگ‌ها دارای مجوزهای مناسب برای دسترسی باشند.
  • می‌توانید دسترسی‌ها را با دستور زیر بررسی کنید:
ls -l /etc/fail2ban/
ls -l /var/log/

اطمینان حاصل کنید که کاربر fail2ban دسترسی به این فایل‌ها را دارد.

6. بررسی خطاهای مربوط به سرویس Fail2Ban

گاهی اوقات Fail2Ban به درستی راه‌اندازی نمی‌شود یا مشکلی در فرآیند مسدودسازی پیش می‌آید.

روش رفع مشکل:

  • بررسی کنید که سرویس Fail2Ban به درستی در حال اجرا است و خطا ندارد:
sudo systemctl status fail2ban
  • اگر خطا مشاهده کردید، از دستور زیر برای بررسی جزئیات بیشتر استفاده کنید:
sudo journalctl -u fail2ban

7. بررسی تداخل با فایروال‌های دیگر

اگر از فایروال دیگری مانند firewalld استفاده می‌کنید، ممکن است تداخل ایجاد شود و باعث عدم مسدودسازی IPها توسط Fail2Ban شود.

روش رفع مشکل:

  • مطمئن شوید که تنها Iptables یا firewalld فعال باشد و تداخل ایجاد نکند.
  • برای بررسی وضعیت firewalld از دستور زیر استفاده کنید:
sudo systemctl status firewalld

اگر از firewalld استفاده نمی‌کنید، آن را غیرفعال کنید.

جمع‌بندی

رفع مشکلات رایج در مسدودسازی IPها توسط Fail2Ban شامل بررسی پیکربندی Jail‌ها، مسیر لاگ‌ها، قوانین Iptables، فیلترهای regex و دسترسی‌های لازم است. همچنین، بررسی عملکرد سرویس Fail2Ban و اطمینان از عدم تداخل با فایروال‌های دیگر می‌تواند به شما در رفع مشکلات کمک کند. استفاده از ابزارهایی مانند fail2ban-client, iptables -L -v -n و fail2ban-regex برای بررسی وضعیت و شناسایی مشکلات بسیار مؤثر است.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از دستورات iptables -L و fail2ban-client برای عیب‌یابی” subtitle=”توضیحات کامل”]برای عیب‌یابی مشکلات مرتبط با Fail2Ban و Iptables، ابزارهای مختلفی وجود دارند که می‌توانند به شناسایی و رفع مشکلات کمک کنند. دو ابزار مهم در این زمینه عبارتند از دستور iptables -L برای بررسی وضعیت قوانین Iptables و دستور fail2ban-client برای بررسی وضعیت Fail2Ban.

در اینجا به بررسی هرکدام از این دستورات و نحوه استفاده از آن‌ها برای عیب‌یابی پرداخته‌ایم.

1. استفاده از دستور iptables -L

دستور iptables -L برای نمایش لیست قوانین فعال Iptables به کار می‌رود. این دستور اطلاعاتی درباره‌ی همه‌ی chains (زنجیره‌ها) و rules (قوانین) در فایروال ارائه می‌دهد.

نحوه استفاده:

برای نمایش قوانین موجود در Iptables از دستور زیر استفاده کنید:

sudo iptables -L -v -n
  • -L: نمایش لیست قوانین.
  • -v: نمایش اطلاعات دقیق‌تری شامل تعداد بسته‌های مسدود شده و حجم ترافیک.
  • -n: نمایش آدرس‌ها و پورت‌ها به صورت عددی (بدون تبدیل به نام‌ها).

نمونه خروجی:

در خروجی این دستور می‌توانید موارد زیر را مشاهده کنید:

Chain INPUT (policy ACCEPT 10 packets, 1200 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  500  60000 DROP       all  --  *      *       192.168.1.10         0.0.0.0/0            
  200  20000 ACCEPT     tcp  --  *      *       192.168.1.0/24       0.0.0.0/0            tcp dpt:ssh
  • pkts: تعداد بسته‌های دریافت شده.
  • bytes: تعداد بایت‌های دریافتی.
  • target: عمل مورد نظر (مثلاً DROP برای مسدود کردن).
  • source: آدرس‌های IP منبع.
  • destination: آدرس‌های IP مقصد.

نحوه استفاده برای عیب‌یابی:

  • تست قوانین Fail2Ban: اگر قوانین Iptables برای مسدود کردن IP‌های مشکوک اضافه شده‌اند، در این خروجی باید IPهای مسدود شده را ببینید. بررسی کنید که آیا IP مورد نظر در لیست DROP یا REJECT قرار دارد یا خیر.
  • تست تداخل با فایروال‌های دیگر: بررسی کنید که آیا فایروال‌های دیگری مانند firewalld تداخلی با Iptables ایجاد کرده‌اند.

2. استفاده از دستور fail2ban-client

دستور fail2ban-client ابزاری برای مدیریت و تعامل با Fail2Ban است. این دستور به شما اجازه می‌دهد که وضعیت Jailها، IPهای مسدود شده و تنظیمات را بررسی کنید.

نحوه استفاده:

برای بررسی وضعیت کلی Fail2Ban از دستور زیر استفاده کنید:

sudo fail2ban-client status

این دستور وضعیت کلی Fail2Ban را نشان می‌دهد، از جمله تعداد Jail‌های فعال و تعداد IPهای مسدود شده.

مثال خروجی:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 2
|  |- Total failed: 100
|  `- File list:    /var/log/auth.log
`- Action
   |- Currently banned: 1
   |- Total banned: 5
   `- Banned IP list:   192.168.1.10

در این مثال:

  • Currently failed: تعداد تلاش‌های ناموفق اخیر.
  • Currently banned: تعداد IP‌های فعلاً مسدود شده.
  • Banned IP list: لیست IPهایی که توسط Fail2Ban مسدود شده‌اند.

بررسی وضعیت Jail‌های خاص:

برای بررسی وضعیت Jailهای خاص، دستور زیر را وارد کنید:

sudo fail2ban-client status sshd

این دستور وضعیت Jail مربوط به سرویس SSH را نشان می‌دهد.

مشاهده IP‌های مسدود شده:

برای مشاهده لیست IPهای مسدود شده در یک Jail خاص، می‌توانید از دستور زیر استفاده کنید:

sudo fail2ban-client get sshd banned

این دستور لیست IPهای مسدود شده در Jail sshd را نمایش می‌دهد.

نحوه استفاده برای عیب‌یابی:

  • بررسی وضعیت Jail‌ها: اطمینان حاصل کنید که Jail‌های مربوط به سرویس‌های حساس مانند SSH، Apache و غیره فعال هستند.
  • بررسی تعداد تلاش‌های ناموفق و IPهای مسدود شده: از این دستور برای پیگیری اینکه آیا Fail2Ban به درستی تلاش‌های ناموفق و IPهای مشکوک را شناسایی کرده و مسدود کرده است استفاده کنید.
  • اطمینان از تنظیمات صحیح Jail‌ها: اگر Jail مورد نظر مسدود سازی انجام نمی‌دهد، ممکن است تنظیمات پیکربندی آن اشتباه باشد. دستور fail2ban-client status یا fail2ban-client status <jail> به شما کمک می‌کند تا وضعیت Jailها را بررسی کنید.

جمع‌بندی

استفاده از دستور iptables -L -v -n به شما کمک می‌کند تا وضعیت قوانین Iptables را بررسی کنید و مطمئن شوید که Fail2Ban قادر به اعمال قوانین مسدودسازی است. دستور fail2ban-client به شما این امکان را می‌دهد که وضعیت Fail2Ban و Jailها را بررسی کنید و IPهای مسدود شده را مشاهده نمایید. ترکیب این دو دستور ابزار قدرتمندی برای عیب‌یابی مشکلات امنیتی و مسدودسازی IPهای مشکوک فراهم می‌کند.[/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”پاسخ به سوالات فنی کاربران”][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”free” title=”پشتیبانی دائمی و در لحظه” subtitle=”توضیحات کامل”]ما در این دوره تمام تلاش خود را کرده‌ایم تا محتوایی جامع و کاربردی ارائه دهیم که شما را برای ورود به دنیای حرفه‌ای آماده کند. اما اگر در طول دوره یا پس از آن با سوالات فنی، چالش‌ها یا حتی مشکلاتی در اجرای مطالب آموزشی مواجه شدید، نگران نباشید!

  1. پرسش‌های شما، بخش مهمی از دوره است:
    هر سوال یا مشکلی که مطرح کنید، با دقت بررسی شده و پاسخ کامل و کاربردی برای آن ارائه می‌شود. علاوه بر این، سوالات و پاسخ‌های شما به دوره اضافه خواهند شد تا برای سایر کاربران نیز مفید باشد.
  2. پشتیبانی دائمی و در لحظه:
    تیم ما همواره آماده پاسخگویی به سوالات شماست. هدف ما این است که شما با خیالی آسوده بتوانید مهارت‌های خود را به کار بگیرید و پروژه‌های واقعی را با اعتماد به نفس کامل انجام دهید.
  3. آپدیت دائمی دوره:
    این دوره به طور مداوم به‌روزرسانی می‌شود تا همگام با نیازهای جدید و سوالات کاربران تکمیل‌تر و بهتر گردد. هر نکته جدید یا مشکل رایج، در نسخه‌های بعدی دوره قرار خواهد گرفت.

حرف آخر

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

📩 اگر سوالی دارید یا به مشکلی برخوردید، همین حالا مطرح کنید!
ما در کوتاه‌ترین زمان ممکن پاسخ شما را ارائه خواهیم داد. 🙌[/cdb_course_lesson][/cdb_course_lessons]

نقد و بررسی‌ها

نقد و بررسی وجود ندارد.

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

سبد خرید

سبد خرید شما خالی است.

ورود به سایت