Cuprins
1. De ce scriem despre protecție fail2ban cPanel acum
2. Greșeala fatală: protecția „fantomă”
3. Ce face, concret, acest instalator de protecție fail2ban cPanel
4. Cele 10 linii de apărare (jail-urile Fail2ban)
5. Instalarea, pas cu pas
6. Cum verifici că protecția chiar funcționează
7. Probleme comune și rezolvări rapide
8. Vă ajutăm gratuit — pro bono, fără condiții
9. Surse
Protecție fail2ban cPanel — despre asta e vorba în acest ghid, și îl scriem acum, în plin val de atacuri cibernetice care au lovit ANCPI, MIPE și platforma Ghișeul.ro. Nu e un articol teoretic. E instrumentul exact pe care l-am construit, testat și rafinat pe un server real, lovit de 900.000 de cereri malițioase, din peste 900 de adrese IP, în 8 valuri succesive de atac — și care nu a cedat niciodată.
Îl publicăm gratuit, cu explicații complete, pentru orice administrator de server cPanel care vrea o soluție de protecție fail2ban cPanel funcțională, nu doar „pe hârtie”.
1. De ce scriem despre protecție fail2ban cPanel acum
În ultimele săptămâni, România a trecut printr-un val de atacuri cibernetice asupra infrastructurii digitale a statului — ANCPI, platforma Ghișeul.ro și Ministerul Investițiilor și Proiectelor Europene au fost toate vizate. Dincolo de instituțiile mari, aceeași expunere există și la scară mică: mii de servere românești, găzduind site-uri de firme, instituții locale sau proiecte personale, rulează cu o protecție fail2ban cPanel incompletă sau, mai grav, complet inertă fără ca administratorul lor să știe.
Exact această problemă — protecția care există „pe hârtie”, dar nu blochează nimic în realitate — a stat la baza proiectului pe care îl prezentăm în acest ghid.
2. Greșeala fatală: protecția „fantomă”
Cea mai importantă lecție din acest proiect de protecție fail2ban cPanel nu ține de fail2ban în sine, ci de un detaliu tehnic pe care aproape toată lumea îl ratează: un ipset (o listă de IP-uri blocate) populat cu zeci de mii de intrări, dar fără o regulă iptables DROP activă care să-l folosească efectiv, nu blochează absolut niciun pachet.
Într-un audit realizat pe o flotă de patru servere, în iunie 2026, trei din patru aveau exact această problemă: liste de blocare cu peste 20.000 de intrări, aparent funcționale, dar complet inerte după fiecare repornire a serverului. Fail2ban recrea regulile proprii de „jail”, dar regula DROP care conecta lista de blocare la traficul real lipsea sau se pierdea la reboot. Practic, administratorii credeau că sunt protejați, în timp ce fiecare IP „blocat” trecea liber mai departe.
Acest instalator de protecție fail2ban cPanel rezolvă exact această problemă, permanent, printr-un serviciu dedicat care garantează, la fiecare pornire a serverului, atât conținutul listei de blocare, cât și regula DROP care o pune efectiv în aplicare.
3. Ce face, concret, acest instalator de protecție fail2ban cPanel
Instrumentul este disponibil gratuit, cu cod sursă deschis, sub licență MIT, la adresa: github.com/dffkt432hz/fail2ban-cpanel-installer.
Instalatorul configurează, într-o singură rulare, un pachet complet de apărare pentru servere cPanel pe AlmaLinux, Rocky Linux, RHEL, Ubuntu sau Debian:
- Listă de blocare ipset cu capacitate de 500.000 de intrări, cu regula DROP inserată explicit ca prima regulă din lanțul de filtrare al serverului.
- Serviciul „ipset-restore-critical” — componenta cea mai importantă, care garantează, la fiecare repornire, că lista de blocare și regula DROP rămân active.
- 10 linii de apărare Fail2ban (jail-uri), toate folosind blocare bazată pe ipset, mult mai eficientă decât configurațiile clasice.
- Firehol Level 1 — o listă de peste 4.500 de rețele cunoscute ca malițioase, blocate direct la nivel de kernel, reîmprospătată zilnic automat.
- Sincronizare automată cu AbuseIPDB — 10.000 de adrese IP confirmate ca abuzive, cu grad de încredere de peste 90%, preluate zilnic și distribuite către toate serverele din flotă.
- Blocarea scanărilor la nivel de Apache — cererile către shell-uri malițioase sau căi de scanare cunoscute primesc răspuns 403 înainte ca PHP să fie măcar pornit.
- Întărirea WP-Cron — înlocuiește execuția per-cerere a cron-ului WordPress cu execuție controlată la nivel de server.
- Blocare IPv6 — un singur set de reguli acoperă întregul interval Azure IPv6, sursă frecventă de trafic malițios.
4. Cele 10 linii de apărare (jail-urile Fail2ban)
Fiecare „jail” Fail2ban din acest pachet de protecție fail2ban cPanel are un scop precis:
| Jail | Ce blochează | Prag de declanșare | Durata blocării |
|---|---|---|---|
| sshd | Atacuri de forță brută pe SSH | 3 încercări | 7 zile |
| apache-webshell | Încărcări de shell-uri malițioase | 2 încercări | 24 ore |
| apache-php-scanner | Scanare de vulnerabilități în plugin-uri/teme | 1 încercare | 24 ore |
| apache-credentials | Furt de fișiere .env, wp-config, chei de acces | 2 încercări | 24 ore |
| apache-enum | Enumerare phpMyAdmin, xmlrpc.php, Adminer | 5 încercări | 24 ore |
| apache-config-scan | Recoltare fișiere de configurare JSON | 5 încercări | 24 ore |
| apache-wplogin | Forță brută pe wp-login.php | 3 încercări | 24 ore |
| apache-wpcron-abuse | Flood de cereri wp-cron.php | 20 încercări | 7 zile |
| apache-wpscan | Instrumentul WPScan, enumerare utilizatori | 2 încercări | 24 ore |
| apache-phpunit | Exploatare PHPUnit (CVE-2017-9841) și ThinkPHP RCE | 2 încercări | 7 zile |
5. Instalarea, pas cu pas
Instalarea protecției fail2ban cPanel se face printr-o singură comandă, rulată ca root pe server:
wget https://raw.githubusercontent.com/dffkt432hz/fail2ban-cpanel-installer/main/security_installer.py
urmată de:
python3 security_installer.py
Instalatorul parcurge automat 9 pași: configurarea ipset cu regula DROP ca primă regulă, instalarea Fail2ban, scrierea celor 10 filtre personalizate, configurarea jail-urilor, instalarea Firehol Level 1, activarea serviciului critic de restaurare la reboot, configurarea blocării la nivel Apache, întărirea WP-Cron, și verificarea finală.
Pentru cei care vor să vadă mai întâi ce se schimbă, fără să aplice nimic, instalatorul oferă și un mod de previzualizare:
python3 security_installer.py –dry-run
iar pentru rulare pas cu pas, un singur pas poate fi executat separat, de exemplu:
python3 security_installer.py –step 4
Cerințe minime: AlmaLinux 8+, Rocky Linux 8+, RHEL 8+, Ubuntu 22.04+ sau Debian 12+, cPanel/WHM 11.130 sau mai nou, Apache 2.4, Python 3.6+ și acces root.
6. Cum verifici că protecția chiar funcționează
Având în vedere exact problema descrisă în secțiunea 2 — protecția care există doar „pe hârtie” — verificarea reală, nu doar instalarea, este pasul esențial al acestui ghid de protecție fail2ban cPanel.
Pentru a confirma că toate cele 10 jail-uri sunt active:
fail2ban-client status | grep „Jail list”
Pentru a confirma că regula de blocare e poziționată corect și blochează efectiv trafic (coloana „pkts” trebuie să fie mai mare decât zero):
iptables -L INPUT -n -v –line-numbers | grep „match-set blocklist”
Pentru a vedea câte adrese IP sunt în acest moment în lista de blocare:
ipset list blocklist | grep „Number of entries”
Pentru a confirma că serviciul critic de restaurare la reboot este activ:
systemctl is-active ipset-restore-critical.service
7. Probleme comune și rezolvări rapide
Regula de blocare dispare după repornirea serverului. Serviciul „ipset-restore-critical” e construit exact pentru acest scenariu. Verifică starea lui cu comanda de mai sus; dacă nu rulează, verifică dacă serviciul iptables e activat pe server — serviciul de restaurare e conceput să funcționeze chiar și atunci când serviciul iptables e dezactivat.
Lista de blocare are 20.000+ intrări, dar traficul trece oricum. Este exact fenomenul de „protecție fantomă” descris la secțiunea 2. Verifică dacă regula DROP există efectiv în lanțul de filtrare; dacă lipsește, repornirea serviciului de restaurare o repune la loc.
Un jail arată IP-uri banate, dar acestea ajung tot la Apache. Configurațiile vechi de fail2ban foloseau blocare „multiport” fără integrare ipset. Acest instalator folosește un tip de acțiune care creează câte o listă de blocare dedicată pentru fiecare jail — o simplă verificare a regulilor active confirmă dacă integrarea e corectă.
Sincronizarea cu AbuseIPDB publică o listă goală. Scriptul de publicare are o protecție internă care oprește publicarea dacă numărul de intrări e neobișnuit de mic — de exemplu imediat după un reboot, înainte ca lista să fie complet restaurată. Rularea manuală a scriptului, după ce lista e restaurată complet, rezolvă situația.
8. Vă ajutăm gratuit — pro bono, fără condiții
Acest instrument de protecție fail2ban cPanel a fost construit, testat și rafinat pe propria noastră infrastructură, în timpul unui atac real, susținut, de peste 900.000 de cereri malițioase din 8 valuri consecutive. Îl publicăm gratuit, cu cod sursă deschis, tocmai pentru că am trecut prin exact tipul de situație prin care trec acum multe instituții și companii românești afectate de valul recent de atacuri cibernetice.



