Blindar WordPress

Mi padre tiene un don para las plantas, es la envidia del barrio.

No entiendo cómo las plantas pueden tener tanto lustre.

¿Será porque es tauro?

¿Les pone algún tipo de música?

¿Tiene una fórmula secreta para el abono?

Por mucho que le pregunto no me lo quiere decir ¡a mi! ¡su hijo!

blindar-wordpress

Así que me he puesto a observar.

Y la verdad no tiene tanto misterio.

Las riega metódicamente.

Las va rotando de sitio.

Y les cambia la tierra y hace la poda cuando toca.

El fertilizante lo puedes encontrar en cualquier parte.

¿Cual es el secreto?

Pues que es muy pesadito, o metódico.

No hay un día que no revise el jardín.

Aunque sólo sea 5 minutos.

Aplicado a nuestra página web

Si quieres ver tu web florecer, no vale con colgar tu página en internet y olvidarte, tienes que hacer un seguimiento y corregir si es necesario.

WordPress no es sólo un conjunto de ficheros php y páginas de estilo, es un entorno de trabajo modular y complejo que nos facilita la labor, pero que necesita de mantenimiento.

Ya he hablado antes sobre buenas prácticas de seguridad, hacer copias de seguridad o de mantener WordPress actualizado.

Y pienso que es interesante dar un paso más y blindar el núcleo de WordPress ("Hardening WordPress Core").

Pero yo he querido jugar con las palabras y llamarlo Gardening WordPress, para que no se nos olvide que por mucho que blindemos WordPress, mantener tu WordPress seguro, requiere dedicación.

Revisar tu instalación con frecuencia, y la mantenerla actualizada.

Vamos a ver en qué consiste y cómo se hace.

Gardening WordPress

Bloquear el acceso a la carpeta wp-includes

El núcleo de WordPress está compuesto por un conjunto de archivos y carpetas.

Wordpress Out Off The Box

Cualquiera con un poco de conocimiento sobre la estructura de carpetas puede acceder a estos archivos, y esto es peligroso si se trata de alguien con malas intenciones.

Para evitar esto se puede añadir instrucciones de configuración en el fichero .htaccess.

.htaccess es un fichero que contiene expresiones regulares que son interpretadas por el servidor.

Si no lo ves dentro de la carpeta de instalación de WordPress prueba a cambiar la configuración de los enlaces permanentes en Ajustes > Enlaces Permanentes.

Wordpress Enlaces Permanentes

Esto hace que se genere el fichero .htaccess que originalmente tendrá este contenido:


# BEGIN WordPress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>


# END WordPress

Debes situar el siguiente bloque de código:

# INICIO - Bloquear acceso a los ficheros include.

<IfModule mod_rewrite.c>
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]
</IfModule>


# FIN - Bloquear acceso a los ficheros include.

Antes del bloque de configuración de WordPress, para evitar que se pierda tu configuración en caso de actualización.

# BEGIN WordPress
...
# END WordPress

Ahora, si alguien intenta acceder a estos ficheros se bloqueará el acceso y será dirigido de vuelta a la página principal de la web.

El último paso consiste en actualizar la página y comprobar que todo va bien y puedes acceder a la página normalmente.

Si no es así, no hay que entrar en pánico, basta con deshacer los cambios y todo funcionará correctamente.

Para modificar el fichero .htaccess, puedes descargarlo vía ftp, actualizarlo y luego subirlo.

Y si te da reparo andar jugando con estas cosas es mejor recurrir a alguien con experiencia.

Bloquear el acceso al fichero wp-config.php

Este fichero es importante por varios motivos.

Hace posible que WordPress pueda acceder a la base de datos.

Pero también contiene información importante como el nombre de la base de datos, el nombre de usuario de la base de datos, contraseña de acceso a la base de datos y el prefijo de las tablas.

La buena noticia, es que podemos bloquear el acceso a este fichero igual que hemos hecho con el contenido de la carpeta wp-includes.

Añadimos este bloque de configuración al fichero .htaccess:

# INICIO - Bloquear acceso al fichero wp-config.php

<files wp-config.php>
order allow,deny
deny from all
</files>


# FIN - Bloquear acceso al fichero wp-config.php

Y evitamos que alguien desde internet pueda tener acceso al fichero wp-config.php.

Si necesitas modificar este fichero tendrás que hacerlo por ftp.

Igual que en el apartado anterior, no olvides actualizar para ver que todo va bien, si hay algún problema ya sabes como solucionarlo.

Cómo utilizar las claves de seguridad de WordPress

