Jak zabezpečit svůj Linux server pomocí fail2ban

S fail2ban váš počítač se systémem Linux automaticky blokuje IP adresy, které mají příliš mnoho selhání připojení. Je to samoregulační zabezpečení! Ukážeme vám, jak jej používat.

Zabezpečení Zabezpečení Zabezpečení

vévodkyně z Windsoru, Wallis Simpson, Jednou slavně řekl: „Nikdy nemůžeš být příliš bohatý nebo příliš hubený.“ Toto jsme aktualizovali pro náš moderní, propojený svět: Nikdy nemůžete být příliš opatrní nebo příliš zabezpečeni.

Pokud váš počítač přijímá požadavky na příchozí připojení, jako je např Secure Shell (SSH) připojení nebo funguje jako webový nebo e-mailový server, musíte jej chránit před útoky hrubou silou a hádáním hesel.

Chcete-li tak učinit, budete muset monitorovat požadavky na připojení, kterým se nepodaří získat přístup k účtu. Pokud se během krátké doby opakovaně nepodaří ověřit, měl by jim být zakázán další pokus.

Jediným způsobem, jak toho lze prakticky dosáhnout, je automatizace celého procesu. S trochou jednoduché konfigurace to zvládne fail2ban sledování, zakazování a odblokování pro tebe.

fail2ban se integruje s linuxový firewall iptables. Vynucuje zákazy na podezřelých IP adresách přidáním pravidel do firewallu. Aby bylo toto vysvětlení přehledné, používáme iptables s prázdnou sadou pravidel.

Samozřejmě, pokud máte obavy o bezpečnost, pravděpodobně máte firewall nakonfigurovaný s dobře obsazenou sadou pravidel. pouze fail2ban přidává a odebírá vlastní pravidla– vaše běžné funkce brány firewall zůstanou nedotčeny.

Pomocí tohoto příkazu můžeme vidět naši prázdnou sadu pravidel:

sudo iptables -L

Instalace fail2ban

Instalace fail2ban je jednoduchá na všechny distribuce, které jsme použili k průzkumu tohoto článku. Na Ubuntu 20.04 je příkaz následující:

sudo apt-get install fail2ban

Na Fedoře 32 zadejte:

sudo dnf install fail2ban

Na Manjaro 20.0.1 jsme použili pacman:

sudo pacman -Sy fail2ban

Konfigurace fail2ban

Instalace fail2ban obsahuje výchozí konfigurační soubor s názvem jail.conf. Tento soubor je při upgradu fail2ban přepsán, takže pokud provedeme přizpůsobení tohoto souboru, ztratíme své změny.

  5 nejlepších hardwarových informačních nástrojů pro Linux

Místo toho zkopírujeme soubor jail.conf do souboru s názvem jail.local. Když naše konfigurační změny vložíte do jail.local, zůstanou zachovány i během upgradů. Oba soubory jsou automaticky čteny pomocí fail2ban.

Takto zkopírujete soubor:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Nyní otevřete soubor ve svém oblíbeném editoru. Budeme používat gedit:

sudo gedit /etc/fail2ban/jail.local

V souboru budeme hledat dvě sekce: [DEFAULT] a [sshd]. Dejte si však pozor, abyste našli skutečné sekce. Tyto štítky se také objevují nahoře v sekci, která je popisuje, ale to není to, co chceme.

Najdete [DEFAULT] úsek někde kolem řádku 40. Je to dlouhý úsek se spoustou komentářů a vysvětlení.

Přejděte dolů na řádek 90 a najdete následující čtyři nastavení, o kterých potřebujete vědět:

ignoreip: Seznam povolených IP adres, které nebudou nikdy zakázány. Mají permanentní kartu Get Out of Jail Free. The localhost IP adresa (127.0.0.1) je v seznamu standardně spolu s jeho ekvivalentem IPv6 (::1). Pokud existují další IP adresy, o kterých víte, že by nikdy neměly být zakázány, přidejte je do tohoto seznamu a ponechte mezi nimi mezeru.
bantime: Doba, po kterou je IP adresa zakázána (“m” znamená minuty). Pokud zadáte hodnotu bez „m“ nebo „h“ (pro hodiny), bude se s ní zacházet jako s sekundami. Hodnota -1 trvale zakáže IP adresu. Buďte velmi opatrní, abyste se trvale nezamkli.
findtime: Množství času, během kterého příliš mnoho neúspěšných pokusů o připojení povede k zakázání IP adresy.
maxretry: Hodnota pro „příliš mnoho neúspěšných pokusů“.

Pokud připojení ze stejné IP adresy způsobí neúspěšné pokusy o připojení maxretry během období hledání, bude po dobu trvání bantime zakázáno. Jedinou výjimkou jsou adresy IP v seznamu ignoreip.

fail2ban uvrhne IP adresy do vězení na stanovenou dobu. fail2ban podporuje mnoho různých vězení a každý z nich představuje držení nastavení platné pro jeden typ připojení. To vám umožní mít různá nastavení pro různé typy připojení. Nebo můžete mít fail2ban monitorovat pouze vybranou sadu typů připojení.

  6 Linux USB Nástroje pro opravu vašeho PC

