πŸ” Fail2Ban: Автоматична Π·Π°Ρ‰ΠΈΡ‚Π° Π½Π° SSH Π΄ΠΎΡΡ‚ΡŠΠΏΠ° ΠΎΡ‚ brute-force Π°Ρ‚Π°ΠΊΠΈ

Fail2Ban: Автоматична Π·Π°Ρ‰ΠΈΡ‚Π° Π½Π° SSH Π΄ΠΎΡΡ‚ΡŠΠΏΠ° ΠΎΡ‚ brute-force Π°Ρ‚Π°ΠΊΠΈ

Π’ Π΄Π½Π΅ΡˆΠ½Π°Ρ‚Π° Π΄ΠΈΠ³ΠΈΡ‚Π°Π»Π½Π° срСда, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΄ΠΎΡ€ΠΈ Π΄ΠΎΠΌΠ°ΡˆΠ½ΠΈΡ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ са чСсто ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚, Π·Π°Ρ‰ΠΈΡ‚Π°Ρ‚Π° Π½Π° отдалСчСния Π΄ΠΎΡΡ‚ΡŠΠΏ Ρ‡Ρ€Π΅Π· SSH Π΅ ΠΎΡ‚ ΡΡŠΡ‰Π΅ΡΡ‚Π²Π΅Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π•Π΄ΠΈΠ½ ΠΎΡ‚ Π½Π°ΠΉ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈΡ‚Π΅ инструмСнти Π·Π° Π±ΠΎΡ€Π±Π° с Π½Π΅ΠΎΡ‚ΠΎΡ€ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ ΠΎΠΏΠΈΡ‚ΠΈ Π·Π° Π²Π»ΠΈΠ·Π°Π½Π΅ Π΅ Fail2Ban – ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π½Π° систСма, която Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π±Π»ΠΎΠΊΠΈΡ€Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈ IP адрСси.

Π’ Ρ‚Π°Π·ΠΈ статия Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅:

  • Как Ρ€Π°Π±ΠΎΡ‚ΠΈ Fail2Ban?
  • Как Π΄Π° Π³ΠΎ инсталирамС ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅?
  • Как Π΄Π° настроим Π·Π°Ρ‰ΠΈΡ‚Π° Π·Π° SSH?
  • Как Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ ΠΈ Π±Π°Π½Π½Π°Ρ‚ΠΈΡ‚Π΅ IP адрСси?
  • Π Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ настройки ΠΈ ΡΡŠΠ²Π΅Ρ‚ΠΈ Π·Π° ΠΏΠΎ-висока сигурност.

🧠 Какво С Fail2Ban?

Fail2Ban Π΅ Python-Π±Π°Π·ΠΈΡ€Π°Π½ Π΄Π΅ΠΌΠΎΠ½, ΠΊΠΎΠΉΡ‚ΠΎ слСди Π»ΠΎΠ³ΠΎΠ²ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° систСмата ΠΈ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ΅ΠΌΠ° дСйствия ΠΏΡ€ΠΈ засичанС Π½Π° ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»Π½Π° активност – Π½Π°ΠΉ-чСсто Ρ‡Ρ€Π΅Π· iptables ΠΈΠ»ΠΈ firewalld, Π·Π° Π΄Π° Π±Π»ΠΎΠΊΠΈΡ€Π° IP адрСси, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ са ΠΎΠΏΠΈΡ‚Π°Π»ΠΈ Π΄Π° сС Π»ΠΎΠ³Π½Π°Ρ‚ Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

Най-чСсто сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° Π½Π°:

  • SSH
  • FTP
  • Mail ΡΡŠΡ€Π²ΡŠΡ€ΠΈ
  • Web login Ρ„ΠΎΡ€ΠΌΠΈ (Ρ‡Ρ€Π΅Π· custom Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ)

🧰 Π˜Π½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ Π½Π° Fail2Ban

βœ… Debian / Ubuntu:

My Terminal
sudo apt update
sudo apt install fail2ban -y

βœ… CentOS / RHEL / AlmaLinux / Rocky:

