اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

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

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

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

    زمانی که بحث از مدیریت یک سرور لینوکسی به میان میآید، افزایش امنیت سرورتان باید یکی از اولویت های مهم شما باشد. با مرور log های سرورتان شما ممکن است اغلب حملات brute force متفاوت، همچنین web floods و exploit seeking و موارد دیگری را پیدا کنید.

    با نرم افزارهای جلوگیری از نفوذ همچون fail2ban شما میتوانید لاگ های سرورتان را بررسی کنید و قوانین اضافه iptables را به منظور block کردن ip آدرس های مشکل ساز اضافه کنید.

    در این مقاله ما به شما نحوه نصب fail2ban و راه اندازی تنظیمات پایه برای محافظت کردن از سیستم لینوکس تان به منظور جلوگیری از حملات brute force را آموزش خواهیم داد.


    تجهیزات مورد نیاز :

    Fail2ban به زبان پایتون نوشته شده و تنها پکیج مورد نیاز، نصب بودن Pythone روی سیستم تان میباشد.
    • Fail2ban branch 0.9.x نیاز به Python 2.6 یا 3.6 به بالا دارد.
    • Fail2ban branch 0.8.x نیاز به Python 2.4 به بالا دارد.
    • نیاز به دسترسی root به سیستم تان.
    • iptables یا showewall و sendmail به صورت اختیاری


    نحوه نصب Fail2ban روی سیستم های لینوکسی

    نصب fail2ban نسبتا آسان است.


    نصب Fail2ban در CentOS/RHEL 7

    ابتدا پکیج های خود را آپدیت کنید،‌ ریپازیتوری Epel را فعال کنید و همانند زیر fail2ban را نصب کنید.
    کد PHP:
    # yum update
    # yum install epel-release
    # yum install fail2ban 


    نصب Fail2ban در Debian/Ubuntu

    ابتدا پکیج های خود را آپدیت کنید و همانند زیر fail2ban را نصب کنید.
    کد PHP:
    # apt-get update && apt-get upgrade -y
    # apt-get install fail2ban 
    به صورت اختیاری اگر شما بخواهید پشتیبانی ایمیل را (برای notification ایمیل) فعال کنید شما میتوانید sendmail را نصب کنید.
    کد PHP:
    # yum install sendmail                   [On CentOS/RHEL]
    # apt-get install sendmail-bin sendmail  [On Debian/Ubuntu] 
    برای فعال کردن fail2ban و sendmail از دستورات زیر استفاده کنید.
    کد PHP:
    # systemctl start fail2ban
    # systemctl enable fail2ban
    # systemctl start sendmail
    # systemctl enable sendmail 


    نحوه کانفیگ کردن Fail2ban در سیستم های لینوکسی

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

    بنابراین فایل .local نیاز ندارد که همه تنظیمات را از فایل .conf استفاده کند، و در حقیقت فایل هایی هستند که شما میتوانید آنها را نادیده بگیرید. تغییرات باید در فایل های .local اعمال شوند و نه در فایل های .conf که این امر موجب میشود که این تغییرات هنگام آپگردید کردن پکت fail2ban، جایگزین (overwrite) نشوند.

    با توجه به هدف این پست ما محتوای فایل fail2ban.conf موجود را به فایل fail2ban.local کپی خواهیم کرد.
    کد PHP:
    # cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local 
    اکنون شما میتوانید در فایل .local با استفاده از ادیتور متنی دلخواه خود، تغییرات را اعمال کنید. مقادیری که شما میتوانید ویرایش کنید به قرار زیر هستند.

    loglevel : این سطحی از جزئیات است که باید log شود و آپشن های موجود عبارتند از :
    • CRITICAL
    • ERROR
    • WARNING
    • NOTICE
    • INFO
    • DEBUG

    logtarget : اکشن های مربوط به log در فایل خاص میباشد. مقدار پیش فرض /var/log/fail2ban.log میباشد. شما به هر حال میتوانید آنرا به موارد زیر تغییر دهید.
    • STDOUT : خروجی هر گونه دیتا
    • STDERR : خروجی هر گونه خطا
    • SYSLOG : پیغام های log
    • File : خروجی در یک فایل

    socket : دایرکتوری که فایل socket درون آن قرار خواهد گرفت.
    pidfile : موقعیت pidfile



    کانفیگ فایل jail.local در Fail2ban

    یکی از مهمترین فایل ها در fail2ban فایل jail.conf میباشد که jail های شما را تعریف میکند. این فایل در حقیقت مکانیست که شما سرویس هایی که باید fail2ban باید برای آنها فعال باشد را اضافه میکنید.

    همانطور که قبلا اشاره کردیم فایل های .conf میتوانند در طول آپگرید ها تغییر کنند. بنابراین شما باید یک فایل jail.local ایجاد کنید و تغییرات خود را در آن اعمال کنید.

    راه دیگر برای انجام این کار کپی کردن فایل .conf میباشد.
    کد PHP:
    # cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local 
    در مواردی که شما از CentOS یا Fedora استفاده میکنید، شما نیاز خواهید داشت که backend را در فایل jail.local از auto به systemd تغییر دهید.
    نصب و راه اندازی fail2ban در لینوکس








    اگر شما از Ubuntu/Debian استفاده میکنید، نیاز نیست که این تغییر را انجام دهید. علاوه بر آن از systemd نیز استفاده میکند.

    فایل jail به صورت پیش فرض برای دبیان/اوبونتو SSH را فعال خواهد کرد، اما در CentOS فعال نخواهد شد. اگر شما بخواهید آنرا در CentOS فعال کنید به آسانی خط زیر را در فایل /etc/fail2ban/jail.local تغییر دهید.
    کد PHP:
    [sshd]
    enabled true 


    دفعات Ban و Retry

    شما میتوانید روالی را کانفیگ کنید که بعد از آن ip آدرس ها block شود. برای این هدف fail2ban از bantime, findtime و maxretry استفاده میکند.
    • bantime : تعداد ثانیه هایی که یک ip آدرس ban خواهد ماند. (به صورت پیش فرض 10 دقیقه میباشد)
    • findtime :‌ میزان زمان بین login کردن قبل از اینکه هاست ban شود. (به صورت پیش فرض 10 دقیقه میباشد). به عبارت دیگر اگر fail2ban تعریف شده باشد که یک ip آدرس را بعد از 3 تلاش برای لاگین block کند باید در مدت findtime انجام شود. (10 دقیقه)
    • maxretry : تعداد تلاش ها که قبل از اینکه یک ban اعمال شود صورت میگیرد.


    دسترسی دادن به IP آدرس های معتبر

    البته شما قطعا نیاز خواهید داشت ip آدرس های خاصی را whitelist کنید. برای کانفیگ این چنین ip آدرس هایی فایل /etc/fail2ban/jail.local را با ادیتور متنی خود باز کنید و خط زیر را از کامنت خارج کنید.
    کد PHP:
    ignoreip 127.0.0.1/8  ::
    سپس شما میتوانید ip آدرس هایی که میخواهید ignore کنید، را قرار دهید. ip آدرس ها باید با استفاده از فاصله یا کاما از هم جدا شوند.



    هشدار های Email

    اگر شما بخواهید که بر اساس هر event ی هشدارهای ایمیلی دریافت کنید شما باید تنظیمات زیر را در فایل /etc/fail2ban/jail.local اعمال کنید.
    • destemail : آدرس ایمیلی که شما میخواهید notification ها را دریافت کنید.
    • sendername :‌ ارسال کننده ای که شما به هنگام دریافت ایمیل مشاهده خواهید کرد.
    • sender : آدرس ایمیلی که fail2ban از آن ایمیل ارسال خواهد کرد.


    mta پیش فرض (mail transfer agent) برابر با sendmail میباشد.

    به منظور دریافت هشدارهای ایمیل شما همچنین نیاز خواهید داشت که تنظیمات action را از :
    کد PHP:
    Action = %(action_)
    به شکل زیر تغییر دهید :
    کد PHP:
    action = %(action_mw)s
    action 
    = %(action_mwl)
    %(action_mw)s : هاست را ban خواهد کرد و یک ایمیل با گزارش کامل ارسال میشود.
    %(action_mwl)s : هاست را ban خواهد کرد، اطلاعات whois و همه اطلاعات مرتبط را از log فایل فراهم میآورد.



    تنظیمات اضافه Fail2ban Jail

    با توجه به آنچه که در آپشن های تنظیماتی پایه مشاهده کردیم اگر بخواهیم یک jail را کانفیگ کنیم نیاز خواهیم داشت که آنرا در فایل jail.conf فعال کنیم. syntax این کار نسبتا آسان است.
    کد PHP:
    [jail_to_enable]
    . . .
    enabled true 
    در مثال بالا شما باید jail واقعی خود را با jail_to_enable جایگزین کنید (به طور مثال سرویس sshd). در فایل jail.local مقادیر زیر برای سرویس ssh از قبل تعریف شده هستند.
    کد PHP:
    [sshd]

    port ssh
    logpath 
    = %(sshd_log)
    شما میتوانید فیلتری که به شما کمک خواهد کرد تشخیص دهید، آیا یک خط درون لاگ، یک مورد fail میباشد یا خیر را فعال کنید. مقدار در حقیقت مرجعی به یک فایل است که نام آن شامل نام سرویس بعلاوه پسوند .conf میباشد. به طور مثال /etc/fail2ban/filter.d/sshd.conf


    syntax به شرح زیر میباشد.
    کد PHP:
    filter service 
    برای مثال :
    کد PHP:
    filter sshd 

    شما میتوانید فیلتر های موجود را در دایرکتوری زیر مرور کنید.
    کد PHP:
    /etc/fail2ban/filter.d


    استفاده از Fail2ban-client

    به همراه fail2ban کلاینتی هم موجود است که میتوان برای بررسی و تغییر تنظیمات جاری استفاده کرد. از آنجایی که این مورد آپشن های زیادی را فراهم میآورد شما میتوانید صفحه manual انرا با استفاده از دستور زیر مشاهده کنید.
    کد PHP:
    # man fail2ban-client 
    دراینجا شما یکسری دستورهای پایه را مشاهده میکنید برای بررسی وضعیت موجود fail2ban یا همچنین برای jail خاصی شما میتوانید از دستور زیر استفاده کنید.
    کد PHP:
    # fail2ban-client status 
    نتیجه چیزی شبیه به زیر خواهد بود.




    برای اینکه تنها jail را بررسی کنید دستور زیر را اجرا کنید.
    کد PHP:
    # fail2ban-client status sshd 
    در تصویر زیر شما مشاهده خواهید کرد که چندین لاگین fail شده دارید در نتیجه fail2ban توانسته ip آدرس هایی که من از طریق آنها تلاش به اتصال به سرور داشتم را block کند.
    تنظیمات fail2ban در لینوکس



    همچنین توصیه میشود مطالعه کنید :

    5 نمونه از بهترین روش ها برای امنیت و نگهداری سرورهای لینوکس

    فعال کردن احراز هویت دو مرحله ای هنگام لاگین SSH (توسط Google Authenticator)

    20 ترفند برای امنیت سرورهای CentOS - بخش 1

    چگونه امنیت سیستم عامل لینوکس خود را برقرار کنیم

    نحوه مقابله با باج افزار ها

    نحوه نصب FreeIPA (سرویس احراز هویت متمرکز لینوکسی) در CentOS 7



    نتیجه

    fail2ban یک سیستم جلوگیری از نفوذ عالی و به خوبی داکیومنت شده میباشد که امنیت بالایی را به سیستم لینوکسی شما فراهم میآورد. نصب و راه اندازی آن مقداری زمان میبرد اما بعد از اینکه شما با آن کاملا آشنا شدید به راحتی میتوانید آنرا تغییر و rule ها را گسترش دهید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 01-25-2021, 01:00 AM.

درباره انجمن منطقه لینوکسی ها

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

شبکه های اجتماعی
در حال انجام ...
X