Cum să vă securizați serverul Linux cu fail2ban

Publicat: 2022-01-29
O fereastră de terminal stilizată care rulează pe un laptop Linux în stil Ubuntu.
Fatmawati Achmad Zaenuri/Shutterstock

Cu fail2ban , computerul dumneavoastră Linux blochează automat adresele IP care au prea multe erori de conectare. Este securitate autoreglată! Vă vom arăta cum să-l utilizați.

Securitate Securitate Securitate

Ducesa de Windsor, Wallis Simpson, a spus odată: „Nu poți fi niciodată prea bogat sau prea slab”. Am actualizat acest lucru pentru lumea noastră modernă, interconectată: nu poți fi niciodată prea atent sau prea sigur.

Dacă computerul acceptă solicitări de conectare primite, cum ar fi conexiunile Secure Shell (SSH) sau acționează ca un server web sau de e-mail, trebuie să îl protejați de atacurile de forță brută și de ghicitorii de parole.

Pentru a face acest lucru, va trebui să monitorizați solicitările de conectare care nu reușesc să intre într-un cont. Dacă nu se autentifică în mod repetat într-o perioadă scurtă, ar trebui să li se interzică să mai facă încercări suplimentare.

Singurul mod în care acest lucru poate fi realizat practic este automatizarea întregului proces. Cu puțină configurare simplă, fail2ban va gestiona monitorizarea, interzicerea și dezbancarea pentru dvs.

Publicitate

fail2ban se integrează cu firewall-ul Linux iptables . Implementează interdicțiile asupra adreselor IP suspecte adăugând reguli la firewall. Pentru a menține această explicație neaglomerată, folosim iptables cu un set de reguli gol.

Desigur, dacă sunteți îngrijorat de securitate, probabil că aveți un firewall configurat cu un set de reguli bine populat. fail2ban doar adaugă și elimină propriile reguli — funcțiile tale obișnuite de firewall vor rămâne neatinse.

Putem vedea setul nostru de reguli gol folosind această comandă:

 sudo iptables -L 

LEGATE: Ghidul pentru începători pentru iptables, paravanul de protecție Linux

Se instalează fail2ban

Instalarea fail2ban este simplă pe toate distribuțiile pe care le-am folosit pentru a cerceta acest articol. Pe Ubuntu 20.04, comanda este următoarea:

 sudo apt-get install fail2ban 

Pe Fedora 32, tastați:

 sudo dnf install fail2ban 

Pe Manjaro 20.0.1, am folosit pacman :

 sudo pacman -Sy fail2ban 

Se configurează fail2ban

Instalarea fail2ban conține un fișier de configurare implicit numit jail.conf. Acest fișier este suprascris când fail2ban este actualizat, așa că ne vom pierde modificările dacă facem personalizări la acest fișier.

În schimb, vom copia fișierul jail.conf într-unul numit jail.local. Prin introducerea modificărilor noastre de configurare în jail.local, acestea vor persista în timpul actualizărilor. Ambele fișiere sunt citite automat de fail2ban .

Iată cum se copiază fișierul:

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

Acum deschideți fișierul în editorul dvs. preferat. Vom folosi gedit :

 sudo gedit /etc/fail2ban/jail.local
Publicitate

Vom căuta două secțiuni în fișier: [DEFAULT] și [sshd]. Aveți grijă să găsiți secțiunile reale, totuși. Etichetele respective apar și în partea de sus într-o secțiune care le descrie, dar nu asta ne dorim.

/etc/fail2ban/jail.local deschis într-o fereastră gedit.

Veți găsi secțiunea [DEFAULT] undeva în jurul liniei 40. Este o secțiune lungă, cu o mulțime de comentarii și explicații.

/etc/fail2ban/jail.local s-a deschis într-o fereastră gedit și a derulat la linia 89.

Derulați în jos până la rândul 90 și veți găsi următoarele patru setări despre care trebuie să știți:

  • ignoreip: o listă albă de adrese IP care nu vor fi niciodată interzise. Ei au un card permanent Ieșiți din închisoare. Adresa IP localhost ( 127.0.0.1 ) se află în listă în mod implicit, împreună cu echivalentul său IPv6 ( ::1 ). Dacă există alte adrese IP despre care știi că nu ar trebui să fie interzise niciodată, adaugă-le în această listă și lasă un spațiu între fiecare.
  • bantime: Durata pentru care o adresă IP este interzisă („m” reprezintă minute). Dacă introduceți o valoare fără „m” sau „h” (pentru ore), aceasta va fi tratată ca secunde. O valoare de -1 va interzice definitiv o adresă IP. Ai mare grijă să nu te blochezi definitiv.
  • findtime: intervalul de timp în care prea multe încercări eșuate de conectare vor duce la interzicerea unei adrese IP.
  • maxretry: valoarea pentru „prea multe încercări eșuate”.

Dacă o conexiune de la aceeași adresă IP face încercări eșuate de conectare maxretry în perioada de findtime , acestea sunt interzise pe durata bantime . Singurele excepții sunt adresele IP din lista ignoreip .

fail2ban pune adresele IP în închisoare pentru o anumită perioadă de timp. fail2ban acceptă multe închisori diferite și fiecare reprezintă deține setările care se aplică unui singur tip de conexiune. Acest lucru vă permite să aveți setări diferite pentru diferite tipuri de conexiune. Sau puteți avea fail2ban să monitorizeze doar un set ales de tipuri de conexiune.

