Fail2ban je softwarový rámec pro prevenci narušení, který chrání počítačové servery primárně před útoky hrubou silou, zakazuje špatné uživatelské agenty, zakazuje skenery adres URL a mnoho dalšího. Fail2ban toho dosahuje čtením přístupových/chybových protokolů vašeho serveru nebo webových aplikací. Fail2ban je kódován v programovacím jazyce python.
Následující tutoriál vás naučí, jak nainstalovat Fail2ban a provést několik konfigurací s úplnými příklady a základními tipy, které vám pomohou začít s Debian 11 Bullseye.
Předpoklady
- Doporučený operační systém: Debian 11 Bullseye
- Uživatelský účet: Uživatelský účet s přístupem sudo nebo root.
- Požadované balíčky: wget
Aktualizujte operační systém
Aktualizujte svůj Debian operační systém, abyste se ujistili, že všechny existující balíčky jsou aktuální:
sudo apt update && sudo apt upgrade -y
Výukový program bude používatpříkaz sudo a za předpokladu, že máte status sudo .
Chcete-li ověřit stav sudo na vašem účtu:
sudo whoami
Ukázkový výstup zobrazující stav sudo:
[joshua@debian~]$ sudo whoami
root
Chcete-li nastavit stávající nebo nový účet sudo, navštivte náš tutoriál o Přidání uživatele do Sudoers na Debianu .
Chcete-li použít rootový účet , použijte k přihlášení následující příkaz s heslem uživatele root.
su
Nainstalujte Fail2ban
Ve výchozím nastavení je Fail2ban součástí úložiště Debian 11 Bullseye. Chcete-li nainstalovat software, použijte ve svém terminálu následující příkaz:
sudo apt install fail2ban
Příklad výstupu:
Zadejte Y poté stiskněte klávesu Enter pokračujte a dokončete instalaci.
Ve výchozím nastavení by měl být fail2ban po instalaci aktivní a povolený. Chcete-li to ověřit, použijte následující příkaz systemctl :
sudo systemctl status fail2ban
Příklad výstupu:
Pokud vaše služba fail2ban není aktivována, spusťte následující příkazy a v případě potřeby ji povolte při spouštění systému ve výchozím nastavení:
sudo systemctl start fail2ban
Poté pro povolení fail2ban při spouštění systému použijte následující:
sudo systemctl enable fail2ban
Nakonec ověřte verzi a sestavení fail2ban:
fail2ban-client --version
Příklad výstupu:
Fail2Ban v0.11.2
To ukazuje, že máte venku jedno z nejnovějších stabilních vydání, což je ver. 0.11.2 (23. 11. 2020) – (uzdravte svět pomocí bezpečnostních nástrojů) . Pokud byste v budoucnu chtěli vědět, kde se vaše nainstalované sestavení nachází v plánu vydání Fail2ban, navštivte stránku vydání na stránce Fail2ban Github.
Nakonfigurujte Fail2ban
Po dokončení instalace nyní musíme provést nějaké nastavení a základní konfiguraci. Fail2ban je dodáván se dvěma konfiguračními soubory, které jsou umístěny v /etc/fail2ban/jail.conf a výchozí Fail2ban /etc/fail2ban/jail.d/defaults-debian.conf . Tyto soubory neupravujte. Původní soubory nastavení jsou vaše originály a budou nahrazeny v jakékoli budoucí aktualizaci Fail2ban.
Nyní se můžete divit, jak jsme nastavili Fail2ban, jako když aktualizujete a ztratíte svá nastavení. Jednoduše, vytváříme kopie končící na .local místo .conf protože Fail2ban bude vždy číst .local soubory nejprve před načtením .conf pokud nemůže žádný najít.
Chcete-li to provést, použijte následující příkaz:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Nyní otevřete konfigurační soubor a pokračujte v konfiguraci:
sudo nano /etc/fail2ban/jail.local
Následně se v tutoriálu seznámíte s některými nastaveními, která můžete použít nebo upravit podle svých představ. Všimněte si, že většina nastavení je zakomentována; výukový program odkomentuje příslušné řádky nebo upraví stávající v nastavení příkladu.
Nezapomeňte, že toto jsou volitelná nastavení a můžete si nastavit, co chcete, pokud víte o fail2ban více a máte důvěru.
Přírůstek doby zákazu
První nastavení, na které narazíte, je Ban time increments. Měli byste to povolit pokaždé, když se útočník vrátí. Prodlouží dobu zákazu a ušetří váš systém od neustálého opětovného zakazování stejné IP, pokud je doba zákazu malá; například 1 hodina, chcete, aby to bylo delší, pokud se útočník vrátí 5x.
Musíte také nastavit multiplikátor nebo faktor pro logiku zvýšení zákazu, aby fungovala. Můžete si vybrat kteroukoli z nich; v našem průvodci však dáváme přednost multiplikátorům, jak je zvýrazněno v našem níže uvedeném příkladu, protože si můžete nastavit vlastní prodloužení doby zákazu podle svých představ. Další vysvětlení je v nastavení matematiky za tím.
Příklad níže:
Přidat adresy IP na seznam povolených v Fail2ban
Jako další v seznamu narazíme na možnosti přidání na seznam povolených, odkomentujte následující a oslovte všechny IP adresy, které chcete přidat na seznam povolených.
ignoreip = 127.0.0.1/8 ::1 192.167.5.5 (example IP address)
Ujistěte se, že mezi IP adresami je mezera nebo čárka. Můžete také přidat na seznam povolených rozsahů IP.
Příklad níže:
Výchozí nastavení doby zákazu
Výchozí čas zákazu je výchozích 10 minut s 10 minutovým vyhledávačem na 5 pokusů. Vysvětlením je, že vězení Fail2ban s filtrováním zablokuje vašeho útočníka na 10 minut poté, co se za 10 minut znovu pokusil o stejný útok (najít čas) x 5krát (opakování) . Zde můžete nastavit některá výchozí nastavení zákazu.
Když se však dostanete do vězení, doporučuje se nastavit různé doby zákazu, protože některé zákazy by měly být automaticky delší než jiné, včetně opakování, které by mělo být méně nebo více.
Příklad níže:
E-mail nastavený pomocí Fail2ban
Můžete nastavit e-mailovou adresu pro Fail2ban pro zasílání zpráv. Výchozí akce =%(action_mw)s který zakáže problematickou IP a odešle e-mail s hlášením whois, abyste si ho mohli prohlédnout.
Ve vaší složce action.d však existují další možnosti e-mailu, jak nahlásit nejen sobě, ale také odeslat e-maily poskytovatelům hostingu o aktivitě útočníka, aby bylo možné něco udělat. Všimněte si, že to proveďte pouze v případě, že používáte e-mailový proxy server, protože někteří útočníci to nebudou brát laskavě nebo obdrží e-mail přímo s IP adresou vašeho serveru, používejte tuto akci s extrémní opatrností nebo vůbec.
Příklad níže:
# Destination email address used solely for the interpolations in
# jail.{conf,local,d/*} configuration files.
destemail = [email protected]
# Sender e-mail address used solely for some actions
sender = [email protected]
Příklad:
Upozorňujeme, že ve výchozím nastavení Fail2ban používá sendmail MTA pro e-mailová upozornění. Můžete to změnit na funkci pošty takto:
Změnit z:
mta = sendmail
Změnit na:
mail = sendmail
Fail2ban vězení
Dále se dostáváme do vězení. Můžete nastavit předdefinovaná vězení s filtry a akcemi vytvořenými komunitou pokrývající mnoho oblíbených serverových aplikací. Můžete si vytvořit vlastní vězení nebo najít externí na různých gistech a komunitní webové stránky; nicméně nastavíme výchozí vězení pro balíčky Fail2ban.
Výchozí nastavení pro všechny věznice podle obrázku níže. Všimněte si, že není nic povoleno.
Příklad níže:
[apache-badbots]
# Ban hosts which agent identifies spammer robots crawling the web
# for email addresses. The mail outputs are buffered.
port = http,https
logpath = %(apache_access_log)s
bantime = 48h
maxretry = 1
Máme tedy HTTP server Apache 2 a stejně jako filtrovat/zakazovat špatné roboty, vše, co musíte udělat, je přidat enabled =true jako v příkladu níže.
[apache-badbots]
# Ban hosts which agent identifies spammer robots crawling the web
# for email addresses. The mail outputs are buffered.
enabled = true
port = http,https
logpath = %(apache_access_log)s
bantime = 48h
maxretry = 1
Všimněte si, že maximální počet opakování se rovná 1 a doba zákazu je 48 hodin. Toto je individuální nastavení maximálního opakování a délky zákazů pro toto vězení, které se automaticky zvýší s multiplikátorem zákazu, který jsme nastavili dříve v průvodci. Pokud to u některého z filtrů chybí, můžete to přidat jako příklad.
[apache-noscript]
enabled = true
port = http,https
logpath = %(apache_error_log)s
Změna nad následujícím příkladem níže:
[apache-noscript]
enabled = true
port = http,https
logpath = %(apache_error_log)s
bantime = 1d
maxretry = 3
Dále byste chtěli mít jiné akce, než je uvedeno ve výchozím nastavení v /etc/fail2ban/jail.local, další akce naleznete v adresáři action.d. Různé akce z tohoto adresáře lze snadno nastavit podle pokynů uvnitř těchto konfiguračních řádků akcí v souborech a nezapomeňte je nejprve přejmenovat na .jail přes .conf, a poté do nastavení věznice přidejte následující.
[apache-botsearch]
enabled = true
port = http,https
logpath = %(apache_error_log)s
banaction = action_mw
cloudflare
bantime = 72h
maxretry = 1
Jak můžete vidět, přidali jsme action_mw, takže se automaticky zakáže podle naší výchozí akce a pošle nám e-mailem zprávu s whois, pak následující akce, pokud používáte Cloudflare, zablokuje i IP adresu ve službě. Pamatujte, že Cloudflare je třeba před použitím nastavit. Přečtěte si soubor action.d cloudflare.conf .
Jakmile budete se svým nastavením spokojeni, proveďte následující příkaz pro restartování fail2ban a načtení nových vězení.
sudo systemctl restart fail2ban
Příklady použití Fail2ban-client
Nyní, když používáte Fail2ban, potřebujete znát některé základní provozní příkazy. Toho dosáhneme pomocí příkazu fail2ban-client . Možná budete muset mít oprávnění sudo, v závislosti na vašem nastavení.
Zakázat IP adresu:
sudo fail2ban-client set apache-botsearch banip <ip address>
Zrušení zákazu IP adresy:
sudo fail2ban-client set apache-botsearch unbanip <ip address>
Příkaz pro vyvolání nabídky nápovědy, pokud potřebujete najít další nastavení nebo získat nápovědu ke konkrétnímu.
sudo fail2ban-client -h
Nainstalujte UFW (Uncomplicated Firewall)
Ve výchozím nastavení Debian neobsahuje UFW. Pro uživatele, kteří by raději používali UFW s Fail2ban, postupujte podle následujících kroků.
Nejprve nainstalujte UFW:
sudo apt install ufw -y
Dále ověřte instalaci a sestavení:
sudo ufw version
Příklad výstupu:
ufw 0.36
Copyright 2008-2015 Canonical Ltd.
Nyní povolte při startu systému a aktivujte fail2ban pomocí příkazu terminálu:
sudo ufw enable
Příklad výstupu:
Firewall is active and enabled on system startup
Dále přidejte UFW do své banakce který místo toho nebude používat výchozí IPTABLES a vy, co určíte:
Příklad z:
[apache-botsearch]
enabled = true
port = http,https
logpath = %(apache_error_log)s
bantime = 72h
maxretry = 1
Příklad:
[apache-botsearch]
enabled = true
port = http,https
logpath = %(apache_error_log)s
banaction = ufw
bantime = 72h
maxretry = 1
Jak můžete vidět, nový řádek banakce =ufw byl přidán ke změně výchozí akce zákazu. Můžete přidat více, řekněme, že chcete BAN na UFW, a také pomocí skriptu Cloudflare zakázat IP adresu pomocí jejich služby brány firewall spolu s nahlášením IP adresy AbuseIPDB Fail2ban Integration:
Příklad:
[apache-botsearch]
enabled = true
port = http,https
logpath = %(apache_error_log)s
banaction = ufw
cloudflare
abuseipdb
bantime = 72h
maxretry = 1
Seznam předem připravených akcí lze nalézt v /etc/fail2ban/actions.d; všechny akce mají základní nastavení a případy použití.
Chcete-li zobrazit zakázané adresy IP, použijte následující příkaz UFW:
sudo ufw status verbrose
Příklad výstupu:
Anywhere REJECT <IP ADDRESS> # by Fail2Ban after 1 attempts against apache-botsearch
Jak vidíte, můžete vidět, že UFW odmítá IP adresu poté, co byl zakázán akcí Fail2ban UFW na filtru apache-botsearch po jednom pokusu. Toto je pouze příklad toho, jak Fail2ban pracuje v živém prostředí a podle očekávání byste měli upravit své filtry tak, aby vyhovovaly vašim potřebám.
Pozor,neodbanujte IP adresy pomocí UFW. Ujistěte se, že používáte akci fail2ban-client unban, jinak bude IP při návratu na stránku znovu zabanována, protože UFW nemůže komunikovat zpět s Fail2ban.
Aktualizovat Fail2ban
Vydání Fail2ban nevychází často, takže výrazné změny neuvidíte každý týden nebo dokonce ani měsíčně. Pro aktualizaci Fail2ban však platí stejný postup při kontrole aktualizací vašeho systému Debian.
Nejprve použijte aktualizaci apt příkaz:
sudo apt update
Za druhé, pokud je k dispozici aktualizace, můžete použít upgrade apt, který zahájí upgrade a další, nebo pokud dáváte přednost upgradu fail2ban, použijte následující:
sudo apt upgrade fail2ban
Odinstalujte Fail2ban
Pokud již nepotřebujete Fail2ban, odstraňte jej ze systému pomocí následujícího příkazu:
sudo apt autoremove fail2ban --purge
Příklad výstupu:
Zadejte Y poté stiskněte klávesu ENTER pokračovat v odstraňování.
Všimněte si, že to také odstraní všechny nepoužívané závislosti, které byly původně nainstalovány s Fail2ban za účelem úplného odstranění.
Monitorování protokolů Fail2ban
Mnoho běžných chyb spočívá v tom, že založí věznice a odejdou, aniž by testovali nebo sledovali, co dělají. Kontrola protokolů je nezbytná, protože protokol fail2ban je ve výchozí cestě /var/log/fail2ban.log .
Pokud máte server se slušným provozem, skvělým příkazem ke sledování živě, abyste viděli případné problémy a sledovali jej při práci na jiných serverech, je použití příkazu tail -f níže.
sudo tail -f /var/log/fail2ban.log
Příkaz se může hodit pro namátkovou kontrolu, aniž byste se museli ponořit do protokolování.