Fail2ban na Linuxovém serveru je nástroj pro prevenci narušení, který monitoruje protokoly, detekuje opakovaná selhání ověřování nebo škodlivé vzorce a automaticky zakazuje problematické IP adresy aktualizací firewallu (iptables, nftables, UFW nebo firewalld). Snižuje SSH útoky hrubou silou, zneužití přihlášení k webu a útoky s autorizací pošty s přizpůsobitelnými „vězeními“, filtry a zásadami pro zákazy.
Proč je Fail2ban důležitý na Linuxovém serveru
Když spustíte Linuxový server online, stane se cílem skenování boty. SSH, Nginx/Apache, MySQLa poštovní služby. Fail2ban poskytuje automatickou obranu: sleduje soubory protokolů, identifikuje zneužívané IP adresy pomocí regulárních výrazů a dočasně je blokuje pomocí firewallu vašeho systému.

Je lehký, snadno konfigurovatelný a nezbytný pro zabezpečení serveru.
Jak funguje Fail2ban (přehled v jednoduché angličtině)
Fail2ban používá tři základní stavební bloky: věznice (jaily), filtry (filtry) a akce (actions). Věznice (jail) definuje, co má být chráněno (např. SSH), filtr definuje, jak detekovat špatné chování v protokolech, a akce definuje, jak zablokovat pachatele (např. přidáním pravidla iptables/nftables). Jakmile IP adresa překročí maximální počet pokusů (maxretry) v rámci doby hledání (findtime), je zablokována na dobu nečinnosti (bantime).
Klíčové koncepty a soubory
1. Vězení
Jaily propojují zdroj protokolů a filtr s akcí zákazu. Každá služba, kterou chráníte (sshd, nginx, postfix, dovecot, vsftpd), má obvykle vyhrazený jail. Jaily mohou mít jedinečné prahové hodnoty, doby trvání zákazu a whitelisty.
2.Filtry
Filtry jsou regulární výrazy, které odpovídají škodlivým řádkům protokolu. Nacházejí se v /etc/fail2ban/filter.d/Mnoho filtrů je standardně dodáváno (např. sshd.conf, nginx-http-auth.conf) a můžete si vytvořit vlastní pro přizpůsobené aplikace.
3.Akce
Akce definují, jak zablokovat/zrušit zablokování IP adresy. Mezi běžné akce patří iptables, nftables, firewalld a UFW. Ty se nacházejí v /etc/fail2ban/action.d/Některé akce také odesílají e-maily nebo spouštějí skripty pro oznámení.
4. Backendy
Fail2ban může číst z běžných souborů protokolů nebo z deníku systemd. V moderních distribucích se používá backend = systemd je rychlý a spolehlivý, protože čte přímo z deníku.
Instalace Fail2banu (Ubuntu/Debian, RHEL/CentOS/Rocky/Alma)
Ubuntu / Debian
sudo apt update
sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban
sudo systemctl status fail2banRHEL/CentOS/Rocky/Alma
sudo dnf install epel-release -y
sudo dnf install fail2ban -y
sudo systemctl enable --now fail2ban
sudo systemctl status fail2banVe výchozím nastavení je Fail2ban dodáván s bezpečnou základní linií pro SSH na mnoha systémech, ale nejlepší praxí je vytvořit si vlastní jail.local přepsat výchozí nastavení.
Konfigurace pro rychlý start (doporučeno SSH Ochrana)
Vytvořit nebo upravit /etc/fail2ban/jail.local a přidat bezpečnou základní linii. To chrání SSH, povoluje backend systemd a nastavuje agresivní, ale rozumné prahové hodnoty pro opakované pokusy:
[DEFAULT]
# Use systemd journal where available
backend = systemd
# Whitelist your office/home IPs and private ranges if appropriate
ignoreip = 127.0.0.1/8 ::1
# 10-minute search window, 5 failures => ban
findtime = 10m
maxretry = 5
# Start with a 1 hour ban; escalate using bantime.increment below
bantime = 1h
# Use incremental bans on repeat offenders
bantime.increment = true
bantime.factor = 2
bantime.formula = bantime * (1 + failures)
# Choose your firewall action (adjust to your stack)
banaction = iptables-multiport
# Alternatives: nftables, ufw, firewallcmd-rich-rules
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
filter = sshd
maxretry = 5
findtime = 10m
bantime = 1hPro uplatnění změn znovu načtěte Fail2ban:
sudo systemctl reload fail2ban
# or
sudo fail2ban-client reloadOchrana webových serverů (Nginx/Apache) a WordPressu
Kalení SSH je prvním krokem. Dále se budeme zabývat HTTP ověřováním, přihlášením do WordPressu a běžnými vzory skenerů. Následující příklady používají vestavěné filtry a vlastní filtr pro skenery s vysokým šumem:
umožnit Nginx HTTP ověřování a špatní boti
[nginx-http-auth]
enabled = true
port = http,https
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
maxretry = 3
findtime = 10m
bantime = 2h
# Optional: block repeated 404 scans (custom filter below)
[nginx-404-scan]
enabled = true
port = http,https
filter = nginx-404-scan
logpath = /var/log/nginx/access.log
maxretry = 20
findtime = 10m
bantime = 2hVytvořit /etc/fail2ban/filter.d/nginx-404-scan.conf:
[Definition]
failregex = <HOST> - - \[.*\] "GET .*" 404
ignoreregex =
# Adjust if your log format differsApache HTTP ověření
[apache-auth]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 3
bantime = 2hPro WordPress kombinujte Fail2ban se silnými hesly, 2FA a WAF. Můžete také parsovat wp-login.php selhání prostřednictvím protokolů webového serveru nebo pluginu, který zapisuje do syslogu.
Pošta, FTPa další běžné věznice
Pokud váš server spouští poštu nebo FTP, povolte tyto věznice a nasměrujte je na správné protokoly:
- Zneužití autorizace v Postfixu:
[postfix]s/var/log/maillognebo deník - Hrubá síla v Dovecotu pro IMAP/POP:
[dovecot] - vsftpd nebo čistý ftpd:
[vsftpd],[pure-ftpd] - Recidivisté (pachatelé opakovaného zneužívání napříč věznicemi):
[recidive]vězení
[recidive]
enabled = true
logpath = /var/log/fail2ban.log
findtime = 1d
maxretry = 5
bantime = 7dPoužívání různých firewallů: iptables, nftables, UFW, firewalld
Přiřaďte banakci k vašemu firewallu:
- iptables:
banaction= iptables-multiport - nftables:
banaction= nftables - UFW (Ubuntu):
banaction= ufw - firewalld (RHEL):
banaction = firewallcmd-rich-rules
Používejte vždy pouze jeden firewall frontend, abyste předešli konfliktům (např. nespouštějte UFW a firewalld společně). Po změně banaction, znovu načtěte Fail2ban.
Monitorování, testování a odblokování
Zkontroluj stav
sudo fail2ban-client status
sudo fail2ban-client status sshdTestování filtrů se skutečnými protokoly
# Test a filter against a log file
sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf
# On RHEL-like systems
sudo fail2ban-regex /var/log/secure /etc/fail2ban/filter.d/sshd.confRuční odblokování nebo zablokování
# Unban an IP from a specific jail
sudo fail2ban-client set sshd unbanip 203.0.113.10
# Temporarily ban an IP
sudo fail2ban-client set sshd banip 203.0.113.10Nastavení osvědčených postupů (z reálného hostingu)
- Pro spolehlivost a rychlost používejte na moderních distribucích backend systemd.
- Povolte postupné zablokování, abyste zpomalili opakované pachatele, aniž byste trvale blokovali legitimní uživatele, kteří zadávají hesla špatně.
- sada
findtimedo 10–15 minut amaxretryna 4–6 pro SSH; začít sbantime1 hodinu a nechte recidivisty, aby se vypořádali s opakovanými útočníky. - Whitelist pevných IP adres VPN pro kanceláře s
ignoreipaby se zabránilo náhodnému zablokování. - Ztvrdnout SSH za hranicemi Fail2banu: Změň SSH port, pokud je to vhodné, zakažte ověřování heslem ve prospěch klíčů a povolte 2FA pro privilegované účty.
- Pro Nginx/Apache, zaznamenávejte v kombinovaném formátu a zajistěte, aby se protokoly chyb/přístupů správně střídaly, aby Fail2ban měl nepřetržitý přehled.
- Udržujte filtry aktuální; vlastní aplikace často potřebují vlastní filtry.
Omezení a jak vybudovat silnější bezpečnostní stack
- Fail2ban není řešením pro DDoS útoky. Pro volumetrické útoky použijte CDN/WAF, omezení rychlosti na webovém serveru a zmírnění rizik na úrovni sítě.
- Reaguje po zaznamenání nevhodného chování. U vysoce rizikových systémů přidejte proaktivní kontroly: seznamy povolených položek, VPN brány a MFA.
- Falešně pozitivní výsledky se mohou vyskytnout s příliš širokými filtry. Vždy testujte s
fail2ban-regexa sledovat protokoly vězení. - V kontejnerových prostředích zajistěte přístup k protokolům na úrovni hostitele nebo spusťte Fail2ban na hostiteli, kde jsou nainstalovány firewally. managed.
Rady pro odstraňování problémů
- Pokud se zákazy nezobrazí, ověřte správnou akci pro váš firewall a potvrďte, že služba firewallu je spuštěna.
- Pokud se nenajdou žádné shody, zkontrolujte, zda je cesta k protokolu správná a zda regulární výraz filtru odpovídá formátu protokolu.
- Pokud Fail2ban restartuje mazání banů, je to očekávané; Fail2ban znovu aplikuje nové bany, jakmile detekuje události. Recidive pomáhá s vytrvalými útočníky.
- Použijte
journalctl -u fail2bana/var/log/fail2ban.logdiagnostikovat problémy.
Kde pomáhá spravované zabezpečení
Pokud si nepřejete ručně ladit filtry a zásady firewallu, managed hosting poskytovatel může pomoci. Na YouStableNaši inženýři nasadí Fail2ban s posílenými výchozími nastaveními, integrují ho s vámi zvoleným firewallem (UFW, nftables, firewalld) a proaktivně monitorují jaily spolu se zabezpečením WAF/CDN – takže získáte vícevrstvou ochranu bez dohadů.
Úplný příklad: Zabezpečení SSH, Nginxa recidiva
[DEFAULT]
backend = systemd
ignoreip = 127.0.0.1/8 ::1
findtime = 10m
maxretry = 5
bantime = 1h
bantime.increment = true
bantime.factor = 2
banaction = nftables # use iptables-multiport, ufw, or firewallcmd-rich-rules if preferred
[sshd]
enabled = true
port = 22
filter = sshd
logpath = %(sshd_log)s
[nginx-http-auth]
enabled = true
port = http,https
logpath = /var/log/nginx/error.log
[nginx-404-scan]
enabled = true
port = http,https
filter = nginx-404-scan
logpath = /var/log/nginx/access.log
maxretry = 20
bantime = 2h
[recidive]
enabled = true
logpath = /var/log/fail2ban.log
findtime = 1d
maxretry = 5
bantime = 7dNejčastější dotazy 's
1. Je Fail2ban na Linuxovém serveru nutný?
Ano. Jakýkoli server s přístupem k internetu je vystaven pokusům o hrubou silu a zneužití přihlašovacích údajů. Fail2ban poskytuje automatizované blokování s nízkými náklady pro SSH, webové a poštovní služby, čímž se snižuje plocha útoku a šum v protokolech. Je to osvědčený postup, i když používáte také WAF nebo CDN.
2. Zastaví Fail2ban DDoS útoky?
Ne. Fail2ban není určen pro volumetrické zmírňování DDoS útoků. Je účinný proti opakovaným selháním autorizace a vzorcům zneužívání na aplikační vrstvě. Jako doplněk k Fail2banu použijte ochranu na síťové vrstvě, CDN/WAF a omezení rychlosti webového serveru.
3. Jak mohu přidat na bílou listinu nebo ignorovat důvěryhodné IP adresy?
Přidat důvěryhodné adresy do ignoreip in /etc/fail2ban/jail.local, například vaše VPN nebo IP adresa kanceláře. Příklad: ignoreip = 127.0.0.1/8 ::1 203.0.113.5Poté znovu načtěte Fail2ban, aby se změny projevily.
4. Který firewall mám použít s Fail2ban: iptables, nftables, UFW nebo firewalld?
Použijte nativní nástroj pro vaši distribuci a preference: nftables na moderním Linuxu, iptables pro starší systémy, UFW na Ubuntu pro jednoduchost a firewalld na distribucích založených na RHEL. banaction a vyhněte se současnému spouštění více frontendů firewallů.
5. Co jsou dobré SSH hodnoty bantime, findtime a maxretry?
Solidní výchozí bod: maxretry = 5, findtime = 10m, bantime = 1hs bantime.increment = true a recidive povoleno vězení. To vyvažuje riziko uzamčení se silným odrazujícím účinkem pro boty a recidivisty.