En este post analizamos de forma precisa el «cuándo» y el «por qué» deshabilitar XMLRPC y cómo hacerlo de manera eficiente.
El acceso remoto a WordPress mediante XMLRPC se ha utilizado durante muchos años para enviar comandos a WordPress y administrar su contenido sin iniciar sesión en el escritorio.
Sin embargo, XMLRPC tiene sus desventajas. A veces presenta vulnerabilidades de seguridad y ahora ha sido reemplazado por la API de WordPress.
Tabla de contenidos
- ¿Qué es XML-RPC?
- El relevo de XMLRPC de WordPress
- ¿Es seguro deshabilitar el acceso XMLRPC de mi WordPress?
- ¿Por qué deshabilitar xmlrpc.php?
- Deshabilitar WordPress XMLRPC
- Conclusión
¿Qué es XML-RPC?
En el directorio raíz de cada sitio de WordPress, hay un archivo llamado xmlrpc.php
. Fue creado para permitir que los sitios gestionados con WordPress se comunicasen entre sí y para que otras aplicaciones pudieran consultar y realizar operaciones sobre el contenido.
XML es el mecanismo de codificación utilizado para el intercambio de datos y RPC es el mecanismo de comunicación. RPC significa Llamada a procedimiento remoto.
El relevo de XMLRPC de WordPress
Si bien el acceso remoto XMLRPC de WordPress ha existido durante muchos años, la API de WordPress ha evolucionado desde hace mucho tiempo hasta convertirse en una solución más robusta y segura.
Con la nueva API de WordPress, el uso de XML-RPC ha quedado completamente desactualizado. Si no necesitas XMLRPC para ninguna de las funciones que se explican a continuación, es mejor desactivar XMLRPC por completo. Te podemos asegurar que evitarás los numerosos problemas de seguridad que conlleva el acceso a este archivo.
La nueva API no es perfecta, pero proporciona una solución más segura y sólida para el control remoto de contenidos de WordPress.
Actualmente, la comunidad de desarrolladores está abandonando el uso de xmlrpc.php
¿Es seguro deshabilitar el acceso XMLRPC de mi WordPress?
El acceso XMLRPC todavía se usa en algunos casos como el de la administración remota desde WordPress.com cuando se usa el complemento Jetpack o en servicios como Zapier o IFTTT, que realizan tareas de automatización remota.
Jetpack todavía arrastra la gestión remota utilizando el acceso a
xmlrpc.php
Además, la funcionalidad de Pingbacks o algunas de las aplicaciones, como la aplicación móvil oficial de WordPress, usan xmlrpc.php
para interactuar con WordPress.
Pero… ¿Quién gestiona hoy las publicaciones de WordPress desde el móvil? Pues si eres de los que les encanta el mundo móvil, es mejor que utilices el navegador de tu dispositivo para acceder al administrador de tu WordPress. Después de todo, es más seguro y su interfaz «responsive» funciona perfectamente.
¿Por qué deshabilitar xmlrpc.php?
El acceso a WordPress XMLRPC, al ofrecer funciones de gestión avanzadas, se vuelve atractivo para un atacante. Es por ello que deshabilitar XMLRPC nos ayudará a reducir significativamente el ángulo del llamado Vector de Ataque.
Los tipos de ataque a los que suele estar expuesto xmlrpc.php
son:
Ataque de fuerza bruta contra XML-RPC
En general, el ataque de fuerza bruta se utiliza para obtener la combinación de usuario y contraseña a través de solicitudes masivas, por eso se le llama «fuerza bruta».
Como XMLRPC está protegido por nombre de usuario y contraseña en operaciones que modifican datos, las solicitudes a xmlrpc.php son un destino ideal para intentar encontrar credenciales.
Para realizar un ataque de fuerza bruta basta con realizar llamadas consecutivas al
xmlrpc.php
probando como parámetros diferentes usuarios y contraseñas.
Ataque amplificado
El ataque amplificado es una variante aún más peligrosa del ataque de fuerza bruta. En un ataque de fuerza bruta, cada intento de probar un nombre de usuario y una contraseña da como resultado una solicitud. En cambio, en el ataque amplificado se pueden intentar decenas de miles de combinaciones en una misma petición. Sin embargo, esta vulnerabilidad está actualmente corregida.
Ataques DDoS usando XMLRPC
Los ataques DDoS, «Distributed Denial of Service», son extremadamente difíciles de evitar, nadie puede decir que está libre de ellos. Sin embargo, es importante no poner las cosas fáciles. La base de un ataque DDoS es saturar su servidor realizando muchas solicitudes simultáneas.
Si tenemos en cuenta que:
xmlrpc.php
es capaz de interactuar con WordPress, haciendo un uso intensivo de la base de datos.- Difícilmente se puede almacenar en caché para evitar que use demasiados recursos del servidor.
- Tiene funcionalidades como Pingback que facilitan la distribución del envío de solicitudes.
La suma de estos factores hace que xmlrpc.php sea la herramienta perfecta para el atacante.
Deshabilitar WordPress XMLRPC
Para deshabilitar por completo XMLRPC, nuestro consejo sin duda es hacerlo a nivel de servidor y evitar el uso de extensiones.
Bloquear su acceso a nivel de servidor web es lo más eficiente, ya que evitamos que se ejecuten peticiones en WordPress.
Tenga en cuenta que cualquier solicitud que llegue a WordPress representa la ejecución dinámica del código php y las consultas a la base de datos.
Si está alojando su sitio con Wetopi, puede hacerlo con un solo clic.
Deshabilitar xmlrpc.php
en Wetopi
En Wetopi, puedes habilitar y deshabilitar el acceso a xmlrpc.php
de tu WordPress con un solo clic.
Encontrarás esta opción en el menú del servidor de WordPress, dentro de la sección de opciones avanzadas. De manera predeterminada, en Wetopi encontrará el acceso XmlRPC deshabilitado como se muestra en esta imagen:
Si tienes la opción «Xmlrpc habilitado» en «OFF», al intentar acceder a xmlrpc.php
, el navegador te responderá con un error HTTP 403 Forbidden:
Si necesitas un WordPress con acceso a XmlRPC, simplemente haz clic en » Xmlrpc enabled
» para poner en «ON» y activar el acceso a esta página.
Prueba cómo bloquear las solicitudes XMLRPC de WordPress sin romper su sitio web de producción.
Si no tienes un servidor WordPress de desarrollo, regístrate en wetopi, es GRATIS
Al probar nuevas configuraciones de servidor, se recomienda encarecidamente trabajar en un servidor «localhost» o «Staging».
¿Cómo funciona en realidad esta opción?
Cuando deshabilitas XmlRPC en tu servidor WordPress de Wetopi, lo que ocurre es que se deposita el archivo /var/www/conf/nginx-disable-xmlrpc.conf
, así nginx lo incluye al cargar la configuración.
A continuación mostramos todos los detalles pos si quieres reproducir el proceso de forma totalmente manual en servidores Nginx o Apache.
Deshabilita manualmente xmlrpc.php en Nginx
Si utilizas Nginx como servidor de página web, deberás ubicar los archivos de configuración de Nginx. El lugar común del sistema de archivos en Linux es /etc/nginx.conf
En Wetopi, como hosting especializado en WordPress, también usamos Nginx. En nuestros servidores, puedes encontrar el archivo de configuración en /var/www/conf/nginx.conf
Al editar el archivo de configuración, añade estas líneas en la sección del servidor junto con tus otras Nginx «location»:
# denaying access to WordPress xmlrpc:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
return 403;
}
IMPORTANTE: con Wetopi, no necesitas modificar manualmente los archivos de configuración de Nginx. XmlRPC se puede desactivar y activar desde tu panel de control con un solo clic.
Cargar la nueva configuración de Nginx
Después de cualquier modificación de configuración en Nginx, siempre es necesario recargar la configuración.
Desde la línea de comandos de tu server Nginx, ejecuta el comando de test (si siempre es bueno verificar antes por si hay errores) y después, recarga de configuración:
# Test config before reload:
nginx -t
# Reload nginx:
nginx -s reload
Deshabilita manualmente xmlrpc.php en Apache
El primer paso es ubicar el archivo .htaccess
en la raíz de tu sitio WordPress. Este es el único archivo que necesitaremos editar para deshabilitar el acceso XMLRPC.
Una forma de acceder y editar estos archivos es conectarse de forma segura al servidor a través de SFTP.
Una vez tengas en edición el archivo .htaccess
, añade estas líneas al final de todo y guarda los cambios.
<Files xmlrpc.php>
order deny, allow
deny from all
</Files>
Conclusión
Xmlrpc.php en WordPress fue desarrollado para proporcionar funcionalidad de administración remota. Debido a las capacidades de acceso y control remoto, se ha convertido en el punto de destino de numerosos ataques de intrusión y DDoS.
Hoy, la nueva API de WordPress proporciona estas funciones sin sacrificar la seguridad. Nuestra recomendación, si no dependes de la gestión remota de Jetpack, Zapier o IFTTT, desactívala cuanto antes.
¿No tienes una cuenta en wetopi?
Incluye servidores desarrollo Gratis.
Sin tarjeta de crédito.