Ako chrániť svoj server pomocou Fail2Ban v systéme Linux


Zabezpečenie servera je najvyššou prioritou každej firmy alebo organizácie. Jedným z najdôležitejších nástrojov v súprave správcu systému je Fail2Ban. Táto príručka vysvetľuje, čo je Fail2Ban a ako ho môžete použiť na ochranu vášho servera Linux pred útokmi.

Obsah

  • Čo je Fail2Ban?
  • Prečo používať Fail2Ban?
  • Inštalácia Fail2Ban
  • Konfigurácia Fail2Ban
  • často kladené otázky

Tip: okrem Fail2Ban si pozrite aj tieto open source nástroje na zabezpečenie svojho servera.

Čo je Fail2Ban?

Fail2Ban je nástroj na prevenciu narušenia, ktorý monitoruje súbory denníka a zakazuje adresy IP, ktoré vykazujú známky škodlivej aktivity. Robí to vytvorením "filtrov", ktoré zodpovedajú určitým vzorom v protokolových súboroch, a vykonaním akcií, ako je zakázanie problematickej IP adresy.

Prečo používať Fail2Ban?

Existuje niekoľko dôvodov, prečo použiť fail2ban. Môže:

  • ušetrí vám čas automatickým zakázaním škodlivých IP adries.
  • pomáhajú zabezpečiť váš server znížením pravdepodobnosti úspešného útoku.
  • vám dá pokoj s vedomím, že váš server je monitorovaný a chránený.

Inštalácia Fail2Ban

V predvolenom nastavení je Fail2Ban k dispozícii v úložiskách Ubuntu. Nainštalujte ho pomocou apt.

sudo add-apt-repository universe
sudo apt update && sudo apt install fail2ban -y

Fail2Ban nastaví svoju službu na pozadí, ale systemd ju predvolene zakáže. Môžete ho spustiť a povoliť pomocou nasledujúcich príkazov:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

Pomocou nasledujúceho príkazu skontrolujte, či je spustený Fail2Ban:

sudo systemctl status fail2ban

Uvidíte výstup podobný obrázku nižšie.

Konfigurácia Fail2Ban

Adresár "/etc/fail2ban" obsahuje konfiguračné súbory pre Fail2Ban. V predvolenom nastavení sa Fail2Ban dodáva so súborom „jail.conf“, ktorý obsahuje nastavenia, ktoré budú platiť pre všetky služby.

Je však dobrým zvykom vytvoriť lokálny súbor „jail.local“ a prepísať nastavenia v súbore „jail.conf“, pretože pri každej aktualizácii programu prídete o všetky zmeny vykonané v súbore „jail.conf“.

Súbor „jail.local“ môžete vytvoriť pomocou nasledujúcich príkazov:

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

Otvorte súbor jail.local a upravte ho:

sudo nano /etc/fail2ban/jail.local

Je dobré vedieť: Naučte sa, ako vytvoriť SSH honeypot na chytenie hackerov na vašom serveri.

Preskúmanie súboru jail.local

Uvidíte podobný výstup ako nižšie a môžete byť ohromení množstvom dostupných možností. Ale nebojte sa, pretože vás prevedieme najdôležitejšími možnosťami.

Na začiatku riadku uvidíte symbol „#“, ktorý označuje, že ide o komentár. Fail2Ban ich používa na vysvetlenie toho, čo konkrétne nastavenie robí. Tu môžete povoliť niektoré nastavenia odstránením tohto symbolu.

Sekcia „[DEFAULT]“ obsahuje možnosti aplikované na všetky väznice. Toto je globálna konfigurácia pre Fail2Ban. Nasledujúca snímka obrazovky ukazuje príklad tohto.

Existujú aj ďalšie sekcie, ktoré začínajú názvom služby. Toto väzenie sa vzťahuje na konkrétnu službu nad rámec globálnych väzení.

Existuje napríklad sekcia pre väzenie „sshd“. Táto časť obsahuje možnosti, ktoré sú špecifické pre službu sshd.

Tip: Viac informácií o posilnení servera sa môžete dozvedieť aj zabezpečením servera SSH.

Povolenie funkcie Autoban

Prejdite na nastavenie „bantime=1h“ a odstráňte symbol „#“ na začiatku riadku, aby ste ho aktivovali. Tento riadok nastavuje trvanie, ako dlho Fail2Ban zakáže IP adresu. Predvolená jednotka je jedna hodina. Môžete použiť aj iné jednotky, ako sú minúty (m), dni (d) alebo dokonca týždne (w).

Túto hodnotu môžete zvýšiť alebo znížiť, ako uznáte za vhodné. Túto hodnotu môžete zmeniť napríklad na 30 m, aby ste skrátili dĺžku zákazu na 30 minút.

Zmena predvolenej dĺžky prihlasovacieho okna

Ďalšie nastavenia sú „maxretry“ a „findtime“. Určujú, koľko pokusov o prihlásenie môže útočník urobiť, kým Fail2Ban zablokuje jeho IP.

Predvolené hodnoty pre „maxretry“ a „findtime“ sú 5 a 10 m. Ak sa IP nepodarí autentifikovať päťkrát za desať minút, Fail2Ban ju zablokuje na dobu určenú nastavením bantime.

Tieto hodnoty môžete zmeniť na čokoľvek chcete. Môžete napríklad nastaviť „maxretry“ na 3 a „findtime“ na 5 m: Fail2Ban zakáže IP, ak sa nepodarí overiť trikrát za päť minút.

Povolenie funkcie upozornenia Fail2Ban

Ďalšie nastavenia sú destemail, meno odosielateľa a mta. Tieto nastavenia použije Fail2Ban na konfiguráciu e-mailových upozornení.

  • Nastavenie destemail je e-mailová adresa, na ktorú bude program posielať upozornenia.
  • meno odosielateľa je meno, ktoré sa zobrazí v poli „Od“ e-mailu s upozornením.
  • mta je agent prenosu pošty, ktorý Fail2Ban použije na odosielanie e-mailov. Predvolená mta je sendmail, ale môžete ju zmeniť na niečo iné, napríklad mail.

Ak chcete dostávať e-mailové upozornenia, musíte odkomentovať tieto riadky a zadať príslušné hodnoty podľa obrázka.

Keď dôjde k zákazu, dostanete e-mailové upozornenie s podrobnosťami o zákaze, ako je znázornené.

Vytváranie vlastných príkazov zákazu

Ďalšie nastavenie je "akcia_ =." Toto určuje akciu, ktorú Fail2ban vykoná, keď zakáže IP adresu. Predvolená akcia je použiť iptables na blokovanie IP, kým neuplynie „bantime“.

Môžete použiť aj iné akcie, ako je uvedené nižšie. Tento tutoriál sa z dôvodu jednoduchosti drží predvoleného nastavenia.

  • action_mw: odošle e-mailové upozornenie, keď je IP zakázaná, spolu s relevantnými informáciami WHOIS.
  • action_mwl: odošle e-mailové upozornenie, keď je IP zakázaná, spolu s relevantnými informáciami WHOIS a záznamami v súbore denníka, ktoré spustili zákaz.
  • action_xarf: odošle e-mailové upozornenie vo formáte X-ARF, keď je zakázaná adresa IP s položkami súboru denníka, ktoré spustili zákaz.

K dispozícii je mnoho ďalších akcií, ale nie je možné ich všetky pokryť v tomto návode. O všetkých dostupných akciách si môžete prečítať v dokumentácii Fail2ban.

Povolenie konfigurácie špecifickej pre službu

Okrem konfigurácie predvoleného správania Fail2ban je tiež možné použiť vopred pripravené "filterové súbory" pre niektoré bežné internetové služby. Sú to malé súbory, ktoré vývojári napísali, aby hľadali špecifický protokolový výstup konkrétneho serverového démona.

Napríklad súbor „apache-shellshock.conf“ obsahuje všetky potrebné nastavenia, ktoré umožnia Fail2ban kontrolovať akékoľvek škodlivé pokusy o vytvorenie chyby shellshock.

Všetky dostupné súbory filtrov pre váš systém nájdete v adresári "/etc/fail2ban/filter.d":

ls /etc/fail2ban/filter.d

Keď poznáte filtre, ktoré chcete použiť, povedzte Fail2ban, aby ich načítal počas spúšťania otvorením súboru „jail.local“:

sudo nano /etc/fail2ban/jail.local

Vytvorte priestor v "jail.local", kde môžete aktivovať svoje nové filtre. Vytváram mínu medzi hlavičkou komentára a blokom [INCLUDES].

Pridajte filtre, ktoré chcete aktivovať. Napríklad toto je úryvok, ktorý používam vo svojej konfigurácii:

# Comments: use '#' for comment lines and ';' (following a space) for inline comments
 
[sshd]
enabled = true
 
[nginx-bad-request]
enabled = true
 
[bitwarden]
enabled = true
 
[INCLUDES]

