اطلاعیه

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

نصب سیستم Fail2ban (جلوگیری از نفوذ) روی RHEL/CentOS 6.3/5.8, Fedora 17/12

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

    نصب سیستم Fail2ban (جلوگیری از نفوذ) روی RHEL/CentOS 6.3/5.8, Fedora 17/12

    Fail2ban یک framwork رایگان و Opensource برای جلوگیری از نفوذ است که با زبان برنامه نویسی پایتون طراحی شده است. نحوه عملکرد Fail2ban با مانیتور log فایل هایی همچون /var/log/pwdfail, /var/log/auth.log, /var/log/secure و غیره میباشد و ip address هایی را که تلاش های ناموفق برای login با پسورد داشته باشند را مسدود میکند. این ابزار برای آپدیت کردن rule های فایروال iptable به منظور مسدود کردن ip address ها برای یک مدت زمان مشخصی استفاده میشود.
    نصب و راه اندازی fail2banدر لینوکس



    در این مقاله به نحوه نصب و کانفیگ fail2ban روی سیستم های RHEL 6.3/6.2/6.1/6.0/5.8 CentOS 6.3/6.2/6.1/6.0/5.8 و Fedora 17,16,15,14,13,12 میپردازیم. fail2ban همچون یک سرویسی اجرا میشود که از اسکریپت های پایتون برای تجزیه کردن log فایل ها برای یافتن تلاش های به منظور نفوذ استفاده میکند و یک رول custom به فایل کانفیگ iptable اضافه میکند و دسترسی ip address های مشخص را مسدود مینماید.

    قبل از اینکه شروع به نصب و کانفیگ fail2ban کنیم باید خاطر نشان شوم که اکثر attacer ها تلاش به کسب دسترسی root از طریق ssh هستند. بنابراین به شما توصیه میکنم که به مواردی همچون غیر فعال کردن login یوزر root در ssh و استفاده از ssh key برای وارد شدن به سیستم توجه ویژه ای داشته باشیم.



    نصب Fail2ban در RHEL, CentOS و Fedora
    به صورت پیش فرض fail2ban روی سیستم های لینوکس موجود نمیباشد در نتیجه شما نیاز خواهید داشت که ابتدا ریپازیتوری های RPMForge و ریپازیتوری EPEL را روی سیستم تان اضافه و فعال کنید. بعد از اضافه کردن ریپازیتوری با استفاده از دستور yum زیر fail2ban را نصب کنید.
    کد:
    # yum install fail2ban

    تنظیمات بخش Default برای Fail2ban
    فایل کانفیگ اصلی fail2ban در مسیر /etc/fail2ban/jail.conf قرار گرفته است. در نتیجه با ویرایش گر vi یا هر ویرایشگری که با آن احساس راحتی میکنید فایل را باز کنید.
    کد:
    # vi /etc/fail2ban/jail.conf
    اکنون شما بخش default را با یک سری rule های ابتدایی که با خود fail2ban همراه هستند مشاهده خواهید کرد. اگر شما بخواهید یکسری لایه های اضافی محافظتی به سرورتان اضافه کنید، شما میتوانید هر قسمت rule را با توجه به نیازتان customize کنید.
    کد:
    [DEFAULT]
    
    # "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
    # ban a host which matches an address in this list. Several addresses can be
    # defined using space separator.
    ignoreip = 127.0.0.1
    
    # "bantime" is the number of seconds that a host is banned.
    bantime = 600
    
    # A host is banned if it has generated "maxretry" during the last "findtime"
    # seconds.
    findtime = 600
    
    # "maxretry" is the number of failures before a host get banned.
    maxretry = 3

    اکنون به توضیح هر قسمت rule و هدف از استفاده آنها را شرح میدهیم.


    ignoreip :
    قسمت ignoreip به شما این امکان را میدهد که ip address های بلاک شده خاص را از حالت block در بیاورید و در حقیقت از block لیست به white لیست انتقال میدهید. در اینجا شما میتوانید لیست ip address ها را با کاراکتر space از هم مجزا کنید و مطمئن شوید که آدرس خودتان را هم در آن قرار داده اید.

    bantime :
    تعداد ثانیه هایی که یک host از دسترسی به سرور محدود و مسدود میشود. به صورت پیش فرض این گزینه 600 ثانیه (معادل 10 دقیقه) تنظیم شده است که شما میتوانید آن را تا یک ساعت یا بیشتر در صورت تمایل افزایش دهید.

    findtime :
    مدت زمانی که یک host باید login باشد. به صورت پیش فرض این گزینه برابر با 10 دقیقه تنظیم شده است. این به این معنی است که اگر یک host تلاش به login کند و fail شود برای لاگین کردن بیشتر از عدد maxretry مسدود خواهند شد.

    maxretry :
    تعداد تلاش های fail شده به منظور login قبل از اینکه یک host به مدت زمان مشخص block شود.


    Config کردن بخش ssh-iptable برای Fail2ban
    بخش زیر بخش پیش فرض ssh-iptables میباشد و به صورت پیش فرض فعال است. بنابراین شما نیاز به ایجاد تغییرات در این بخش ندارید.
    کد:
    [ssh-iptables]
    
    enabled  = true
    filter   = sshd
    action   = iptables[name=SSH, port=ssh, protocol=tcp]
               sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]
    logpath  = /var/log/secure
    maxretry = 5

    جزئیات هر rule به شرح زیر میباشد.
    enabled :
    این بخش مربوط به فعال بودن محافظت ssh میباشد و شما با تغییر کلمه true به false میتوانید آن را غیر فعال کنید.

    filter :
    این بخش به صورت پیش فرض برابر با sshd تعریف شده و در حقیقت به فایل کانفیگ /etc/fail2ban/filter.d/sshd.conf برمیگردد که شامل rule هایی میباشد که fail2ban برای یافتن موارد match شده مورد استفاده قرار میدهد.

    action :
    این action به fail2ban اعلام میکند که یک ip آدرس match شده را مسدود کند که به محض یافتن یک filter match در فایل /etc/fail2ban/action.d/iptables.conf اعمال میشود. اگر سرور شما تنظیمات email داشته باشد شما میتوانید email address اضافه کنید تا fail2ban به شما ایمیل هشدار هر زمانی که یک ip address را مسدود میکند ارسال کند. بخش sender به فایل /etc/fail2ban/action.d/sendmail-whois.conf برمیگردد.

    logpath :
    این بخش مسیر log هایی است که fail2ban دنبال میکند.

    maxretry :
    این بخش تعریف یکسانی همانند آپشن دیفالت دارد که در بخش بالا در مورد آن بحث کردیم.


    Restart کردن سرویس Fail2ban :
    به محض اینکه در فایل کانفیگ fail2ban تغییرات اعمال شد حتما باید سرویس fail2ban ریستارت شود.
    کد:
    # chkconfig --level 23 fail2ban on
    # service fail2ban start
    Starting fail2ban:                                         [  OK  ]

    بررسی Rule های Fail2ban Iptables
    rule هایی که fail2ban با استفاده از بخش iptable اضافه میکند را بررسی کنید.
    کد:
    # iptables -L
    من یکسری login های ناموفق از یکی از سیستم هایمان به سروری که fail2ban روی آن نصب و در حال کار است داشتم در اینجا شما میتوانید ip address مسدود شده سیستمم را مشاهده کنید.
    کد:
    Message from syslogd@tecmint at Nov 23 13:57:53 ...
    fail2ban.actions: WARNING [ssh-iptables] Ban 15.13.14.40
    iptables -L
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination
    fail2ban-SSH  tcp  --  anywhere             anywhere            tcp dpt:ssh
    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
    ACCEPT     icmp --  anywhere             anywhere
    ACCEPT     all  --  anywhere             anywhere
    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http
    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp multiport dports 5901:5903,6001:6003
    REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination
    REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    
    Chain fail2ban-SSH (1 references)
    target     prot opt source               destination
    DROP all -- 15.13.14.40 anywhere
    RETURN     all  --  anywhere             anywhere

    مشاهده تلاش های ناموفق برای Login در SSH
    برای مشاهده تلاش های ناموفق login ssh موجود دستور زیر را اجرا کنید که لیستی از تلاش های ناموفق توسط host ها را نمایش خواهد داد.
    کد:
    # cat /var/log/secure | grep 'Failed password' |  sort | uniq -c
    کد:
    1 Nov 19 16:53:37 tecmint sshd[28185]: Failed password for root from 172.16.25.125 port 1302 ssh2
    1 Nov 23 13:57:43 tecmint sshd[19079]: Failed password for root from 115.113.134.40 port 57599 ssh2
    1 Nov 23 13:57:46 tecmint sshd[19079]: Failed password for root from 115.113.134.40 port 57599 ssh2
    1 Nov 23 13:57:50 tecmint sshd[19079]: Failed password for root from 115.113.134.40 port 57599 ssh2
    1 Oct 18 14:11:58 tecmint sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2
    1 Oct 18 14:12:03 tecmint sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2
    1 Oct 18 14:12:11 tecmint sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2
    1 Oct 18 14:12:16 tecmint sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2
    1 Oct 18 14:12:22 tecmint sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2
    1 Oct 18 14:12:28 tecmint sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2
    1 Oct 18 14:12:47 tecmint sshd[10719]: Failed password for root from 172.16.18.249 port 4774 ssh2

    حذف IP Address از Fail2ban :
    برای حذف ip address بلاک شده از rule های iptable در fail2ban دستور زیر را اجرا کنید.
    کد:
    # iptables -D fail2ban-ssh 1
    برای کسب هر گونه اطلاعات بیشتر میتوانید از سایت رسمی Fail2ban بازدید نمایید اگر هر گونه سوال یا نظری درباره این مقاله داشتید با ما در میان بگذارید.

    با ما باشید. ....
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 02-08-2021, 08:13 PM.

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

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

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