jueves, 28 de abril de 2016

Detener ataques brute-force XML-RPC en Wordpress

Wordpress es un entorno para el despliegue de una página web bastante flexible, lo suficiente como para, sin tener demasiados conocimientos, puedas desplegar tu propia web. Gracias a su sistema de plugins, te permite añadir funcionalidades sin tocar una sola línea de código. Para ello, Wordpress utiliza una especificación, XML-RPC, que permite a servicios externos y clientes de escritorio interactuar con Wordpress.


XML-RPC viene implementandose en Wordpress desde siempre, aunque originalmente venia deshabilitado, para que habilitaras los servicios en caso de considerarlo necesario, según fueras añadiendo funcionalidades. Pero a partir de la version de Wordpress 3.5 decidieron dejarlo activo por defecto.

Uno de los grandes problemas de XML-RPC es su seguridad. XML-RPC se autentica con la autenticación básica, enviando user y pass en cada solicitud. Esto hace que haya gente aburrida que se dedique a realizar ataques DDos, entre otras cosas:


En este caso, como ilustra la foto de arriba, alguien con la IP 185.130.5.209 se lo estaba pasando pipa. Solo por curiosidad, probé a ver de donde venía, y me llevó aqui:


Uso claro de un proxy... Otras veces, la localización me la da por Taiwan. ¡Como se aburre la gente!

En fin... vamos con la resolución del problema. Se puede hacer de dos maneras. La fácil, y la difícil. Empezamos con la fácil:

  • Instalamos el plugin que deshabilite el XML-RPC Pingbak
Aqui tenemos múltiples opciones. Si buscais por "remove xml-rpc", aparecerán multiples soluciones:


He probado las dos primeras de la imagen superior, y son igualmente válidas. Los plugins usualmente avisan de posibles problemas de incompatibilidad con otros plugins que utilicen el servicio, pero, la verdad, no se pega con ninguno de los otros plugins utilizados. Esta es la solucion simple, y perezosa. Ademas, puede dar un poco de guerra su activacion, si la máquina está bajo ataque. Pero nada que no resuelva retirar la conexion de red temporalmente...si no fuera porque eso implica descargar el plugin e instalarlo de forma manual. Si llegamos a este punto, que la máquina se queda frita por el consumo de cpu de apache causado por este tema, mejor utilizamos la opción 2, a continuación.

  • Nos quitamos de en medio XML-RPC por completo.
Aqui vamos a andar tocando los archivos de sistema de Wordpress, asi que cuidado con lo que tocas, y haz un backup previo.

Primero de todo, vamos a agregar un filtro que elimine por completo el XML-RPC en el wp-config.php. Justo debajo de la última linea de la declaracion ABSPATH, ponemos esto:
add_filter ( 'xmlrpc_enabled', '__return_false');
 Ahora, en el archivo .htaccess agregamos lo siguiente:
#INICIO DEL BLOQUEO XML RPC
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
#FIN DEL BLOQUEO XML RPC
Para finalizar, vamos a Ajustes -> Comentarios. En la seccion de ajustes por defecto de las entradas, deshabilitamos todas las opciones.


Con esto, eliminamos tambien la posibilidad de publicar de forma remota en Wordpress con aplicaciones de terceros, ni recibiremos notificaciones cuando otro wordpress haga menciones en nuestro sitio.

No hay comentarios:

Publicar un comentario

¡Gracias por colaborar en este blog con tus comentarios! :)