Restringir el acceso a xmlrpc.php

1 ago 2014, 16:33:07
Vistas: 14.4K
Votos: 2

Soy bastante nuevo en WordPress y recientemente noté una gran cantidad de tráfico impactando en lo siguiente:

162.242.170.222 - - [01/Aug/2014:08:18:54 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4859
162.242.170.222 - - [01/Aug/2014:08:19:01 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4859
162.242.170.222 - - [01/Aug/2014:08:19:01 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4859
162.242.170.222 - - [01/Aug/2014:08:19:02 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4859
162.242.170.222 - - [01/Aug/2014:08:19:11 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4861
162.242.170.222 - - [01/Aug/2014:08:19:13 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4861
162.242.170.222 - - [01/Aug/2014:08:19:18 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4861

Bloqueé la dirección IP lo cual es una solución temporal. ¿Existe una solución permanente para bloquear estas solicitudes, especialmente si no necesito

0
Todas las respuestas a la pregunta 4
0
10

Si tu servidor es Apache, puedes bloquear el acceso antes de que WordPress siquiera sea alcanzado con una línea en tu archivo .htaccess:

Redirect 403 /xmlrpc.php

Puedes agregar otra línea para mantener la respuesta breve:

ErrorDocument 403 "no"

Esto enviará una respuesta muy mínima (dos bytes más los encabezados HTTP), y ahorrará tus recursos para un tráfico más valioso.

1 ago 2014 20:55:43
5

Existen plugins para eso: por ejemplo http://wordpress.org/plugins/disable-xml-rpc/

También puedes escribir un filtro tú mismo

add_filter('xmlrpc_enabled', '__return_false');

Puedes simplemente agregar este código al archivo functions.php de tu tema (ubicado en wp-content/themes/tu_tema).

Sin embargo, se recomienda crear un tema hijo (http://codex.wordpress.org/Theme_Development) para que tus modificaciones no desaparezcan al actualizar el tema.

Alternativamente, puedes crear tu propio plugin (http://codex.wordpress.org/Writing_a_Plugin) donde coloques todos tus ajustes de WordPress.

También agrego lo siguiente para una mejor protección:

/**
 * Protege WordPress eliminando la versión
 */
remove_action('wp_head', 'wp_generator');


/**
 * Protege WordPress ocultando errores de inicio de sesión
 */
function hide_login_errors($errors) { return 'Error de inicio de sesión'; }
add_filter('login_errors', 'hide_login_errors', 10, 1);
1 ago 2014 16:43:16
Comentarios

Sería bueno que agregaras una explicación sobre dónde colocar el código y las implicaciones de usar este método

Mark Kaplun Mark Kaplun
1 ago 2014 17:15:11

Absolutamente :) Edité la respuesta

YaFred YaFred
1 ago 2014 20:36:30

Por favor no uses create_function(). Nunca. Es difícil de leer y no puede almacenarse en un opcache.

fuxia fuxia
1 ago 2014 20:56:39

¿qué sugerirías?

YaFred YaFred
1 ago 2014 21:09:42

Ya sea una función separada o un cierre.

fuxia fuxia
3 ago 2014 04:06:29
0

Otra forma es colocar esto en tu archivo .htaccess:

<Files "xmlrpc.php">
order allow,deny
deny from all
errordocument 403 /noaccess.html
errordocument 404 /noaccess.html
</Files>
9 sept 2014 13:53:46
0

o para nginx

# Deshabilitar xmlrpc.php ya que está siendo abusado por script kiddies
location ~ xmlrpc.php {
    deny all;
    access_log off;
    log_not_found off;
    return 444;
}
13 abr 2023 00:29:31