Consigue que tu WordPress sea seguro (3ª parte)

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

Tablas instalación 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.

Exportar BBDD con phpMyAdmin

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:

1
2
3
4
5
6
7
/**
* 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_”.

1
2
3
4
5
6
7
/**
* 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 con la consulta SQL que te permitirá hacerlo de una tacada.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//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_ternmeta (esta última si tienes actualizado tu WordPress a la versión 4.4 o posterior). Para ello, desde phpMyAdmin, ejecuta las siguientes consultas SQL.

Para la Tabla nuevoprefijo_options

1
SELECT * FROM `nuevoprefijo_options` WHERE `option_name` LIKE '%wp_%'

Para la tabla nuevoprefijo_usermeta

1
SELECT * FROM `nuevoprefijo_usermeta` WHERE `meta_key` LIKE '%wp_%'

Para la tabla nuevoprefijo_ternmeta (a partir de WordPress 4.4)

1
SELECT * FROM `nuevoprefijo_termmeta` WHERE `meta_key` LIKE '%wp_%'

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.

¿Un poco lioso, no?, tranquilo que existe una opción de hacer todo esto con un plugin y, sin que sirva de referencia, es la que te voy a recomendar esta vez. Más que nada porque te vas a ahorrar líos y, lo más importante, tiempo.

El plugin se llama Change DB Prefix y sirve únicamente para eso, para cambiar el prefijo de las tablas de la BBDD.

Cuando instales este plugin, basta con ir al administrador de WordPress, a Ajustes ⇒ Change DB Prefix, introducir el nuevo prefijo y salvar los cambios.

Change DB Prefix

Y tras hacer esto, puedes tranquilamente desinstalar el plugin, es más, te lo recomiendo.

Actualización: Por alguna razón el plugin ha sido borrado del repositorio de WordPress. Voy a revisar que otro plugin hace lo mismo y os pongo el enlace. Mientras tanto, si necesitais hacerlo, os recomiendo hacer el cambio de prefijo con el script que os deje arriba 

Si en algún otro momento necesitas volver a cambiar el prefijo, basta con volver a instalarlo y repetir la acción.

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.

Editor de archivos de WordPress

Desde este editor simple puedes modificar los archivos del Theme que hays 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 vuestra 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.

1
2
/** 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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**#@+ 
* 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 vuestro wp-config.php, sustituyendo el trozo de código de ejemplo anterior. Te quedará algo parecido a esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**#@+
* 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 vuestra 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 vuestro #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 ni las de infinito ni las de ninguna otra Web).

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.

Nos vemos en Noviembre.

The following two tabs change content below.
Licenciado en Marketing. GAIQ, certificado en Adwords llevo más de 20 años trabajando en el mundo de las tecnologías. El "aterrizaje" en el mundo 2.0 forma parte de una evolución natural. Actualmente soy consultor Freelance y ayudo a pequeñas y medianas empresas a desarrollar sus estrategias de marketing en Internet.

Deja un comentario

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

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

A %d blogueros les gusta esto: