Quan tens un servidor web que no utilitza WordPress, pot semblar que els atacs no són un problema. Però la realitat és diferent: cada dia milers de bots escanegen Internet buscant vulnerabilitats. Si tens un servidor Apache o Nginx exposat, Fail2Ban pot ser el teu millor aliat. En aquesta guia t’explico com configurar-lo pas a pas, especialment per a webs que no contenen WordPress però reben intents constants d’accés a wp-login.php o xmlrpc.php.
Introducció a Fail2Ban
Què és Fail2Ban i per a què serveix?
Fail2Ban és una eina que vigila els logs del teu servidor (com auth.log o access.log) i bloqueja automàticament aquelles IPs que mostren comportaments sospitosos: intents d’accés repetits, peticions a fitxers inexistents o patrons típics d’atacs automatitzats.
En poques paraules: és un guardià digital que observa qui toca la teva porta i tanca el pany als qui volen fer mal.
Per què és essencial encara que no tinguis WordPress
Encara que no facis servir WordPress, molts bots intentaran trobar-lo igualment.
Aquestes peticions a /wp-login.php o /xmlrpc.php no només saturen els teus logs, sinó que poden augmentar el consum de CPU i banda.
Amb Fail2Ban pots bloquejar-los automàticament abans que facin més nosa.
Com funciona Fail2Ban
El principi bàsic de detecció i bloqueig
Fail2Ban utilitza “filtres” per identificar patrons en els fitxers de registre (logs).
Quan una IP compleix les condicions d’un filtre (per exemple, 3 intents fallits de login), entra en una “jail”. Aquesta jail aplica una acció, normalment un bloqueig amb ufw o iptables.
Què és una jail i com actua
Una jail és com una presó digital: si una IP fa alguna cosa prohibida, queda confinada. Pots tenir diverses jails, cadascuna amb la seva missió: una per SSH, una altra per Apache, una per FTP…
Relació entre filtres, jails i accions
- Filtre: defineix què és sospitós.
- Jail: aplica el filtre a un log concret.
- Acció: què fer quan algú cau al filtre (normalment bloquejar).
Instal·lació i preparació inicial
Com instal·lar Fail2Ban a Debian/Ubuntu
Aquesta comanda instal·la Fail2Ban amb totes les seves dependències:
sudo apt update && sudo apt install fail2ban -y
Verificació del servei i fitxers principals
Comprova que el servei estigui actiu:
sudo systemctl status fail2ban
Els fitxers més importants:
/etc/fail2ban/jail.conf→ configuració base (no modificar)./etc/fail2ban/jail.local→ la teva configuració personal./etc/fail2ban/filter.d/→ filtres personalitzats./var/log/fail2ban.log→ registre d’activitat.
Configuració bàsica del fitxer jail.local
Crear el fitxer i definir paràmetres generals
Crea el fitxer jail.local:
sudo nano /etc/fail2ban/jail.local
Afegeix:
[DEFAULT]
ignoreip = 127.0.0.1/8 [puedes poner las ip que ignore separadas por espacio]
bantime = 28800
findtime = 300
maxretry = 3
backend = systemd
Això defineix:
- La teva IP com a segura (mai serà bloquejada).
- Temps de baneo: 8 hores.
- 3 intents fallits → bloqueig.
Configuració de la jail per SSH
Afegeix aquesta secció dins jail.local:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
Això protegeix l’accés remot al servidor.
Protegir Apache de bots i escanejos automàtics
Crear la jail “fake-wordpress”
Aquesta jail detecta bots que busquen WordPress encara que no l’utilitzis.
Fitxer /etc/fail2ban/filter.d/fake-wordpress.conf
sudo tee /etc/fail2ban/filter.d/fake-wordpress.conf > /dev/null <<'EOF'
[Definition]
failregex = ^<HOST> -.*"(GET|POST)\s+/(wp-login\.php|xmlrpc\.php|wp-admin|wp-content|wp-includes|wp-json|wp-cron\.php|wlwmanifest\.xml|wp-.*|xmlrpc).*"
^<HOST> -.*"(GET|POST)\s+/(admin\.php|config\.php|postnews\.php|about\.php|num\.php)\b.*"
ignoreregex =
EOF
Fitxer /etc/fail2ban/jail.d/fake-wordpress.local
sudo tee /etc/fail2ban/jail.d/fake-wordpress.local > /dev/null <<'EOF'
[fake-wordpress]
enabled = true filter = fake-wordpress logpath = /var/log/apache2/*_access.log port = http,https banaction = ufw maxretry = 1 findtime = 86400 bantime = 604800 EOF
Això bloqueja qualsevol IP que accedeixi a rutes típiques de WordPress o scripts sospitosos.
El baneo dura 7 dies.
Afegir la protecció per reincidents amb “recidive”
Què fa exactament aquesta jail
La jail recidive analitza el log principal de Fail2Ban (/var/log/fail2ban.log) i busca IPs que hagin estat bloquejades diverses vegades per qualsevol altra jail.
Si una IP repeteix atacs, s’aplica un baneo llarg (1 mes o més).
Configuració recomanada
Fitxer /etc/fail2ban/jail.d/recidive.local
sudo tee /etc/fail2ban/jail.d/recidive.local > /dev/null <<'EOF'
[recidive]
enabled = true filter = recidive logpath = /var/log/fail2ban.log banaction = ufw maxretry = 5 findtime = 86400 bantime = 2592000 EOF
Això vol dir:
- Si una IP ha estat bloquejada 5 cops en 24h, serà baneada durant 30 dies.
Reiniciar i comprovar l’estat de Fail2Ban
Com veure les jails actives i IPs bloquejades
sudo systemctl restart fail2ban
sudo fail2ban-client status
Per veure les IPs bloquejades per cada jail:
sudo fail2ban-client status fake-wordpress
sudo fail2ban-client status recidive
sudo fail2ban-client status sshd
Verificar si la protecció funciona correctament
Simula una petició maliciosa (des d’una IP externa):
curl -I http://teuservidor/wp-login.php
En pocs segons, aquella IP quedarà bloquejada.
Bones pràctiques i manteniment
Actualitzacions, revisions i alertes
- Revisa els logs:
sudo tail -n 100 /var/log/fail2ban.log - Actualitza el sistema periòdicament:
sudo apt update && sudo apt upgrade -y - Configura alertes per correu (opcional):
action = %(action_mwl)s
Errors habituals i com solucionar-los
| Problema | Causa probable | Solució |
|---|---|---|
| Jail no es carrega | Error al nom o format del fitxer | Revisa amb sudo fail2ban-client -d |
| No bloqueja IPs | Ruta del log incorrecta | Confirma logpath |
| El servei no arrenca | Error de sintaxi INI | Verifica espais i tabulacions |
Conclusions
Si el teu servidor no utilitza WordPress, Fail2Ban és una manera senzilla i potent de mantenir-lo segur davant bots i escanejos.
Amb la combinació de tres fitxers clau —jail.local, fake-wordpress.local i recidive.local— tens una protecció multicapa:
- Primera línia: bloqueig immediat (SSH i Apache).
- Segona línia: càstig als reincidents.
- Tercera línia: tranquil·litat per tu 😎.
Amb això, ja tens un sistema automàtic de defensa sense haver d’estar vigilant els logs tot el dia.
Preguntes freqüents (FAQ)
1️⃣ Fail2Ban redueix el rendiment del servidor?
No, és molt lleuger. Només llegeix els logs i executa ordres de firewall quan detecta activitat sospitosa.
2️⃣ Puc afegir més rutes personalitzades al filtre?
Sí! Pots editar el fitxer fake-wordpress.conf i afegir noves línies failregex amb altres camins (com /admin.php o /config.php).
3️⃣ Què passa si un client legítim queda bloquejat?
Pots desbanear-lo amb:
sudo fail2ban-client set fake-wordpress unbanip <IP>
4️⃣ Fail2Ban bloqueja automàticament per país?
No directament. Per això cal combinar-lo amb eines com ufw o geoip si vols bloquejar països sencers.
5️⃣ Cal reiniciar Fail2Ban després de cada canvi?
Sí, sempre que modifiquis una configuració. Fes-ho amb:
sudo systemctl restart fail2ban
Amb aquesta guia completa, el teu servidor sense WordPress quedarà blindat davant bots, escàners i atacs automatitzats — i tu podràs dormir més tranquil 😄.