Všechny servery, které jsou dostupné z internetu, jsou ohroženy útoky malwaru. Pokud máte například aplikaci, která je přístupná z veřejné sítě, útočníci mohou k získání přístupu k aplikaci použít hrubou sílu.
Fail2ban je nástroj, který pomáhá chránit váš počítač se systémem Linux před hrubou silou a dalšími automatizovanými útoky tím, že monitoruje protokoly služeb, zda neobsahují škodlivou aktivitu. Ke skenování souborů protokolu používá regulární výrazy. Započítávají se všechny položky odpovídající vzorům, a když jejich počet dosáhne určité předem definované prahové hodnoty, Fail2ban zakáže porušovanou IP pomocí systémového firewallu na určitou dobu. Po uplynutí doby zákazu bude IP adresa odstraněna ze seznamu zákazů.
Tento článek vysvětluje, jak nainstalovat a nakonfigurovat Fail2ban na Debianu 10.
Instalace Fail2ban na Debian #
Balíček Fail2ban je součástí výchozích úložišť Debianu 10. Chcete-li jej nainstalovat, spusťte následující příkaz jako root nebo uživatel s právy sudo:
sudo apt update
sudo apt install fail2ban
Po dokončení se služba Fail2ban automaticky spustí. Můžete to ověřit kontrolou stavu služby:
sudo systemctl status fail2ban
Výstup bude vypadat takto:
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-03-10 18:57:32 UTC; 47s ago
...
A je to. V tomto okamžiku máte na svém serveru Debian spuštěn Fail2Ban.
Konfigurace Fail2ban #
Výchozí instalace Fail2ban je dodávána se dvěma konfiguračními soubory, /etc/fail2ban/jail.conf
a /etc/fail2ban/jail.d/defaults-debian.conf
. Tyto soubory byste neměli upravovat, protože mohou být při aktualizaci balíčku přepsány.
Fail2ban čte konfigurační soubory v následujícím pořadí. Každý .local
soubor přepíše nastavení z .conf
soubor:
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf
/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local
Nejjednodušší způsob, jak nakonfigurovat Fail2ban, je zkopírovat jail.conf
na jail.local
a upravte .local
soubor. Pokročilejší uživatelé mohou vytvořit .local
konfigurační soubor od začátku. .local
soubor nemusí obsahovat všechna nastavení z odpovídajícího .conf
pouze ty, které chcete přepsat.
Vytvořte .local
konfigurační soubor zkopírováním výchozího jail.conf
soubor:
sudo cp /etc/fail2ban/jail.{conf,local}
Chcete-li zahájit konfiguraci serveru Fail2ban, otevřete jail.local
soubor pomocí vašeho textového editoru:
sudo nano /etc/fail2ban/jail.local
Soubor obsahuje komentáře popisující, co každá možnost konfigurace dělá. V tomto příkladu změníme základní nastavení.
Adresy IP na seznam povolených #
IP adresy, rozsahy IP nebo hostitele, které chcete vyloučit ze zákazu, lze přidat do ignoreip
směrnice. Zde byste měli přidat IP adresu vašeho místního počítače a všechny ostatní počítače, které chcete přidat na seznam povolených.
Odkomentujte řádek začínající ignoreip
a přidejte své IP adresy oddělené mezerou:
ignoreip = 127.0.0.1/8 ::1 123.123.123.123 192.168.1.0/24
Nastavení zákazu #
bantime
, findtime
a maxretry
možnosti nastavují dobu zákazu a podmínky zákazu.
bantime
je doba, po kterou je IP zakázána. Pokud není zadána žádná přípona, výchozí hodnota je sekund. Ve výchozím nastavení bantime
hodnota je nastavena na 10 minut. Většina uživatelů dává přednost nastavení delší doby zákazu. Změňte hodnotu podle svého:
bantime = 1d
Chcete-li IP adresu trvale zakázat, použijte záporné číslo.
findtime
je doba mezi počtem selhání před nastavením zákazu. Pokud je například Fail2ban nastaven tak, aby zakázal IP adresu po pěti selháních (maxretry
, viz níže), k těmto selháním musí dojít během findtime
trvání.
findtime = 10m
maxretry
je počet selhání před zakázáním IP. Výchozí hodnota je nastavena na pět, což by mělo být pro většinu uživatelů v pořádku.
maxretry = 5
E-mailová upozornění #
Fail2ban může odesílat e-mailová upozornění, když byla IP zakázána. Abyste mohli přijímat e-maily, musíte mít na svém serveru nainstalovaný SMTP a změnit výchozí akci, která zakáže IP pouze na %(action_mw)s
, jak je uvedeno níže:
action = %(action_mw)s
%(action_mw)s
zabanuje urážlivou IP a odešle e-mail s hlášením whois. Pokud chcete do e-mailu zahrnout příslušné protokoly, nastavte akci na %(action_mwl)s
.
Můžete také změnit odesílací a přijímací e-mailové adresy:
/etc/fail2ban/jail.localdestemail = [email protected]
sender = [email protected]
Vězení Fail2ban #
Fail2ban používá koncept vězení. Vězení popisuje službu a zahrnuje filtry a akce. Záznamy protokolu odpovídající vyhledávacímu vzoru se počítají, a když je splněna předem definovaná podmínka, jsou provedeny odpovídající akce.
Fail2ban se dodává s řadou vězení pro různé služby. Můžete si také vytvořit vlastní konfigurace vězení. Ve výchozím nastavení je povoleno pouze vězení ssh.
Chcete-li povolit vězení, musíte přidat enabled = true
po titulu vězení. Následující příklad ukazuje, jak povolit postfixové vězení:
[postfix]
enabled = true
port = smtp,ssmtp
filter = postfix
logpath = /var/log/mail.log
Nastavení, o kterých jsme hovořili v předchozí části, lze nastavit pro každé vězení. Zde je příklad:
/etc/fail2ban/jail.local[sshd]
enabled = true
maxretry = 3
findtime = 1d
bantime = 4w
ignoreip = 127.0.0.1/8 11.22.33.44
Filtry jsou umístěny v /etc/fail2ban/filter.d
adresář, uložený v souboru se stejným názvem jako jail. Pokud máte vlastní nastavení a zkušenosti s regulárními výrazy, můžete filtry doladit.
Při každé úpravě konfiguračního souboru je nutné restartovat službu Fail2ban, aby se změny projevily:
sudo systemctl restart fail2ban
Klient Fail2ban #
Fail2ban se dodává s nástrojem příkazového řádku s názvem fail2ban-client
které můžete použít k interakci se službou Fail2ban.
Chcete-li zobrazit všechny dostupné možnosti, vyvolejte příkaz pomocí -h
možnost:
fail2ban-client -h
Tento nástroj lze použít k zablokování/odbanování IP adres, změně nastavení, restartování služby a dalším. Zde je několik příkladů:
-
Získejte aktuální stav serveru:
sudo fail2ban-client status
-
Zkontrolujte stav vězení:
sudo fail2ban-client status sshd
-
Zrušení zákazu IP:
sudo fail2ban-client set sshd unbanip 11.22.33.44
-
Zakázat IP:
sudo fail2ban-client set sshd banip 11.22.33.44