Cómo proteger el archivo xmlrpc.php de WordPress…
Aprovechando el impacto que están teniendo los ataques contra el en WordPress y su archivo xmlrpc.php, me gustaría aclarar ciertos conceptos relacionados con este archivo que forma parte de Wordpress y de paso explicar paso a paso como protegerse contra posibles ataques de fuerza bruta y denegación de servicio contra este archivo en una instalación de Wordpress.
Muchas instalaciones de WordPress están siendo víctimas de ataques variados de diferentes formas: por un lado están las infecciones de malware o inyecciones de código y por el otro lado están los ataques externos contra algunas partes de WordPress como el archivo xmlrpc.php o el wp-login.php.
En este artículo vamos a ir por partes, vamos a ir explicando ciertos aspectos básicos e interesantes sobre el tema, ya que muchos hablan en sus blogs sobre los ataques al xmlrpc.php pero muy pocos saben lo que es el protocolo XMLRPC o la función que hace el archivo xmlrpc.php en WordPress.
¿Qué es el protocolo XMLRPC?…
El protocolo XMLRPC es un protocolo que utiliza XML para estructurar datos y el protocolo HTTP para la transmisión de esos datos estructurados en XML. Fue desarrollado en 1998 por la empresa UserLand Software en colaboración con Microsoft, finalmente Microsoft considero que el protocolo XMLRPC era muy simple y lo convirtió en lo que ahora mismo se llama SOAP.
En Wordpress, el protocolo XMLRPC actual como interfaz que actúa como API para aplicaciones externas y que nos permite interactuar con una instalación de Wordpress utilizando aplicaciones o servicios externos. Al funcionar como una interfaz externa es casi como una “puerta de entrada” por lo que esta puerta puede ser atacada fácilmente desde el exterior causando un alto consumo de recursos al ejecutarse una y otra vez el proceso de autentificación.
Wordpress y el archivo xmlrpc.php…
Cómo hemos dicho antes, WordPress gestiona el protocolo XMLRPC está gestionado por un simple archivo que lleva su nombre «xmlrpc.php», el cuál podrás encontrar en la raíz de la propia instalación de Wordpress:
Para comunicarse con una instalación de Wordpress utilizando dicho protocolo debemos enviar peticiones HTTP mediante POST al archivo xmlrpc.php. Si todo ha ido bien normalmente la respuesta obtenida es HTTP/1.1 200 OK.
Anteriormente y hasta la versión 3.5 de WordPress, el protocolo venía desactivado por defecto, pero a partir de dicha versión viene por defecto activado y ahí radica el problema por el cuál todas las instalaciones de WordPress pueden ser vulnerables a los ataques DDOS, es decir, a los ataques de denegacion de servicio y fuerza bruta contra dicho protocolo.
Vamos a poner varios ejemplos de funciones REALES que hace el protocolo XMLRPC en Wordpress:
- El protocolo XMLRPC permite que programas de escritorio como Microsoft Word, Textmate o Mozilla Thunderbird se comuniquen con nuestra instalación de Wordpress.
- El protocolo XMLRPC permite la comunicación mediante pingbacks y trackbacks con otros blogs u otras instalaciones de Wordpress.
- El protocolo XMLRPC es el que permite que funcionen ciertas funciones del plugin Jetpack para Wordpress que tiene comunicación directa con los servidores de Automattic.
Es posible que se me quede alguna cosa más en el tintero que se puede hacer con el XMLRPC.PHP, pero en principio las nombradas anteriormente son las principales.
¿Está xmlrpc.php funcionando en tu sitio de WordPress?…
Lo primero que tienes que hacer es identificar si xmlrpc.php está funcionando en tu sitio de WordPress.
No se trata de un simple caso de comprobar si el archivo está ahí: es parte de cada instalación de WordPress y estará presente incluso si XML-RPC está desactivado.
Para comprobar si xmlrpc.php está habilitado en tu sitio, utiliza la XML-RPC Validator Web App. Esto comprobará tu sitio y te dirá si xmlrpc.php está habilitado.
¿Por qué deberías desactivar xmlrpc.php?…
La razón principal por la que debes desactivar xmlrpc.php en tu sitio de WordPress es porque introduce vulnerabilidades de seguridad y puede ser el objetivo de ataques.
Ahora que XML-RPC ya no es necesario para comunicarse fuera de WordPress, no hay razón para mantenerlo activo. Por eso es prudente hacer tu sitio más seguro desactivándolo.
Si XML-RPC está habilitado en tu sitio, un hacker podría potencialmente montar un ataque DDoS en tu sitio explotando xmlrpc.php para enviar un gran número de pingbacks a tu sitio en poco tiempo. Esto podría sobrecargar tu servidor y poner tu sitio fuera de acción.
Protección contra ataques al XMLRPC (Usando Plugin)…
Existen muchos métodos para proteger el archivo y protocolo XMLRPC, pero el más indicado para los menos experimentados y aquellos que suelen ir modificando o cambiando de tema, es el uso de cualquier plugin indicado para ello. La técnica utilizada por el plugin cambia, de hecho, es bastante curiosa porque el mismo RPC Attack es un plugin que añade unas líneas al .htaccess del sitio web que simplemente bloquean todo el tráfico entrante al archivo XMLRPC.PHP excepto el tráfico que entra desde rangos de direcciones IP pertenecientes a los servidores de Automattic, es decir, que de esta forma funciona Jetpack.
Sin duda, un método simple, pero bastante curioso, ya que nos permite seguir utilizando el plugin Jetpack for Wordpress sin ningún problema.
Puedes encontrar más información acerca de este plugin para Wordpress en la siguiente dirección URL: