Hace mucho tiempo, el archivo xmlrpc.php era la solución. Pero en los últimos años, el archivo se ha convertido más en un problema que en una solución.
WordPress siempre ha incluido funciones que te permiten interactuar remotamente con tu sitio web. Acéptalo, hay momentos en los que necesitas acceder a tu sitio web y tu computadora no está disponible.
A continuación, discutiremos qué es xmlrpc.php y por qué se creó. Además, repasaremos los problemas de seguridad más comunes que pueden surgir y cómo solucionarlos en tu propio sitio de WordPress.
¿Qué significa Xmlrpc.php?
Una característica de WordPress llamada XML-RPC permite la transmisión de datos utilizando HTTP como mecanismo de transporte y XML como mecanismo de codificación. La intención era realizar ese trabajo porque WordPress no es un sistema encerrado en sí mismo y ocasionalmente necesita interactuar con otros sistemas.
Por ejemplo, supongamos que deseas publicar en tu sitio a través de tu dispositivo móvil porque su computadora no está disponible. Para hacerlo, puedes usar la función de acceso remoto habilitada por xmlrpc.php.
Las principales funciones de xmlrpc.php incluían permitir la conexión a tu sitio a través de un teléfono móvil, la implementación de trackbacks y pingbacks de otros sitios y algunas funciones relacionadas con el plugin Jetpack.
¿Cuál fue el propósito de la creación de Xmlrpc.php y para qué se utilizaba?
Incluso antes de que se convirtiera en WordPress, se implementó XML-RPC.
El proceso de escritura y publicación en la web era mucho más difícil y requería más tiempo en los inicios de internet, cuando las conexiones eran increíblemente lentas. La mayoría de las personas prefieren escribir sin conexión y luego copiar y pegar su contenido en la web en lugar de escribir dentro del navegador. Sin embargo, este procedimiento estaba lejos de ser ideal.
En ese momento, la solución era crear un cliente de blogs fuera de línea donde pudieras redactar tu contenido y luego conectarte a tu blog para publicarlo. XML-RPC se utilizó para establecer esta conexión. Las primeras aplicaciones utilizaban esta misma conexión para permitir a las personas iniciar sesión en sus sitios de WordPress desde otros dispositivos, utilizando el marco básico de XML-RPC en su lugar.
La actualidad de XML-RPC
En la versión 2.6 de WordPress de 2008, se podía habilitar o deshabilitar XML-RPC. Sin embargo, cuando se lanzó la aplicación de WordPress para iPhone, la compatibilidad con XML-RPC estaba habilitada por defecto y no había forma de desactivarla. Y esto sigue siendo el mismo hasta la actualidad.
Sin embargo, la funcionalidad de este archivo ha disminuido significativamente con el tiempo, y su tamaño general ha disminuido de 83kb a 3kb, lo que lo hace menos importante de lo que solía ser.
¿Qué se espera de XML-RPC?
Podemos esperar que XML-RPC se elimine por completo con la nueva API de WordPress. Hoy en día, esta nueva API está en fase de prueba y solo se puede usar con un plugin.
Sin embargo, en un futuro cercano, se espera que la API se codifique directamente en el núcleo de WordPress, lo que eliminaría por completo la necesidad del archivo xmlrpc.php.
La API recién desarrollada no es perfecta, pero ofrece una solución más sólida y segura al problema que xmlrpc.php intentaba solucionar.
¿Por qué deshabilitar Xmlrpc.php?
La seguridad es el principal problema con XML-RPC. Los problemas no tienen que ver con XML-RPC, sino con cómo se puede usar el archivo para permitir un ataque de fuerza bruta a tu sitio.
Es cierto que puede protegerse utilizando contraseñas excepcionalmente poderosas y plugins de seguridad de WordPress. Pero deshabilitarlo es la mejor forma de protegerse.
En el pasado, se han explotado dos debilidades principales de XML-RPC.
El primero es utilizar ataques de fuerza bruta para acceder a tu sitio web. Un atacante intentará acceder a tu sitio usando xmlrpc.php con múltiples nombres de usuario y contraseñas. Incluso pueden probar cientos de contraseñas con un solo comando. Esto les permite escapar de las herramientas de seguridad que normalmente detectan y bloquean los ataques de fuerza bruta.
El segundo ataque DDoS consistió en desactivar sitios web. Los piratas informáticos utilizaron la función pingback de WordPress para enviar pingbacks instantáneamente a miles de sitios. Los piratas informáticos pueden distribuir un ataque DDoS con una cantidad casi infinita de direcciones IP gracias a esta característica de xmlrpc.php.
Puede usar una herramienta llamada XML-RPC Validator para verificar si XML-RPC está activo en su sitio web. Si recibe un mensaje de error cuando ejecuta su sitio con la herramienta, significa que no ha habilitado XML-RPC.
Si recibes un mensaje de éxito, puedes detener xmlrpc.php utilizando uno de los dos métodos siguientes.
Método 1: Utiliza plugins para deshabilitar Xmlrpc.php
El proceso de deshabilitar XMLRPC en su sitio de WordPress es muy sencillo.
Simplemente vaya a la sección de plugins y seleccione agregar nuevos desde su escritorio de WordPress. Busca Disable XML-RPC-API e instala el plugin, que se muestra en la siguiente imagen:
Activa el plugin y está listo. El código necesario para desactivar XML-RPC se insertará automáticamente con este complemento.
Sin embargo, tenga en cuenta que algunos plugins actuales pueden usar componentes de XML-RPC, por lo que deshabilitarlo por completo podría causar conflictos de plugins o que ciertos elementos de su sitio dejen de funcionar.
Si desea permitir el funcionamiento de ciertos plugins y características a pesar de desactivar elementos específicos de XML-RPC, puede utilizar los siguientes plugins:
- Stop-xmlrpc-attack: Aunque este plugin bloqueará todos los ataques XML-RPC, permitirá que los plugins como Jetpack y otras herramientas y plugins automáticos sigan teniendo acceso al archivo xmlrpc.php.
- Control XML-RPC publishing: Esto le permite administrar y usar la opción de publicación remota de xmlrpc.php.
Método 2: Deshabilitar de forma manual Xmlrpc.php
Usa este método si no quieres utilizar un plugin y prefieres hacerlo manualmente. Antes de transferir todas las solicitudes entrantes de xmlrpc.php a WordPress, las detendrá.
Se debe abrir el archivo .htaccess. Para localizar este archivo, es posible que deba activar la función «mostrar archivos ocultos» en el administrador de archivos o en su cliente FTP.
Pega el código a continuación en el archivo .htaccess:
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
</Files>
¡Importante! Modifica la dirección IP xxx.xxx.xxx.xxx para permitir el acceso a xmlrpc.php o elimina esta línea completamente.
Conclusión
En general, XML-RPC fue una buena solución para algunos de los problemas que surgieron como resultado de la publicación remota en tu sitio de WordPress. Sin embargo, esta función generó algunos problemas de seguridad que resultaron bastante perjudiciales para algunos propietarios de sitios de WordPress.
Es una buena idea desactivar xmlrpc.php por completo para mantener tu sitio seguro. Si no necesita las funciones de publicación remota y el plugin Jetpack. En este caso, debes usar los plugins que habilitan estas características y solucionan los problemas de seguridad.
Podemos esperar que las características de XML-RPC se integren con el tiempo en la nueva API de WordPress, lo que permitirá el acceso remoto y otras funciones sin comprometer la seguridad. Pero es una buena idea protegerse de los posibles vacíos de seguridad de XML-RPC mientras tanto.