Consejos seguridad para Wordpress

Consejos para mejorar la seguridad de WordPress

Si eres responsable de un blog, o te dedicas profesionalmente al diseño y desarrollo web, estamos casi seguros que habrás oido hablar antes de WordPress. Este genial sistema gestor de contenidos (inicialmente creado para la gestión de blogs, pero que en la actualidad ha sobrepasado con creces esas barreras) con el que hemos diseñado y desarrollado varios de nuestros proyectos web y sobre el que sustentamos iniciativas como subflash o blocketpc puede darnos muchas alegrías, pero también tremendos disgustos. De hecho estos últimos días tuvo lugar un ataque mundial a sitios basados en WordPress que hizo tambalear más de un sistema.

Como todo software popular que se precie, WordPress está expuesto a los ataques de quienes desean sacar provecho no legítimo del trabajo ajeno, o simplemente complicar la vida del resto de los mortales. Esto es más notable aun cuando se trata de una herramienta con una licencia como la de WordPress, que provoca que su código fuente está expuesto a los ojos de cualquiera que lo descargue.

Es por ello que os recomendamos darle una buena revisión a esta lista de consejos que os dejamos a continuación y que si bien no pueden garantizar el 100% de protección, si pueden lograr complicar notablemente el éxito de los posibles ataques a los que nos veamos sometidos.

Como suele ocurrir siempre que se habla de estas dos opciones, siempre es mejor prevenir que curar, por lo que la mayoría de nuestros consejos irán orientados a ese objetivo.

Vamos a enfocar la seguridad de wordpress desde dos puntos de vista:

  • A. Prevención
  • B. Cura

A. Prevención y protección para WordPress

Para trabajar la prevención en WordPress tenemos que aplicar acciones en diferentes frentes, que abarcan desde el alojamiento o hosting donde va a instalarse WordPress hasta la instalación de plugins que nos ayudarán a monitorizar dicha instalación en materia de seguridad, pasando por la instalación en si misma del gestor de contenidos, base de datos y por supuesto el mantenimiento y actualización del mismo y los componentes que hayamos añadido.

Instalación y configuración de WordPress

Usuarios administradores

Te recomendamos que no mantengas el usuario «admin» por defecto y que apliques en todos tus usuarios contraseñas suficientemente complejas y poco intuitivas como para no ser sencillo un ataque por fuerza bruta.

Base de datos

Es conveniente aplicar un prefijo no común a las tablas generadas por la instalación de WordPress para que los nombres por defecto no faciliten ataques basados en el acceso a través de inyecciones SQL. Otra acción conveniente es no realizar más de una instalación WordPress en una misma base de datos o con el mismo usuario, para no comprometer la seguridad de una con las otras.

Ficheros y directorios

Se recomienda proteger el directorio wp-admin a nivel de servidor, más allá de la protección que aplica el propio WordPress para controlar el acceso. Esto lo podemos hacer mediante un fichero htaccess, pero es conocido que puede tener consecuencias en el funcionamiento de algunas características de la parte pública que emplean AJAX. No obstante es un tema conocido y que ya cuenta con soluciones sencillas.

Otro de los aspectos a nivel de ficheros y directorios que se recomienda proteger es el wp-includes, mediante htaccess con las siguientes líneas:

# Block the include-only files.
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]

Este código ha de ser colocado fuera del bloque delimitado por las etiquetas # BEGIN WordPress y # END WordPress ya que sino cualquier cambio realizado por WordPress podría eliminar nuestras instrucciones.

Un pequeño pasito que también ayuda, es borrar el fichero readme y cualquier otro fichero que ya resulte innecesario y que pueda permitir conocer la versión de la instalación. En esta línea existe una forma de ocultar la versión empleada, dentro del fichero functions.php:

// remove version info from head and feeds
function complete_version_removal() {
    return '';
}
add_filter('the_generator', 'complete_version_removal');

Por supuesto el fichero wp-config.php es otro de los objetivos a asegurar. Se ha discutido sobre la utilidad de sacarlo fuera del directorio web, pero lo que si se recomienda es darle permisos de solo lectura (lo que normalmente se traduce en unos permisos 400 ó 440) o aplicar unas reglas adicionales en el htaccess correspondiente:

<files wp-config.php>
order allow,deny
deny from all
</files>

Siguiendo con este fichero wp-config.php, otro elemento que ayuda en la protección del sistema es el uso de las claves secretas que incorpora para proteger sus cookies. Puedes obtener valores para dichas claves desde la herramienta proporcionada por el propio WordPress. Las constantes que genera esa herramienta (refrescando la página obtienes nuevos valores), has de pegarlos en tu wp-config.php para que comiencen a trabajar en tu favor :)

El servidor