Po dokončení uložte a zatvorte súbor. Ak chcete použiť zmeny, reštartujte fail2ban.

sudo systemctl restart fail2ban

Testovanie vašej konfigurácie

Teraz, keď ste nakonfigurovali fail2ban, je čas ho otestovať.

Najjednoduchší spôsob, ako otestovať svoju konfiguráciu, je pokúsiť sa prihlásiť s nesprávnym heslom niekoľkokrát rýchlo za sebou. Na tento účel môžete použiť pripojenie SSH.

Na zariadení na likvidáciu sa pokúste pripojiť SSH na váš server Fail2ban pomocou používateľského mena „admin“. Nahraďte "your_server_ip_address" skutočnou IP adresou vášho Fail2ban servera.

ssh admin@your_server_ip_address

Po zobrazení výzvy zadajte náhodné heslo a niekoľkokrát ho zopakujte. Po niekoľkých pokusoch sa zobrazí správa, že server odmietol váš pokus o pripojenie.

Okrem použitia ssh môžete otestovať aj ostatné súbory filtrov v Fail2ban spustením ich „stavu zlyhania“. V mojom prípade používam filter „nginx-bad-request“, ktorý zisťuje, či existuje hostiteľ, ktorý zaplavuje server neplatnými požiadavkami.

Ak to viete, môžete túto funkciu otestovať zámerným odoslaním prázdnych požiadaviek na váš webový server pomocou curl:

curl -H "User-Agent:" -H "Host:" https://yourwebsite.com -v

Je dobré vedieť: zatiaľ čo Fail2ban funguje skvele s Nginx, môžete tento program použiť aj na ochranu svojho servera Apache.

Overenie akcií Fail2ban

Nakoniec spustite nižšie uvedený príkaz na svojom serveri Fail2ban, aby ste overili, či fail2ban pridal potrebné pravidlá do iptables.

Príkaz grep filtruje výstup príkazu iptables. Voľba -S hovorí iptables, aby vytlačila pravidlá vo formáte, ktorý možno ľahko analyzovať.

sudo iptables -S | grep f2b

Uvidíte výstup podobný tomu na obrázku nižšie. Argument „--reject-with icmp-port-unreachable“ hovorí iptables, aby pri pokuse o pripojenie poslal späť klientovi správu o nedostupnosti portu ICMP. Môžete tiež vidieť adresy IP počítačov, ktoré server zakázal.

Tip: Na zabezpečenie svojho linuxového servera by ste mali použiť aj SELinux.

často kladené otázky

Prečo dostávam prázdne e-mailové upozornenie, keď Fail2ban zablokuje IP adresu?

Ak dostanete prázdne e-mailové upozornenie, je pravdepodobné, že ste svoj poštový server nenakonfigurovali správne. Skontrolujte konfiguráciu svojho poštového servera a uistite sa, že dokáže odosielať e-maily.

Ako zruším zákaz IP adresy?

Najprv nájdite väzenie, kde je IP adresa momentálne zakázaná: sudo fail2ban-client status , potom zrušte zákaz IP adresy spustením nasledujúceho: sudo fail2ban-client set unbanip .

Ako zobrazím súbor denníka fail2ban?

Možno budete chcieť zobraziť súbor denníka fail2ban, aby ste mohli vyriešiť problémy alebo zistiť, prečo bola IP zakázaná. Súbor "/var/log/fail2ban.log" obsahuje všetky protokoly generované fail2ban. Pomocou príkazu cat zobrazíte súbor denníka fail2ban: cat /var/log/fail2ban.log.

Povolil som viacero filtračných súborov. Prečo všetky nefungujú?

Tento problém je s najväčšou pravdepodobnosťou spôsobený filtrom, ktorý prepisuje iný súbor, ktorý bol pred ním. Jedným zo spôsobov, ako to vyriešiť, je vytvoriť si vlastný súbor filtrov kombináciou viacerých filtrov.

Ochráni Fail2ban môj server pred útokom DoS?

Áno a nie. Z väčšej časti bude Fail2ban schopný zabrániť akejkoľvek IP adrese, ktorá spamuje neplatné požiadavky na váš server. Jedným z najväčších obmedzení tohto programu je však to, že nemôže reagovať na udalosti, ktoré nevytvárajú záznam v protokole. Preto je stále dôležité zabezpečiť váš server Linux pomocou iných nástrojov na tieto formy útokov.

Kredit obrázku: Unsplash. Všetky zmeny a snímky obrazovky od Ramcesa Reda.

Súvisiace články