My Terminal
sudo dnf install epel-release -y
sudo dnf install fail2ban -y

Π‘Π»Π΅Π΄ инсталацията, стартирамС ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΌΠ΅ услугата:

My Terminal
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° статуса:

My Terminal
sudo systemctl status fail2ban

βš™οΈ Основна конфигурация Π½Π° Fail2Ban Π·Π° SSH

По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, Fail2Ban ΠΈΠ΄Π²Π° с Π³ΠΎΡ‚ΠΎΠ² β€žjailβ€œ Π·Π° SSH. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ сС Π½Π°ΠΌΠΈΡ€Π°Ρ‚ Π²:

My Terminal
/etc/fail2ban/

Никога Π½Π΅ промСняйтС Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ jail.conf – вмСсто Ρ‚ΠΎΠ²Π° ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ Π»ΠΎΠΊΠ°Π»Π΅Π½ Ρ„Π°ΠΉΠ»:

My Terminal
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

ΠžΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ Π³ΠΎ Π·Π° рСдакция:

My Terminal
sudo nano /etc/fail2ban/jail.local

ΠžΡ‚ΠΊΡ€ΠΈΠΉΡ‚Π΅ сСкцията [sshd] ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΉΡ‚Π΅ я:

My Terminal
[sshd]
enabled = true
port    = ssh
logpath = %(sshd_log)s
maxretry = 5
bantime = 1h
findtime = 10m

ОбяснСниС:

  • enabled = true – Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° jaila Π·Π° SSH
  • port = ssh – ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° стандартния ΠΏΠΎΡ€Ρ‚ (ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ смСнитС Π°ΠΊΠΎ стС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΏΠΎΡ€Ρ‚Π° Π½Π° SSH)
  • maxretry = 5 – Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π° 5 Π³Ρ€Π΅ΡˆΠ½ΠΈ ΠΎΠΏΠΈΡ‚Π°
  • bantime = 1h – Π±Π°Π½Π²Π° IP-Ρ‚ΠΎ Π·Π° 1 час
  • findtime = 10m – засича ΠΎΠΏΠΈΡ‚ΠΈΡ‚Π΅ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° 10 ΠΌΠΈΠ½ΡƒΡ‚ΠΈ

🚫 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ Ρ€Π΅Π°Π»Π½Π° Π°Ρ‚Π°ΠΊΠ° Π² Π»ΠΎΠ³Π°

My Terminal
sshd[2418]: Failed password for root from 185.254.XX.XX port 47122 ssh2

Fail2Ban Ρ‰Π΅ засСчС Ρ‚ΠΎΠ²Π° ΠΈ слСд 5 Ρ‚Π°ΠΊΠΈΠ²Π° ΠΎΠΏΠΈΡ‚Π° – Ρ‰Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π° IP адрСса Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ.


πŸ” ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π±Π°Π½Π½Π°Ρ‚ΠΈ IP адрСси

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° статус Π½Π° jail:

My Terminal
sudo fail2ban-client status

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ jail:

My Terminal
sudo fail2ban-client status sshd

Π©Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π΅Ρ‰ΠΎ ΠΊΠ°Ρ‚ΠΎ:

