Skip to content
VDS · Zabezpečenie

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

ChybaNásledokRiešenie
Úpravy v jail.confPri aktualizácii sa stratiaPíš do jail.local
Tvoja adresa nie je v ignoreipJedného dňa zabanuješ sám sebaPridaj ju alebo sa pripájaj cez konzolu v paneli
banaction nesedí s tvojím firewallomBany sa neuplatniaZlaď ho s ufw alebo nftables
Filter nesedí s formátom loguTicho namiesto ochranySkontroluj pomocou fail2ban-regex
Služba nevie čítať systemd logPrázdny stavNastav 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.