Pouze pro návštěvníky našeho blogu Získejte další 3 měsíce zdarma + 10% slevu na tříletý plán YSBLOG10
Chyťte dohodu

Co je Fail2ban na Linuxovém serveru? Zastavit SSH Útoky hrubé síly

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.

Proč je Fail2ban důležitý na Linuxovém serveru

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 fail2ban

RHEL/CentOS/Rocky/Alma

sudo dnf install epel-release -y
sudo dnf install fail2ban -y
sudo systemctl enable --now fail2ban
sudo systemctl status fail2ban

Ve 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í.

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 = 1h

Pro uplatnění změn znovu načtěte Fail2ban:

sudo systemctl reload fail2ban
# or
sudo fail2ban-client reload

Ochrana 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 = 2h

Vytvořit /etc/fail2ban/filter.d/nginx-404-scan.conf:

[Definition]
failregex = <HOST> - - \[.*\] "GET .*" 404
ignoreregex =
# Adjust if your log format differs

Apache HTTP ověření

[apache-auth]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 3
bantime = 2h

Pro 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/maillog nebo 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 = 7d

Použí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 sshd

Testová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.conf

Ruč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.10

Nastavení 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 findtime do 10–15 minut a maxretry na 4–6 pro SSH; začít s bantime 1 hodinu a nechte recidivisty, aby se vypořádali s opakovanými útočníky.
  • Whitelist pevných IP adres VPN pro kanceláře s ignoreip aby 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-regex a 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 fail2ban a /var/log/fail2ban.log diagnostikovat 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 = 7d

Nejč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.

Sdílet přes:

Sanjeet Chauhan

Sanjeet Chauhan je bloger a SEO expert, který se věnuje pomoci webovým stránkám s organickým růstem. Sdílí praktické strategie, užitečné tipy a poznatky pro zvýšení návštěvnosti, zlepšení pozic ve vyhledávání a maximalizaci online přítomnosti.

Zanechat komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

Přejděte na začátek