Seguridad en WordPress

El entorno WordPress y la seguridad

seguridad en wordpress Si elegimos WordPress como CMS de contenidos para nuestro sitio web, debemos de tener en cuenta tanto el funcionamiento de WordPress como el entorno donde se ejecuta para aumentar la seguridad de nuestro sitio web. La seguridad en WordPress debe ser tenida muy en cuenta, ya que este CMS es muy vulnerable si no establecemos una configuración adecuada.

Los distintos aspecto de seguridad que debemos revisar en nuestro WordPress se agrupan principalmente en dos categorías:

  • Aspectos propios del entorno de ejecución sobre el que corre WordPress: En este caso hablamos de datos relativos a la configuración de los servicios de PHP, MySQL y Apache. Si cualquiera de estos servicios no dispone de una correcta configuración o no están actualizados, supone un riesgo a la seguridad de nuestro sitio web.
  • Aspecto internos de la configuración de WordPress: Cualquier decisión de configuración en el panel de administración de nuestro sitio como permisos de los archivos puede implicar un riesgo a la seguridad.

Seguridad del entorno de ejecución

Hay que recordar que WordPress se ejecuta sobre una serie de servicios que son Apache, PHP y MySQL. Estos servicios no siempre son accesibles para su configuración, ya que en muchos casos estos son parte de un servicio contratado a una empresa de hosting y en este caso debemos contactar con esta empresa para solicitar cambios en la configuración. Sin embargo si nos es posible acceder a estos servicios para su configuración lo mínimo que deberíamos garantizar es:

  • El sistema debe encontrarse actualizado, tanto el sistema operativo como los servicios Apache, PHP y MySQL.
  • La base de datos es recomendable que no sea accesible desde el exterior para evitar ataques directos contra esta.

Seguridad en WordPress

Dentro del apartado de configuración de WordPress podemos centrarnos en distintos aspectos:

Temas y plugins instalados

plugins wordpress

Dentro del panel de administración de nuestro WordPress es habitual instalar diferentes temas y plugins para ir probando nuevas apariencias y funcionalidades que nos permitan dar un mejor servicio al usuario. Pero esto puede llegar a ser contraproducente, hay que tratar de:

  • Eliminar plugins y temas que no estemos utilizando, incluso si estos los tenemos desactivados. Una vulnerabilidad en cualquiera de estos puede comprometer la seguridad de nuestro sitio.
  • Considerar eliminar todos aquellos plugins que nos nos aporten ningún beneficio y estén activo, estos pueden no solo suponer un riesgo de seguridad sino que también pueden suponer un lastre en la carga y atención de los usuarios del sitio web.

Usuarios

usuarios wordpressUn tema que puede ayudar a mejorar mucho la seguridad de nuestro sitio web es aplicar una correcta política de seguridad sobre los usuarios del sitio. Es muy recomendable:

  • Reducir al mínimo el número de usuarios.
  • Desactivar la creación de nuevos usuarios, impide que cualquier visitante pueda tener su propia cuenta en nuestro sistema WordPress (Esto lo podemos configurar desde los Ajustes – Generales del panel de administración).
  • Es recomendable que los usuarios registrados tengan roles adaptados a su uso final, incluso si esto implica tener varias cuentas:
    • Los usuarios que se dediquen a crear artículos no deberían tener el rol de Administrador, ya que corremos el riesgo de revelar el nick de una cuenta de administración a los hackers. Es mucho más atractiva una cuenta con permisos de administración que una con permisos de edición.
    • Los usuarios con permisos de administración no deberían utilizar esta cuenta para escribir artículos para evitar que robots tomen como referencia el nombre del autor de los artículos y traten de obtener la cuenta de administración.
  • Es interesante hacer un seguimiento de cambios que realizan en su actividad diaria los distintos usuarios que modifican nuestro sitio web, sobretodo para poder analizar comportamientos extraños de sus cuentas. Para ello podemos instalar algún plugin como “PlainView Activity Monitor“.
  • Para evitar que con herramientas como WPScan puedan determinar una lista de usuarios y tratar de lanzar ataques de fuerza bruta con estos nombres obtenidos, modificaremos el .htaccess añadiendo al final de este:
# Evitar vulnerabilidad de listar usuarios
RewriteCond %{REQUEST_URI}  ^/$
RewriteCond %{QUERY_STRING} ^/?author=([0-9]*)
RewriteRule ^(.*)$ http://web-a-derivacion.com/# [L,R=301]

Comentarios

comentarios

WordPress dispone de un sistema interno para gestionar y publicar los comentarios de los usuarios asociados a nuestros artículos y páginas. Pero gestionar nosotros los comentarios con el sistema de WordPress es arriesgado para la seguridad de nuestro sitio. Puede suponer:

  • Un elevado coste en espacio de nuestra base de datos para almacenar comentarios.
  • Un riesgo de seguridad, ya que la base de datos puede ser víctima de un ataque de inyección SQL.

