Nainstalujte si Fail2ban a přiřaďte jej k SSH a Nginx

Když jsme připojili server s Linuxem a chceme jej spravovat z internetu pomocí dálkového ovládání SSH, může se stát, že začneme přijímat útoky s cílem vstoupit do systému a být schopen jej ovládat pro jeho účely. Tyto útoky obvykle provádějí počítačové programy (roboti), které se na dlouhou dobu snaží dostat do systému pomocí hrubé síly.

V předchozích příspěvcích jsem hovořil o tom, jak konfigurovat službu SSH, ale někteří pokročilí roboti do služby nevstupují, ale mohou službu SSH na serveru zabít deaktivací vzdáleného přístupu.

Kompletní manuál SSH (Secure Shell)

Můžeme se tomu vyhnout pomocí nástroj fail2ban, je velmi praktický a nabízí velkou míru bezpečnosti. Trochu vysvětlit, jak to funguje. Je schopen vytvářet iptables před jakýmkoli neúspěšným pokusem o přihlášení více než 5krát za sebou, jakmile je zakázán, odmítne jakýkoli typ připojení.

Nainstalujte si Fail2ban


Instalaci lze provést přímo z apt. Nejprve aktualizujeme systém a poté nainstalujeme Fail2ban.
 apt-get update && apt-get -y upgrade
 apt-get install fail2ban
Tím se program nejen nainstaluje, ale také nechá běžet a začíná se systémem.

Konfigurace Fail2ban


Služba Fail2ban má v adresáři svá nastavení / etc / fail2ban. V jail.conf máte několik předkonfigurovaných možností, nejlepší v tomto případě je zkopírovat soubor a neprovádět úpravy přímo v něm, při aktualizaci fail2ban se tyto soubory přepíší a můžete přijít o všechny dříve provedené změny.

V tomto případě zkopírujeme soubor a pojmenujeme ho jail.local, aby jej mohl najít.

 sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Po zkopírování jej můžeme otevřít a zjistit, jak funguje.
 vim /etc/fail2ban/jail.local
Uvnitř souboru máme několik parametrů, které můžeme upravit. Jakýkoli parametr, který je pod značkou [DEFAULT], bude aplikován na všechny služby povolené Fail2banem, jako jsou SSH, NGINX, APACHE, budeme tomu říkat globální, pak budeme mít pro každou službu specifické sekce.

Začneme přidáním parametrů do globální sekce.

 ignoreip = 127.0.0.1
Přidáme náš localhost tímto způsobem, který bude ignorovat veškerý místní provoz, můžeme přidat další adresy oddělující je mezerou.
 bantime = 600
Bantime je časové období, po které bude klient zablokován poté, co byl zablokován. Jednotka je v sekundách, 600 sekund bude 10 minut, což je výchozí hodnota.
 findtime = 600 maxretry = 3
Pak tu máme findtime a maxretry. Jsou zodpovědní za stanovení podmínek pro klienta, který má být ve výchozím nastavení zakázán. Lze vyčíst, že jakýkoli uživatel s více než 3 neúspěšnými pokusy za méně než 10 minut bude zablokován.
 destemail = root @ localhost sendername = Fail2Ban mta = sendmail
Pokud chceme vytvářet upozornění pro zakázané uživatele, jsou tyto 3 parametry nezbytné, definujeme cíl, komu zaslat výstražný e -mail, kdo bude mít jeho odeslání na starosti, a nakonec mta k definování, jakou e -mailovou službu budeme používat .
 action = $ (action_) s
Zde definujeme, jaká opatření je třeba provést, když je vyžadován zákaz. Hodnota action_ je výchozí akce založená na odmítnutí veškerého provozu klienta, dokud nevyprší čas zákazu.

Pokud chceme odeslat upozornění poštou, musíme změnit hodnotu na action_mw, ale pokud chceme, aby také připojila řádky protokolu do těla pošty, použijeme action_mwl. Před změnou této hodnoty si musíme být jisti, že jsou nastavení pošty správná.

Nastavení podle služby


Jakmile budou globální konfigurace dokončeny, přidáme parametry, které budou použity výhradně na

Služba SSH, zajistíme přidání možností pod značku [SSH].

 enabled = true
Ve výchozím nastavení je služba SSH povolena, ale v případě potřeby ji můžeme v této možnosti upravit.

Celá tato část by mohla fungovat s hodnotami, které budu podrobně popisovat později, ale můžete je upravit tak, aby je přizpůsobily vašim potřebám, nebo je ve výchozím nastavení všechny nechat.

Další z konfigurací jsou filtry, které indikují, zda bylo přihlášení správné nebo ne, a lze je přidat pro jiné služby, například máme server s nginx a část stránky je chráněna heslem, ale klient útočí hrubou silou , můžeme to zastavit přidáním následujícího pod značku [nginx-http-auth].

 [nginx-http-auth] enabled = true filter = nginx-http-auth port = http, https logpath = /var/log/nginx/error.log
