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
bantimelejártát, vagy - lépjen be egy másik IP-címről (pl. mobilinternetről), és oldja fel a tiltást a fenti
unbanipparanccsal, 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.