¿Qué es Xmlrpc.php en WordPress, deberías desactivarlo?

WordPress siempre ha tenido características integradas que te permiten interactuar remotamente con tu sitio. Acéptalo, hay veces en que necesitas acceder a tu sitio web y tu computadora no está cerca. Durante mucho tiempo, la solución era un archivo llamado xmlrpc.php. Pero en los últimos años, el archivo se ha convertido más en un daño que en una solución.

A continuación profundizaremos en qué es xmlrpc.php en realidad y por qué fue creado. También hacemos un repaso de los problemas de seguridad comunes que causa y cómo arreglarlos en tu propio sitio de WordPress.

¿Qué es Xmlrpc.php?

XML-RPC es una característica de WordPress que permite que los datos se transmitan, con HTTP actuando como el mecanismo de transporte y XML como el mecanismo de codificación. Dado que WordPress no es un sistema encerrado en sí mismo y ocasionalmente necesita comunicarse con otros sistemas, la intención era realizar ese trabajo.

Por ejemplo, supongamos que quisieras publicar en tu sitio desde tu dispositivo móvil ya que tu computadora no está cerca. Podrías usar la función de acceso remoto habilitada por xmlrpc.php para hacerlo.

Las funciones principales de xmlrpc.php eran permitirte conectarte a tu sitio a través de un teléfono móvil, implementar trackbacks y pingbacks desde otros sitios, y algunas funciones asociadas con el plugin Jetpack.

¿Por qué se creó Xmlrpc.php y para qué se usaba?

La implementación de XML-RPC se remonta a los primeros días de WordPress incluso antes de que se convirtiera en WordPress.

En los inicios de Internet, cuando las conexiones eran increíblemente lentas, el proceso de escritura y publicación en la web era mucho más difícil y requería más tiempo. En lugar de escribir dentro del navegador, la mayoría de la gente escribiría sin conexión, luego copiaría y pegaría su contenido en la web. Aún así, este proceso estaba lejos de ser ideal.

La solución (en ese momento) fue crear un cliente de blogs fuera de línea (offline), donde pudieras redactar tu contenido y luego conectarte a tu blog para publicarlo. Esta conexión se hizo a través de XML-RPC. Con el marco básico de XML-RPC en su lugar, las primeras aplicaciones utilizaban esta misma conexión para permitirle a las personas iniciar sesión en sus sitios de WordPress desde otros dispositivos.

XML-RPC en la actualidad

En el 2008, con la versión 2.6 de WordPress, había una opción para habilitar o deshabilitar XML-RPC. Sin embargo, con el lanzamiento de la aplicación para iPhone de WordPress, la compatibilidad con XML-RPC se habilitó por defecto, y no había ninguna opción para desactivar esta configuración. Y esto se ha mantenido así al día de hoy.

Sin embargo, la funcionalidad de este archivo ha disminuido considerablemente con el tiempo, y el tamaño general del archivo ha disminuido de 83kb a 3kb, por lo que no desempeña un papel tan importante como el que solía tener.

El futuro de XML-RPC

Con la nueva API de WordPress, podemos esperar que XML-RPC se elimine por completo. Hoy en día, esta nueva API todavía está en la fase de prueba y solo se puede habilitar mediante el uso de un plugin.

Sin embargo, puedes esperar que la API se codifique directamente en el núcleo de WordPress en el futuro, lo que eliminaría por completo la necesidad de tener el archivo xmlrpc.php.

La nueva API no es perfecta, pero proporciona una solución más robusta y segura al problema que xmlrpc.php intentaba solucionar.

Por qué deberías deshabilitar Xmlrpc.php

Los mayores problemas con XML-RPC están relacionados con la seguridad. Los problemas no tienen que ver directamente con XML-RPC, sino con cómo el archivo se puede usar para permitir un ataque de fuerza bruta a tu sitio.

Claro, puedes protegerte con contraseñas increíblemente fuertes y con plugins de seguridad de WordPress. Pero, la mejor manera de protección es simplemente deshabilitarlo.

Hay dos debilidades principales en XML-RPC que se han explotado en el pasado.

