Il modulo di Remote Procedure Call di WordPress è molto utile per interfacciare il proprio blog con il mondo esterno, ma è anche un punto di ingresso molto apprezzato dai vari bot a caccia di password facili e sistemi non aggiornati.
Se nei log compaiono troppe cose simili a questa:
91.121.108.229 - - [30/Nov/2015:03:14:19 +0100] "POST /xmlrpc.php HTTP/1.0" 200 560 "-" "-"
E’ ora di preoccuparsi.
Con fail2ban è possibile rendere molto più lenta e quindi inefficace la caccia automatizzata alla password.
Prima di tutto configuriamo un nuovo filtro in /etc/fail2ban/filter.d chiamato nginx-xmlrpc.conf
# # WordPress XMLRPC filter /etc/fail2ban/filter.d/nginx-xmlrpc.conf: # # [Definition] failregex = ^<HOST> .*POST .*xmlrpc\.php.* ignoreregex =
Quindi aggiungiamo il filtro alla configurazione in /etc/fail2ban/jail.conf
[nginx-xmlrpc] enabled = true action = iptables-multiport[name=NoProxy, port="http,https"] filter = nginx-xmlrpc logpath = %(nginx_access_log)s maxretry = 6 bantime = 1200 backend = auto
Dopo 6 utilizzi si ottiene un ban di 20 minuti. Attenzione però che non distingue tra richieste legittime e richieste che sono parte di un attacco di bruteforce di username e password. L’unico indicatore di una richiesta parte di un attacco è il fatto che provenga dallo stesso indirizzo IP di altre N richieste. Se si ottiene un blocco anche per attività legittime potrebbe convenire aumentare il maxretry.
La configurazione è valida per NGINX, ma si può facilmente adattare anche per Apache httpd.
Lascia un commento