
فایل ذخیره عملکرد ssh خطاهای زیادی در وارد کردن کلمه عبور نشان میدهد. آدرسهای IP به صورت تصادفی، سعی در از کنترل خارج کردن سرور sshd شما که بر مبنای CentOS 8 کار میکند، داشتهاند. در چنین حالتی چه کار باید کرد؟ در سرور لینوکس CentOS 8، چگونه میتوان با fail2ban از ssh محافظت کرد؟ چگونه میتوان تشخیص داد که ابزار fail2ban در CentOS 8 نصب شده است؟
معمولاً پورت ۲۲ از SSH TCP در دسترس همگان در اینترنت قرار دارد. در نتیجه، رباتها و مهاجمان زیادی سعی خواهند داشت که با آزمایش شناسههای کاربری و کلمههای عبور به صورت تصادفی، به سرور شما وارد شوند. سرور OpenSSH و خودِ کلاینت نسبتاً امن هستند؛ ولی به مانند هر چیز دیگری، امکان نفوذ به آنها با حملات گسترده وجود خواهد داشت. در اینجا، یک پیام ساده را از یک سرور میبینیم:

چگونه با ابزار Fail2Ban در لینوکس CentOS 8 از ssh محافظت کنیم؟
ابزار امنیتی Fail2Ban برای شما امکانی را فراهم میکند که بتوانید آدرسهای IP که چند بار تلاش ناموفق برای ورود به ssh دارند را مسدود کنید. در نتیجه میتوانید با این ابزار از ssh و یا هر ابزار دیگری محافظت کنید. در این مطلب قصد داریم شما را با نحوه نصب و تنظیمات ابزار Fail2ban در سرور لینوکس CentOS 8 آشنا کنیم.
نحوه نصب ابزار Fail2Ban در لینوکس CentOS 8
مراحل کار جهت نصب و تنظیم ابزار Fail2ban برای ارتقای امنیت سرور به صورت زیر خواهد بود:
۱) ورود به سرور لینوکس CentOS 8 با استفاده از ssh
۲) فعالسازی و نصب منبع EPEL در CentOS 8 با اجرای فرمان زیر:
[php]
sudo yum install epel-release
[/php]
۳) نصب ابزار Fail2Ban؛ برای این منظور، فرمان زیر را تایپ نمایید:
[php]
sudo yum install fail2ban
[/php]
تنظیمات Fail2ban
با استفاده از فرمانهای زیر، سرویس Fail2ban را فعال و راهاندازی کنید:
[php]
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
[/php]
حالا جزئیات این فرمانها و گزینهها را بررسی میکنیم.
کجا باید تلاشهای ناموفق ورود به ssh را مشاهده کرد؟
راههای مختلفی برای این منظور وجود دارند؛ از جمله در آدرس /var/log/secure با فرمانهای grep و egrep و یا با کمک فرمانهای cat، tail، less و more.
[php]
tail -f /var/log/secure
grep ‘sshd.*Failed password for’ /var/log/secure
[/php]
خروجی نمونه:
[php]
Sep 26 10:08:10 localhost sshd[16031]: Failed password for root from 49.88.112.90 port 15595 ssh2
Sep 26 10:08:13 localhost sshd[16031]: Failed password for root from 49.88.112.90 port 15595 ssh2
Sep 26 10:13:19 localhost sshd[16039]: Failed password for root from 222.186.52.89 port 58696 ssh2
Sep 26 10:13:22 localhost sshd[16039]: Failed password for root from 222.186.52.89 port 58696 ssh2
Sep 26 10:13:26 localhost sshd[16039]: Failed password for root from 222.186.52.89 port 58696 ssh2
Sep 26 10:16:14 localhost sshd[17218]: Failed password for root from 49.88.112.80 port 41089 ssh2
Sep 26 10:16:16 localhost sshd[17218]: Failed password for root from 49.88.112.80 port 41089 ssh2
Sep 26 10:16:19 localhost sshd[17218]: Failed password for root from 49.88.112.80 port 41089 ssh2
Sep 26 10:19:14 localhost sshd[17226]: Failed password for root from 153.36.236.35 port 44787 ssh2
Sep 26 10:19:17 localhost sshd[17226]: Failed password for root from 153.36.236.35 port 44787 ssh2
Sep 26 10:19:19 localhost sshd[17226]: Failed password for root from 153.36.236.35 port 44787 ssh2
Sep 26 10:22:06 localhost sshd[17260]: Failed password for root from 222.186.30.165 port 22558 ssh2
Sep 26 10:22:08 localhost sshd[17260]: Failed password for root from 222.186.30.165 port 22558 ssh2
Sep 26 10:22:11 localhost sshd[17260]: Failed password for root from 222.186.30.165 port 22558 ssh2
[/php]
محافظت از SSH با استفاده از ابزار Fail2Ban در CentOS 8
ابتدا باید منبع EPEL Repo را در CentOS 8 فعالسازی و نصب کنید. برای این منظور، فرمانهای زیر را اجرا نمایید:
[php]
sudo yum update
sudo yum install epel-release
sudo yum update
[/php]
نصب Fail2ban در CentOS 8
از آنجایی که منبع EPEL را فعال کردهاید، حالا میتوانید به صورت زیر با استفاده از فرمان yum، ابزار Fail2ban را نصب کنید:
[php]
sudo yum install fail2ban
[/php]

