Cuando se habla de este potente CMS para la gestión de blogs no se suele dedicar el tiempo que requiere a cuestiones relacionadas con la seguridad. En la mayoría de los sitios te cuentan que borres un par de ficheros y que instales un par de plugins, y ya está.

El mercado de los CMS en 2014. Fuente: http://www.opensourcecms.com/general/cms-marketshare.php

El mercado de los CMS en 2014. Fuente: http://www.opensourcecms.com/general/cms-marketshare.php

WorPress es el CMS más empleado en el mundo. El gráfico que acompaña esta entrada es de OpenSourceCMS.com, pero da lo mismo de dónde lo saques. Aunque varíe el porcentaje, el efecto sigue siendo el mismo (por ejemplo, Wappalizer, Built With o W3 Techs). Y acaparar tantas miradas suele traer problemas: ser el objetivo de gente a la que le gusta destrozar el trabajo de los demás.

En todas las instalaciones que se realicen, ya sea en modo local (para pruebas y betas) o en modo remoto (hosting), siempre es muy recomendable tomar una serie de medidas de seguridad. Las que no aconsejo son:

  • Cambiar el prefijo de las tablas. Siempre que se crea una base de datos en MySQL es posible definir el prefijo que tendrán las tablas que se incluirán en dicha base de datos. Por defecto, WordPress empleará el prefijo wp_instalación de wordpressy si tú y yo sabemos esto, significa que lo sabe todo el mundo. Proporcionar tanta información vuelve a nuestros sistemas débiles. Si estás instalando WorPress desde el principio, en la pantalla de instalación cambia el prefijo. Si ya tienes instalado el programa podrás emplear cualquier plugin para ello. Te recomiendo WordPress Table Prefix Rename Plugin. Por cierto si este es tu caso, antes de iniciar el proceso haz una copia de seguridad de la base de datos. Por si las moscas.
  • Cambia el nombre de la base de datos. Lo que suele hacer todo el mundo es crear una base de datos con nombre “wordpress”. Vale, pues lo has hecho mal. Cambia ese nombre a otra cosa que no sea tan evidente. De hecho, lo mejor es poner combinaciones de letras y números.
  • Elimina los ficheros readme.html e install.php. Una vez hayas finalizado la instalación esos dos ficheros no te valen de nada. Borralos. No es muy difícil saber qué errores de seguridad tiene cada versión de WordPress. Cualquiera que lea el fichero readme.html sabrá la versión instalada y… Además, es posible que el tema que hayas escogido también informe sobre la versión con la que trabajas. Siendo coherentes:
  • Elimina la información sobre la versión en el tema. Para ello sólo tienes que ir al fichero de funciones del sistema (funcions.php) del tema e introducir unas cuantas líneas al final del fichero. Esas líneas eliminan información que se rellena automáticamente en la etiqueta <head> y que no nos beneficia para nada :
    remove_action(‘wp_head’, ‘wp_generator’);
    remove_action(‘wp_head’, ‘rsd_link’);
    remove_action(‘wp_head’, ‘wlwmanifest_link’);
    remove_action(‘wp_head’, ‘index_rel_link’);
    remove_action(‘wp_head’, ‘parent_post_rel_link’, 10, 0);
    remove_action(‘wp_head’, ‘start_post_rel_link’, 10, 0);
    remove_action(‘wp_head’, ‘adjacent_posts_rel_link’, 10, 0);
  • Ten todo actualizado. Continuamente salen nuevas versiones que corrigen errores, tapan puertas, aumentan la seguridad… debes tener siempre actualizado el sistema. Y esto se refiere tanto a WordPress, como a los plugins y al tema.
  • Crea copias de seguridad de la base de datos. Existen varios plugins que se encargan de automatizar este proceso, así que ya no tienes excusa. Mi consejo es que aproveches aquellos que guardan la copia de seguridad creada en algún servicio en la nube, tipo Google Drive o Dropbox. Yo uso BackWPup y funciona realmente bien. Si tienes el blog hospedado en un hosting, como medida extra, deberías crear copias de seguridad del dominio y de la base de datos.
  • Crea contraseñas fuertes. Generalmente, por vagancia mental, solemos usar las contraseñas típicas a pesar de que sabemos que con eso no se va a ningún lado. Haz un esfuerzo y pon contraseñas complejas, con letras en mayúscula, minúscula, números, símbolos… Es más, si junto a una buena contraseña instalas un sistema de autentificación, tipo Google Authenticator, la cosa ya se vuelve mucho más robusta.
  • Cambia la URL de acceso y administración. Lo habitual suele ser que para acceder a la zona de usuario los datos se introduzcan en la dirección http://www.ejemplo.com/wp-admin Lo ideal es cambiar la carpeta en la que se almacena esa información. El plugin iThemes Security te permite hacerlo de forma fácil.
  • Borra lo que no uses. Es muy frecuente que se acumulen plugins y temas instalados pero no activados. Pueden suponer un riesgo de seguridad (además de ocupar espacio innecesariamente). Elimina todo eso.
  • Edita los permisos de los roles. En WordPress hay muy pocos roles. Y los que hay vienen con una serie de permisos por defecto. Lo mejor es ajustarlos, con el fin de lograr adaptar mejor cada rol a lo que realmente queremos que haga en el blog. El mejor plugin para eso es User Rol Editor.
  • Desactiva el código HTML en los comentarios. En HTML se pueden escribir muchas cosas, y no todas buenas. Lo mejor es evitar que los comentarios se escriban sobre HTML. Para eso debes ir al fichero de funciones del sistema (funcions.php) del tema e introducir esta línea al final del fichero:
