خوش آمدید - امروز : سه شنبه ۲۸ فروردین ۱۴۰۳
خانه » آموزش کانفیگ سرور » آموزش افزایش امنیت لینوکس با نصب Fail2Ban در centos7

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

اکثر سرورهای لینوکس از پورت 22 برای ورود به کسنول سطر فرمان سرور که ssh نامیده می شود استفاده میکنند. این پورت یک پورت شناخته شده است، بنابراین، اغلب به این پورت حمله می شود. Fail2ban یک نرم افزار است که فایل های log را برای تلاش های ورود به سیستم در بصورت زنده اسکن می کند و آیپی مهاجمان را با فایروال امنیتی firewalld یا iptables ممنوع و مسدود می کند. Fail2ban دسترسی های ناخواسته یا تلاش های امنیتی را به سرور در زمان تنظیم فرمان تنظیم می کند و آدرس های آی پی را نشان می دهد که نشانه هایی از حملات فرهنگ لغت (brute force) را نشان می دهد. این برنامه در پس زمینه کار می کند و به طور مداوم فایل های log را برای الگوهای ورود غیرمعمول و تلاش های شکست امنیتی اسکن می کند. در واقع مفید ترین برنامه برای کنترل حملات brute force در لینوکس میباشد

در این آموزش نصب و پیکربندی Fail2Ban را با firewalld در CentOS 7 را برای شما عزیزان تقدیم میکنیم

نصب Fail2Ban

برای نصب Fail2Ban در CentOS 7، ابتدا بایستی EPEL (Packages for Enterprise Linux) را نصب کنیم. EPEL شامل بسته های اضافی برای تمام نسخه های CentOS است، یکی از این بسته های اضافی Fail2Ban است.

دستورات زیر باید پس از تعویض به کاربر ریشه یا همان root اجرا کنید:

yum install epel-release

yum install fail2ban fail2ban-systemd

اگر SELinux نصب شده باشد، باید سیاست های امنیتی SELinux را به روزرسانی کنید:

yum update -y selinux-policy*

پیکربندی تنظیمات برای Fail2Ban

پس از نصب باید ابتدا کانفیگ پیش فرض نرم افزار را لغو کنیم و کانفیگ اختصاصی روی این اسکریپت انجام دهیم برای این کار ابتدا فایل کانفیگ را جایگزین می نماییم

یک کپی از فایل jail.conf را ایجاد کنید و آن را با نام jail.local ذخیره کنید:

cp -pf /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

فایل  jail.local را برای ویرایش در Nano با دستور زیر باز کنید.

nano /etc/fail2ban/jail.local

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

[DEFAULT]

#
# MISCELLANEOUS OPTIONS
#

# "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/8

# External command that will take an tagged arguments to ignore, e.g. <ip>,
# and return true if the IP is to be ignored. False otherwise.
#
# ignorecommand = /path/to/command <ip>
ignorecommand =

# "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 = 5

Ignoreip برای تنظیم لیستی از IP ها که ممنوع و مسدود خواهد شد استفاده می شود. لیست آدرس های IP باید با جدا کننده در فایل وارد شود. این پارامتر برای تنظیم آدرس آی پی شخصی شما (اگر به سرور از یک IP ثابت دسترسی پیدا کنید). میباشد

پارامتر Bantime برای تعیین مدت زمان ثانیه که میزبان یا آیپی خاطی باید ممنوع و مسدود شود استفاده می شود.

Findtime پارامتری است که برای بررسی اینکه آیا میزبان باید ممنوع شود یا خیر، استفاده می شود.

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

برای محافظت از SSH یک فایل Jail اضافه کنید

یک فایل جدید با ویرایشگر Nano ایجاد کنید

nano /etc/fail2ban/jail.d/sshd.local

به فایل فوق، خطوط زیر را اضافه کنید.

[sshd]
enabled = true
port = ssh
#action = firewallcmd-ipset
logpath = %(sshd_log)s
maxretry = 5
bantime = 86400

پارامتر enabled به منظور ارائه حفاظت و امنیت بیشتر به حالت true تنظیم می شود ، برای غیر فعال کردن حفاظت، آن را به false میتوانید تغییر دهید.. پارامتر filter فایل پیکربندی sshd را که در مسیر /etc/fail2ban/filter.d/sshd.conf قرار دارد، بررسی می کند.

 پارامتر Action  برای استخراج آدرس IP استفاده می شود که باید با استفاده از فیلتر موجود از /etc/fail2ban/action.d/firewallcmd-ipset.conf ممنوع شود.

پارامتر port می تواند به یک مقدار جدید مانند پورت = 1212 تغییر کند، البته زمانی که پورت 22 است نیازی به تعییر این پارامتر ندارید

Logpath مسیری را که فایل log را ذخیره می کند فراهم می کند. این فایل لاگ توسط Fail2Ban اسکن شده است.

Maxretry برای تنظیم حداکثر حد ورودی های ناموفق ورودی استفاده می شود.

پارامتر Bantime برای تعیین مدت زمان ثانیه که میزبان باید ممنوع شود استفاده می شود.

اجرا کردن سرویس Fail2Ban

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

systemctl enable firewalld
systemctl start firewalld

دستورات زیر را اجرا کنید تا اسکریپت Fail2ban پس از ریستارت سرور نیز در سرور اجرا شود

systemctl enable fail2ban
systemctl start fail2ban

ردیابی و بررسی ورودهای نا موفق به سرور

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

cat /var/log/secure | grep 'Failed password'

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

Apr 4 17:05:12 htf sshd[4287]: Failed password for root from 108.61.157.25 port 23121 ssh2
Apr 4 17:05:15 htf sshd[3154]: Failed password for root from 108.61.157.25 port 14486 ssh2
Apr 4 17:05:16 htf sshd[3154]: Failed password for root from 108.61.157.25 port 24157 ssh2
Apr 4 17:05:18 htf sshd[3154]: Failed password for root from 108.61.157.25 port 24157 ssh2

بررسی Ip های ممنوع شده توسط Fail2Ban

فرمان زیر برای بدست آوردن لیستی از آدرس های ممنوعه IP که در سرور block شذه اند استفاده می شود:

iptables -L -n

وضعیت Fal2Ban را بررسی کنید

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

fail2ban-client status

نتیجه باید شبیه به این باشد:

[root@htf ]# fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd

چگونه یک آیپی بلاک شده را آزاد کنیم؟

مثلا برای آزاد کردن یک آیپی بلاک شده که برای تلاش نا موفق روی سرویس sshd مسدود شده است از دستور زیر میتوانیم استفاده کنیم:

fail2ban-client set sshd unbanip IPADDRESS

بجای IPADDRESS آدرس آیپی مدکور را وارد نمایید

امیدوارم آموزش فوق مورد  استفاده شما عزیزان قرار گرفته باشد

با تشکر

با تشکر عیسی محمدزاده
کارشناس مدیریت سرور و هاستینگ و امنیت شبکه

امتیاز 5.00 ( 2 رای )
اشتراک گذاری مطلب

کلیه حقوق مادی و معنوی مطالب و مقالات متعلق به وب سایت انجین ایکس وب میباشد - طراحی شده توسط پارس تمز