Na prvním místě v seznamu každého provozního týmu IT je zajištění zabezpečení serverů před neoprávněnými uživateli nebo škodlivými skripty. Existuje řada řešení, která můžete použít k odvrácení útoků a porušení. Mezi nimi je implementace softwarového nástroje Fail2ban.
Fail2ban je open-source opatření pro detekci narušení, které zmírňuje útoky hrubou silou, které se zaměřují na různé služby, jako je SSH a VSFTPD, abychom zmínili alespoň některé. Dodává se s řadou filtrů – včetně SSH – které si můžete přizpůsobit tak, aby aktualizovaly pravidla brány firewall a blokovaly neoprávněné pokusy o přihlášení k SSH.
Obslužný program fail2ban monitoruje protokolové soubory serveru na jakékoli pokusy o narušení a zablokuje IP adresu uživatele po předem definovaném počtu neúspěšných pokusů po určitou dobu. IP uživatele je umístěna ve „vězení“, které lze nastavit, povolit nebo zakázat v konfiguračním souboru /etc/fail2ban/jail.conf. Tímto způsobem pomáhá zabezpečit váš linuxový server před neoprávněným přístupem, konkrétněji před botnety a škodlivými skripty.
Co zahrnuje vězení? Vězení se skládá z následujících klíčových prvků:
- Soubor protokolu, který má být analyzován.
- Filtry, které mají být použity na soubor protokolu.
- Akce, která má být provedena, když se filtr shoduje
- Další parametry pro upřesnění typu shod. Například maxtry (maximální pokus) a bantime (čas zákazu) atd.
V tomto tutoriálu vás provedeme instalací a konfigurací Fail2ban na RHEL 8 / CentOS 8.
Krok 1) Nainstalujte úložiště EPEL
Nejprve se přihlaste ke svému serveru a nainstalujte balíček EPEL (Extra Package for Enterprise Linux) následovně.
Pro CentOS 8
$ sudo dnf install -y epel-release
Pro RHEL 8
$ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
Krok 2) Nainstalujte Fail2ban
Chcete-li nainstalovat Fail2ban, spusťte jednoduchý příkaz níže:
$ sudo dnf install -y fail2ban
Krok 3) Konfigurace Fail2ban
Podle návrhu fail2ban analyzuje soubory protokolu a pokusí se najít shodu s regexem selhání zadaným ve filtrech. Filtry zachycují neúspěšné pokusy o autentizaci pro konkrétní službu, například pokusy o přihlášení SSH pomocí regulárních výrazů – regex. Když je v záznamech protokolu dosaženo maximálního počtu časů „maxtry“, spustí se akce.
Ve výchozím nastavení k tomu dojde po 3 neúspěšných pokusech o ověření a uživatel je na 10 minut zablokován nebo uvězněn. Tyto parametry lze snadno nakonfigurovat v souboru /etc/fail2ban/jail.conf, což je globální konfigurační soubor.
Všechny důležité konfigurační soubory jsou umístěny v adresáři /etc/fail2ban/.
Filtry jsou uloženy v adresáři /etc/fail2ban/filter.d. Existují desítky filtrů pro různé služby včetně SSH, Webmin, postfix a mnoho dalších.
/etc/fail2ban/jail.conf je hlavní konfigurační soubor. Nedoporučuje se však přímo upravovat tento soubor, protože jak je v souboru uvedeno, konfigurace budou pravděpodobně přepsány nebo vylepšeny při pozdější aktualizaci distribuce.
Řešením je vytvořit soubor jail.local v adresáři /etc/fail2ban/jail.d a přidat vlastní konfigurace pro požadované služby, které chcete zabezpečit.
POZNÁMKA:Parametry definované v souboru jail.local přepíší soubor jail.conf. Díky tomu je ještě výhodnější ponechat hlavní konfigurační soubor nedotčený.
Pro demonstrační účely vytvoříme vězeňský soubor, který zajistí připojení SSH.
$ sudo vim /etc/fail2ban/jail.local
Zde je ukázkový konfigurační soubor.
[DEFAULT] ignoreip = 192.168.2.105 bantime = 86400 findtime = 300 maxretry = 3 banaction = iptables-multiport backend = systemd [sshd] enabled = true
Pojďme si parametry rozebrat a podívat se, co znamenají.
- ignoreip – Definuje seznam IP adres nebo názvů domén, které nemají být zakázány.
- bantime – Jak název napovídá, udává dobu trvání zákazu vzdáleného hostitele v sekundách.
- maxretry – počet neúspěšných pokusů o přihlášení před zablokováním/zablokováním hostitele.
- findtime – Doba trvání v sekundách, během které bude hostitel zablokován po dosažení maximálních pokusů.
- banakce – akce zákazu.
- backend – systém používaný k načítání souborů protokolu
Naše konfigurace předpokládá následující:
Když IP adresa zaznamená 3 neúspěšné pokusy o ověření během posledních 5 minut, bude na 24 hodin zakázána, s výjimkou hostitele s IP 192.168.2.105.
Uložte a ukončete konfigurační soubor.
Krok 4) Spusťte a povolte Fail2ban
Po dokončení konfigurace vězeňského souboru pro SSH spustíme a povolíme fail2ban při bootování. Služba obvykle po instalaci neběží
Chcete-li spustit a povolit fail2ban, spusťte příkaz:
$ sudo systemctl start fail2ban $ sudo systemctl enable fail2ban
Chcete-li zjistit stav fail2ban, vyvolejte následující příkaz:
$ sudo systemctl status fail2ban
Tentokrát můžeme pozorovat, že fail2ban běží podle očekávání.
Nyní pokračujme a podívejme se, jak Fail2ban funguje.
Krok 4) Fail2ban v akci
Pojďme nyní o krok dále a uvidíme Fail2ban v akci. Chcete-li mít na očích zakázané IP adresy, přijde vhod nástroj fail2ban-client. Chcete-li například získat stav vězení ssh, spusťte příkaz:
$ sudo fail2ban-client status sshd
Momentálně zde nejsou žádné zakázané IP záznamy, protože jsme se ještě vzdáleně nepřihlásili k serveru.
Pokusíme se přihlásit z putty SSH klienta z Windows PC s IP odlišnou od IP zadané v konfiguračním souboru jail.local.
Z výstupu jasně vidíme, že nemůžeme získat přístup k serveru. Když znovu zkontrolujeme stav, zjistíme, že jedna IP byla zakázána, jak je uvedeno.
Chcete-li odstranit IP ze seznamu zakázaných, odblokujte ji následovně.
$ sudo fail2ban-client unban 192.168.2.101
Chcete-li získat další informace o pravidlech a zásadách fail2ban, navštivte manuálové stránky jail.conf, jak je uvedeno
$ man jail.conf
Nějaký komentář nebo zpětnou vazbu? Neváhejte nás kontaktovat a my se vám ozveme.
Přečtěte si také :12 příkladů příkazů IP pro uživatele systému Linux