¿Cómo se puede bloquear el acceso a XML-RPC de WordPress?

El XML-RPC es una característica incluida en WordPress que permite la transmisión de datos vía HTTP y codificándola usando XML. El archivo xmlrpc.php de WordPress permite acceder y actualizar contenidos del sitio web desde una aplicación remota sin tener que entrar al Escritorio, como si fuera un control remoto. Así que si no vamos a implementar alguna forma de acceso remoto para publicar contenidos, no necesitamos dejar el XML-RPC habilitado ya que es la puerta de ingreso que intentarán violentar los bots y hackers, ya que viene habilitado por defecto en WordPress.

En algunos blogs recomiendan renombrar o directamente eliminar el archivo xmlrpc.php de WordPress, y si bien es efectivo, habrá que recordar renombrarlo o eliminarlo nuevamente cada vez que actualicemos WordPress, y eso ocurre incluso automáticamente cuando se liberan versiones menores que corrigen defectos... Así que no sirve.

Por eso ahora veremos varias formas de desactivar XML-RPC efectivamente:

Desactivando XML-RPC con plugins

Se puede desactivar esta funcionalidad con plugins, como el Disable XML-RPC que bloqueará el XML-RPC con solamente activarlo.

También está el Manage XML-RPC, que brinda más opciones, como distinguir entre pingbacks y acceso full XML-RPC, así como también habilitar XML-RPC para determinadas IPs, lo cual puede servir si queremos habilitar el acceso a un servicio externo y sabemos exactamente la IP desde donde vendrán las peticiones.

Y por supuesto hay excelentes plugins de seguridad que pueden ayudar a configurar esto y muchos otros aspectos que mejorarán la seguridad del sitio web, como el iThemes Security, WordFence o Sucuri.

Para el caso del iThemes Security, podés consultar este tutorial para aprender a configurarlo correctamente.

Desactivando XML-RPC con código PHP

Para los más avanzados, es posible desactivar la funcionalidad con estas simples líneas de código al final del functions.php del theme en uso, o bien al final del wp-config.php:

// Desactivar XML-RPC
add_filter( 'xmlrpc_enabled', '__return_false' );

// Desactivar header X-Pingback
add_filter( 'wp_headers', 'bye_pingback' );
function bye_pingback( $headers ) {
    unset( $headers['X-Pingback'] );
    return $headers;
}

// Desactivar otros métodos XML-RPC
add_filter('xmlrpc_methods', function(){return[];}, PHP_INT_MAX);

La primer parte desactiva el XML-RPC, y la segunda que viene con una función, desactiva los pingbacks, que son una subfunción que también puede ser tan molesta como inútil hoy en día. Y por último, la tercer instruccion termina de cerrar toda posible puerta de entrada al desactivar todos los métodos posibles.

Funciona. Pero mi favorito es el siguiente, porque no requiere que se ejecute una sola línea de PHP, ya que ataja la petición maliciosa desde el archivo .htaccess. Y recordemos, que en caso de ataque masivo, tantas peticiones sobre el PHP pueden igualmente tirar abajo el servidor o el sitio, por lo que lo más efectivo es usar el .htaccess como sigue:

Desactivando XML-RPC desde el .htaccess

También por supuesto, al saber cuál es el archivo que ejecuta las peticiones, podemos bloquear el acceso al mismo desde la configuración del .htaccess, añadiendo el siguiente bloque de código al principio del archivo:

# Bloquear acceso a xmlrpc.php
<Files xmlrpc.php>
order deny,allow
deny from all
# allow from 111.111.111.111
</Files>

Y en el caso que en lugar de Apache, estemos usando NGINX, deberá utilizar el siguiente código:

# Bloquear acceso a xmlrpc.php
location /xmlrpc.php {
    deny all;
}

Estas instrucciones permiten asegurar el sitio y dormir tranquilos. Si se quiere, se puede descomentar (quitar el caracter #) de la anteúltima línea para permitir el acceso a XML-RPC desde una IP donde sepamos que vamos a necesitar que un servicio externo haga peticiones al sitio. Caso contrario, puede dejarse como está aquí.

 

  • 0 Los Usuarios han Encontrado Esto Útil
¿Fue útil la respuesta?

Artículos Relacionados

¿Qué hacer si mi sitio muestra un error 500?

El error 500 es un error común que se da cuando hay defectos en la programación de un script en...

¿Dan servicio de mantenimiento a sitios WordPress?

Sí. Creemos que todos tienen derecho a tener un sitio web ágil, funcional y seguro. Y el servicio...

Presentación: Seguridad en WordPress, cómo evitar que hackeen tu web

Les comparto la presentación que di en la Meetup de WordPress Argentina de Agosto 2018, donde fui...

¿Cómo ocultar el cartel de activación que muestra Visual Composer?

La mayoría de las veces, compramos un theme comercial pero no incluye la licencia de Visual...

¿Se puede importar un WordPress preinstalado a Softaculous?

Sí, es posible. Si transferiste una cuenta de cPanel desde otro hosting o instalaste un WordPress...