Vamos con la tercera entrega sobre como hacer que tu instalación de WordPress sea segura.
Hasta ahora hemos visto en el primer artículo cómo crear una contraseña segura y como dificultar que se sepa que usuario es el administrador de tu instalación de WordPress, y en el segundo artículo cómo proteger la carpeta wp-admin y como proteger uno de los archivos más críticos, en lo que a seguridad se refiere, de cualquier instalación de WordPress: el archivo wp-config. Así como ciertos plugins que nos pueden servir para realizar estas tareas.
Este mes voy a ser un poco más light y afrontaré tareas que, no por ser algo más simples, dejan de ser importantes y, en muchos casos, olvidadas:
- Modificar el prefijo de las tablas en la BBDD de WordPress.
- Desactivar el editor de archivos de WordPress.
- Configurar los keys y las salts de seguridad.
Modificar el prefijo de las tablas en la BBDD de WordPress
Por defecto cuando instalamos un WordPress, el prefijo de las tablas de la BBDD es “wp_”.
Si alguien quisiera atacar un sitio Web creado con WordPress lo primero que intentaría es crear un usuario en la tabla wp_users y dar a este usuario privilegios de administrador. Es por ello que, si no queremos facilitar el trabajo a los amigos de lo ajeno, deberíamos cambiar el prefijo “wp_” por otro.
Sí nos enfrentamos a una instalación nueva la opción es sencilla: Cambiar ese prefijo por el que deseemos.
El problema viene cuando ya tenemos funcionando un sitio Web y no se hizo esto. En este caso, deberemos modificar los prefijos de las tablas y las referencias a este prefijo que se guardan en la BBDD. Vamos a ello.
Lo primero, crea una copia de seguridad de la BBDD. Para ello, accede desde el cpanel de tu hosting al phpMyAdmin, selecciona la BBDD sobre la que vas a trabajar y pulsa sobre el botón “Exportar” que aparece en el panel derecho. Esto te llevará a una página en la que están las opciones de exportación, que puedes dejar por defecto (Método de exportación rápido, formato: SQL). pulsa el botón “Continuar” y en unos instantes, dependiendo de su tamaño, tendrás la BBDD descargada en tu ordenador.
Y ahora a la faena. Ya cuando estabas haciendo la copia de seguridad habrás podido ver, y anotar, el prefijo de las tablas de la BBDD. Así que lo primero que tienes que hacer es modificar este prefijo en la instalación de WordPress.
Esto es muy fácil, ya que el CMS guarda esta información en un único sitio: el archivo wp-config,php ¿Te suena verdad?. Accede mediante FTP lo editas y buscas lo siguiente:
/**
* WordPress Database Table prefix.
*
* You can have multiple installations in one database if you give each
* a unique prefix. Only numbers, letters, and underscores please!
*/
$table_prefix = 'wp_';
En una instalación que no haya sido modificada, encontrarás esta cadena en la línea 66 de nuestro wp-config.php, Una vez localizado, cambiamos el valor “wp_” por el prefijo que hayas escogido, ene ste artículo a modo de ejemplo vamos a utilizar “prefijo_”.
/**
* WordPress Database Table prefix.
*
* You can have multiple installations in one database if you give each
* a unique prefix. Only numbers, letters, and underscores please!
*/
$table_prefix = 'nuevoprefijo_';
Una vez hecho esto, deberás acceder de nuevo al phpMyAdmin para modificar los prefijos de las BBDD.
WordPress antes de la versión 4.4 creaba 11 tablas. A partir de esta versión crea una tabla adicional, así que te va a tocar renombrar, como mínimo 12 tablas, ya que habrás sido aplicado y tendrás tu WordPress al día. Y digo como mínimo porque si has instalado plugins que crean tablas, deberás además cambiar el prefijo de estas tablas adicionales.
Para cambiar estos prefijos, aunque puedes hacerlo cambiando una a una los nombre de las tablas dentro del phpMyAdmin, lo mejor es hacerlo en bloque mediante una consulta SQL. Tranquilo, te dejo una chuleta que te permitirá hacerlo de una tacada. Recuerda cambiar donde pone «nuevoprefijo_» por el prefijo que tu elijas.
//Si tu WordPress es anterior a la versión 4.4
RENAME TABLE `wp_commentmeta` TO `nuevoprefijo_commentmeta`;
RENAME TABLE `wp_comments` TO `nuevoprefijo_comments`;
RENAME TABLE `wp_links` TO `nuevoprefijo_links`;
RENAME TABLE `wp_options` TO `nuevoprefijo_options`;
RENAME TABLE `wp_postmeta` TO `nuevoprefijo_postmeta`;
RENAME TABLE `wp_posts` TO `nuevoprefijo_posts`;
RENAME TABLE `wp_terms` TO `nuevoprefijo_terms`;
RENAME TABLE `wp_term_relationships` TO `nuevoprefijo_term_relationships`;
RENAME TABLE `wp_term_taxonomy` TO `nuevoprefijo_term_taxonomy`;
RENAME TABLE `wp_usermeta` TO `nuevoprefijo_usermeta`;
RENAME TABLE `wp_users` TO `nuevoprefijo_users`;
//Si tu WordPress es versión 4.4 o posterior, deberás renombrar la tabla wp_termmeta
RENAME TABLE `wp_termmeta` TO `nuevoprefijo_termmeta`;
Y recuerda que también deberás renombrar el resto de tablas que hubieran creado los plugins que hayas instalado si estos existiesen.
Una vez hecho esto, hay que modificar las referencias a las tablas que se guardan dentro de la BBDD. Concretamente en las siguientes tablas: nuevoprefijo_options; nuevoprefijo_usermeta y nuevoprefijo_termmeta (esta última si tienes actualizado tu WordPress a la versión 4.4 o posterior). Para ello, desde phpMyAdmin, ejecuta las siguientes consultas SQL.
SELECT * FROM `nuevoprefijo_options` WHERE `option_name` LIKE '%wp_%' # Para la Tabla nuevoprefijo_options
SELECT * FROM `nuevoprefijo_usermeta` WHERE `meta_key` LIKE '%wp_%' # Para la tabla nuevoprefijo_usermeta
SELECT * FROM `nuevoprefijo_termmeta` WHERE `meta_key` LIKE '%wp_%' # Para la tabla nuevoprefijo_ternmeta (a partir de WordPress 4.4)
Cada una de estas consultas te devolverá más de un resultado, por lo que deberás modificar el valor wp_ por el nuevo prefijo que hayas escogido.
Desactivar el editor de archivos
Vamos con algo que se hace rápido y es muy sencillo, desactivar el editor de archivos de WordPress.
Lo habrás visto alguna vez, y es posible que te hayas atrevido a usarlo, o quizás no. Te hablo del editor de archivos del sistema que viene incluido en WordPress y al que puedes acceder a través de administrador en el menú Apariencia ⇒ Editor.
Desde este editor simple puedes modificar los archivos del Theme que hayas elegido en tu WordPress (tanto los css como las plantillas de páginas). bien, pues si tu puedes modificar estos archivos, cualquiera que tenga acceso también puede, y no me refiero tan solo a cualquiera que ataque tu Web, si no también a alguien que esté colaborando contigo, y puede liarla parda, muy parda.
La solución pasa por deshabilitar el acceso a este editor y se hace de una forma muy sencilla: Abriendo el archivo wp-config.php y agregando la línea que te dejo a continuación.
/** La siguiente instrucción deshabilita el editor de archivos de WordPress**/
define(‘DISALLOW_FILE_EDIT’, True);
Y con esto ya habrás desabilitado el editor de archivos de WordPress. Como te prometí es algo muy simple.
Configurar los keys y salts de seguridad
WordPress utiliza ocho claves de seguridad que impiden, o dificultan, el acceso a las contraseñas por parte de robots o programas que intentan asaltar la Web por fuerza bruta, además protegen las cookies de acceso que genera WordPress cuando un usuario se identifica, son las famosas Keys y su correspondientes valores de encriptación o salts. Y fueron agregadas en las siguientes versiones:
- WordPress 2.6: AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY
- WordPress 2.7: NONCE_KEY
- WordPress 3.0: AUTH_SALT, SECURE_AUTH_SALT, LOGGED_IN_SALT, NONCE_SALT
Estos valores deben ser configurarlos por el administrador y se puede cambiar todas las veces que quieras.
Para ello debes acceder al ya comentado archivo wp-config,php, quizás ahora vayas entendiendo porque insistía en el anterior artículo que era un archivo crítico que había que proteger… y buscar lo siguiente la primera vez.
/**#@+
* Authentication Unique Keys and Salts.
*
* Change these to different unique phrases!
* You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
* You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
* * @since 2.6.0
*/
define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');
/**#@-
*/
Como ves es muy descriptivo, en los comentarios tienes las instrucciones y la url del generador de claves que proporciona el propio WordPress para generar un nuevo juego de keys/salts
Una vez que accedas al generador, simplemente copia el resultado y pegalo en tu wp-config.php, sustituyendo el trozo de código de ejemplo anterior. Te quedará algo parecido a esto:
/**#@+
* Authentication Unique Keys and Salts.
*
* Change these to different unique phrases!
* You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
* You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
* * @since 2.6.0
*/
define('AUTH_KEY', 'g]-Muu}vU~-LXBc>nLO98S)qWR1w)@tRc;3%QU|1Q6s:*d|np-OyWavP42p=+-h[');
define('SECURE_AUTH_KEY', 'iB1rU4r+yg>8,2|yc{&t4)8i&6{q&BC!wIFNc4xv@!ch#F.>S3Q>G^bSu2l#zNDA');
define('LOGGED_IN_KEY', 'U%m<vKJctbx&UwE+U|cIy]vYkqK?|=;DR[9|%?|/}/_mjAm|buEv8+k%(Bi_+}I4');
define('NONCE_KEY', 'm-sdzgeLvg+?:_F#{Nc.eqeRc6+9V^b-^D .o*CbN!q-WJ&?_-Bn.w`0hZ=b}lUr');
define('AUTH_SALT', '}SBsc:9#Fi@H&4D*iS:<X542.F#2|F@<oQG-p>]6ax]cpMo#|:C_ii{nC<N-oB8/');
define('SECURE_AUTH_SALT', '(5|5$Am-jNOQ/[0iU[Y7v;Cb|XBB!*]1Q`~`8X7+bz=&mh*w[O)4}VG%>6RO;RC+');
define('LOGGED_IN_SALT', '>2Se-K_{hV+q+t4`W>^|*|u8**Z.iV^[MPpz[)FR6OJqwIx 6kWAWC[j.{?;7w*d');
define('NONCE_SALT', '/u50}WYM.wDR-#R`sM_N*dH2Io(_Pi%7JgF%6QR&a9y4JWsHPg T;4-w}!h:yKk#');
/**#@-
*/
Como te he comentado antes, puedes realizar esta operación tantas veces como desees. Cuando lo hagas, todos los usuarios que se hubieran logeado en tu Web, y que hubieran activado la opción de “Recordar mi contraseña”, deberán de logearse de nuevo.
Como recomendación, cambia los keys y salts de tu #WordpPress regularmente, por ejemplo cada tres/seis meses.
Y, por supuesto, nunca pero nunca, facilites estos códigos a nadie (el ejemplo que tenéis en este artículo es una generación que he hecho AdHoc, o sea que no son las de ninguna Web).
No te vayas todavía
Bien, como te dije, hoy iba a ser fácil y ligero. Estamos casi acabando, pero todavía nos queda lo siguiente:
- Añadir cabeceras de seguridad HTTP a nuestro servidor.
- Asignar los permisos adecuados a las carpetas y archivos de nuestro servidor Web.
- Hacer que tu WordPress no parezca un WordPress, y no de pistas
- Programar un sistema de backups.