Lo ideal será delegar el sistema de comentarios en un servicio de un tercero. Actualmente hay varias soluciones completamente gratuitas como lo son:

  • Disqus: Es gratuito y muy sencillo de instalar en WordPress, basta con tener cuenta en Disqus e instalar desde nuestro panel de administración de nuestro sitio WordPress el plugin de Disqus y seguir las instrucciones.
  • Tenemos otros como IntenseDebate, Facebook

Actualizaciones automáticas

update wordpress

Si vamos a automatizar las actualizaciones debemos de contar con un sistema de backups automatizado de los archivos de nuestro sitio y de la base de datos. Este apartado es peligroso de aplicar, ya que las actualizaciones sin control pueden llegar a dejar inutilizado nuestro sitio.

Existen varios plugins que podemos instalar en nuestro sitio que nos permitirán configurar actualizaciones automáticas de nuestro sitio web, destacando actualmente Advanced Automatic Updates, con este plugin podremos configurar:

  • Actualización de versiones de WordPress, lo que tenemos que tener cuidado con la configuración de determinadas configuraciones.
  • Actualización de temas, este apartado es peligroso si hemos hecho modificaciones manuales en el código del tema que estamos utilizando, al actualizar el tema machacaremos cualquier modificación manual, por lo que debemos decidir con cuidado este apartado.
  • Actualización de plugins.

Discretos con la versión de WordPress

TopSecret wordpress

WordPress por defecto tiende a incluir en nuestro sitio web pistas sobre la versión que estamos utilizando. Esto es un riesgo de seguridad que permite a un atacante conocer que versión de WordPress estamos utilizando y en base a ese dato buscar posibles vulnerabilidades de la versión. Para evitar esto debemos corregir lo siguiente:

  • En el directorio raíz de nuestro sitio web (nuestrositio.com/readme.html), si accedemos vía FTP veremos que hay un archivo llamado readme.html, este fichero detalla la versión actual de nuestro sitio web tras una instalación o actualización del sistema WordPress. Tenemos dos opciones para tratar este riesgo de seguridad:
    • Tras instalar WordPress y tras cada actualización podemos borrar manualmente este archivo readme.html vía FTP.
    • Pero lo mas recomendable es crear en el mismo directorio un fichero .htaccess que proteja e impida el acceso al archivo readme.html. Y añadir lo siguiente:
<files readme.txt>
	Order allow,deny
	Deny from all
</files>
  • Por defecto muchos temas de WordPress incorporan la versión del WordPress que estamos utilizando dentro del código HTML de las páginas de nuestro sitio web. Para evitarlo tenemos que modificar el archivo functions.php (si actualizamos el tema este cambio se perderá) e incorporar lo siguiente:
remove_action('wp_head','wp_generator');
remove_action('wp_head','wlwmanifest_link');
remove_action('wp_head','rsd_link');

Protección de archivos y directorios

Archivos WordPress

Es muy importante proteger cierto ficheros como wp-config.php que contiene los datos de conexión a la BBDD, como también es importante proteger los directorios, ya que estos contienen datos sensibles que permiten a hackers detectar vulnerabilidades de nuestro sitio, esto lo pueden los hackers intentado acceder directamente a los archivos o directorios, o bien pueden hacer uso de buscadores para tratar de sacar información que estos han recogido ya que no hemos sido lo suficientemente previsores. Para proteger los archivos y directorios:

  • Para evitar que los buscadores indexen información de posibles vulnerabilidades, crearemos un fichero llamado robots.txt y lo pondremos en el directorio raíz de nuestro sitio web. En este fichero incluirá lo siguiente:
User-agent: *
Disallow: /cgi-bin/
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/plugins/
Disallow: /wp-content/cache/
Disallow: /wp-content/themes/
Disallow: /trackbak/
Disallow: /comments/
Disallow: /category/*/*
Disallow: */trackback/
Disallow: */feed/
Disallow: */comments/
Disallow: /*?
  • Para evitar que se indexen los directorios de nuestro sitio web, añadiremos al final del .htaccess del directorio principal:
Options All -Indexes

Instalar un plugin de seguridad

WORDPRESS

Es conveniente instalar una solución integrada de seguridad para WordPress, existen varios plugins para ello como:

  • iThemes Security
  • All In One WP Security

Personalmente prefiero All In One WP Security, con el que podremos:

  • Revisar una correcta configuración de permisos de todos los archivos y carpetas.
  • Bloquear fallidos intentos de inicio.
  • Evitar HotLinks.
  • Establecer unas mínimas normas de firewall.
  • Monitorizar usuarios.
  • Cambiar la dirección de login.
  • Establecer un sistema de CAPTCHA para evitar ataques de fuerza bruta e inyección SQL.
  • Mostrar un error genérico tras un intento de sesión fallido.
  • Automatizar backups de la BBDD.

 

  • Guillermo Ontiveros

    Test comment