La primera es usar ataques de fuerza bruta para obtener acceso a tu sitio. Un atacante intentará acceder a tu sitio usando xmlrpc.php mediante varias combinaciones de nombre de usuario y contraseña. Pueden incluso usar un solo comando para probar cientos de contraseñas diferentes. Esto les permite eludir las herramientas de seguridad que normalmente detectan y bloquean los ataques de fuerza bruta.

La segunda era desactivar sitios a través de un ataque DDoS. Los hackers utilizaban la función pingback en WordPress para enviar pingbacks a miles de sitios de forma instantánea. Esta característica en xmlrpc.php brinda a los hackers un suministro casi interminable de direcciones IP para distribuir un ataque DDoS.

Para verificar si XML-RPC está activo en tu sitio, puedes ejecutarlo a través de una herramienta llamada XML-RPC Validator. Ejecuta tu sitio a través de la herramienta, y si recibes un mensaje de error, significa que no tienes habilitado XML-RPC.

Si recibes un mensaje de éxito, puedes detener xmlrpc.php con uno de los dos métodos siguientes.

Método 1: Deshabilitar Xmlrpc.php con plugins

Deshabilitar XML-RPC en tu sitio de WordPress no podría ser más fácil.

Simplemente ve a la sección Plugins > Añadir nuevo desde tu escritorio de WordPress. Busca Disable XML-RPC e instala el plugin que se ve como el de la imagen siguiente:

instalar el plugin Disable xmlrpc

Activa el plugin y listo. Este plugin insertará automáticamente el código necesario para desactivar XML-RPC.

Sin embargo, ten en cuenta que algunos plugins existentes pueden utilizar partes de XML-RPC, por lo que deshabilitarlo por completo podría causar un conflicto de plugins o que ciertos elementos de tu sitio dejen de funcionar.

Si quieres desactivar determinados elementos de XML-RPC, pero aún así permitir que funcionen ciertos plugins y características, utiliza los siguientes plugins:

  • Stop XML-RPC Attack. Este plugin detendrá todos los ataques XML-RPC, pero continuará permitiendo que los plugins como Jetpack y otras herramientas y plugins automáticos mantengan el acceso al archivo xmlrpc.php.
  • Control XML-RPC Publishing. Esto te permite mantener el control y el uso sobre la opción de publicación remota proporcionada por xmlrpc.php.

Método 2: Deshabilitar manualmente Xmlrpc.php

Si no quieres utilizar un plugin y prefieres hacerlo manualmente, usa este método. Detendrá todas las solicitudes entrantes de xmlrpc.php antes de pasarlas a WordPress.

Abre tu archivo .htaccess. Es posible que debas activar la función «mostrar archivos ocultos» dentro del administrador de archivos o tu cliente FTP para ubicar este archivo.

Dentro de tu archivo .htaccess, pega el siguiente código:

  1. # Block WordPress xmlrpc.php requests
  2. <Files xmlrpc.php>
  3. order deny,allow
  4. deny from all
  5. allow from 123.123.123.123
  6. </Files>

Palabras finales

En general, XML-RPC fue una solución sólida para algunos de los problemas que ocurrían debido a la publicación remota en tu sitio de WordPress. Sin embargo, con esta característica surgieron algunos vacíos de seguridad que terminaron siendo bastante dañinos para algunos propietarios de sitios de WordPress.

Para garantizar que tu sitio permanezca seguro, es una buena idea desactivar xmlrpc.php por completo. A menos que necesites algunas de las funciones para la publicación remota y el plugin Jetpack. En tal caso, deberías usar los plugins que permiten estas características, a la vez que solucionan los vacíos de seguridad.

Con el tiempo, podemos esperar que las características de XML-RPC se integren en la nueva API de WordPress, que mantendrá el acceso remoto y demás, sin sacrificar la seguridad. Pero, mientras tanto, es una buena idea protegerse de los potenciales vacíos de seguridad de XML-RPC.

¿Has bloqueado el acceso XML-RPC a través de un plugin o manualmente? ¿O tuviste algún problema de seguridad al tenerlo activo en primer lugar? Por favor, comparte tu experiencia en los comentarios a continuación.

Dejá una respuesta