بلاگ/محافظت از SSH با ابزار Fail2ban
به‌روز شده

محافظت از SSH با ابزار Fail2ban

چگونه با ابزار Fail2Ban در لینوکس CentOS 8 از ssh محافظت کنیم؟ ابزار امنیتی Fail2Ban برای شما امکانی را فراهم می‌کند که بتوانید آدرس‌های IP که چند بار تلاش ناموفق برای ورود به ssh دارند را مسدود کنید. در نتیجه می‌توانید با این ابزار از ssh و یا هر ابزار دیگری محافظت کنید. در این مطلب قصد داریم شما را با نحوه نصب و تنظیمات ابزار Fail2ban در سرور لینوکس CentOS 8 آشنا کنیم.

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

چگونه با ابزار 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
۳) نصب ابزار Fail2Ban؛ برای این منظور، فرمان زیر را تایپ نمایید:
php
sudo yum install fail2ban

تنظیمات Fail2ban

با استفاده از فرمان‌های زیر، سرویس Fail2ban را فعال و راه‌اندازی کنید:
php
sudo systemctl enable fail2bansudo systemctl start fail2ban
حالا جزئيات این فرمان‌ها و گزینه‌ها را بررسی می‌کنیم.

کجا باید تلاش‌های ناموفق ورود به ssh را مشاهده کرد؟

راه‌های مختلفی برای این منظور وجود دارند؛ از جمله در آدرس /var/log/secure با فرمان‌های grep و egrep و یا با کمک فرمان‌های cat، tail، less و more.
php
tail -f /var/log/securegrep 'sshd.*Failed password for' /var/log/secure
خروجی نمونه:
php
Sep 26 10:08:10 localhost sshd[16031]: Failed password for root from 49.88.112.90 port 15595 ssh2Sep 26 10:08:13 localhost sshd[16031]: Failed password for root from 49.88.112.90 port 15595 ssh2Sep 26 10:13:19 localhost sshd[16039]: Failed password for root from 222.186.52.89 port 58696 ssh2Sep 26 10:13:22 localhost sshd[16039]: Failed password for root from 222.186.52.89 port 58696 ssh2Sep 26 10:13:26 localhost sshd[16039]: Failed password for root from 222.186.52.89 port 58696 ssh2Sep 26 10:16:14 localhost sshd[17218]: Failed password for root from 49.88.112.80 port 41089 ssh2Sep 26 10:16:16 localhost sshd[17218]: Failed password for root from 49.88.112.80 port 41089 ssh2Sep 26 10:16:19 localhost sshd[17218]: Failed password for root from 49.88.112.80 port 41089 ssh2Sep 26 10:19:14 localhost sshd[17226]: Failed password for root from 153.36.236.35 port 44787 ssh2Sep 26 10:19:17 localhost sshd[17226]: Failed password for root from 153.36.236.35 port 44787 ssh2Sep 26 10:19:19 localhost sshd[17226]: Failed password for root from 153.36.236.35 port 44787 ssh2Sep 26 10:22:06 localhost sshd[17260]: Failed password for root from 222.186.30.165 port 22558 ssh2Sep 26 10:22:08 localhost sshd[17260]: Failed password for root from 222.186.30.165 port 22558 ssh2Sep 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 فعالسازی و نصب کنید. برای این منظور، فرمان‌های زیر را اجرا نمایید:
php
sudo yum updatesudo yum install epel-releasesudo yum update

نصب Fail2ban در CentOS 8

از آنجایی که منبع EPEL را فعال کرده‌اید، حالا می‌توانید به صورت زیر با استفاده از فرمان yum، ابزار Fail2ban را نصب کنید:
php
sudo yum install fail2ban
نصب Fail2ban در CentOS 8 حالا زمان استفاده از فرمان systemctl برای فعال کردن سرویس حفاظت fail2ban در هنگام بوت است؛ برای این منظور، فرمان زیر را تایپ کنید:
php
sudo systemctl enable fail2ban
خروجی نمونه:
php
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 صورت ‌گیرد:
php
sudo vi /etc/fail2ban/jail.local
بروزرسانی و پیوست به صورت زیر انجام می‌شود:
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 = 600maxretry = 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 addressbanaction = iptables-multiport # Enable sshd protectionenabled = true
حالا فایل را ذخیره و از آن خارج شوید. سپس سرویس را با فرمان‌های زیر راه‌اندازی کنید:
php
sudo systemctl start fail2bansudo systemctl status fail2ban
تنظیمات ابزار Fail2ban

نحوه‌ شروع، توقف و راه‌اندازی دوباره سرویس Fail2ban

قالب کار به صورت زیر خواهد بود:
php
sudo systemctl start fail2bansudo systemctl stop fail2bansudo systemctl restart fail2bansudo systemctl status fail2ban

پیدا کردن وضعیت آدرس‌های IP ناموفق و مسدود شده

برای این منظور دو خط فرمان زیر را اجرا نمایید:
php
sudo fail2ban-client statussudo fail2ban-client status sshd
نمایش فایل لاگ حاوی کلمه‌های عبور ناموفق و وضعیت کنونی
نمایش فایل لاگ حاوی کلمه‌های عبور ناموفق و وضعیت کنونی
زیرنویس عکس: نمایش فایل لاگ حاوی کلمه‌های عبور ناموفق و وضعیت کنونی

فیلترهای Fail2ban

می‌توانید با فرمان cd به آدرس /etc/fail2ban/filter.d وارد شوید و تمام فیلترها را مشاهده نمایید:
php
cd /etc/fail2ban/filter.dls
به عنوان مثال، برای نمایش فیلتر Fail2Ban برای openssh، فرمان cat را به صورت زیر اجرا کنید:
php
sudo cat /etc/fail2ban/filter.d/sshd.conf
و یا:
php
sudo vi /etc/fail2ban/filter.d/sshd.conf
این فایل را هرگز ویرایش نکنید. برای سفارشی‌سازی، می‌توانید فایلی با عنوان /etc/fail2ban/jail.d/sshd.conf.local بسازید.  

دریافت اطلاعات بیشتر در مورد آدرس‌های IP مسدود شده و فایل‌های لاگ

برای این منظور، از فرمان‌های زیر کمک بگیرید:
php
tail -f /var/log/fail2ban.loggrep IP-address /var/log/fail2ban.logsudo iptables -L -n -vsudo iptables -L f2b-sshd -n -vsudo iptables -S | f2b-sshd

پیشنهادات دیگر

  • غیرفعال‌کردن و ممانعت از ورود کاربر ریموت
  • غیرفعال‌کردن ورود بر اساس پسورد به ssh در لینوکس به منظور ارتقای امنیت
  • فعال‌کردن ورود دو مرحله‌ای 2FA برای ssh
  • مطالعه تمام ترفندها و روش‌های امنیتی سرور OpenSSH

جمع‌بندی

در این مطلب با نحوه محافظت از سرور ssh در باربر حملات مرگبار با استفاده از نصب و تنظیم سرویس Fail2ban در لینوکس CentOS 8 آشنا شدیم. ابزار Fail2ban گزینه‌ها و فرمان‌های زیادی دارد و شاید بهتر است نگاهی به صفحه رسمی آن نیز داشته باشید.