My Terminal
Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     7
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 2
   |- Total banned:     5
   `- Banned IP list:   185.254.XX.XX 91.92.XX.XX

Π Π°Π·Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° IP:

My Terminal
sudo fail2ban-client set sshd unbanip 185.254.XX.XX

πŸ”’ Π Π°Π·ΡˆΠΈΡ€Π΅Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π°

ΠŸΡ€ΠΎΠΌΡΠ½Π° Π½Π° bantime Π½Π° ΠΏΠΎ-дълъг ΠΏΠ΅Ρ€ΠΈΠΎΠ΄

My Terminal
bantime = 24h

ΠŸΠΎΡΡ‚ΠΎΡΠ½Π΅Π½ Π±Π°Π½:

My Terminal
bantime = -1

(Π’ΠΠ˜ΠœΠΠΠ˜Π•: МоТС Π΄Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚Π΅ Π»Π΅Π³ΠΈΡ‚ΠΈΠΌΠ½ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ, Π°ΠΊΠΎ Π½Π΅ Π²Π½ΠΈΠΌΠ°Π²Π°Ρ‚Π΅.)

πŸ“ˆ ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ с fail2ban-client ΠΈ logwatch

Fail2Ban ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° CLI интСрфСйс с мноТСство ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³:

My Terminal
sudo fail2ban-client status
sudo fail2ban-client status sshd

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ Π΄Π½Π΅Π²Π΅Π½ ΠΎΡ‚Ρ‡Π΅Ρ‚ Ρ‡Ρ€Π΅Π· инструмСнти ΠΊΠ°Ρ‚ΠΎ logwatch.


πŸ§ͺ ВСстванС Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π°Ρ‚Π°

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° симулиратС Π³Ρ€Π΅ΡˆΠ½ΠΈ Π²Ρ…ΠΎΠ΄ΠΎΠ²Π΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ IP адрСс ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅:

My Terminal
ssh wronguser@your-server-ip

Π‘Π»Π΅Π΄ няколко ΠΎΠΏΠΈΡ‚Π° (спорСд maxretry) IP-Ρ‚ΠΎ Ρ‰Π΅ бъдС Π±Π»ΠΎΠΊΠΈΡ€Π°Π½ΠΎ.


🧠 ПолСзни ΡΡŠΠ²Π΅Ρ‚ΠΈ

  • ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°ΠΉ Fail2Ban с firewall (UFW ΠΈΠ»ΠΈ nftables) Π·Π° ΠΎΡ‰Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π° сигурност.
  • Използвай нСстандартСн SSH ΠΏΠΎΡ€Ρ‚.
  • Π”Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΉ root Π΄ΠΎΡΡ‚ΡŠΠΏ: PermitRootLogin no
  • Π Π°Π·Ρ€Π΅ΡˆΠΈ само ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π° автСнтикация: PasswordAuthentication no
  • Π‘Π»ΠΎΠΆΠΈ Fail2Ban Π·Π° Π΄Ρ€ΡƒΠ³ΠΈ услуги (nginx, dovecot, postfix ΠΈ Ρ‚.Π½.)

πŸ“Œ Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Fail2Ban Π΅ ΠΌΠΎΡ‰Π΅Π½ инструмСнт, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π±ΡƒΠΊΠ²Π°Π»Π½ΠΎ Π΄Π° спаси ΡΡŠΡ€Π²ΡŠΡ€Π° Π²ΠΈ ΠΎΡ‚ Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΎΡ‚ΠΎ Π±ΠΎΠΌΠ±Π°Ρ€Π΄ΠΈΡ€Π°Π½Π΅ с brute-force Π°Ρ‚Π°ΠΊΠΈ. Π˜Π½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡΡ‚Π° ΠΈ конфигурацията ΠΌΡƒ ΠΎΡ‚Π½Π΅ΠΌΠ° само няколко ΠΌΠΈΠ½ΡƒΡ‚ΠΈ, Π½ΠΎ сигурността, която осигурява, Π΅ Π±Π΅Π·Ρ†Π΅Π½Π½Π°. Π—Π°Π΅Π΄Π½ΠΎ с Π΄Ρ€ΡƒΠ³ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Π·Π° SSH Π·Π°Ρ‰ΠΈΡ‚Π° – ΠΊΠ°Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π° автСнтикация, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ° ΠΏΠΎ IP ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ – Fail2Ban Π΅ Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π΅Π½ инструмСнт Π·Π° всСки Linux администратор.

Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΠΌ Π²ΠΈ Π·Π° ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π΅Ρ‚ΠΎ Π½Π° статията! Ако Π½Π°ΠΌΠ΅Ρ€ΠΈΡ…Ρ‚Π΅ информацията Π·Π° ΠΏΠΎΠ»Π΅Π·Π½Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄Π°Ρ€ΠΈΡ‚Π΅ посрСдством Π±ΡƒΡ‚ΠΎΠ½ΠΈΡ‚Π΅ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ: πŸ”°