فایل ذخیره عملکرد 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 با اجرای فرمان زیر:
sudo yum install epel-release
۳) نصب ابزار Fail2Ban؛ برای این منظور، فرمان زیر را تایپ نمایید:
sudo yum install fail2ban
تنظیمات Fail2ban
با استفاده از فرمانهای زیر، سرویس Fail2ban را فعال و راهاندازی کنید:
sudo systemctl enable fail2ban sudo systemctl start fail2ban
حالا جزئیات این فرمانها و گزینهها را بررسی میکنیم.
کجا باید تلاشهای ناموفق ورود به ssh را مشاهده کرد؟
راههای مختلفی برای این منظور وجود دارند؛ از جمله در آدرس /var/log/secure با فرمانهای grep و egrep و یا با کمک فرمانهای cat، tail، less و more.
tail -f /var/log/secure grep 'sshd.*Failed password for' /var/log/secure
خروجی نمونه:
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
محافظت از SSH با استفاده از ابزار Fail2Ban در CentOS 8
ابتدا باید منبع EPEL Repo را در CentOS 8 فعالسازی و نصب کنید. برای این منظور، فرمانهای زیر را اجرا نمایید:
sudo yum update sudo yum install epel-release sudo yum update
نصب Fail2ban در CentOS 8
از آنجایی که منبع EPEL را فعال کردهاید، حالا میتوانید به صورت زیر با استفاده از فرمان yum، ابزار Fail2ban را نصب کنید:
sudo yum install fail2ban
حالا زمان استفاده از فرمان systemctl برای فعال کردن سرویس حفاظت fail2ban در هنگام بوت است؛ برای این منظور، فرمان زیر را تایپ کنید:
sudo systemctl enable fail2ban
خروجی نمونه:
Created symlink /etc/ystem/system/multi-user.target.wants/fail2ban.service ? /usr/lib/ystem/system/fail2ban.service.
تنظیمات ابزار Fail2ban
فایل /etc/fail2ban/jail.local شرایط پیشفرض را در فایل /etc/fail2ban/jail.conf بازنویسی میکند. بر این اساس، ساخت یا ویرایش فایل jail.local میتواند با ویرایشگرهای متنی مانند vi/vim یا nano/emacs صورت گیرد:
sudo vi /etc/fail2ban/jail.local
بروزرسانی و پیوست به صورت زیر انجام میشود:
[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
حالا فایل را ذخیره و از آن خارج شوید. سپس سرویس را با فرمانهای زیر راهاندازی کنید:
sudo systemctl start fail2ban sudo systemctl status fail2ban
نحوه شروع، توقف و راهاندازی دوباره سرویس Fail2ban
قالب کار به صورت زیر خواهد بود:
sudo systemctl start fail2ban sudo systemctl stop fail2ban sudo systemctl restart fail2ban sudo systemctl status fail2ban
پیدا کردن وضعیت آدرسهای IP ناموفق و مسدود شده
برای این منظور دو خط فرمان زیر را اجرا نمایید:
sudo fail2ban-client status sudo fail2ban-client status sshd
زیرنویس عکس: نمایش فایل لاگ حاوی کلمههای عبور ناموفق و وضعیت کنونی
فیلترهای Fail2ban
میتوانید با فرمان cd به آدرس /etc/fail2ban/filter.d وارد شوید و تمام فیلترها را مشاهده نمایید:
cd /etc/fail2ban/filter.d ls
به عنوان مثال، برای نمایش فیلتر Fail2Ban برای openssh، فرمان cat را به صورت زیر اجرا کنید:
sudo cat /etc/fail2ban/filter.d/sshd.conf
و یا:
sudo vi /etc/fail2ban/filter.d/sshd.conf
این فایل را هرگز ویرایش نکنید. برای سفارشیسازی، میتوانید فایلی با عنوان /etc/fail2ban/jail.d/sshd.conf.local بسازید.
دریافت اطلاعات بیشتر در مورد آدرسهای IP مسدود شده و فایلهای لاگ
برای این منظور، از فرمانهای زیر کمک بگیرید:
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
پیشنهادات دیگر
- غیرفعالکردن و ممانعت از ورود کاربر ریموت
- غیرفعالکردن ورود بر اساس پسورد به ssh در لینوکس به منظور ارتقای امنیت
- فعالکردن ورود دو مرحلهای 2FA برای ssh
- مطالعه تمام ترفندها و روشهای امنیتی سرور OpenSSH
جمعبندی
در این مطلب با نحوه محافظت از سرور ssh در باربر حملات مرگبار با استفاده از نصب و تنظیم سرویس Fail2ban در لینوکس CentOS 8 آشنا شدیم. ابزار Fail2ban گزینهها و فرمانهای زیادی دارد و شاید بهتر است نگاهی به صفحه رسمی آن نیز داشته باشید.