Pokud má uživatel více než 3 neúspěšné pokusy o přihlášení, projeví se to v protokolech a fail2ban bude jednat a zablokuje veškerý uživatelský provoz.

Testovací prostředí


Poté, co porozumíme základům, uděláme malé testovací prostředí, ve kterém budeme chránit SSH a Nginx prostřednictvím Fail2ban vytvořením zásady zákazu, která nás upozorní na IP, která byla zakázána.

Pokud není nainstalován, nejprve nainstalujeme Nginx

 apt-get install nginx
nainstalujeme poštovní službu pro upozornění, že to může být sendmail
 apt-get install sendmail
konečně chceme, aby naše iptables byly po bootování trvalé, můžeme buď vytvořit skript rc.0, nebo nainstalovat balíček iptables-persistent.
 apt-get install iptables-persistent
Bude nainstalován.

Zřízení našeho firewallu


Po instalaci výše uvedeného musíme implementovat bránu firewall, aby mohla blokovat provoz. V dalších příspěvcích vytvořím základní firewall, o kterém budu mluvit více o iptables.

Umožníme zavedená připojení, provoz serveru, jako jsou aktualizace, a provoz určený pro porty SSH a Nginx. Veškerý zbývající provoz bude zamítnut.

 sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED, SOUVISEJÍCÍ -j ACCEPT sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo iptables -A INPUT - tcp --dport 80 -j PŘIJMOUT sudo iptables -A VSTUP -j DROP
Změny můžeme vidět pomocí:
 iptables -S
Mělo by to dát podobný výsledek.
 -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT -N fail2ban -ssh -A INPUT -p tcp -m multiport --dports 22 -j fail2ban -ssh -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate SOUVISEJÍCÍ, Zřízeno -j PŘIJMOUT -A VSTUP -p tcp -m tcp --dport 22 -j PŘIJMOUT -A VSTUP -p tcp -m tcp --dport 80 -j PŘIJMOUT -A VSTUP -j DROP -A selhání2ban -ssh -j NÁVRAT

Úprava nastavení Fail2ban


Nyní musíme nakonfigurovat soubor jail.local podle vlastního uvážení.
 vi /etc/fail2ban/jail.local
Dobu, po kterou má uživatel zakázán přístup, můžeme prodloužit alespoň na 30 minut, hodnotu nastavte v sekundách.
 bantime = 1800
Musíme nakonfigurovat e -mail, který přijímá všechna upozornění na zákaz fail2ban, podívejme se na hodnotu e -mailu v souboru a vložte e -mail.
 destemail = [email protected]
Můžeme změnit odesílatele, který bude odesílat výstrahu, kterou obvykle vkládám, pod názvem fail2ban, abychom mohli lépe filtrovat mezi všemi protokoly.

Poté, co musíme změnit hodnotu akce, máme 2 možnosti:

  • action_mw: odešle výstrahu se zprávou podobnou příkazu whois zakázaného klienta.
  • action_mwl: odešlete mnohem podrobnější upozornění vložením protokolu do těla zprávy.

V tomto použijeme druhou možnost:

 action =% (action_mwl) s 
Poté přejdeme do sekce [SSH] a můžeme před banem upravit maximální počet pokusů, ponecháme jej na 5:
 maxretry = 5
Pokud máme službu SSH na jiném portu než 22, což je velmi doporučeno, musíme zmínit její port.
 port = 45024
Poté budeme hledat značku [nginx-http-auth], necháme ji tak, jak je.
 [nginx-http-auth] povoleno = true
Jsme hotovi a můžeme soubor uložit a zavřít.

Restartování služby Fail2ban


Aby mohly být všechny změny použity, doporučuji službu zastavit.
 služba selhání2ban stop 
Pak je můžeme začít znovu
 spuštění služby fail2ban
Bude to chvíli trvat, asi po 5 minutách můžeme naše pravidla znovu vidět pomocí
 iptables -S
 -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT -N fail2ban -nginx -http -auth -N fail2ban -ssh -A INPUT -p tcp -m multiport --dports 80,443 -j fail2ban -nginx -http -auth -A INPUT -p tcp -m multiport --dports 22 -j fail2ban -ssh -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate RELATED, ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp - -dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -j DROP -A fail2ban -nginx -http -auth -j RETURN -A fail2ban -ssh -j RETURN
Vidíme, jak fail2ban přidal nové zásady, může se lišit v závislosti na konfiguraci, kterou jste definovali v /etc/fail2ban/jail.local.

ZávěryNainstalovali jsme fail2ban a nakonfigurovali jsme práci s SSH a NGINX v případě APACHE musíme změnit popisky a adresář protokolů, ale je velmi podobný nginx. Konfigurovali jsme pouze základy, můžete vytvářet filtry a mnohem pokročilejší pravidla, doporučuji si trochu přečíst jejich manuálovou stránku, konfigurační soubory jsou dobře komentované, doporučuji postupovat postupně, abyste objevili všechny její funkce.

Líbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave