fail2ban je balík klientských, serverových a konfiguračních souborů, který slouží k ochraně systému před různými škodlivými útoky. Zabezpečuje také linuxové serverové služby proti odmítnutí služby (DoS). Mezi další základní funkce patří monitorovací protokolové soubory, vyhledávání předdefinovaných vzorů a dočasné blokování IP adres. Je publikován pod GNU General Public License verze 2 a je založen na Pythonu.
Může běžet na pozadí (jako démon) i v popředí. Program je užitečný například v ssh serveru, kde chcete omezit počet pokusů o přihlášení. Program fail2ban prozkoumá protokolové soubory systému, zda neobsahují neúspěšné pokusy o přihlášení, a poté na určitou dobu zablokuje internetovou adresu (IP) útočníka.
Zde se naučíme kroky k instalaci Fail2ban na Debian 11 Bulleyes a jeho konfigurační proces.
Instalace Fail2ban na Debian 11
Balíčky pro instalaci a konfiguraci Fail2ban jsou dostupné v oficiálním repozitáři Debianu 11, takže k jeho instalaci stačí použít příkaz apt.
Nejprve spusťte příkaz update pro opětovné sestavení mezipaměti úložiště-
sudo apt update
A pak hlavní příkaz k získání tohoto bezpečnostního nástroje-
sudo apt install fail2ban
Po spuštění výše uvedeného příkazu budou po instalaci dostupné následující programy:
- fail2ban-server – server
- fail2ban-client – Klientský program pro konfiguraci a vyhodnocení serveru
- fail2ban-regex- Program pro testování regulárních výrazů
Povolte a zkontrolujte stav jeho služeb-
sudo systemctl enable fail2ban sudo systemctl status fail2ban
Konfigurace v Debianu 10/11
fail2ban čte typy konfiguračních souborů s příponami .conf
a .local
. Soubory s příponou .conf
jsou vytvořeny během instalace a budou přepsány během aktualizace balíčku takže všechny změny musí být provedeny v odpovídajícím .local
soubory. V tomto souboru tedy přidávejte nebo měňte pouze hodnoty, které se liší od výchozího nebo globálního nastavení.
Fail2ban má tři typy konfiguračních souborů:
/etc/fail2ban/action.d/*.conf/*
/etc/fail2ban/filter.d/*.conf/*
/etc/fail2ban/jail.conf /etc/fail2ban/jail.d/*.conf
Actions.d
Soubory v adresáři /etc/fail2ban/action.d/ obsahují příkazy pro (odblokování) IP adres. Soubory akcí obsahují dvě části: [Definice]
a [Init]
. Položky v [Init]
sekce se používá k přepsání pravidel definovaných ve vězení. Příklady v následující tabulce jsou převzaty z iptables-multiport-conf akce. Všechny příkazy jsou prováděny s uživatelskými právy fail2ban.
Přehled možností | ||
záznam | popis | příklad |
[Definice] | ||
spuštění akce | Příkazy, které se provádějí při spuštění fail2ban. | actionstart =iptables -N fail2ban- iptables -A fail2ban- iptables -I <řetěz> -p |
actionstop | Příkazy, které se provádějí při ukončení fail2ban. | actionstop =iptables -D <řetěz> -p |
akční kontrola | Příkazy, které se provádějí před každým zákazem akcí. Používají se ke kontrole funkčnosti aktuálního prostředí. | actioncheck =iptables -n -L <řetěz> | grep -q 'fail2ban- |
akční zákaz | Příkazy, které se provádějí, když je IP zakázána. Podmínka je vždy maxretry musí být překročeno a čas hledání poklesl krátký. | actionban =iptables -I fail2ban- |
actionunban | Příkazy, které se mají použít pro zrušení zákazu. | actionunban =iptables -D fail2ban- |
[Init] | ||
jméno | Výchozí název řetězce | name =default |
port | port | port =ssh |
protokol | Používá jej interně konfigurační čtečka. Možné hodnoty: tcp , udp , icmp , vše . | protokol =tcp |
řetěz | Řetěz iptables, do kterého by měla být přidána pravidla fail2ban. Standardní je INPUT . | řetěz =INPUT |
Značky akcí | Značky akcí jsou zástupné symboly, které lze použít v actionban , actionunban a actioncheck . | |
ip | Adresa IPv4, která má být zakázána. | |
selhání | Počet započítaných neúspěšných pokusů. | |
čas | Unixové časové razítko (v sekundách) zákazu. | |
odpovídá | Zřetězené položky z řádků souboru protokolu, které vedou k zákazu. Mnoho znaků shellu je escapováno. |
Filter.d
Soubory v adresáři /etc/fail2ban/filter.d/ obsahuje regulární výrazy pro analýzu souborů protokolu a pro extrakci IP adresy nebo pokud jsou použity usedns, název hostitele. Tyto soubory obsahují pouze dvě části: [Definice]
a [Zahrnuje]
. Ten lze použít ke čtení jiných konfiguračních souborů.
Příklady v následující tabulce jsou převzaty z iptables-multiport-conf akce. Všechny příkazy jsou prováděny s uživatelskými právy fail2ban.
Přehled možností | ||
vstup | popis | příklad |
[Definice] | ||
failregex | Pomocí tohoto regulárního výrazu se v souborech protokolu vyhledávají shody. Značka je HOST k dispozici zde,který se používá jako součást regulárního výrazu a obsahuje název hostitele nebo IP adresu. Rozdíl mezi IP adresou a názvem hostitele je určen automaticky pomocí fail2ban. | failregex =^%(__prefix_line)sFAIL:\S+ adresa z= ^%(__prefix_line)sFAIL:\S+ libwrap z= |
ignoreregex | Zde lze definovat výjimky, i když byly platné pro výše uvedený failregex. ignoreregex podporuje interpolaci řetězců , takže můžete použít své vlastní proměnné s %(variablenname)s . | ignoreregex = |
[ZAHRNUTÍ] | ||
před | Použijte k tomu, aby byl soubor načten před nastaveným souborem. Příkladem je common.conf | before =common.conf |
po | Soubor se přečte po nastaveném souboru | po =example_after.local |
příklad | Po integraci common.conf je _daemon k dispozici.Viz /etc/fail2ban/filter.d/common.conf pro více podrobností. | _daemon =xinetd |
Jail.conf
Zatímco jail.conf
soubor kombinuje Akce a vytvořili filtr do vězení. Uživatel musí uložit tento soubor s příponou.loca
l začít přidávat jeho vlastní pravidla nebo je přizpůsobovat.
Soubor jail.conf a následující tabulka poskytuje přehled výchozích možných hodnot.
Přehled možností | ||
vstup | popis | příklad |
[VÝCHOZÍ] | ||
ignoreip | Mezerou oddělený seznam IP adres nebo sítí, které mají být ignorovány. | ignoreip =127.0.0.1/8 192.168.1.33 |
bantime | Čas zákazu v sekundách. Záporná hodnota je trvalý zákaz. | bantime =86400 |
findtime | Počet sekund, po kterých je počítadlo pro maxretry resetovat. | findtime =660 |
maxretry | Maximální počet neúspěšných pokusů před tím, než fail2ban zakáže IP. | maxretry =2 |
backend | Zde lze nastavit backend, například systemd. Výchozí hodnota je auto (doporučeno). | backend =systemd |
usedns | Nastavení pro chování zpětného vyhledávání fail2ban. Možné hodnoty jsou yes , ne a varovat .To druhé znamená, že záznamy s názvy hostitelů zobrazí v souboru protokolu varování, což může vést k velkému počtu záznamů. | usedns =varovat |
[myJail] | Zde lze přiřadit název věznice. | [ssh] |
povoleno | (De-) aktivuje vězení | povoleno =true |
port | Definice portu, může být číselná. Více hodnot je odděleno čárkami. | port =ssh |
filtr =sshd | Název souboru filtru | /etc/fail2ban/filter.d/sshd.conf |
cesta protokolu | Soubor protokolu, který má být monitorován a který je zkontrolován na filtr. | cesta protokolu =/var/log/auth.log |
maxretry, bantime,... | Lze také definovat různé hodnoty pro výchozí možnosti. | maxretry =3 |
Vytvořte si vlastní konfigurační soubor vězení
Nyní tedy zkopírujeme jail.conf soubor k vytvoření jail.local soubor pro přidání jakýchkoli vlastních nastavení, která tam zůstanou i po upgradu fail2ban.
sudo cp /etc/fail2ban/jail.{conf,local}
Chcete-li nakonfigurovat různá nastavení, upravte vytvořené místní soubory vězení
sudo nano /etc/fail2ban/jail.local
Několik příkladů-
Přidat některé IP adresy, rozsahy IP nebo hostitele na seznam povolených
Nyní, když se soubor otevře, řekněme, že chcete přidat některé IP adresy, rozsahy IP nebo hostitele na seznam povolených, aby nebyli blokováni službou File2ban. Za tímto účelem definujeme totéž v nově vytvořeném Jail.local soubor.
Viz :Jak zkontrolovat IP adresu na Linux Command terminal
V souboru najděte #igonreip řádek a odstraňte # z toho. Poté přidejte IP adresu nebo rozsah, který chcete přidat na seznam povolených.
Bantime, findtime a maxretry
Podobně můžeme také zvýšit nebo snížit dobu zakázané IP adresy změnou hodnot volby bantime uvedené v souboru.
[Default] bantime = 10m
Chcete-li zkrátit nebo prodloužit časové období, jednoduše změňte výchozích 10 minut na cokoliv, co chcete. Zatímco k trvalému zablokování IP adresy použijte nějakou zápornou hodnotu.
maxretry
Kolik maximálních pokusů musela IP adresa provést, aby byla zablokována? Ve výchozím nastavení je to pět a je deklarováno pomocí maxretry
možnost v jail.local
soubor. Pokud ji chcete snížit, řekněme až po dvou škodlivých pokusech, měla by IP dostat blokátor, pak změňte číslo z 5 na 2. Stejným způsobem můžete zvýšit i počet maximálních pokusů.
maxretry = 5
najít čas
Je to doba mezi maximálním opakováním, ke kterému by mělo dojít u jakéhokoli škodlivého kódu nebo přihlášení do systému, než Fail2Ban zablokuje konkrétní IP adresu. Například , někdo se snaží přihlásit, pokud to udělal 5 pokusů ve stanovených 10 minutách, tak se mu zablokuje IP. Čas hledání však můžete změnit hodnotu pro zvýšení nebo snížení tohoto časového období.
findtime = 10m
Fail2ban může odesílat e-mailová upozornění
Ano, pokud bude některá IP zakázána, můžete obdržet upozornění e-mailem na totéž. Musíte však povolit a definovat, jakou e-mailovou adresu chcete používat k přijímání upozornění.
Nainstalovat Sendmail- Agent pro přenos pošty s otevřeným zdrojovým kódem (MTA)
sudo apt install sendmail
Nyní musíme provést dvě klíčová nastavení v jail.local soubor pro příjem upozornění e-mailem.
- destemail – e-mailová adresa, která bude použita pro zasílání upozornění.
- odesílatel – e-mailová adresa, ze které bude fail2ban odesílat e-maily.
V souboru tedy najděte dvě výše uvedená nastavení a přidejte svou e-mailovou adresu-
Dále vyhledejte řádek níže
action = %(action_)s
A změňte jej pomocí některého z následujících –
akce =%(action_)s
– Tento odešle e-mailové upozornění, když bude nějaká IP adresa zakázána.
nebo
akce =%(action_mwl)s
– V případě, že chcete dostávat e-mailové upozornění na zakázanou IP hostitele včetně informací v protokolech, použijte tuto možnost akce.
Kromě toho se můžete podívat na náš seznam nejlepších aplikací e-mailového klienta pro Ubuntu nebo Debian Linux.
Povolte služby v souboru vězení Fail2ban
Jak jsem již zmínil, vytvoření jail.local obsahuje obě Akce a Filtry které lze použít k zakázání/povolení výchozích povolených služeb nebo k vytvoření vlastních.
Například – Ve výchozím nastavení je SSH povoleno v Jail.local z Fail2ban.
Ve skutečnosti v souboru Fail2ban Jail uvidíte, že s ním přichází spousta služeb. Musíte je však povolit. NEBO si můžete vytvořit vlastní.
Pod /etc/fail2ban/filters.d ve složce můžete vidět veškerý konfigurační filtr soubory pro každou tam dostupnou službu Fai2ban Jail.
Než si ukážeme, jak je zapnout, podívejme se, jaké jsou povolené vězeňské služby-
sudo fail2ban-client status
Výstup bude takový-
Status |- Number of jail: 1 `- Jail list: sshd
Nyní, pokud chceme zapnout nějakou službu Jail, musíme přidat enabled =true
v jail.conf
soubor za titulem vězeňské služby. Následující příklad ukazuje, jak povolit apache-auth vězení:
Příklad – Pojďme zapnout službu Apache-auth Fail2ban
Upravte jail.local
a najděte předdefinované Apache-Auth Vězeňská služba
Uložit soubor pomocíCtrl+X , Y, a stisknutím klávesy Enter Klíč.
Restartujte server Fail2ban
sudo systemctl restart fail2ban
Nyní , opět použijteklienta Fail2ban zkontrolovat, kolik vězeňských služeb je povoleno-
sudo fail2ban-client status
Tentokrát bude výstup-
Status |- Number of jail: 2 `- Jail list: apache-auth, sshd
Další informace o službě použijte její název s výše uvedeným příkazem-
sudo fail2ban-client status apache-auth
Výstup:
Status for the jail: apache-auth |- Filter | |- Currently failed: 0 | |- Total failed: 0 | `- File list: /var/log/apache2/error.log `- Actions |- Currently banned: 0 |- Total banned: 0 `- Banned IP list:
Chyba:
Pokud se vám zobrazují následující chyby, znamená to, že konkrétní služba, kterou chcete povolit, ještě není na vašem systému nebo serveru nainstalována. Například Pokud jsem povolil Apache Jail, ale samotný Apache není na mém serveru dostupný, objeví se tento druh chyby.
fail2ban.service: Main process exited, code=exited, status=255/EXCEPTION [6613]: ERROR Failed to access socket path: /var/run/fail2ban/fail2ban.sock. Is fail2ban running?
Použití klienta Fail2ban
Dokonce i my můžeme použít klientský příkazový nástroj Fail2ban k řešení jeho různých služeb – pro zobrazení všech souvisejících příkazů můžete použít příznak Nápověda –
fail2ban-client -h
Například Chcete-li zakázat nebo zrušit zákaz některé IP pro nějakou službu, použijte následující syntaxi
Zakázat
fail2ban-client set <JAIL-service> banip <IP>
Zrušení zákazu
fail2ban-client set <JAIL-service> unbanip <IP>
Příklad-
sudo fail2ban-client set sshd banip 192.168.0.6
Konečná poznámka-
Toto byl rychlý přehled instalace a konfigurace Fail2ban na Debian 11 Bullseye nebo 10 Buster. Přestože dokumentace nástroje Fail2ban není rozsáhlá, přesto, pokud se někteří chtějí podívat, podívejte se na jeho oficiální web. Zde jsou odkazy:Stránka projektu, Dokumentace, stránka GitHub pro zdrojový kód