Securizando WordPress

A medida que pasa el tiempo este dominio se va haciendo más y más grande.. ¡Gracias a ti! Con menos de un año de vida, Google Analytics me ha notificado que en marzo superé los mil usuarios mensuales. 

Esto es una gran noticia, pero a la vez me ha hecho pensar en que debería retocar un par de cosas de la seguridad del blog para estar completamente contento. Al fin y al cabo, tiene delito que un blog sobre seguridad informática carezca de ella. Por este motivo, hoy te traigo los pasos que he realizado para securizar wordpress.

Lo básico

Contraseñas fuertes y servicios actualizados. Esa es la base sobre la que se debe sostener todo lo demás. Asegurate de visitar periódicamente el panel de administración para actualizar todos los plugins, o las nuevas versiones de wordpress que hayan. De esa forma evitarás que un atacante pueda entrar explotando una vulnerabilidad conocida en una versión antigua.

A la hora de crear usuarios, wordpress indica cuan segura es la contraseña que elijes. Asegúrate de que sea una contraseña fuerte. Si quieres más información sobre contraseñas seguras, te recomiendo leer esta entrada.

HTTPS

Lo más prioritario era pasar de http a https. Cuando navegas por http, los datos no están cifrados. Si en esos datos hay información sensible, como usuarios o contraseñas, cualquiera que se ponga a la escucha e intercepte la comunicación podrá hacerse con esa información e incluso modificarla. Si bien es cierto que en este caso concreto no ofrezco la posibilidad de registro ni login en mi blog, aun así es importante mantener las comunicaciones cifradas.

Mediante el protocolo https, las comunicaciones entre el servidor y el cliente van cifradas, por tanto nadie que haga un man in the middle podrá obtener información sensible. Sin embargo, cifrar las comunicaciones no basta para obtener verdadera seguridad, puesto que no queda demostrada la autenticidad del servidor. Aunque tu conexión a un servidor vaya cifrada, si ese servidor ha suplantado al legítimo podría hacerse con toda la información que envíes mientras piensas que es el verdadero.

Para evitar estos ataques de phising surgen los certificados SSL. Estos certificados son la prueba de que una entidad certificadora avala que eres quien dices ser. Por tanto, este protocolo se basa en la confianza en terceros. Existen un conjunto de entidades certificadoras reconocidas mundialmente, y si una de ellas te dice que confía en ese servidor, entonces tú también debes hacerlo. Aunque este método también tiene sus inconvenientes. Existe la posibilidad de que hackeen una entidad certificadora y empiecen a emitir certificados falsos. Sin embargo, esto es más complicado y fácil de detectar y erradicar, por lo que este es el método utilizado hoy en día para autenticar las comunicaciones.

Hoy en día es muy sencillo conseguir uno de estos certificados, gracias a autoridades de certificación como Let’s Encrypt, que ofrece certificados X.509 gratuitos de manera automática, lo que reduce mucho la complejidad de la creación manual, la validación, firma, instalación y renovación de los certificados.

Desde mi hosting simplemente tuve que pulsar un botón, pero en un servidor web linux tan solo son necesarios un par de comandos para obtener el certificado.

Una vez tienes el certificado, basta con instalar en wordpress el plugin “Really Simple SSL” para forzar todas las comunicaciones por https, y que de esa forma todos los enlaces a la web antiguos que dirigían a http redirijan a https y sigan funcionando.

Google Captcha

Bajo la premisa de tener actualizados tanto wordpress como todos los plugins que tengamos instalados, la mayor debilidad que podemos encontrar es en la autenticación. 

Mediante el plugin de Google Captcha, que añade un pequeño reto para verificar que eres humano, evitamos que un atacante pueda utilizar fuerza bruta para intentar averiguar las credenciales de administrador.

Además, gracias a instalar este plugin me he librado también del spam que los bots suelen dejar en la caja de comentarios de cada post.

usuario Admin

Al instalar un wordpress, siempre se crea una cuenta de usuario por defecto llamada Admin, que posee todos los privilegios.  Conociendo el nombre de la cuenta de usuario, es más fácil hacerse con las credenciales, pues solo hay que tratar de averiguar la contraseña.

Es muy sencillo comprobar si un wordpress tiene la cuenta de Admin habilitada o no, puesto que wordpress permite la enumeración de usuarios. Basta intentar autenticarse como Admin poniendo cualquier contraseña. Si aparece un mensaje de error diciendo “Nombre de usuario no válido” es que no existe. Pero cuando el usuario es correcto aparece un mensaje de error como el siguiente:

Como es una de las primeras cosas que se mira a la hora de atacar un wordpress, voy a “cambiarle el nombre”. No es posible modificar el nombre del usuario una vez creado, por lo que he eliminado el usuario Admin y he creado otro con privilegios de administración.

Bloqueo de usuarios

Implementando Google Capcha, ya me he asegurado de que nadie pueda hacer fuerza bruta automatizando la entrada de contraseñas con algún programa. Pero, ¿y si mi contraseña es más adivinable de lo que creo? ¿Y si un humano empieza a probar y a probar, clicando correctamente en el captcha?

La mejor solución para evitar esto es limitar los intentos de login fallidos. Si alguien intenta acceder y falla un número de veces, pongamos 3, entonces el usuario se bloquea, para que no se pueda seguir intentando el acceso. Le llegará un mensaje al correo electrónico del usuario verídico, y podrá hacer login de nuevo.

Para implementar esto en wordpress hay un plugin llamado Loginizer.

Enumeración de usuarios

Como he comentado en el apartado de modificación del usuario Admin, wordpress permite por defecto la enumeración de usuario a través de sus mensajes de error. Sin embargo, con el plugin anterior, Loginizer, podemos modificar estos mensajes de error para que no revelen información alguna.

Escaner de vulnerabilidades

Para acabar, uno de los mejores plugins de seguridad es wordfence, una herramienta de monitorización que permite comprobar la seguridad del wordpress, analizarlo en busca de malware y detectar inyecciones maliciosas, puesto que actúa de firewall:

Además, esta herramienta también previene de ataques de fuerza bruta en el login, tal y como hace Loginizer. Y sin duda lo más útil que tiene son las notificaciones de seguridad. Cada vez que un plugin necesita actualizarse u ocurre cualquier incidencia de seguridad, notifica al administrador mediante un correo electrónico. Y una vez a la semana, manda un correo con todas las incidencias producidas:

 

 

Con estos cambios mi web ya tiene la seguridad básica necesaria para estar protegida ante posibles atacantes.

Lethani.

Deja una respuesta