Skip to content
Fail2Ban Linux protectie atacuri

Fail2Ban pe Linux, protecție automată împotriva atacurilor

Fail2Ban pe Linux, protecție automată împotriva atacurilor. Fail2Ban este un instrument esențial de securitate pentru serverele Linux care monitorizează logurile de sistem și blochează automat adresele IP care încearcă să compromită serviciile expuse.

Fără Fail2Ban sau un instrument similar, serverul dumneavoastră este expus permanent la atacuri brute force pe SSH, HTTP și alte servicii. Instalarea și configurarea corectă durează doar câteva minute.

Fail2Ban pe Linux, protecție automată împotriva atacurilor

Fail2Ban funcționează prin analiza logurilor în timp real, identificarea tiparelor de atac și crearea automată de reguli de firewall care blochează adresele IP ofensatoare. Procesul este complet automat după configurarea inițială.

Instrumentul poate proteja orice serviciu care generează loguri: SSH, Apache, Nginx, MySQL, FTP, WordPress și multe altele.

Instalarea și configurarea inițială Fail2Ban

Instalarea Fail2Ban este simplă pe toate distribuțiile Linux majore. După instalare, configurarea de bază necesită doar câteva ajustări.

# Instalare pe Ubuntu/Debian
sudo apt update
sudo apt install fail2ban -y

# Instalare pe CentOS/AlmaLinux
sudo dnf install epel-release -y
sudo dnf install fail2ban -y

# Activare la pornirea sistemului
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# Verificare stare
sudo systemctl status fail2ban

Niciodată nu modificați fișierul jail.conf direct. Creați întotdeauna un fișier jail.local care suprascrie setările implicite.

# Creare configurare locală
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  • Fail2Ban este disponibil în repositoriile oficiale ale tuturor distribuțiilor majore
  • Folosiți întotdeauna jail.local pentru personalizări, jail.conf este suprascris la actualizări
  • Activați serviciul la boot pentru protecție permanentă
  • Verificați că firewall-ul (UFW sau iptables) este activ înainte de configurarea Fail2Ban

Configurarea protecției SSH

SSH este serviciul cel mai atacat pe serverele Linux. Configurarea Fail2Ban pentru SSH este prioritatea numărul unu.

Setările agresive pentru SSH sunt justificate deoarece accesul SSH oferă control complet asupra serverului.

# Editare /etc/fail2ban/jail.local
[DEFAULT]
# Setări globale
bantime = 3600
findtime = 600
maxretry = 5
banaction = ufw
ignoreip = 127.0.0.1/8 ::1 YOUR_STATIC_IP

# Acțiune cu notificare email
action = %(action_mwl)s

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = %(sshd_log)s
maxretry = 3
bantime = 86400
findtime = 600

# Protecție agresivă - blochează și după o singură încercare cu user invalid
[sshd-aggressive]
enabled = true
port = 2222
filter = sshd[mode=aggressive]
logpath = %(sshd_log)s
maxretry = 1
bantime = 604800
findtime = 86400
  • Setați maxretry la 3 pentru SSH, suficient pentru erori de tastare legitime
  • Bantime de 86400 (24 ore) pentru prima regulă, 604800 (7 zile) pentru cea agresivă
  • Adăugați IP-ul dumneavoastră fix în ignoreip pentru a evita blocarea accidentală
  • Activați notificările email pentru a fi informat despre atacurile blocate

Protecția serverului web Apache/Nginx

Atacurile asupra serverului web includ scanare de vulnerabilități, încercări de exploit și cereri malformate. Fail2Ban poate detecta și bloca aceste atacuri.

# Protecție Apache
[apache-auth]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 5
bantime = 3600

[apache-badbots]
enabled = true
port = http,https
filter = apache-badbots
logpath = /var/log/apache2/access.log
maxretry = 2
bantime = 86400

[apache-noscript]
enabled = true
port = http,https
filter = apache-noscript
logpath = /var/log/apache2/error.log
maxretry = 5

[apache-overflows]
enabled = true
port = http,https
filter = apache-overflows
logpath = /var/log/apache2/error.log
maxretry = 2
bantime = 86400
  • Activați protecția pentru autentificarea Apache dacă folosiți .htpasswd
  • Filtrul apache-badbots blochează scanerele și boții malițioși cunoscuți
  • Protecția împotriva buffer overflow previne atacuri de tip denial-of-service
  • Ajustați maxretry în funcție de volumul de trafic legitim al site-ului

Crearea unui filtru personalizat pentru WordPress

