Habilitar y deshabilitar la interfaz XML-RPC en WordPress

XML-RPC es una característica utilizada como una interfaz estándar para realizar comunicaciones entre el servidor de WordPress y diversos clientes, de modo que se pueden realizar cambios en el sistema como normalmente se harían desde el panel de control.

Con esto se han podido desarrollar clientes como la app de WordPress para iOS.

En versiones recientes (3.5+) esta interfaz viene habilitada por defecto.

Sin embargo, hace poco se documentó una vulnerabilidad que permitía utilizar esta interfaz para realizar un escaneo de puertos a otros sistemas y peor aún, realizar ataques de DoS a traves de nosotros, de modo que el atacante se vuelve indetectable (más información aquí).

De modo que lo más sensato, es deshabilitar esta interfaz mientras los desarrolladores eliminaban este problema.

Así que en mi búsqueda hay diversas maneras de realizar esto.

  • Mediante un plugin:

http://wordpress.org/extend/plugins/prevent-xmlrpc/

 

  • Mediante las opciones de WordPress

La opción que existían para hacerlo mediante el panel de control ya no existe más, y hacerlo mediante la base de datos (pre_option_enable_xmlrpc y option_enable_xmlrpc) ya no están recomendadas y en algún momento dejarán de funcionar.

Así que la manera correcta de hacerlo ahora es agregando al final en wp-config.php

add_filter('xmlrpc_enabled', '__return_false');

Fuente: http://wpengineer.com/2484/xml-rpc-enabled-by-default-in-wordpress-3-5/

 

  • Directamente con ayuda del servidor Web

Finalmente, todos los servidores Web modernos tienen mecanismos para denegar el acceso a archivos y directorios específicos, de modo que en este caso hay que denegar el acceso a /xmlrpc.php. No documentaré más sobre esto por el momento.

 

 

Como recomendación final, siempre hay que tratar de mantener actualizados nuestros sistemas, y estar al pendiente de posibles agujeros de seguridad que se pudieran publicar en Internet.

Nota: La última versión de WordPress (3.5.1 al día de hoy) arregla este problema.

Esto puede ser útil posteriormente, ya que este tipo de APIs suelen volver a tener problemas en algún momento, o alguno de nuestros plugins que utilice XML-RPC podría tener algún problema de seguridad, y mientras tanto lo mejor sería aplicar esta medida.

WP Security Scan versión 3.0.1

Sólo una nota rápida.

Uno de los plugins que he probado en cuanto a cuestiones de seguridad básicas que nos recuerda algunos tips útiles para mantener seguro nuestro blog ha sido actualizado a la version 3.

http://wordpress.org/extend/plugins/wp-security-scan/

 

Aquí hablo un poco de él

http://techsurveyor.com/index.php/2011/01/25/hardening-wordpress-wp-security-scan/

Hardening WordPress – WordPress Security Scan (wp-security-scan)

Una de las cosas que me preocupan, es la seguridad (no me refiero a la seguridad en México…).

Y es que cuando entras al mundillo de los sitios web, empiezas a darte cuenta que todo puede pasar de ser miel sobre hojuelas, a un sitio crackeado por algún script kiddie con ganas de molestar.

Así que investigando un poco, dí con éste plugin

http://wordpress.org/extend/plugins/wp-security-scan/

Que nos permite hacer ciertos cambios en nuestro blog de wordpress para evitar los puntos de ataque más típicos:

  • Bruteforcing de usuarios
  • SQL injection
  • Permisos

Pues bien, este post es para dos cosas, recomendar el plugin, y recomendar la solución a uno de los problemas que ocasiona utilizarlo…

Resulta ser que uno de los “fixes” que aplica, es el de renombrar las tablas con el prefijo por default de wordpress “wp_” por algún otro menos típico, que nos permita evitar ciertos tipos de ataques. Pues bueno, una vez que lo aplicas, te encuentras con un problemita al entrar al admin del sitio:

“No tienes suficientes permisos para acceder a esta página”

Genial… pues el plugin tiene un pequeño defecto, ya que renombra incorrectamente algunas cosas. Para esto, encontré la siguiente solución en

http://www.neoegm.com/es/tech/wordpress/how-to-fix-the-you-do-not-have-sufficient-permissions-to-access-this-page-message-in-wordpress/

que se debe ejecutar directamente como una consulta en nuestra base de datos (donde newprefix_ es el nuevo prefijo de nuestras tablas):


UPDATE `newprefix_usermeta` SET `meta_key` = REPLACE(`meta_key`, 'wp_', 'newprefix_');
UPDATE `newprefix_options` SET `option_name` = 'newprefix_user_roles' WHERE `option_name` = 'wp_user_roles' AND `blog_id` = 0;

Y el problema se debe a que en el contenido de las tablas se mencionan referencias al prefijo de las tablas, donde faltó renombrar.

Así que si alguien quiere utilizar el plugin, y tienen este problema, prueben esta solución:

PD: SIEMPRE hay que hacer copias de seguridad antes de hacer los cambios.