WordPress utiliza estas claves para comprobar que eres realmente quien dices ser.

Estas claves se comprueban en cada petición que haces al servidor, para asegurar que no hay otra persona haciendo cambios a tu contenido en tu nombre.

Por eso es importante comprobar que estas claves están en el fichero de configuración wp-config.php.


/**#@+
* 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', 'aF~>p4xX?V%?EF8`%2c{+7NOW6_Ow)_dHu#o61l+@n<m[,JrwHyN~l>7cx|[fB)W');
define('SECURE_AUTH_KEY', 'A]<t+trx`YKX?L{_,HfhT-Bb*ZTm[n_XV3h&.T|in3#P}iu)%u3-I7NO~1K^T:cD');
define('LOGGED_IN_KEY', '*l4Dec(A^/-844)C=pK-kk6}p]wfbNd]7 ;%B+5PgmjC:J*)AY?>h[5YR.>w[{SI');
define('NONCE_KEY', 'eXG +NJ|)e6C%VuX:|q;-(~>_cdRg<=h;3m<k%CU.Xn6~#cdM f>J`BY&jvVK/Wy');
define('AUTH_SALT', '$Qtx4>FJg+Z3|n-OrPe3,{_F[UGk-hM^B2,tYU#SsiJi~/jQ~aX_,Y%D,>ee,/R<');
define('SECURE_AUTH_SALT', 'fKTu%0-UX0[l6eE;]bEhdx5.b{}^%!E,w)~UQN{If>`o(EW|,V^EJ}Sgjdv@-On9');
define('LOGGED_IN_SALT', '>3`1 rv*qpL[X#+aKd|`bXZ*Z>7etep3:`g]lw]U*qA1V1gZsP|;z6V(6sc]3&2V');
define('NONCE_SALT', 'kQB@Ny_!Th~wC9!#^P2 Al;jlUQXMM6Nrzg0R/gBKn>)i?P{7n3Jw?t,,Mk)D(JW');

/**#@-*/


Es raro que pase, pero puede suceder que las claves no estén en el fichero por una mala instalación, o que por cualquier otro motivo necesites generar las claves otra vez.

En ese caso, puedes generar claves nuevas utilizando este enlace.

Wordpress Keys And Salts

A continuación, copias estas nuevas claves en tu fichero wp-config.php y guardas los cambios.

Tendrás que reiniciar la sesión y volver a identificarte en tu página, pero esta vez ya tendrás actuando las nuevas claves.

Recuerda:

  1. Comprobar que tienes las claves en tu fichero de configuración siempre que haces una nueva instalación de WordPress.
  2. Si tienes la intuición de que la seguridad de tu página está comprometida, genera un nuevo juego de claves y actualiza tu fichero de configuración con ellas.

Bloquea la edición de ficheros desde la consola de administración de WordPress

Por defecto, tienes acceso para editar los ficheros de temas y plugins desde la consola de administración de WordPress.

Esto es peligroso, porque si cambias algo en uno de los ficheros no puedes deshacer lo que has hecho como en un editor normal.

Y en caso de romper algo, te puedes quedar sin acceso a tu web a través del panel de administración.

Además, si alguien se cuela en la administración de tu WordPress irá directo a este editor para alterar lo que quiera a placer.

Para evitar esto, tenemos que pegar esta línea de código:

<code class=" language-php"><span class="token function">define<span class="token punctuation">(</span></span><span class="token string">'DISALLOW_FILE_EDIT'</span><span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code>

En el fichero wp-config.php


/**
* For developers: WordPress debugging mode.
*
* Change this to true to enable the display of notices during development.
* It is strongly recommended that plugin and theme developers use WP_DEBUG
* in their development environments.
*
* For information on other constants that can be used for debugging,
* visit the Codex.
*
* @link https://codex.wordpress.org/Debugging_in_WordPress
*/
define('WP_DEBUG', false);

define('DISALLOW_FILE_EDIT', true);
/* That's all, stop editing! Happy blogging. */

/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');


/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');

De esta forma, no sólo evitas que alguien ajeno a tu web pueda editar ficheros importantes, también evitarás tumbar tu propia web por accidente.

Conclusiones

Ya sabes en qué consiste blindar el núcleo de WordPress y cómo se hace, incluso puedes hacerlo utilizando un plugin como Sucuri.

gardening-wordpress-470-313

Esto no significa que te puedes olvidar de la seguridad de tu web, la verdadera seguridad de tu web viene de la revisión y el cuidado continuo.

¡Hasta Pronto!

 

0 Comments