add_filter(‘pre_comment_content’, ‘wp_specialchars’);

  Y recuerda: lo ideal es moderar siempre los comentarios.

  • Elimina la cuenta admin. El usuario admin es el que se crea por defecto en cualquier instalación de WordPress. La forma habitual realizar un ataque de fuerza bruta:

Eliminarlo es muy fácil. Lo primero que tienes que hacer es crear un usuario nuevo con los permisos de administrador. Luego entras en el sistema con ese nuevo usuario y eliminas admin.

  • Protege tu fichero XML-RPC. El ataque de denegación de servicio distribuido (DDOS) es uno de los más habituales. Y en WordPress se suele utilizar el protocolo XML-RPC para ello, ya que se matan varios pájaros de un tiro. Para evitar esto, el método más sencillo es renombrar el fichero xmlrpc.php que cuelga de raíz. Eso sí, recuerda volver a hacerlo después de cada actualización de WordPress, ya que volverá a instalarlo.
  • Crea un archivo vacío con el nombre index.html. Y lo copias en todos los directorios de tu instalación. De esa manera lograrás que no se pueda generar un listado con el contenido del directorio.
  • Define las claves de seguridad de wp-config.php. Se trata de claves de seguridad que mejoran la encriptación de la información almacenada en las cookies de usuario. Si te conectas a WordPress será posible cambiarlas automáticamente.

claves de seguridad de WP

  • Crea un buen fichero robots.txt. De esa manera te aseguras de que no se indiza contenido que no tiene que ser visible.
  • Protege el archivo wp-config.php. En ese fichero se almacena toda la información sensible de tu instalación, así que lo mejor es poner difícil el acceso. Lo ideal es mover el fichero de sitio (a una carpeta anterior de wp-admin) para evitar problemas. Pero si tienes instalado WordPress en raíz, la solución pasa por modificar el fichero .htaccess para impedir el acceso. Esta orden es perfecta:
<Files wp-config.php>
Order Allow, Deny
Deny from all
</Files>
  • Instala un firewall. Evitarás que infecten tus ficheros php, que suele ser la forma más sencilla de atacar un sitio web. Me gusta mucho WP simple Firewall.
  • Y lo evidente, para el final: instala buenos plugins de seguridad. Los que más me gustan son iThemes Security y Wordfence.

Si te va la marcha, nunca viene mal verificar la seguridad de su sitio. Para eso puedes usar cualquiera de los servicios que existen para eso. Basta con introducir la URL de tu blog y ellos se encargarán de notificarte de los errores graves detectados. Entre ellos: