Sari la conținut
Fail2ban: instalare și configurare completă pentru protecția serverului Linux

Fail2ban: instalare și configurare completă pentru protecția serverului Linux

Fail2ban este unul dintre primele instrumente pe care trebuie să le instalați pe orice server Linux expus la internet. Acesta monitorizează jurnalele de autentificare ale serviciilor și blochează automat adresele IP care generează prea multe tentative eșuate de autentificare, eliminând din ecuație cea mai mare parte a atacurilor brute force automate.

Pe un server nou, jurnalul de autentificare SSH (/var/log/auth.log pe Debian/Ubuntu sau /var/log/secure pe AlmaLinux/Rocky Linux) poate conține mii de tentative eșuate în primele ore de la conectarea la internet. Fail2ban transformă aceste tentative în blocări automate, fără intervenție manuală.

Fail2ban: instalare și configurare completă pentru protecția serverului Linux

Fail2ban funcționează pe baza conceptului de jail: fiecare serviciu protejat are o configurație separată care definește ce jurnale să monitorizeze, câte tentative eșuate să tolereze într-un interval de timp și cât timp să blocheze adresa IP care a depășit pragul.

Instalați Fail2ban înainte de a expune serverul la internet sau imediat după primul boot, nu după ce sunteți deja sub atac.

Instalarea Fail2ban

Pe Ubuntu/Debian:

sudo apt update
sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban
sudo systemctl status fail2ban

Pe AlmaLinux/Rocky Linux (necesită EPEL):

sudo dnf install -y epel-release
sudo dnf install -y fail2ban fail2ban-firewalld
sudo systemctl enable --now fail2ban

Pe AlmaLinux, pachetul fail2ban-firewalld asigură integrarea cu firewalld, care este firewall-ul implicit pe distribuțiile bazate pe RHEL.

Crearea fișierului jail.local

Nu modificați niciodată fișierul jail.conf implicit. Acesta este suprascris la actualizarea pachetului Fail2ban. În schimb, creați un fișier jail.local care suprascrie selectiv setările implicite:

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

Sau creați de la zero un fișier minimal:

sudo nano /etc/fail2ban/jail.local

Configurație recomandată pentru jail.local:

[DEFAULT]
# IP-urile proprii care nu vor fi niciodata blocate
ignoreip = 127.0.0.1/8 ::1 IP_PROPRIU

# Durata blocarii: 1 ora
bantime = 1h

# Fereastra de timp pentru numararea tentativelor
findtime = 10m

# Numar maxim de tentative esuate inainte de blocare
maxretry = 5

# Backend pentru citirea jurnalelor
backend = systemd

# Actiunea de blocare (iptables pe Ubuntu, firewalld pe AlmaLinux)
banaction = iptables-multiport
# Pe AlmaLinux cu firewalld:
# banaction = firewallcmd-multiport

[sshd]
enabled = true
port = ssh
# Daca ati schimbat portul SSH:
# port = 2222
filter = sshd
maxretry = 3
bantime = 24h

Adăugați adresa IP proprie în ignoreip înainte de a activa Fail2ban. Dacă vă blocați accidental propriul IP, va trebui să accesați serverul prin consola de urgență a furnizorului de hosting.

Configurarea jailurilor pentru servicii web

Pe un server de hosting cu nginx, adăugați protecție pentru autentificarea HTTP și pentru pagina de login WordPress:

[nginx-http-auth]
enabled = true
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
maxretry = 5
bantime = 1h

[nginx-limit-req]
enabled = true
filter = nginx-limit-req
logpath = /var/log/nginx/error.log
maxretry = 10
bantime = 2h

# Protectie wp-login.php
[wordpress]
enabled = true
filter = wordpress
logpath = /var/log/nginx/access.log
maxretry = 5
bantime = 24h

Creați filtrul pentru WordPress în /etc/fail2ban/filter.d/wordpress.conf:

[Definition]
failregex = ^<HOST> .* "POST /wp-login.php
ignoreregex =

Configurarea jailului recidive pentru atacatori persistenți

Jailul recidive blochează pentru o perioadă lungă IP-urile care au fost blocate de mai multe ori:

[recidive]
enabled = true
logpath = /var/log/fail2ban.log
banaction = iptables-allports
maxretry = 3
findtime = 86400
bantime = 604800

Aceasta blochează pentru 7 zile (604800 secunde) orice IP care a primit 3 blocări separate în 24 de ore.

Reîncărcarea configurației și verificarea stării

# Reincarcati configuratia dupa modificari
sudo systemctl restart fail2ban

# Verificati starea tuturor jailurilor
sudo fail2ban-client status

# Verificati starea jailului SSH
sudo fail2ban-client status sshd

# Vizualizati IP-urile blocate curent
sudo fail2ban-client status sshd | grep "Banned IP"

# Deblocati manual un IP
sudo fail2ban-client set sshd unbanip IP_DE_DEBLOCAT

Testarea configurației

Testați că filtrul detectează corect pattern-urile din jurnale fără să activați blocarea:

# Testati filtrul SSH pe jurnalul de autentificare
sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf

# Testati filtrul WordPress
sudo fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/wordpress.conf

Output-ul indică câte linii din jurnal se potrivesc cu pattern-ul filtrului. Un număr mare de potriviri confirmă că filtrul funcționează corect.

Fail2ban complementar cu CSF pe serverele cPanel

Pe serverele cPanel, CSF (ConfigServer Security and Firewall) îndeplinește un rol similar cu Fail2ban, dar mai integrat în ecosistemul cPanel. Dacă folosiți CSF, nu instalați Fail2ban simultan pentru aceleași servicii, deoarece pot intra în conflict. Folosiți CSF pentru serviciile cPanel (SSH, WHM, email) și eventual Fail2ban doar pentru servicii suplimentare pe care CSF nu le acoperă.

Concluzie

Fail2ban instalat și configurat corect blochează automat marea majoritate a atacurilor brute force pe SSH, servicii web și email, cu efort minim de întreținere. Configurarea jailului recidive adaugă un strat suplimentar împotriva atacatorilor persistenți. Combinat cu autentificarea prin cheie SSH și dezactivarea autentificării cu parolă, Fail2ban face serverul dumneavoastră semnificativ mai rezistent la accesul neautorizat.

Serverele noastre VPS cu 24, 32 și 64 de nuclee CPU rulează pe AlmaLinux 9 și sunt compatibile cu Fail2ban și firewalld pentru securitate completă la nivel de rețea.

Înapoi sus
Your Cart

Your cart is empty.