فایل ذخیره عملکرد 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 با اجرای فرمان زیر:


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

نصب Fail2ban در CentOS 8

حالا زمان استفاده از فرمان 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

نحوه‌ شروع، توقف و راه‌اندازی دوباره سرویس 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 گزینه‌ها و فرمان‌های زیادی دارد و شاید بهتر است نگاهی به صفحه رسمی آن نیز داشته باشید.