In breve, in questo tutorial troverete le linee di comando attraverso le quali potrete installare e configurare Fail2Ban per WordPremere. Protegge l'autenticazione WordPress e query brute force di xmlrpc.php.
Blog e siti web sviluppati sulla piattaforma WordPress sono spesso bersaglio di attacchi informatici. La maggior parte degli attacchi sono di tipo brute force e prendono di mira la sessione di autenticazione oppure sfruttano XML-RPC (Remote Procedure Call using XML). Fortunatamente, fail2ban è una soluzione di sicurezza molto utile per queste situazioni. Se vuoi proteggere un sito web WordPress con fail2ban, seguire i passaggi di configurazione descritti in questo tutorial.
Per prima cosa, assicurati di avere accesso al server web tramite connessione SSH e che l'applicazione fail2ban sia installata.
Configurazione Fail2Ban per WordPress su Debian
1. Innanzitutto, devi assicurarti che l'applicazione fail2ban sia installata e in esecuzione sul server. Esegui la riga di comando qui sotto:
systemctl status fail2ban
Nell'output dovresti vedere qualcosa di simile a questo:
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; preset: enabled)
Active: active (running) since Tue 2025-03-11 00:39:32 EET; 6 days ago
Docs: man:fail2ban(1)
Main PID: 917 (fail2ban-server)
Tasks: 17 (limit: 76843)
Memory: 33.2M
CPU: 17min 1.752s
CGroup: /system.slice/fail2ban.service
└─917 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
Se fail2ban non è installato sul tuo server, dovrai installarlo. Eseguire la riga di comando per installare fail2ban su Debian/Ubuntu:
sudo apt install fail2ban
2. Il passo successivo è creare il filtro fail2ban per WordPremere. Eseguire la riga di comando nel terminale per creare e modificare il filtro wordpress.conf
.
sudo nano /etc/fail2ban/filter.d/wordpress.conf
Nel fascicolo wordpress.conf
imposta i filtri per l'autenticazione WordPress e per il fascicolo xmlrpc.php
, come segue:
[Definition]
failregex = ^<HOST> -.*"(GET|POST).*(/wp-login.php|/xmlrpc.php).*" 200
ignoreregex =
Ciò significa che con qualsiasi metodo, GET
o POST
, se si accede ai file wp-login.php o xmlrpc.php, è possibile creare una regola per fail2ban. La condizione è che questi file esistano e siano accessibili all'aggressore. Ciò significa che quando si accede dovrebbe restituire il codice 200 (ok).
Salva il file /etc/fail2ban/filter.d/wordpress.conf
.
3. Il passo successivo è configurare la “prigione” per WordPremere. È qui che la maggior parte degli utenti si confonde, perché le regole devono essere impostate in modo diverso a seconda del sistema di gestione dell'hosting (se presente) o della configurazione del server web.
Se utilizzi HestiaCP, VestaCP o MyVesta, crea e modifica il file /etc/fail2ban/jail.local
.
nano /etc/fail2ban/jail.local
Aggiungere le righe seguenti a questo file:
[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/nginx/domains/*.log #or apache2.
maxretry = 5
findtime = 1800
bantime = 3600
action = hestia[name=WEB] #hestacp action.
Adatta i parametri sopra indicati in base alle tue esigenze. Nella configurazione da me fornita, se entro un intervallo di 1800 minuti si verificano 5 tentativi ripetuti dallo stesso IP, questo verrà bloccato per 3600 minuti utilizzando l'azione HestiaCP per il web. (hestia[name=WEB]
). Qui avrai bisogno di aiuto, a seconda del sistema che hai sul server.
È anche molto importante "logpath
". Da questi registri vengono estratti i dati sui quali verranno intraprese azioni. Assicuratevi che la posizione sia corretta.
Se non hai installato un sistema di gestione, dovrai bloccare gli IP con fail2ban per WordPress da effettuare direttamente tramite iptables
. La linea d'azione sarà la seguente:
action = iptables-multiport[name=wordpress, port="80,443", protocol=tcp]
Tra parentesi, invece di /etc/fail2ban/jail.local
puoi anche usare un file separato per la configurazione, come: /etc/fail2ban/jail.d/wordpress.conf
.
Dopo aver apportato le modifiche, applicale.
sudo systemctl restart fail2ban
4. Dopo il riavvio, controllare se fail2ban per WordPress opere:
fail2ban-client status wordpress
Status for the jail: wordpress
|- Filter
| |- Currently failed: 355
| |- Total failed: 33873
| `- File list: (log files per domain)
- Actions
|- Currently banned: 127
|- Total banned: 680
`- Banned IP list:
Una volta trovati gli IP bloccati in questo elenco, assicurati che siano bloccati anche in iptables
. Mi sono imbattuto nella situazione in cui, a causa di una configurazione errata, in fail2ban ho visto che un IP era bloccato, ma in realtà poteva ancora accedere wp-login.php
o xmlrpc.php
.
Per verificare se tutto funziona correttamente, scegli un IP bloccato dall'elenco fail2ban e cercalo in iptables.
Esegui la riga di comando:
iptables -L -v -n --line-numbers
Se l'IP che risulta bloccato da fail2ban è presente anche in questo elenco, significa che hai configurato correttamente fail2ban per esso. WordStampa.
Allo stesso tempo, si consiglia vivamente di controllare il registro con le azioni fail2ban:
sudo tail -f /var/log/fail2ban.log
Detto questo, se avete domande o avete bisogno di aiuto, posso aiutarvi nei commenti.