Acasă › Blog › Cum securizați un server Linux folosind fail2ban
Cum securizați un server Linux folosind fail2ban
14 august 2025 · Dorel Tănase, specialist în servicii SEO din 2007 · Linux
Cum securizați un server Linux folosind fail2ban este prima întrebare după ce deschideți jurnalul unui server nou și vedeți sute de încercări de autentificare pe SSH în prima oră. Niciuna nu reușește, dar fiecare consumă procesor și fiecare este o loterie pe care atacatorul o joacă gratuit. fail2ban citește jurnalele, numără încercările eșuate pe adresă și, la depășirea unui prag, blochează adresa în firewall pentru o perioadă.
Instalarea durează un minut. Configurarea corectă, cea care protejează fără să vă blocheze pe dvs., este subiectul acestui ghid.
Cum securizați un server Linux folosind fail2ban
fail2ban are trei componente: filtre, expresii regulate care recunosc o încercare eșuată într-un jurnal; jail-uri, reguli care leagă un filtru de un jurnal, de un prag și de o acțiune; acțiuni, comenzile care blochează și deblochează adresa, de obicei prin nftables, iptables sau firewalld.
Vine cu zeci de filtre gata scrise pentru serviciile obișnuite. Munca dvs. este să activați jail-urile potrivite și să calibrați pragurile.
Ce protejează și ce nu
- Protejează serviciile care scriu încercările eșuate într-un jurnal: SSH, e-mail, FTP, autentificarea WordPress dacă serverul web o jurnalizează.
- Nu protejează împotriva unei parole slabe ghicite din prima încercare; parola bună și cheile SSH rămân obligatorii.
- Nu oprește un atac distribuit, în care fiecare adresă încearcă de două ori. Pragurile pe adresă nu se ating.
- Nu înlocuiește firewall-ul; îl folosește. Firewall-ul de bază, cu porturile închise, se configurează separat, cum arată ghidul despre firewall-ul cu UFW și iptables.
Instalarea
Ubuntu și Debian:
sudo apt update
sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban
AlmaLinux, Rocky și alte derivate Enterprise Linux, unde pachetul vine din depozitul EPEL:
sudo dnf install epel-release -y
sudo dnf install fail2ban -y
sudo systemctl enable --now fail2ban
Verificați că serviciul rulează și că vede firewall-ul:
sudo systemctl status fail2ban
sudo fail2ban-client status
Pe un server cu cPanel și Imunify360 sau CSF, fail2ban de obicei nu este necesar: acele produse fac același lucru și se pot încurca reciproc. Ghidul despre securitatea AlmaLinux 9 descrie alegerea dintre ele.
Configurarea: jail.local, nu jail.conf
/etc/fail2ban/jail.conf este fișierul pachetului și se suprascrie la actualizări. Setările dvs. merg în /etc/fail2ban/jail.local, care are prioritate. Nu copiați tot jail.conf în jail.local; scrieți doar ce schimbați.
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
bantime.increment = true
bantime.maxtime = 1w
ignoreip = 127.0.0.1/8 ::1 5.15.0.0/16
backend = systemd
[sshd]
enabled = true
port = 2200
mode = aggressive
Ce înseamnă fiecare linie:
bantime: cât stă blocată o adresă la prima abatere. O oră este suficientă ca să facă atacul nerentabil.findtime: fereastra în care se numără încercările. 5 încercări în 10 minute prinde atacurile automate și nu prinde omul care greșește parola de două ori.bantime.increment: fiecare blocare repetată a aceleiași adrese durează mai mult, până labantime.maxtime. Adresele recidiviste ajung blocate o săptămână.ignoreip: adresele care nu se blochează niciodată. Puneți aici rețeaua de la birou și adresa de acasă, altfel vă blocați singur după trei parole greșite.backend = systemd: citește jurnalul systemd în loc de fișiere; obligatoriu pe distribuțiile unde SSH nu mai scrie în/var/log/auth.log.portla jail-ul sshd: dacă SSH rulează pe alt port decât 22, scrieți-l aici, altfel blocarea se aplică pe portul greșit.
După orice modificare:
sudo fail2ban-client reload
sudo fail2ban-client status sshd
Jail-uri pentru serverul web
Pentru un server care găzduiește WordPress, atacurile pe wp-login.php și xmlrpc.php sunt mai numeroase decât cele pe SSH. Filtrul de mai jos, salvat ca /etc/fail2ban/filter.d/wordpress.conf, recunoaște cererile POST către pagina de autentificare în jurnalul de acces:
[Definition]
failregex = ^<HOST> .* "POST /wp-login\.php
ignoreregex =
Și jail-ul, în jail.local, cu calea către jurnalul de acces al serverului web:
[wordpress]
enabled = true
filter = wordpress
logpath = /var/log/nginx/access.log
port = http,https
maxretry = 10
findtime = 5m
bantime = 6h
Pragul de 10 este mai mare decât la SSH, fiindcă un utilizator legitim care greșește parola trimite și el POST-uri. Pentru pagina de autentificare, măsurile din interiorul WordPress rămân necesare; ghidul despre securizarea unui website WordPress le acoperă.
Jail-uri pentru e-mail și FTP
fail2ban vine cu filtre pentru Postfix, Exim, Dovecot, vsftpd și ProFTPD. Se activează cu enabled = true sub numele jail-ului, de exemplu [postfix-sasl] sau [dovecot]. Serverele de e-mail sunt ținte permanente pentru încercări de autentificare, iar un cont spart trimite spam de pe domeniul dvs. în câteva minute.
Verificarea că funcționează
sudo fail2ban-client status lista jail-urilor active
sudo fail2ban-client status sshd adresele blocate acum și totalul
sudo journalctl -u fail2ban -f blocările și deblocările, în timp real
sudo nft list set inet f2b-table addr-set-sshd sau, pe iptables: sudo iptables -L f2b-sshd -n
Testul cel mai sigur: de pe o altă conexiune, care nu este în ignoreip, încercați de șase ori o parolă greșită pe SSH. A șaptea conexiune trebuie să nu mai răspundă deloc, iar adresa să apară în status. Citirea jurnalului fail2ban și a celui SSH cu journalctl este descrisă în ghidul despre utilizarea journalctl în analiza logurilor.
Deblocarea unei adrese
sudo fail2ban-client set sshd unbanip 203.0.113.25
sudo fail2ban-client unban --all
Prima deblochează o adresă dintr-un jail; a doua golește toate blocările, utilă când ați greșit configurația și ați blocat clienți.
Dacă v-ați blocat singur
Se întâmplă tuturor o dată. Semnul: SSH nu mai răspunde de la adresa dvs., dar serverul este vizibil din altă parte.
- Conectați-vă din altă rețea, de pe telefon prin date mobile, sau prin consola furnizorului de găzduire, care nu trece prin firewall.
- Deblocați adresa cu
fail2ban-client set sshd unbanip. - Adăugați adresa sau rețeaua în
ignoreipși reîncărcați. - Dacă adresa dvs. de acasă se schimbă des, adăugați întreaga rețea a furnizorului sau configurați accesul prin chei SSH, care nu produc încercări eșuate.
Blocarea atacurilor pe SSH are și alte straturi, în afara fail2ban: port schimbat, autentificare doar cu chei, limitarea la anumite adrese. Ghidul despre blocarea atacurilor brute force pe SSH le pune împreună.
Greșeli frecvente
- Jail-ul sshd activ, dar pe portul 22, când SSH rulează pe alt port: adresele sunt blocate pe un port pe care nu ajunge nimeni.
backendlăsat pe auto pe o distribuție fără/var/log/auth.log: fail2ban pornește, dar nu vede nicio încercare.- Praguri prea mici pe serverul web: un formular trimis de trei ori de un client blochează clientul.
- Adresele proxy-ului, Cloudflare sau un balansor, nepuse în
ignoreip: fail2ban blochează proxy-ul și site-ul dispare pentru toată lumea. Pe un server din spatele Cloudflare, jurnalul de acces trebuie să conțină adresa reală a vizitatorului, nu a proxy-ului, altfel filtrele blochează ce nu trebuie. - fail2ban instalat lângă CSF sau Imunify, fără să se știe care blochează ce. Alegeți unul.
Ce vedeți după o săptămână
Pe un server obișnuit, cu SSH pe portul standard, fail2ban blochează între 100 și 500 de adrese pe zi în prima săptămână. Cu portul mutat, numărul scade la câteva zeci. Cu autentificare doar prin chei, încercările continuă, dar niciuna nu are cum să reușească, iar fail2ban devine un mod de a ține jurnalul curat și procesorul liber.
Verificați săptămânal fail2ban-client status pentru fiecare jail și treceți cifrele în jurnalul de administrare. O creștere bruscă înseamnă un val nou de atac sau o adresă legitimă blocată repetat, iar ambele merită o privire. Pentru utilizatorii cu drepturi limitate, care au nevoie doar să citească aceste rapoarte, aveți ghidul despre crearea unui utilizator cu acces limitat.
Acțiuni: ce se întâmplă la blocare
Implicit, fail2ban blochează adresa pe portul serviciului din jail. Pentru o adresă care atacă SSH, asta înseamnă că poate încerca în continuare e-mailul sau site-ul. Dacă preferați blocarea pe toate porturile, schimbați acțiunea:
[DEFAULT]
banaction = nftables-allports
# sau, pe iptables: banaction = iptables-allports
# sau, pe firewalld: banaction = firewallcmd-rich-rules
Alegeți acțiunea potrivită firewall-ului instalat; una nepotrivită produce erori în jurnal la fiecare blocare și nu blochează nimic. journalctl -u fail2ban arată imediat dacă acțiunea a eșuat.
Notificări
fail2ban poate trimite un e-mail la fiecare blocare, cu action = %(action_mwl)s, care include și liniile de jurnal. Pe un server cu sute de blocări pe zi, e-mailurile devin spam propriu. Mai util este un raport săptămânal din fail2ban-client status, trimis printr-un cron, cu numărul de blocări pe jail.
Jail-ul recidive
Adresele care revin după expirarea blocării sunt tratate de jail-ul recidive, inclus în pachet: citește jurnalul fail2ban însuși și blochează, pentru o săptămână, adresele blocate de cel puțin cinci ori într-o zi.
[recidive]
enabled = true
bantime = 1w
findtime = 1d
maxretry = 5
Este stratul care reduce cel mai mult zgomotul pe un server expus: după prima săptămână, majoritatea adreselor persistente sunt deja blocate pe termen lung.
De reținut
fail2ban se instalează dintr-un pachet, se configurează în jail.local cu praguri realiste, cu ignoreip completat și cu portul corect, și se verifică cu fail2ban-client status. Activați jail-uri pentru fiecare serviciu expus, SSH, web, e-mail, și nu îl combinați cu alt sistem de blocare. Recomandările distribuțiilor pentru securizarea serverului sunt în documentația de securitate Ubuntu Server și în manualul de securizare Debian.
Dacă nu știți câte încercări de autentificare primește serverul dvs. sau dacă are vreo protecție, o verificare a antetelor și a serviciilor expuse face parte din auditul SEO gratuit de la GOAI, iar securizarea completă a serverului intră în serviciile de SEO tehnic.
Cum a fost realizat acest articol
- Autor
- Dorel Tănase
- Publicat
- 14 august 2025
- Ultima actualizare
- 18 septembrie 2026
- Surse
Lucrăm după principiile noastre de publicare, politica pentru corectare, politica pentru etică.