حالا زمان استفاده از فرمان systemctl برای فعال کردن سرویس حفاظت fail2ban در هنگام بوت است؛ برای این منظور، فرمان زیر را تایپ کنید:
[php]
sudo systemctl enable fail2ban
[/php]
خروجی نمونه:
[php]
Created symlink /etc/ystem/system/multi-user.target.wants/fail2ban.service ? /usr/lib/ystem/system/fail2ban.service.
[/php]
تنظیمات ابزار Fail2ban
فایل /etc/fail2ban/jail.local شرایط پیشفرض را در فایل /etc/fail2ban/jail.conf بازنویسی میکند. بر این اساس، ساخت یا ویرایش فایل jail.local میتواند با ویرایشگرهای متنی مانند vi/vim یا nano/emacs صورت گیرد:
[php]
sudo vi /etc/fail2ban/jail.local
[/php]
بروزرسانی و پیوست به صورت زیر انجام میشود:
[php]
[DEFAULT]
# Ban IP/hosts for 24 hour ( 24h*3600s = 86400s):
bantime = 86400
# An ip address/host is banned if it has generated "maxretry" during the last "findtime" seconds.
findtime = 600
maxretry = 3
# "ignoreip" can be a list of IP addresses, CIDR masks or DNS hosts. Fail2ban
# will not ban a host which matches an address in this list. Several addresses
# can be defined using space (and/or comma) separator. For example, add your
# static IP address that you always use for login such as 103.1.2.3
#ignoreip = 127.0.0.1/8 ::1 103.1.2.3
# Call iptables to ban IP address
banaction = iptables-multiport
# Enable sshd protection
[sshd]
enabled = true
[/php]
حالا فایل را ذخیره و از آن خارج شوید. سپس سرویس را با فرمانهای زیر راهاندازی کنید:
[php]
sudo systemctl start fail2ban
sudo systemctl status fail2ban
[/php]

نحوه شروع، توقف و راهاندازی دوباره سرویس Fail2ban
قالب کار به صورت زیر خواهد بود:
[php]
sudo systemctl start fail2ban
sudo systemctl stop fail2ban
sudo systemctl restart fail2ban
sudo systemctl status fail2ban
[/php]
پیدا کردن وضعیت آدرسهای IP ناموفق و مسدود شده
برای این منظور دو خط فرمان زیر را اجرا نمایید:
[php]
sudo fail2ban-client status
sudo fail2ban-client status sshd
[/php]

نمایش فایل لاگ حاوی کلمههای عبور ناموفق و وضعیت کنونی
زیرنویس عکس: نمایش فایل لاگ حاوی کلمههای عبور ناموفق و وضعیت کنونی
فیلترهای Fail2ban
میتوانید با فرمان cd به آدرس /etc/fail2ban/filter.d وارد شوید و تمام فیلترها را مشاهده نمایید:
[php]
cd /etc/fail2ban/filter.d
ls
[/php]
به عنوان مثال، برای نمایش فیلتر Fail2Ban برای openssh، فرمان cat را به صورت زیر اجرا کنید:
[php]
sudo cat /etc/fail2ban/filter.d/sshd.conf
[/php]
و یا:
[php]
sudo vi /etc/fail2ban/filter.d/sshd.conf
[/php]
این فایل را هرگز ویرایش نکنید. برای سفارشیسازی، میتوانید فایلی با عنوان /etc/fail2ban/jail.d/sshd.conf.local بسازید.
دریافت اطلاعات بیشتر در مورد آدرسهای IP مسدود شده و فایلهای لاگ
برای این منظور، از فرمانهای زیر کمک بگیرید:
[php]
tail -f /var/log/fail2ban.log
grep IP-address /var/log/fail2ban.log
sudo iptables -L -n -v
sudo iptables -L f2b-sshd -n -v
sudo iptables -S | f2b-sshd
[/php]
پیشنهادات دیگر
- غیرفعالکردن و ممانعت از ورود کاربر ریموت
- غیرفعالکردن ورود بر اساس پسورد به ssh در لینوکس به منظور ارتقای امنیت
- فعالکردن ورود دو مرحلهای 2FA برای ssh
- مطالعه تمام ترفندها و روشهای امنیتی سرور OpenSSH
جمعبندی
در این مطلب با نحوه محافظت از سرور ssh در باربر حملات مرگبار با استفاده از نصب و تنظیم سرویس Fail2ban در لینوکس CentOS 8 آشنا شدیم. ابزار Fail2ban گزینهها و فرمانهای زیادی دارد و شاید بهتر است نگاهی به صفحه رسمی آن نیز داشته باشید.