Fail2ban telepítése és beállítása SSH brute-force támadások ellen

Egy internetre kapcsolt szerver SSH portján percenként érkezhetnek automatizált bejelentkezési kísérletek, amelyek gyakori felhasználónevekkel és jelszavakkal próbálkoznak. A Fail2ban a naplófájlokat figyeli, és ha egy IP-címről rövid időn belül túl sok sikertelen bejelentkezés érkezik, a tűzfalon egy időre kitiltja azt.

A Fail2ban nem helyettesíti az erős jelszót és a kulcsalapú bejelentkezést (lásd: SSH szerver biztonsági beállításai), de jelentősen csökkenti a próbálkozások számát és a naplók zaját.

Ez a cikk saját VPS-t vagy dedikált szervert üzemeltetőknek szól. cPanel szerveren ne telepítse: ott a cPHulk és a CSF/LFD látja el ugyanezt a feladatot, és a két rendszer ütközne egymással.

Telepítés

AlmaLinux, Rocky Linux (az EPEL tárolóból):

sudo dnf install epel-release
sudo dnf install fail2ban fail2ban-firewalld

Ubuntu, Debian:

sudo apt update
sudo apt install fail2ban

Beállítás

A Fail2ban gyári beállításai a /etc/fail2ban/jail.conf fájlban vannak, de ezt ne módosítsa, mert frissítéskor felülíródhat. A saját beállításokat egy új fájlba írja:

sudo nano /etc/fail2ban/jail.local

Egy jól használható kiindulás:

[DEFAULT]
# Ennyi ideig marad kitiltva az IP-cím
bantime = 1h
# Ennyi időn belül...
findtime = 10m
# ...ennyi sikertelen próbálkozás után
maxretry = 5
# Ezeket a címeket soha nem tiltja ki (szóközzel elválasztva)
ignoreip = 127.0.0.1/8 ::1 203.0.113.10

[sshd]
enabled = true

Az ignoreip sorba írja be a saját, fix IP-címét (a példában 203.0.113.10), hogy egy elgépelt jelszó miatt ne zárja ki magát.

Ha az SSH nem az alapértelmezett 22-es porton fut, adja meg a portot is az [sshd] szakaszban:

[sshd]
enabled = true
port = 2255

Debian 12 és újabb: mivel ezeken a rendszereken alapból nincs /var/log/auth.log, a Fail2ban a systemd naplójából olvasson. Egészítse ki az [sshd] szakaszt:

[sshd]
enabled = true
backend = systemd

Ismételten visszatérő címek

A [recidive] szakasz bekapcsolásával azokat az IP-címeket, amelyeket egy napon belül többször is ki kellett tiltani, hosszabb időre (alapértelmezésként egy hétre) zárja ki:

[recidive]
enabled = true

Indítás

sudo systemctl enable --now fail2ban
sudo systemctl status fail2ban

Beállítás módosítása után töltse újra a szolgáltatást:

sudo fail2ban-client reload

Ellenőrzés és kezelés

# A működő szabálycsoportok (jail-ek)
sudo fail2ban-client status

# Az SSH jail részletei: hibás próbálkozások és kitiltott címek
sudo fail2ban-client status sshd

# Egy IP-cím kitiltásának feloldása
sudo fail2ban-client set sshd unbanip 198.51.100.25

# Egy IP-cím kézi kitiltása
sudo fail2ban-client set sshd banip 198.51.100.25

A Fail2ban saját naplója a /var/log/fail2ban.log fájlban van; itt láthatja, mikor és melyik címet tiltotta ki.

Kizárta magát?

Ha a saját IP-címe került tiltólistára, és SSH-n nem tud belépni:

  • várja meg a bantime lejártát, vagy
  • lépjen be egy másik IP-címről (pl. mobilinternetről), és oldja fel a tiltást a fenti unbanip paranccsal, vagy
  • lépjen be a szerverre SSH-tól független úton, például VNC-konzolon.

Más szolgáltatások védelme

A Fail2ban számos más szolgáltatáshoz is tartalmaz kész szűrőt, például az [nginx-http-auth], [apache-auth], [postfix] vagy [dovecot] jail-eket. Ezeket a jail.local fájlban, az [sshd] szakaszhoz hasonlóan enabled = true sorral kapcsolhatja be. Az elérhető szűrők a /etc/fail2ban/filter.d/ könyvtárban találhatók.