blog webempresa

¿Qué es XML-RPC en WordPress y cómo desactivarlo?

por | Oct 25, 2022 | Aprender WordPress, Seguridad WordPress

¿Qué es XML-RPC en WordPress y cómo desactivarlo?

Lejos quedan los años en los que el acceso a Internet era lento y caro, por lo que estaba disponible para unos pocos y no de forma democrática, pero gracias a la expansión de las líneas VDSL, ADSL y recientemente la Fibra. Ahora podemos disfrutar de velocidades que apenas hace 1 década eran un sueño de muchos en manos de muy pocos. Eso abrió también las puertas a cómo ahora publicamos contenidos “en vivo” mientras que antes casi todo lo hacíamos en local (localhost o tu ordenador) y luego lo subíamos a Internet, no sin antes esperar un poco en todo el proceso hasta ver los resultados.

Pues, en parte, detrás de eso está XML-RPC, y en su momento sirvió y mucho, sobre todo, a bloguer@s para poder gestionar sus blogs con WordPress sin estar “permanentemente conectados”, algo que hoy nos parece obvio.

Entonces, ¿qué es XML-RPC en WordPress y cómo desactivarlo?. Pues espero poder desgranártelo un poco pero sin aburrirte con palabrerío técnico, aunque el tema lo requiere, para que sepas el porqué ya no te es útil y como medida de seguridad, el motivo que debería llevarte a mantener XML-RPC desactivado y lejos de mirada de usuarios maliciosos.

  ¿Qué es XML-RPC?

 

XML-RPC está activo por defecto en todas las instalaciones de WordPress desde la versión 3.5 de este CMS. Se prevé que cuando la API de WordPress, aún en desarrollo, esté disponible, desaparecerá XML-RPC y con ello el problema que este puede generar en la seguridad WordPress. Si bien que las últimas versiones de este archivo han recortado su código en más de un 70% con respecto al original inicial.

El servidor XML-RPC sólo acepta peticiones POST mediante protocolo de transferencia HTTP y también las envía mediante HTTP una vez evaluado el archivo XML que viaja en la petición.

El servidor XML-RPC sólo acepta peticiones POST

A qué comandos POST afecta esto:

wp.getPost
wp.getPosts
wp.newPost
wp.editPost
wp.deletePost
wp.getPostType
wp.getPostTypes
wp.getPostFormats
wp.getPostStatusList

Este servicio utiliza por defecto de forma extendida el protocolo inseguro HTTP por lo que las peticiones no viajan ni seguras ni encriptadas.

  Para qué sirve XML-RPC en WordPress

 

Centrando la atención en el servicio de XML-RPC para WordPress, decir que se trata de una API de WordPress pensada para conectarse remotamente mediante protocolo HTTP y XML.

Si, el XML no es solo el formato de archivo que quizás conoces. Si desglosamos XML-RPC, este se compone de XML o Extensible Markup Language que es el lenguaje de marcado y el RPC o Remote Procedure Call que se utiliza para llamadas remotas.

Aunque actualmente es una funcionalidad casi en desuso que está relegada a que desde algún servicio externo se realicen acciones en un WordPress, es decir, remotamente. Es verdad que hay usuarios o administradores de sitio que requieren tener esta funcionalidad habilitada, por ejemplo, para conectarse al dashboard de WordPress desde la App de WordPress en el dispositivo móvil (iOS o Android).

Si no tienes filtrada, por ejemplo la IP de tu dispositivo (si es dinámica, será un problema, ya que cambiará regularmente) en el archivo .htaccess de WordPress para que puedas conectarte desde la App al panel de administración de tu web. Verás un aviso de error similar al siguiente al intentar conectarte desde el móvil para realizar gestiones en el dashboard.

Error 403 al intentar conectar al dashboard de WordPress desde la App móvil de WordPress

Si no tienes una necesidad imperiosa de usar la App de WordPress o de WooCommerce para acceder remotamente al servicio mediante petición al servicio XML-RPC, mejor entonces que lo desactives.

  ¿Por qué deshabilitar XML-RPC en WordPress?

 

Principalmente para que, en caso de tenerlo activo sin tú saberlo, el sitio web que gestionas no sea atacado para explotar la vulnerabilidad que afecta a este servicio.

Se pueden efectuar ataques de fuerza bruta o ataques amplificados (system.multicall) que tiene como objetivo hacerse con un usuario y contraseña válido del sitio para tomar el control.

Vale que muchos proveedores de Hosting ya se protegen contra este tipo de ataques, pero ¿y si no?, pues para estos casos ya sabes desactivarlo es la mejor opción, ya que al final el responsable por tu sitio web eres tú, no es solo responsabilidad de quien aloja tu sitio web.

Deshabilitando XML-RPC de wordPress te aseguras que este servicio no aceptará peticiones externas y con ello reducirás el log de intentos de accesos no deseados, y con ella la carga de peticiones contra tu web.

