Seguridad en wordpress

Cómo aumentar la seguridad de WordPress con wp-config.php

El archivo wp-config.php es fundamental para el funcionamiento de cualquier sitio web basado en WordPress. En él se almacenan datos como la conexión a la base de datos entre otros muchos ajustes de configuración. En este artículo vamos a ver cómo aumentar la seguridad de WordPress modificando el archivo wp-config.php.

1. Mover wp-config.php de sitio

Por defecto el archivo wp-config.php se almacena en el directorio raíz de la instalación WordPress. De forma alternativa, podemos mover el archivo al directorio padre de dicha instalación. Es decir, si por defecto se almacena en /public_html/wordpress/wp-config.php podemos moverlo a /public_html/wp-config.php.

No es necesario modificar ninguna configuración. WordPress trata de localizar por defecto el archivo wp-config en la raíz de la instalación y, si no lo encuentra, lo busca en el directorio padre.

2. Establecer secret keys en wp-config.php

La seguridad de WordPress se puede fortalecer estableciento claves secretas (secret keys) en el archivo wp-config.php. Una secret key es un semilla que hace que el sitio web sea más dificil de ser hackeado añadiendo elementos aleatorios (la semilla) a la contraseña que hemos establecido. Estas claves no son obligatorias para que WordPress funcione correctamente, pero añaden una seguridad extra.

Las claves son varias y se almacenan en una serie de variables:

  • AUTH_KEY, SECURE_AUTH_KEY y LOGGED_IN_KEY. Se utilizan para generar la información que se almacena en las cookies del usuario.
  • NONCE_KEY, para generar los token de seguridad de las URL o nonce que utiliza WordPress.
  • Su semillas, que se llaman igual pero acaban en SALT en vez de en KEY.

¿Cómo generar estas claves?

Tenemos dos métodos

  • Visitar el Generador de secret keys de WordPress en https://api.wordpress.org/secret-key/1.1/salt/. Obtendremos de inmediato una serie de claves definidas a modo de variables para incorporar en el fichero wp-config.php.
    Secret keys WordPress
    Secret keys WordPress

    Recordad que cualquier variable que añadamos a wp-config.php debe de escribirse debajo de la leyenda /* That’s all, stop editing! Happy blogging. */.

  • Escribir a mano las secret keys utilizando nuestra propia clave supersecreta. La idea es que la frase sea los más aleatoria y única posible.

Las secret keys se pueden cambiar en cualquier momento. Solo afectará a aquellos usuarios que se encuentren conectados en el momento del cambio, que tendrán que volver a conectarse al cambiar la información de sus cookies.

3. Cambiar el prefijo de las tablas de la base de datos de WordPress

En las instalación de WordPress podemos modificar el prefijo de las tablas que se crean en la base de datos. Por defecto es wp_ pero podemos poner el que queramos. De este modo, si alguien logra hackear nuestro sitio, le pondremos más difícil el acceso a las tablas de MySQL.

$table_prefix = 'miprefijo_';

Si queremos hacer el cambio una vez que hemos instalado WordPress tendremos que utilizar algún plugin ( Change DB Prefix  o Change Table Prefix) y asegurarnos de hacer un backup de la base de datos.

4. Cambiar la localización de los directorios más comunes

Podemos cambiar la localización de algunos los directorios de la instalación de WordPress introduciendo las variables adecuadas en el fichero wp-config.php para que WordPress sepa donde localizarlos. Por ejemplo la de /wp-content. Sin embargo, es muy aconsejable probarlo antes en un servidor o instalación de desarrollo ya que si algún plugin no está bien programado y no hace uso de las constantes de localización de directorios, su sitio puede dejar de funcionar.

Directorio wp-content

Tenemos que añadir dos variables a wp-config.php:

define( 'WP_CONTENT_DIR', $_SERVER['DOCUMENT_ROOT'] . '/nueva-ruta/wp-content' );

define( 'WP_CONTENT_URL', 'http://misitio.com/nueva-ruta/wp-content');

WP _ CONTENT _ DIR es la ruta absoluta en el servidor al directorio /wp-content; WP _ CONTENT _ URL es la URL completa del directorio.

Directorio /wp-content/plugins

En vez de mover todo el directorio /wp-content podemos optar por hacerlo únicamente por el directorio donde se instalan los plugins de Worpress: /wp-content/plugins. De nuevo, tenemos que añadir dos variables al fichero wp-config.php:

define( 'WP_PLUGIN_DIR', $_SERVER['DOCUMENT_ROOT'] . '/nueva-ruta/wp-content/plugins' );

define( 'WP_PLUGIN_URL', 'http://misitio.com/nueva-ruta/wp-content/plugins');

Directorio /wp-content/uploads

Del mismo modo podemos mover únicamente el directorio de subida de archivos o /wp-content/uploads, aunque deberemos de darle otro nombre distinto de uploads. Tenemos que añadir esta variable al fichero wp-config.php:

define( 'UPLOADS', 'nueva-ruta/wp-content/mis-archivos' );

Directorio /wp-content/languages

También podemos definir otro directorio donde se almacenen los archivos de lenguaje .mo. Es necesario definir la variable LANGDIR en wp-config.php:

define( 'LANGDIR', '/wp-content/nueva-ruta/languages' );

5. Forzar acceso de usuarios por SSL

Podemos forzar a que cualquier usuario que haga login en nuestro WordPress se conecte mediante el protocolo HTTPS. De este modo todos los datos enviados entre el usuario y el sitio web estarán encriptados mediante SSL. Es necesario añadir en wp-config.php la siguiente línea:

define( 'FORCE_SSL_LOGIN', true );

Por supuesto, para que esto funcione, es necesario que el servidor esté configurado para poder funcionar con SSL. El mejor modo de asegurarse es probando https://www.misitio.com. Si funciona tenemos SSL disponible. En caso contrario tendremos que contactar con la empresa de hosting.

6. Forzar que las páginas de administración utilicen SSL

Podemos también forzar a que todas las páginas de la administración, las que se encuentran bajo /wp-admin, utilicen también el protocolo HTTPS. Se activa esta opción añadiendo en el wp-config.php la siguiente opción:

define( 'FORCE_SSL_ADMIN', true );

Al igual que en punto anterior, toda la información entre la administración y el sitio web pasará encriptada, aunque esto puede resultar en una cierta ralentización. Recordad que el sitio debe de tener correctamente configurado SSL para que esto funcione.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.