Fail2Ban nu include implicit un filtru pentru WordPress, dar puteți crea unul care detectează atacurile brute force pe wp-login.php și xmlrpc.php.

# Creare filtru /etc/fail2ban/filter.d/wordpress-hard.conf
[Definition]
failregex = ^<HOST> .* "POST /wp-login.php
            ^<HOST> .* "POST /xmlrpc.php
            ^<HOST> .* "GET /wp-admin/ HTTP.*" 403
            ^<HOST> .* "POST /wp-admin/admin-ajax.php.*" 403
ignoreregex = ^<HOST> .* "GET /wp-admin/.*.(css|js|png|jpg)"

# Creare filtru sofisticat /etc/fail2ban/filter.d/wordpress-soft.conf
[Definition]
failregex = ^<HOST> .* "GET /wp-config.php
            ^<HOST> .* "GET /.env
            ^<HOST> .* "GET /wp-includes/.*.php.*" 403
            ^<HOST> .* "GET .*wp-content/debug.log
ignoreregex =

Adăugați regulile în jail.local:

[wordpress-hard]
enabled = true
port = http,https
filter = wordpress-hard
logpath = /var/log/apache2/access.log
maxretry = 5
findtime = 300
bantime = 3600

[wordpress-soft]
enabled = true
port = http,https
filter = wordpress-soft
logpath = /var/log/apache2/access.log
maxretry = 2
findtime = 600
bantime = 86400
  • Testați filtrele cu fail2ban-regex înainte de activare pentru a evita false pozitive
  • Separați regulile în hard (atacuri evidente) și soft (scanări suspecte)
  • Ajustați ignoreregex pentru a exclude cereri legitime
  • Monitorizați logurile Fail2Ban în primele zile pentru a verifica funcționarea corectă

Gestionarea și monitorizarea Fail2Ban

După configurare, trebuie să monitorizați periodic eficacitatea regulilor și să gestionați IP-urile blocate.

# Verificare stare generală
sudo fail2ban-client status

# Verificare stare jail specific
sudo fail2ban-client status sshd
sudo fail2ban-client status wordpress-hard

# Deblocare manuală a unui IP (dacă vă blocați accidental)
sudo fail2ban-client set sshd unbanip 192.168.1.100

# Blocare manuală a unui IP
sudo fail2ban-client set sshd banip 185.220.101.55

# Verificare log Fail2Ban
sudo tail -50 /var/log/fail2ban.log

# Testare filtru contra unui fișier de log
sudo fail2ban-regex /var/log/apache2/access.log /etc/fail2ban/filter.d/wordpress-hard.conf
  • Verificați zilnic numărul de IP-uri blocate per jail pentru a evalua nivelul atacurilor
  • Folosiți fail2ban-regex pentru a testa filtrele noi înainte de activare
  • Salvați un IP de urgență în ignoreip în caz de blocare accidentală
  • Creați un script care trimite rapoarte zilnice prin email cu statisticile Fail2Ban

Ban progresiv și liste permanente

Atacatorii persistenți revin cu adrese IP diferite sau la intervale regulate. Implementarea unui sistem de ban progresiv crește automat durata de blocare la fiecare recidivă.

# Configurare recidive (ban progresiv) în jail.local
[recidive]
enabled = true
filter = recidive
logpath = /var/log/fail2ban.log
bantime = 604800
findtime = 86400
maxretry = 3
action = %(action_mwl)s
  • Jail-ul recidive monitorizează logul Fail2Ban și blochează IP-urile care sunt deblocate și blochează din nou
  • După 3 blocări într-o zi, IP-ul este blocat pentru o săptămână
  • Exportați IP-urile frecvent blocate într-o listă permanentă în firewall
  • Raportați IP-urile atacatorilor la servicii de abuse (AbuseIPDB) pentru protecția comunității

Fail2Ban este un instrument indispensabil pentru securitatea serverelor Linux care găzduiesc WordPress. Pentru strategii avansate de protecție, consultați secțiunea de securitate cibernetică sau blogul nostru. Echipa WPSecurity oferă servicii speciale de configurare Fail2Ban, contactați-ne pentru detalii.

Despre autor

Dorel Tănase este specialist în optimizarea site-urilor pentru motoarele de căutare. Lucrează în online din 1997 și în SEO din 2007, iar activitatea se desfășoară prin GO SEO MARKETING S.R.L. din Alba Iulia. Se ocupă de audit tehnic, arhitectura site-urilor, conținut și construirea legăturilor.

Sus