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.
Průvodce poskytne přehled o instalaci Fail2ban na AlmaLinux 8 a několik základních nastavení a tipů.
Předpoklady
- Doporučený operační systém: AlmaLinux 8.
- Uživatelský účet: Uživatelský účet s právy sudo nebo přístup root (příkaz su) .
Aktualizace operačního systému
Aktualizujte svůj AlmaLinux operační systém, abyste se ujistili, že všechny existující balíčky jsou aktuální:
sudo dnf upgrade --refresh -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@localhost ~]$ sudo whoami
root
Pokud jste si nenastavili uživatelský účet sudo a chtěli byste to udělat, navštivte náš návod Jak přidat uživatele do Sudoers na AlmaLinux .
Chcete-li použít rootový účet , použijte k přihlášení následující příkaz s heslem uživatele root.
su
Nainstalujte úložiště EPEL
Prvním krokem je import úložiště z EPEL (Extra Packages for Enterprise Linux) takto:
sudo dnf install epel-release
Příklad výstupu:
Zadejte „Y“ poté stiskněte klávesu ENTER pokračujte v instalaci.
Vždy je dobré ověřit, zda bylo úložiště úspěšně přidáno; to lze provést pomocí příkazu dnf repolist jak je uvedeno níže:
sudo dnf repolist
Příklad výstupu:
Jak vidíte, úložiště EPEL je přidáno správně. Užitečný tip, tento příkaz můžete znovu použít k zobrazení jakýchkoli budoucích importů úložiště.
Konfigurace brány firewall
Ve výchozím nastavení je AlmaLinux dodáván s nainstalovaným firewallem. Chcete-li to ověřit, použijte následující příkaz:
sudo dnf info firewalld
Příklad výstupu:
Jak můžete vidět, toto je standardně nainstalováno na AlmaLinux 8; také by měla být automaticky povolena ve vašem systému.
Chcete-li to potvrdit, použijte následující příkaz systemctl :
sudo systemctl status firewalld
Příklad výstupu:
Dalším praktickým trikem s firewalld je použití příkazu firewall-cmd –state k ověření, zda běží nebo ne:
sudo firewall-cmd --state
Příklad výstupu:
running
Pokud je váš firewall vypnutý, pro jeho spuštění použijte následující:
sudo systemctl start firewalld
Chcete-li znovu povolit jeho spouštění při spouštění systému, použijte následující:
sudo systemctl enable firewalld
Příklad výstupu v případě úspěchu:
Created symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service → /usr/lib/systemd/system/firewalld.service.
Created symlink /etc/systemd/system/multi-user.target.wants/firewalld.service → /usr/lib/systemd/system/firewalld.service.
Pokud byl váš firewall odstraněn, můžete firewalld znovu nainstalovat pomocí následujícího příkazu:
sudo dnf install firewalld
Nakonec, abyste si ověřili současná pravidla předtím, než budou pomocí fail2ban přidána nějaká nová, vypište ta stávající, abyste se seznámili s firewalld:
sudo firewall-cmd --list-all
Příklad výstupu:
Nainstalujte Fail2ban
Nyní, když máte nainstalované úložiště EPEL, je čas nainstalovat fail2ban a doplňkový balíček fail2ban-firewalld, který správně nakonfiguruje Fail2ban tak, aby fungoval s firewallem pro budoucí použití.
sudo dnf install fail2ban fail2ban-firewalld
Příklad výstupu:
Zadejte Y poté stiskněte klávesu ENTER pokračujte v instalaci.
Ve výchozím nastavení nebude fail2ban aktivní, takže jej musíte spustit ručně pomocí následujícího příkazu systemctl :
sudo systemctl start fail2ban
Poté pro povolení fail2ban při spouštění systému použijte následující:
sudo systemctl enable fail2ban
Ověřte stav pomocí následujícího příkazu:
sudo systemctl status fail2ban
Příklad výstupu:
Nakonec ověřte verzi a sestavení fail2ban:
fail2ban-client --version
Příklad výstupu:
Fail2Ban v0.11.2
Jak nakonfigurovat 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í vězení fail2ban /etc/fail2ban/jail.d/00-firewalld.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 .
Chcete-li to provést, použijte následující příkazy.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Ve výchozím nastavení jail.local je nastaven tak, aby používal IPTABLES . Aby to bylo jednoduché, místo použití 00-firewalld.conf/jail a vytvoření pravidel od začátku, otevřete jail.local a přejděte na řádek 208 a nahraďte :
Otevřít jail.local:
sudo nano /etc/fail2ban/jail.local
Najít Ol d kód (IPTABLES):
anaction = iptables-multiport
banaction_allports = iptables-allports
Nahradit za (FIREWALLD):
banaction = firewallcmd-rich-rules[actiontype=]
banaction_allports = firewallcmd-rich-rules[actiontype=]
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 Zakázat časové přírůstky . 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 180.53.31.33 (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 pokusí o stejný útok za 10 minut (vyhledat č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 pro nahlášení nejen sobě, ale také odeslání e-mailů poskytovatelům na černou listinu a útočníkovu ISP, aby je mohli nahlásit.
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]
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 násobitelem 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. To provedeme 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
Kontrola Firewallu a Fail2ban
Ve výchozím nastavení by firewalld měl být nakonfigurován tak, aby automaticky zakazoval všechny IP, které zakazují akce fail2ban. Chcete-li zjistit, zda to skutečně funguje správně, použijte následující příkaz:
Rychlý test je umístěn ve vašem vězení [SSHD] a umístění povoleno =true i když nepoužíváte toto vězení, protože je to jen test, použijte následující příkaz ban:
sudo fail2ban-client set sshd banip 192.155.1.7
Nyní vypište seznam rozšířených pravidel brány firewall takto:
firewall-cmd --list-rich-rules
Příklad výstupu:
rule family="ipv4" source address="192.155.1.7" port port="ssh" protocol="tcp" reject type="icmp-port-unreachable"
Jak můžete vidět, fail2ban a firewalld fungují správně pro živé prostředí.
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í.
Odinstalujte Fail2ban
Pokud již nepotřebujete Fail2ban, odstraňte jej ze systému pomocí následujícího příkazu:
sudo dnf autoremove fail2ban fail2ban-firewalld
Příklad výstupu:
Zadejte Y poté stiskněte klávesu ENTER pokračovat v odinstalaci.
Všimněte si, že tím také odstraníte všechny nepoužívané závislosti, které byly nainstalovány pomocí Fail2ban.