Desde la version 3.5 de WordPress, tenemos un enemigo en casa. La pagina xmlrpc.php, es un punto debil en nuestro sistema de seguridad

Esta pagina existe desde siempre, pero es a partir de la version 3.5 que la funcionalidad XML-RPC viene activada por defecto.

Las posibilidades de ataque, vienen muy bien explicada en esta pagina de Acunetix.

xmlrpc.php se utiliza para publicar noticias por email, si tenemos activada esa funcionalidad, y para gestionar los pingbacks y trackbacks,  si no vas a utilizar ninguna de esas funcionalidades, lo mas sencillo es que borres el fichero, y a continuación, en el fichero functions.php que se encuentra en la carpeta de nuestro tema, deberemos añadir las lineas:

function removeHeadLinks() {  
    remove_action('wp_head', 'rsd_link');
    remove_action('wp_head', 'wlwmanifest_link');
}
add_action('init', 'removeHeadLinks');  

Otra opcion es añadir a .htacces:


    RedirectMatch 403 /xmlrpc.php

Sin embargo, si tienes acceso al servidor, puedes utilizar una técnica distinta y mucho mas efectivas, y es modificar el firewall, bloqueando las direcciones que intenten atacar.

¿Porque es mas efectiva?, porque el ataque se detiene antes, y el consumo de recursos disminuye. Con lo explicado anteriormente, tu servidor tiene que procesar la llamada, y en el primer caso, tiene que arrancar wordpress con todas sus funciones, y conexión a la BD, para terminar descubriendo un error de fichero. Si el ataque lo para el Firewall, todo se hace a nivel de S.O. antes de que tu servidor web vea nada…

Para poder hacerlo, se han de incorporar al Firewall reglas para bloquear un IP concreta, y eso lo puede hacer un viejo conocido, fail2ban.

Pensado para servidores web Linux, fail2ban es un programa que esta continuamente analizando los ficheros de log que le indiquemos, y según las reglas que le demos, cuando una regla se cumple, por ejemplo «Error de conexion mas de 5 veces», automáticamente puede modificar el Firewall para bloquear la ip agresora, de forma temporal o definitiva.

Ya os indico que para utilizarlo, deberíais tener un poco de soltura en Linux, y tener acceso a vuestro servidor, cosa que solo pasa si tenéis un servidor propio. Tambien teneis que instalar Fail2ban,y a continuacion, modificar:

En /etc/fail2ban/jail.local

[wp-xmlrpc]
enabled = true
filter = wp-xmlrpc
action = iptables-multiport[name=wp-xmlrpc, port=»80,443″, protocol=tcp]
sendmail-whois[name=wp-xmlrpc, dest=vuestraDireccion@correoElectronico.es]
logpath = /home/*/logs/access_log
maxretry = 10
findtime = 60
bantime = 3600

 

Y en /etc/fail2ban/filter.d crear unfichero nuevo: wp-xmlrpc.comf con

# Fail2Ban configuration file

[INCLUDES]

# Read common prefixes. If any customizations available — read them from
# common.local
before = common.conf

[Definition]
_daemon = wp-xmlrpc

# Option: failregex
# Notes.: regex to match repeated xmlrpc attacks. The
# host must be matched by a group named «host». The tag «» can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P[\w\-.^_]+)
# Values: TEXT
#
failregex = \s.*\s.POST /xmlrpc.php HTTP/1.1″*.\s.*

# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =

Acordaros de reiniciar fail2ban

# /etc/init.d/fail2ban restart

y un problema mas solucionado

Wordpress Castellano: Apuntate en este grupo de Facebook para consultar cualquier duda que tengas

Recursos formacion: y dale un "Me gusta" a esta pagina para estar al dia de todos nuestros cursos gratuitos

3 comentarios sobre “WordPress – Protegiendonos de ataques por xmlrpc.php”

  1. Gracias por la información! Yo he recibido un molesto ataque como este. La web se cae cada 3-4h durante periodos de 30 minutos debido a los firewalls de los hostings. He optado la solución de bloquear el archivo y añadir las líneas que comentas en el fuctions del theme. en breve sabré si se ha solucionado.

    Gracias de nuevo!

    1. Realmente, se termina invirtiendo mas tiempo en proteger nuestro blog, que en escribir en él. (….o casi)

      Que tengas suerte, yo te animo a que utilices pluging como iThemes que tiene protecciones tambien para este tipo de ataque.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.