Instituto Nacional de ciberseguridad. Sección Incibe
Protege tu empresa. Sección empresas

Medidas de seguridad avanzadas en WordPress II

Fecha de publicación 21/04/2020
Autor
INCIBE (INCIBE)
Imagen de acompañamiento

En este artículo, continuación del de hace unos días, vamos a repasar algunas medidas de seguridad avanzadas con las que hacer tu sitio web, basado en WordPress, aún más robusto. Las medidas de seguridad tratadas en el artículo anterior Medidas de seguridad avanzadas en WordPress I fueron:

  • Actualizaciones automáticas del núcleo.
  • Protocolo SFTP.
  • Gestión de permisos en ficheros y directorios.
  • Deshabilitar el editor de ficheros.

Protección del directorio wp-admin

El directorio «/wp-admin/» es uno de los más importantes en cualquier instalación de WordPress, ya que contiene los archivos de administración, por lo que solamente debería ser accesible por los usuarios administradores del portal. Para proteger el acceso a esta área por defecto, WordPress solicita un usuario y contraseña, la cual debería ser lo más robusta posible, pero además se pueden implementar otra serie de medidas.

La mayoría de ciberataques dirigidos a la parte de administración de los gestores de contenidos se realiza de manera automática por medio de ataques de fuerza bruta o valiéndose de vulnerabilidades conocidas. Aplicando algunas configuraciones de seguridad adicionales se pueden mitigar la mayoría de estos ataques. Para el ciberdelincuente, el esfuerzo que supone atacar sitios web robustos no es rentable, ya que existen otros sitios potencialmente más fáciles de vulnerar.

Sistemas captcha

Los sistemas captcha, como ya se indicó en el artículo ¿Humano o bot? Protege tu web con sistemas captcha, sirven para identificar si el usuario es realmente una persona o se trata de un bot (un programa que prueba automáticamente parejas usuario-contraseña para acceder al panel de administración de la web o rellena formularios en busca de errores de programación para acceder al sistema de ficheros, por ejemplo). Puesto que la gran mayoría de ataques contra sitios web basados en WordPress se realizan de manera automática, implementar sistemas captcha añadirá una capa extra de seguridad contra los ataques automáticos.

Uno de los sistemas captcha más conocidos y populares es el que ofrece Google. Para poder utilizarlo únicamente es necesario contar con una cuenta de Google. Una vez se ha añadido el sitio web se obtendrá una clave pública y otra privada o secreta, que como su nombre indica, deberá mantener esa propiedad.

Para implementar el sistema captcha de Google se puede hacer de forma manual, para lo que se requieren ciertos conocimientos de programación, o utilizando un plugin específico. El plugin que se seleccione es importante que tenga las siguientes características:

  • Buenos comentarios de los usuarios.
  • Un elevado número de descargas.
  • Que esté probado en la versión más reciente de WordPress.
  • Cuente con soporte y actualizaciones.

La gran mayoría de plugins permiten configurar secciones específicas donde actuará el sistema captcha. Además de la página de inicio de sesión para acceder al panel de administración, se puede habilitar en otras secciones como el formulario de contacto o cualquier sección sensible de la web.

2FA o doble factor de autenticación

Habilitar un sistema de doble factor de autenticación es una de las medidas que más fortalecerá la seguridad del panel de administración del sitio web. Para habilitarlo existen multitud de plugins, aunque la mayoría están basados en Google Authenticator.

Es recomendable que estos plugins cuenten con las mismas características que las descritas en el apartado anterior. También es especialmente importante mantener todos los plugins actualizados a la última versión disponible, y en caso de que el soporte para el plugin elegido deje de estar disponible, es aconsejable buscar una alternativa que sí lo ofrezca.

Protección del directorio wp-includes y del archivo wp-config.php

En el directorio «/wp-includes/» se encuentra la gran mayoría de archivos que dotan de funcionalidad a WordPress, y sin los cuales el CMS no funcionaría correctamente. A este directorio no debería tener acceso ningún usuario que no fuera un administrador, por lo que se debe proteger adecuadamente, prohibiendo el acceso a cualquier otro.

El archivo «wp-config.php» es uno de los más importantes, ya que almacena información especialmente crítica para el funcionamiento del portal, como es la configuración de la base de datos, prefijos de las tablas, etc.; información altamente crítica que no debe ser accesible por ningún usuario salvo el administrador.

Para protegerlo se puede utilizar el fichero de configuración del servidor. Vamos a ver cómo configurarlo en dos de los servidores web más utilizados, aunque esto ha de realizarlo personal especializado. En caso de ser un servidor Apache, este fichero se llama «.htaccess»; si por el contrario se utiliza un servidor Nginx, el archivo se llama «nginx.conf».

Una vez realizada la copia se añadirá el siguiente código al comienzo del archivo .htaccess:

# Proteccion del directorio wp-includes.

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]

 

# Proteccion del archivo wp-config.php.

order allow,deny

deny from all

Para servidores Nginx se añadirá la siguiente configuración en el archivo nginx.conf:

# Proteccion del directorio wp-includes

location ~ ^/wp-admin/includes/ {

  return 403;

}

location ~ ^/wp-includes/[^/]+.php$ {

  return 403;

}

location ~ ^/wp-includes/js/tinymce/langs/.+.php {

  return 403;

}

location ~ ^/wp-includes/theme-compat/ {

  return 403;

}

 

# Proteccion del archivo wp-config.php.

location /wp-config.php {

  deny all;

}

Una vez realizados los cambios comprueba que el funcionamiento es correcto; de no ser así, restaura el fichero de configuración del servidor.

Cambiar el prefijo de las tablas de la base de datos

La base de datos de tu WordPress es donde se almacena toda la información de la web, como son las etiquetas, artículos, nombres de usuarios, contraseñas, etc. Esta base de datos está compuesta por múltiples tablas, que son las que almacenan la información y cuentan con unos nombres predefinidos iguales para todas las instalaciones de WordPress.

Conocer cuáles serán los nombres de las tablas utilizadas es una ventaja para los ciberdelincuentes. Por ello, WordPress implementa una medida de seguridad que consiste en añadir un prefijo a los nombres de las tablas para que todas las instalaciones no sean iguales. Por defecto este prefijo es «wp_», y ya que este prefijo es estático, no cumple su función adecuadamente.

Para comprobar y cambiar el prefijo actual de la base de datos se puede acceder al fichero de configuración «wp-config.php», pero para hacerlo con mayor comodidad se puede utilizar un plugin, como por ejemplo Brozzme DB Prefix & Tools Addons.

Una vez instalado y activado el plugin se accederá a la sección «Herramientas > DB PREFIX» del panel de administración. Como se puede ver en la imagen, el actual prefijo de las tablas es «wp_», por lo que es recomendable cambiarlo. Para ello, el plugin cuenta con una función que crea prefijos alfanuméricos aleatorios cada vez que actualiza la página. Es aconsejable elegir un prefijo con una longitud mínima de 8 caracteres.

Brozzme DB PREFIX. Change DB Prefix

Una vez modificados los prefijos se comprobará que el funcionamiento de la web es el adecuado; en caso afirmativo, se procederá a desinstalar el plugin, ya que su uso no será necesario. Como medida de seguridad básica se han de desinstalar todos aquellos plugins que no se utilicen.

¿Ya has implementado estas medidas y las anteriores? En próximas entradas continuaremos con más recomendaciones de seguridad para proteger tu gestor de contenidos WordPress.

Etiquetas