La configuración del propio servidor también puede tener algo que decir en el proceso global de protección de WordPress. Elementos como Suhosin (que puedes analizar si está instalado mediante phpinfo) pueden ayudar a que PHP trabaje de forma más segura.

Tu equipo

Es obvio que emplear un equipo protegido y limpio es fundamental siempre que se trabajan con programas de FTP, etc. Asegúrate que siempre accedes a WordPress desde equipos de confianza y en las condiciones de seguridad necesarias.

Mantenimiento de WordPress, temas y plugins de terceros

Actualizaciones y versiones

Precisamente causado por el conocimiento general del código fuente de WordPress, es vital que cuando salen actualizaciones que solventan vulnerabilidades las apliquemos en nuestras instalaciones cuanto antes. En general es conveniente actualizar la instalación siempre que salgan actualizaciones y podamos preservando la compatibilidad con el resto de elementos de nuestro sistema.

Plugins y Themes

Has de ser consciente que cada plugin o tema que instalas significa que estás dando acceso al creador del mismo a tu sistema, por lo tanto sobra decir que es crítico que todas las instalaciones de terceros que hagas sobre WordPress sean de total confianza y de fuentes totalmente seguras.

Ten especial cuidado a la hora de instalar temas gratuitos o plugins sobre los que no hay un volumen importante de instalaciones o valoraciones. Evidentemente, cuentas con la ventaja de poder analizar el código de dichas instalaciones para comprobar que no hacen nada incorrecto. Esto es conveniente no solo por motivos de seguridad, sino también por motivos de rendimiento.

Copias de seguridad periódicas

Es recomendable tener copias de seguridad periódicas tanto de la base de datos como de los ficheros, para que en caos de necesidad podamos ir atrás a un estado seguro. Hay diferentes tareas para llevar a cabo estas tareas, como por ejemplo desde determinados programas de gestión de bases de datos, desde tu propio panel de control del alojamiento, etc.

Plugins que velan por la seguridad de tu WordPress

Existen algunos plugins muy interesantes que te ofrecen una visión general y detallada del estado en cuanto a seguridad de tu WordPress, o que solucionan a través de sencillos mecanismos configurables muchos de los aspectos que hemos comentado en este mismo post. Entre todos los existentes, te dejamos algunas referencias destacadas:

B. Cura. Cuando ya es tarde.

Si has tenido la mala suerte de haber sido atacado, siempre ayudará haber hecho los deberes para poder recuperarte del golpe. Algunas de las acciones que puedes realizar para mejorar la situación son:

Identificar el resultado del ataque

Antes de restaurar el sistema, es interesante que puedas identificar las consecuencias del ataque para encontrar documentación que te permita llevar a cabo las acciones necesarias para que una vez restaurado el sistema no te vuelva a ocurrir. Muchas veces los ataques se convierten en código no deseado incluido en diferentes archivos (por ejemplo index), que es fácilmente localizable por las fechas de modificación de dichos archivos, u observando un peso anómalo de los mismos. Esto puede suceder en diferentes niveles de carpetas de la web.

Restaurar una versión segura

Evidentemente un paso a realizar rápidamente es restaurar una versión anterior segura. Si hiciste los deberes en su momento y cuentas con una copia no atacada, la restauración será rápida y sencilla. Una vez aplicada, es necesario tomar las medidas para que no sigamos expuestos a sufrir el mismo ataque.

Actualizar usuarios con acceso de administración y accesos FTP

Como medida adicional de seguridad, es conveniente hacer un update de las contraseñas de acceso al panel de administración, así como de las de acceso por FTP, ya que podrían haber sido comprometidas.

Comprobar la seguridad del entorno de trabajo

Es importante asegurarse que ningún equipo que trabaja con la web ha sido el causante de la falla que haya podido permitir el ataque, para lo cual es necesario contar con los antivirus actualizados, programas de FTP seguros, etc.

Dar de alta tu web en las Webmasters Tools de Google

Estar dado de alta en las Google Webmasters Tools no solamente te podrá mantener al tanto de actualizaciones o avisos de seguridad relativos a tu sitio, sino que en caso de que seas baneado como consecuencia de un ataque, puedas gestionar de forma rápida tu re-inclusión en el buscador cuando hayas subsanado el problema.

Hazte un favor y pon un profesional en tu web

Como has podido comprobar, hasta una tarea tan «básica» como instalar un sistema WordPress tiene mucho trabajo detrás que es fundamental realizar correctamente para lograr una instalación segura.

WordPress es una herramienta muy potente que puede ayudar mucho en el diseño y desarrollo de websites dinámicos, pero si quieres que el resultado tenga la calidad necesaria tanto por fuera como por dentro, es conveniente contar con un equipo con experiencia en este tipo de proyectos web.