Poate l-ați ghicit din numele secțiunii [DEFAULT], dar setările pe care le-am analizat sunt implicite. Acum, să ne uităm la setările pentru închisoarea SSH.

LEGATE: Cum să editați fișierele text grafic pe Linux cu gedit

Configurarea unei închisori

Închisorile vă permit să mutați tipurile de conexiune în și în afara monitorizării fail2ban's . Dacă setările implicite nu se potrivesc cu cele pe care doriți să le aplicați la închisoare, puteți seta anumite valori pentru bantime , findtime și maxretry .

Publicitate

Derulați în jos până la linia 280 și veți vedea secțiunea [sshd].

/etc/fail2ban/jail.local s-a deschis într-o fereastră gedit și a derulat la linia 280.

Aici puteți seta valori pentru închisoarea conexiunii SSH. Pentru a include această închisoare în monitorizare și interdicție, trebuie să introducem următoarea linie:

 activat = adevărat

Introducem și această linie:

 maxretry = 3

Setarea implicită a fost cinci, dar vrem să fim mai precauți cu conexiunile SSH. L-am redus la trei, apoi am salvat și închis fișierul.

Am adăugat această închisoare la monitorizarea fail2ban's și am înlocuit una dintre setările implicite. O închisoare poate folosi o combinație de setări implicite și specifice închisorii.

Se activează fail2ban

Până acum, am instalat fail2ban și l-am configurat. Acum, trebuie să-l activăm să ruleze ca serviciu de pornire automată. Apoi, trebuie să-l testăm pentru a ne asigura că funcționează conform așteptărilor.

Publicitate

Pentru a activa fail2ban ca serviciu, folosim comanda systemctl :

 sudo systemctl enable fail2ban

De asemenea, îl folosim pentru a porni serviciul:

 sudo systemctl start fail2ban 

Putem verifica și starea serviciului folosind systemctl , de asemenea:

 stare sudo systemctl fail2ban.service 

Totul arată bine – avem undă verde, așa că totul este bine.

Să vedem dacă fail2ban este de acord:

 starea sudo fail2ban-client 

Acest lucru reflectă ceea ce am stabilit. Am activat o singură închisoare, numită [sshd]. Dacă includem numele închisorii cu comanda anterioară, putem arunca o privire mai profundă asupra acesteia:

 sudo fail2ban-client status sshd 

Acesta listează numărul de erori și adrese IP interzise. Desigur, toate statisticile sunt zero în acest moment.

Ne testăm închisoarea

Pe alt computer, vom face o solicitare de conexiune SSH la mașina noastră de testare și vom introduce greșit parola. Primești trei încercări de a obține parola corect la fiecare încercare de conectare.

Publicitate

Valoarea maxretry se va declanșa după trei încercări eșuate de conectare, nu trei încercări eșuate de parolă. Deci, trebuie să introducem o parolă incorectă de trei ori pentru a eșua o încercare de conectare.

Vom face apoi o altă încercare de conectare și vom introduce parola incorect încă de trei ori. Prima încercare de parolă incorectă a celei de-a treia solicitări de conectare ar trebui să declanșeze fail2ban.

După prima parolă incorectă la a treia cerere de conectare, nu primim un răspuns de la mașina de la distanță. Nu primim nicio explicație; primim doar umărul rece.

Trebuie să apăsați Ctrl+C pentru a reveni la promptul de comandă. Dacă mai încercăm o dată, vom primi un răspuns diferit:

 ssh [email protected] 

Anterior, mesajul de eroare era „Permisiune refuzată”. De data aceasta, conexiunea este refuzată definitiv. Suntem persona non grata. Am fost interziși.

Să ne uităm din nou la detaliile închisorii [sshd]:

 sudo fail2ban-client status sshd 

Publicitate

Au existat trei erori și o adresă IP (192.168.4.25) a fost interzisă.

După cum am menționat anterior, fail2ban impune interdicții adăugând reguli la setul de reguli pentru firewall. Să aruncăm o altă privire asupra setului de reguli (era goală înainte):

 sudo iptables -L 

A fost adăugată o regulă la politica INPUT, care trimite trafic SSH către lanțul f2b-sshd . Regula din lanțul f2b-sshd respinge conexiunile SSH de la 192.168.4.25. Nu am modificat setarea implicită pentru bantime , așa că, în 10 minute, acea adresă IP va fi nebannizată și poate face noi solicitări de conectare.

Dacă setați o durată de interdicție mai lungă (cum ar fi câteva ore), dar doriți să permiteți unei adrese IP să facă o altă solicitare de conectare mai devreme, o puteți elibera mai devreme.

Introducem următoarele pentru a face acest lucru:

 sudo fail2ban-client set sshd unbanip 192.168.5.25 

Pe computerul nostru la distanță, dacă facem o altă solicitare de conexiune SSH și introducem parola corectă, ni se va permite să ne conectăm:

 ssh [email protected] 

Simplu și Eficient

Mai simplu este de obicei mai bine, iar fail2ban este o soluție elegantă la o problemă dificilă. Este nevoie de foarte puțină configurare și nu impune aproape deloc operaționalitate — pentru dvs. sau computer.

LEGATE: Cele mai bune laptopuri Linux pentru dezvoltatori și entuziaști