Možná jste to uhodli z [DEFAULT] název sekce, ale nastavení, na která jsme se podívali, jsou výchozí. Nyní se podívejme na nastavení vězení SSH.

Konfigurace vězení

Vězení vám umožní přesunout typy připojení do a z monitorování fail2ban. Pokud výchozí nastavení neodpovídají těm, které chcete použít ve vězení, můžete nastavit konkrétní hodnoty pro bantime, findtime a maxretry.

Přejděte dolů na řádek 280 a uvidíte [sshd] sekce.

Zde můžete nastavit hodnoty pro vězení připojení SSH. Abychom toto vězení zahrnuli do sledování a zákazu, musíme napsat následující řádek:

enabled = true

Napíšeme také tento řádek:

maxretry = 3

Výchozí nastavení bylo pět, ale u připojení SSH chceme být opatrnější. Klesli jsme na tři a pak jsme soubor uložili a zavřeli.

Toto vězení jsme přidali k monitorování fail2ban a přepsali jsme jedno z výchozích nastavení. Vězení může používat kombinaci výchozího nastavení a nastavení specifického pro vězení.

Povolení fail2ban

Zatím jsme nainstalovali a nakonfigurovali fail2ban. Nyní ji musíme povolit, aby se spouštěla ​​jako služba s automatickým spouštěním. Poté jej musíme otestovat, abychom se ujistili, že funguje podle očekávání.

Abychom povolili fail2ban jako službu, používáme příkaz systemctl:

sudo systemctl enable fail2ban

Používáme jej také ke spuštění služby:

sudo systemctl start fail2ban

Stav služby můžeme zkontrolovat také pomocí systemctl:

sudo systemctl status fail2ban.service

Všechno vypadá dobře – máme zelenou, takže je vše v pořádku.

Uvidíme, zda fail2ban souhlasí:

sudo fail2ban-client status

To odráží to, co jsme nastavili. Aktivovali jsme jediné vězení, pojmenované [sshd]. Pokud k našemu předchozímu příkazu zahrneme název vězení, můžeme se na něj podívat hlouběji:

sudo fail2ban-client status sshd

Zde je uveden počet selhání a zakázaných IP adres. Všechny statistiky jsou samozřejmě v tuto chvíli nulové.

Testování našeho vězení

Na jiném počítači vygenerujeme požadavek na připojení SSH k našemu testovacímu počítači a záměrně překlepneme heslo. Při každém pokusu o připojení máte tři pokusy o správné zadání hesla.

  5 způsobů, jak upravit PDF v systému Linux

Hodnota maxretry se spustí po třech neúspěšných pokusech o připojení, nikoli po třech neúspěšných pokusech o zadání hesla. Musíme tedy třikrát zadat nesprávné heslo, aby se pokus o připojení nezdařil.

Poté provedeme další pokus o připojení a ještě třikrát zadáme nesprávné heslo. První nesprávný pokus o heslo třetího požadavku na připojení by měl spustit fail2ban.

Po prvním nesprávném heslu při třetím požadavku na připojení neobdržíme ze vzdáleného počítače odpověď. Nedostáváme žádné vysvětlení; jen dostaneme studené rameno.

Chcete-li se vrátit do příkazového řádku, musíte stisknout Ctrl+C. Pokud to zkusíme ještě jednou, dostaneme jinou odpověď:

ssh [email protected]

Dříve byla chybová zpráva „Oprávnění odepřeno“. Tentokrát je spojení přímo odmítnuto. Jsme persona non grata. Dostali jsme zákaz.

Podívejme se na podrobnosti o [sshd] znovu vězení:

sudo fail2ban-client status sshd

Došlo ke třem selháním a jedna IP adresa (192.168.4.25) byla zakázána.

Jak jsme již zmínili dříve, fail2ban vynucuje zákazy přidáním pravidel do sady pravidel brány firewall. Podívejme se znovu na sadu pravidel (předtím byla prázdná):

sudo iptables -L

Do zásady INPUT bylo přidáno pravidlo, které odesílá provoz SSH do řetězce f2b-sshd. Pravidlo v řetězci f2b-sshd odmítá připojení SSH z 192.168.4.25. Nezměnili jsme výchozí nastavení pro bantime, takže za 10 minut bude tato IP adresa odblokována a může zadávat nové požadavky na připojení.

Pokud nastavíte delší dobu trvání zákazu (např. několik hodin), ale chcete, aby IP adresa podala další žádost o připojení dříve, můžete ji předčasně propustit.

K tomu zadáme následující:

sudo fail2ban-client set sshd unbanip 192.168.5.25

Pokud na našem vzdáleném počítači provedeme další požadavek na připojení SSH a zadáme správné heslo, bude nám umožněno se připojit:

ssh [email protected]

Jednoduché a efektivní

Jednodušší je obvykle lepší a fail2ban je elegantním řešením ošemetného problému. Vyžaduje velmi malou konfiguraci a nevyžaduje téměř žádnou provozní režii – vám nebo vašemu počítači.