Fail2ban proti brute force heslám
Ako nainštalovať a nastaviť Fail2ban: blokovanie brute force na SSH a webové formuláre, whitelist vlastných adries, overenie funkčnosti a odblokovanie seba samého.
Aktualizované 23. augusta 2026
Fail2ban číta logy, počíta neúspešné pokusy o prihlásenie z jednej adresy a dočasne ju zablokuje pravidlom firewallu. Nenahrádza prihlásenie kľúčom, ale odstráni väčšinu podprahovej brute-force prevádzky a odľahčí ti logy.
Inštalácia a základné nastavenie
apt install -y fail2ban
Použi vlastný súbor /etc/fail2ban/jail.local — úpravy v jail.conf prepíšu aktualizácie:
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
ignoreip = 127.0.0.1/8 203.0.113.5
banaction = ufw
[sshd]
enabled = true
port = 22
maxretry = 3
bantime = 24h
systemctl enable --now fail2ban
fail2ban-client status
fail2ban-client status sshd
Do ignoreip daj svoju domácu alebo kancelársku adresu — to je tvoja poistka proti tomu, aby si zabanoval sám seba. Ak sa ti adresa zmení, konzola v paneli na /hosting/vds/m/<id> zostáva tvojou záchrannou sieťou: funguje nezávisle od siete a pravidiel.
banaction musí sedieť s tvojím firewallom: ufw pre ufw, nftables-multiport pre nftables.
Kde skontrolovať výsledok
fail2ban-client status sshd
tail -f /var/log/fail2ban.log
journalctl -u fail2ban -n 50
Stav zobrazuje počet neúspešných pokusov a zoznam zabanovaných adries. Na verejnej adrese je denný počet v stovkách normálny, nie znak cieleného útoku.
Odbanovanie adresy (aj tej svojej):
fail2ban-client set sshd unbanip 203.0.113.5
Ochrana nad rámec SSH
Fail2ban dokáže pracovať s akýmkoľvek logom, ktorý zobrazuje neúspešné pokusy.
[nginx-http-auth]
enabled = true
[nginx-limit-req]
enabled = true
logpath = /var/log/nginx/error.log
[postfix-sasl]
enabled = true
Pre vlastnú aplikáciu budeš potrebovať filter — súbor v /etc/fail2ban/filter.d/ s regulárnym výrazom, v ktorom je adresa označená ako <HOST>:
[Definition]
failregex = ^.*login failed.*ip=<HOST>.*$
ignoreregex =
Otestuj výraz na reálnom logu:
fail2ban-regex /var/log/myapp.log /etc/fail2ban/filter.d/myapp.conf
Tento príkaz zobrazí, koľko riadkov sa zhodovalo. Nula zhôd znamená, že pravidlo je nesprávne — a ochrana, ktorá ticho zlyháva, je horšia než žiadna.
Časté chyby
| Chyba | Následok | Riešenie |
|---|---|---|
Úpravy v jail.conf | Pri aktualizácii sa stratia | Píš do jail.local |
Tvoja adresa nie je v ignoreip | Jedného dňa zabanuješ sám seba | Pridaj ju alebo sa pripájaj cez konzolu v paneli |
banaction nesedí s tvojím firewallom | Bany sa neuplatnia | Zlaď ho s ufw alebo nftables |
| Filter nesedí s formátom logu | Ticho namiesto ochrany | Skontroluj pomocou fail2ban-regex |
| Služba nevie čítať systemd log | Prázdny stav | Nastav backend = systemd |
Otestuj to naozaj: z vonkajšej adresy zámerne zadaj nesprávne heslo potrebný počet krát a over, že sa ocitne v zozname zabanovaných. Nenastavený fail2ban vytvára falošný pocit bezpečia.
Doplň to obmedzením rýchlosti pripojení priamo vo firewalle — ufw limit 22/tcp.