Ventajas de deshabilitar XML-RPC en WordPress si no lo necesitas:

  • Evitas ataques de fuerza bruta o ataques amplificados mediante explotación de vulnerabilidad.
  • Reduces el consumo de CPU del servidor donde se aloja tu cuenta de Hosting al reducir las peticiones al servicio.
  • Evitas ataques de inundación por exceso de peticiones (DDoS).
  • Evitas el uso de Trackbacks y Pingbacks en WordPress.

¿Trabajas con el plugin JetPack? entonces tendrás que plantearte filtrar la IP del servicio de WordPress para este plugin en una “lista blanca” con un plugin o mediante el filtrado de la IP en la directiva de “xml-rpc” para htaccess.

Es sencillo deshabilitar xml-rpc en WordPress y a continuación te cuento algunas formas de hacerlo.

  Deshabilitar XML-RPC en WordPress sin plugins

 

Hay varias formas de llevar a cabo esto, una de ellas es usando un filtro que añadido al final del archivo functions.php lo que hace es desactivar XML-RPC en WordPress.

Como no siempre es aconsejable editar directamente el archivo functions.php de WordPress, lo ideal es utilizar plugins como Code Snippets para añadir un snippet en WordPress con el fragmento de código del filtro que va a desactivar XML-RPC, de manera que lo puedas hacer desde el dashboard de tu sitio web sin tener que editar archivos “delicados”.

Plugin Code Snippets

Haz clic en la imagen para acceder al plugin en WordPress.org

Lo cierto es que es un proceso muy sencillo el añadir el filtro que te indico a continuación, para que xml-rpc deje de estar activo.

add_filter('xmlrpc_enabled', '__return_false');

Otra forma de deshacerte de XML-RPC es mediante el archivo .htacces por lo que es posible que este método te resulte más sencillo si no quieres instalar más plugins en tu sitio como Code Snippets.

Para ello tienes que editar el archivo .htaccess de tu WordPress en uso, algo que puedes hacer con el Administrador de Archivos de tu Panel de Hosting, y añadir el siguiente fragmento de código para que se bloquee xml-rpc.

<Files xmlrpc.php>
order allow,deny
deny from all
</Files>

Si por alguna razón lo necesitas para determinado servicio, siempre puedes filtrar la IP de ese servicio como permitida para el uso de xmlrpc.php de forma que no pierdas la funcionalidad que requieras.

<Files xmlrpc.php>
order allow,deny
deny from all
</Files>
allow from XXX.XXX.XXX.XXX

Donde XXX.XXX.XXX.XXX será la IP a permitir. Si son varias IPs debes añadir un allow from XXX.XXX.XXX.XXX por cada IP a adicional a autorizar y cada una en una línea nueva.

  Deshabilitar XML-RPC en WordPress con plugins

 

No hay que complicarse mucho la vida con esta cuestión, pero si quieres usar un plugin, pues tienes opciones como Disable XML-RPC-API para hacerlo de manera fácil y rápida.

Plugin Disable XML-RPC-API

Haz clic en la imagen para acceder al plugin en WordPress.org

 

¿Qué hace este plugin con respecto a XML-RPC en tu sitio web?

  • Desactiva la carga del archivo xmlrpc.php con una directiva en el archivo htaccess.
  • Te permite el uso de listas blancas y negras para el uso de XML-RPC.
  • Además desactiva trackbacks y pingbacks que es uno de los usos para XML-RPC.

Hay más opciones de este plugin, pero me centro solo en destacarte las que interesan para gestionar o desactivar el servicio.

Desactivar xmlrpc.php con el plugin Disable XML-RPC-API

  Conclusiones

 

Se que lo he repetido varias veces a lo largo del artículo, pero insisto si no lo necesitas, ¡deshabilítalo! y te evitarás algún que otro susto o dolor de cabeza.

Desactivándolo todo son ventajas para tu web, ya que si no usas JetPack, no te conectas a tu WordPress desde la App de WordPress o WooCommerce, que requieren de XML-RPC (aunque siempre puedes filtrar IPs). Entonces, es mejor aplicar el sentido común y reducir los vectores de ataque contra tu sitio, desactivando servicios y funcionalidades que nunca vas a usar.

Añadirte que no solo JetPack hace uso de xml-rpc.php, herramientas externas como Zapier, Integromat, o IFTTT necesitan esta funcionalidad activa para realizar conexiones con tu sitio en cado de tener alguno de ellos implementado.

Al final, utiliza el método para proteger tu sitio de ataques contra el servicio XML-RPC que mejor te convengan, de lo que se trata es de cerrar el servicio y que si hacen una petición externa al mismo vía navegador o una aplicación web, obtengan el mensaje Forbidden. You don’t have permission to access this resource., es decir, ¡que no tengan permiso para usar el servicio!

¿Te ha resultado útil este artículo?

Promo abril