Ataque de fuerza bruta a WordPress

4 medidas para evitar ataques de fuerza bruta en tu WordPress

¿Qué son los ataques de fuerza bruta, por qué los utilizan los atacantes y cómo se pueden evitar estos ataques en tu WordPress? Seguro que te estás haciendo preguntas como éstas al tratar este tema. Hemos recopilado las respuestas a estas preguntas.

¿Qué son los ataques de fuerza bruta?

Los ataques de fuerza bruta son intentos de acceder a tu sistema (en tu caso, probablemente tu web WordPress). Esto se hace intentando adivinar un nombre de usuario y la contraseña correspondiente. Después de todo, esta cuenta ya tiene acceso al sistema. 

Es un método muy simple y primitivo (el nombre lo dice todo: fuerza bruta) que sigue siendo muy eficaz. Al mismo tiempo, también es muy fácil de prevenir.

¿Qué tipos de ataques de fuerza bruta existen?

Hay pequeñas pero sutiles diferencias entre los ataques de fuerza bruta y sus escenarios de ataque. Los tipos más comunes pueden dividirse en 5 categorías:

  1. Ataque simple de fuerza bruta
  2. Ataque de diccionario
  3. Ataque híbrido de fuerza bruta
  4. Ataque de fuerza bruta inversa / Pulverización de contraseñas
  5. Relleno de credenciales

A continuación presentamos cada una de estas categorías en detalle.

"*"indica que los campos son obligatorios

Consentimiento*
Este campo es de validación y no debe modificarse.

1. Ataque de fuerza bruta simple

Esta es la forma más pura de ataque de fuerza bruta. Prueba cualquier combinación de caracteres, uno por uno, sin ninguna investigación o procedimiento aparte, salvo el simple recuento de caracteres hacia arriba o hacia abajo.

Ataque simple de fuerza bruta a WordPress
Créditos: Matthias Held

Este método es sencillo, pero cuesta tiempo o mucha potencia de cálculo. Sin embargo, con procesadores cada vez más potentes o la posibilidad de desencadenar muchos sistemas diferentes simultáneamente sobre un objetivo de ataque (por ejemplo, con la ayuda de botnets o servidores en la nube), sigue siendo un método válido. 

Hay pruebas de laboratorio y aplicaciones del mundo real que pueden descifrar una contraseña de 8 caracteres en menos de 12 minutos. A medida que la tecnología avance, será aún más rápido y fácil llegar al objetivo. Por lo tanto, este método sigue siendo popular entre los atacantes que se dirigen específicamente a un objetivo concreto.

Ventaja: cualquier contraseña puede ser adivinada.
Desventaja: puede llevar mucho tiempo y requiere mucha potencia de cálculo.

Buenos métodos de defensa: utiliza contraseñas largas con una amplia gama de caracteres.

2. Ataque de diccionario

A diferencia del método de fuerza bruta simple, el ataque de diccionario utiliza un registro existente para probar.

Pueden ser datos de diferentes fuentes:

  1. Los diccionarios actuales, por ejemplo, todas las palabras de la RAE.
  2. Listas de contraseñas, como las 10.000 más utilizadas.
  3. Contraseñas de violaciones anteriores (nombres de usuario y contraseñas de hackeos anteriores de sitios web y aplicaciones).

La primera variante es cada vez menos importante, pero las dos últimas se han fortalecido con los años, porque con el aumento de los ciberataques, la cantidad de datos de estas listas también aumenta, naturalmente.

Ataque de diccionario por fuerza bruta a WordPress
Créditos: Matthias Held

Ventaja: Como a los usuarios les gusta utilizar contraseñas fáciles de recordar, suelen ponérselo fácil y utilizar palabras sueltas del diccionario o nombres y hacerlo repetidamente en todos los servicios, webs y apps. Por lo tanto, la probabilidad de éxito es bastante alta y el método es significativamente más rápido que una simple fuerza bruta.


Desventaja: la probabilidad de éxito ya no es del 100%.

Buenos métodos de defensa: no utilices palabras sueltas del diccionario ni nombres, objetos o similares. Además, emplea la misma contraseña solamente para una cuenta y no para varias. 

3. Ataque de fuerza bruta híbrido

El Ataque de Fuerza Bruta Híbrida es una combinación del Ataque de Fuerza Bruta Simple y el Ataque de Diccionario.


En este caso, se toma una palabra de la fuerza bruta simple y se combina con posibles números que se utilizan a menudo, como el año de nacimiento o el aniversario de boda. Esto limita drásticamente el número de intentos potenciales y, por tanto, simplifica el proceso de ataque.

Ataque híbrido de fuerza bruta a WordPress
Créditos: Matthias Held

Ventaja: este método tiene la misma ventaja que el de la fuerza bruta de diccionario, solo que aquí el número de intentos se incrementa y se extiende por un alto número de intentos con la simple adición de caracteres como smileys en forma de texto o números de año(Maga2020 es un ejemplo famoso).
Desventaja: al igual que con la fuerza bruta de diccionario, la probabilidad de éxito ya no es del 100%.

Buenos métodos de defensa: evita utilizar fechas o números importantes para ti en las contraseñas.

4. Ataque de fuerza bruta inversa o pulverización de contraseñas

Los atacantes intentan combinar una contraseña con diferentes nombres de usuario. El nombre de usuario varía, pero la contraseña sigue siendo la misma.

Ataque inverso de fuerza bruta a WordPress
Créditos: Matthias Held

Ventaja: como ya se ha descrito anteriormente, la gente tiende a reutilizar sus contraseñas y a utilizar las más memorables posibles. Esto también se aplica a este tipo de ataques. Además, evita un bloqueo (bloqueo de acceso a la cuenta) si se realizan demasiados intentos en la misma cuenta de usuario.

Desventaja: este método puede dar lugar a muchos accesos, pero quizás no a las cuentas que deseas.

Buenos métodos de defensa: dado que aquí también se utilizan mayoritariamente listas estándar para las cuentas de usuario (en la medida en que estas no pueden ser leídas ), es aconsejable, al igual que con la contraseña, elegir un nombre de usuario difícil de adivinar con muchos caracteres alfanuméricos y especiales.

5 Relleno de credenciales

Los datos de infracciones anteriores (ver Ataque al diccionario, punto 2) también desempeñan un papel en este caso. El relleno de credenciales no hace otra cosa que reutilizar los datos de inicio de sesión de las violaciones existentes.

Por ejemplo, si has utilizado el nombre de usuario yourmail@yourwebsite.com y la contraseña Cola123
en algún sitio web o una app
y estos datos han salido a la luz a través de una brecha, los atacantes los utilizarán para iniciar sesión en otros servicios y apps.

Relleno de credenciales por fuerza bruta en WordPress
Créditos: Matthias Held

Este ataque tiene muchas posibilidades de éxito y es cada vez más popular. Por lo tanto, es uno de los más peligrosos en este momento.

Puedes comprobar si una de tus cuentas ya ha sido vulnerada en el sitio web haveibeenpwned.com.

Raidboxes y las infracciones

Al crear una nueva cuenta de usuario, Raidboxes comprueba si la contraseña ya ha sido utilizada en una infracción(de forma anónima e irrastreable).

Ventaja: aquí también entra en juego el hecho de que las personas son animales de costumbres. La mayoría de la gente utiliza la misma dirección de correo electrónico y la misma contraseña para muchos servicios. Esto también evita que se bloqueen las cuentas, como ocurre con la fuerza bruta inversa.

Desventaja: con este ataque, tienes que averiguar de antemano si la persona a cuya cuenta quieres acceder también utiliza el servicio/sitio web/aplicación. Sin embargo, si simplemente quiere acceder en primer lugar, es un método muy exitoso.

Buenos métodos de defensa: no utilices nunca los mismos datos de acceso más de una vez. Mantenlos únicos en todos los lugares donde te registres.

¿Cómo puedo proteger mi sitio web WordPress de los ataques de fuerza bruta?

A menudo leo y escucho el consejo: "Usa solamente contraseñas fuertes".

Esto puede ser cierto en principio, pero con el tiempo y los recursos suficientes, cualquier combinación de inicio de sesión puede ser descifrada por fuerza bruta si no se utilizan otras medidas de protección.

Estos ataques también suponen una carga evitable en tu servidor, y esto no solo perjudica el tiempo de carga de tu sitio web, sino también tu bolsillo si tu proveedor de hosting cobra por tráfico. 

El mejor método sigue siendo evitar que estos ataques se produzcan en primer lugar y bloquear el acceso por completo.

A nivel de servidor

Acción 1: Bloquear las solicitudes no autorizadas a tu formulario de acceso

Puedes utilizar una combinación de inicio de sesión, por muy segura que sea, se necesitaría mucho tiempo, potencia de cálculo y ninguna protección adicional para descifrarla.
De hecho, la forma más eficiente es crear una protección que bloquee completamente cualquier solicitud no autorizada a tu formulario de inicio de sesión WordPress. De este modo, los ataques automatizados y manuales no llegarán a buen puerto. Al final, esto también protege a tu servidor.

Hay varias posibilidades para ello. No todas las posibilidades encajan, esto depende de la experiencia técnica que tengas y de las opciones de configuración que tengas con respecto a tu DNS y ajustes del servidor. 

Consejo: crear una lista de IPs permitidas


Protección: 🔒🔒🔒🔒🔒
Esfuerzo técnico: 🛠️🛠️🛠️

Si siempre accedes a internet con la misma dirección IP, por ejemplo porque tienes tu propia VPN o una IP fija en tu agencia, el método más seguro es crear una lista de permitidos para esta IP en el /wp-admin y /wp-login.

Apache

Si tu servidor web funciona con Apache, añade esta parte a tu .htaccess:

ReescribirEngine en

RewriteCond %{REQUEST_URI} ^(.*)?wp-login\\\Nde.php(.*)$ [O]

RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$

RewriteCond %{REMOTE_ADDR} !^123\\Nde.123\Nde.123$ 

RewriteRule ^(.*)$ - [R=403,L]


Importante:
Ten en cuenta que en las líneas que contienen REMOTE_ADDR, solo tienes que sustituir los NÚMEROS por los respectivos números de tu IP.
Por ejemplo, si tu IP es 95.217.228.176, la línea debería tener la siguiente apariencia:

RewriteCond %{REMOTE_ADDR} !^95\.217\.228\.176$

Para cada dirección IP permitida, añada una línea separada. A continuación, reinicia el servicio de Apache para aplicar los cambios.

Nginx

Añade este fragmento al bloque del servidor del archivo de host virtual. De nuevo, para cada dirección IP permitida hay que añadir una línea de permiso.

location = /wp-login.php {

     allow 192.168.1.1; #Dirección IP 1 por cada dirección IP permitida una línea

     permitir 172.16.1.1; #dirección IP 2

     negar todo;

     incluir fragmentos/fastcgi-php.conf;

     fastcgi_pass unix:/run/php/php7.4-fpm.sock;

     }

Reinicia tu servicio nginx para aplicar los cambios.

Consejo: utiliza el cortafuegos CDN


Protección: 🔒🔒🔒🔒🔒
Esfuerzo técnico: 🛠️

Los CDNs pueden ofrecer una muy buena protección configurando el firewall para que conmute una consulta captcha antes del formulario de acceso.
Aquí hay un tutorial para Cloudflare. En el plan gratuito de Cloudflare puedes crear hasta cinco reglas.

Inicia sesión en tu panel de control Cloudflare, dirígete a Firewall y crea una nueva regla de firewall.

2. He aquí los datos:

Firewall CDN de fuerza bruta de WordPress

Eso fue todo.

Sugerencia: crear una lista de bloqueo a través de Fail2Ban


Protección: 🔒🔒🔒🔒
Esfuerzo técnico: 🛠️🛠️🛠️🛠️

Si no tienes una IP fija y no utilizas una CDN, puedes crear una lista de bloqueo a través de Fail2Ban. Puedes encontrar buenos tutoriales aquí:

Ten en cuenta que, sin embargo, deberías adaptar esto específicamente a la URL /wp-login.

Consejo: utilizar el dashboard de Raidboxes

Protección: 🔒🔒🔒🔒🔒
Esfuerzo técnico: 🛠️

En combinación con un nombre de usuario y contraseña seguros y Raidboxes Single Sign On.

Los/as clientes/as de Raidboxes ya disponen de un módulo de fuerza bruta configurable en cada una de sus instancias.
Junto con el inicio de sesión único, esta es una de las configuraciones de seguridad más altas que puedes adquirir sin ningún esfuerzo técnico.

En el propio WordPress

Si has seguido estos pasos, está muy bien protegido contra los ataques.
Sin embargo, si no puedes aplicar estas soluciones porque no tienes acceso a la configuración de tu servidor o a los registros DNS para configurar una CDN, tengo otros pasos para ti.

Medida 2: Evitar la enumeración del nombre de usuario

Antes de pasar a las contraseñas seguras, empecemos por el principio: con el nombre de usuario.

Los nombres de usuario representan el 50 por ciento de los accesos. WordPress, por desgracia, hace que sea muy fácil leer el nombre de usuario de todas las cuentas creadas con derechos de administrador, y  esto está automatizado. Puedes evitarlo haciendo algo tú mismo/a y asegurando tu WordPress, o instalando los siguientes plugins.

Consejo: Solución a través de plugins


Protección: 🔒🔒🔒🔒
Esfuerzo técnico: 🛠️

Plugin 1: Unified Login Error Messages
Este plugin suprime la salida de diferentes mensajes de error por intentos de inicio de sesión incorrectos. Esto se debe a que actualmente WordPress emite un mensaje de error diferente si un nombre de usuario existe o no. De este modo, se puede comprobar fácilmente si el nombre de usuario introducido existe.

Plugin 2: Detener la Enumeración de Usuarios
Detener la Enumeración de Usuarios hace exactamente lo que dice: bloquea las peticiones no autorizadas a tu WordPress, por ejemplo para leer los nombres de los usuarios a través del archivo de autores.

Consejo: solución a través de functions.php

Protección: 🔒🔒🔒🔒
Esfuerzo técnico: 🛠️🛠️

Si prefieres tomar el control tú mismo/a, puedes ajustar functions.php del theme activo (por favor, haz una copia de seguridad primero).

Añade el siguiente código:

Código PHP

// If the user is not authenticated as an admin
if (!is_admin()) {
// RegEx to check if the request went to an “/author=INT” endpoint
if (preg_match('/author=([0-9]*)/i', $_SERVER['QUERY_STRING'])) die();    add_filter('redirect_canonical', 'stop_user_enum', 10, 2);
}
function stop_user_enum($redirect, $request) {
// // RegEx to check if the the request went to an “/author=INT” endpoint but with the permalink furl format
if (preg_match('/\?author=([0-9]*)(\/*)/i', $request)) die(); else return $redirect;
}

Consejo: utilizar el dashboard de Raidboxes


Protección: 🔒🔒🔒🔒
Esfuerzo técnico: 🛠️

Los/as clientes/as de Raidboxes se benefician de soluciones ya establecidas a través del dashboard de Raidboxes. No hay nada más que hacer aquí que activarlas.

Medida 3: "Utiliza contraseñas seguras"

Nota: En Raidboxes, al registrar una nueva cuenta, preguntamos detalles específicos a la hora de asignar las contraseñas que dificultan mucho las consultas por fuerza bruta. Esto incluye: 

  • una longitud mínima preestablecida,
  • la complejidad,
  • si la contraseña se puede encontrar en el diccionario,
  • si contiene una fecha
  • o si ya ha habido en una ruptura de contraseña conocida (anónima y no rastreable).

Las contraseñas son deficientes porque pueden ser adivinadas (fuerza bruta), leídas (key logger, etc.), leídas en voz alta (debido a la falta de encriptación/almacenamiento en las memorias de datos). Solo reconocen la autorización de un dispositivo final, pero no la identidad de la persona que está detrás y suelen ser difíciles de recordar (si son "seguras").

Para este último problema, existen gestores de contraseñas como 1Password, BitWarden, KeePass y otros. 

Cuando trabajamos en un entorno WordPress, tenemos que aceptar que hay que usar buenas contraseñas.

Cómo identificar una contraseña segura

Una contraseña fuerte o segura es una contraseña larga con cierto grado de complejidad. 

Sí, la longitud de la contraseña es más importante que la complejidad. Una contraseña de 8 caracteres puede ser adivinada por 25$USD en 12 minutos, incluso si está compuesta por muchos caracteres especiales, letras mayúsculas y números.

El siguiente GIF ilustra muy bien por qué la longitud tiene más peso que la complejidad:

Contraseña segura por fuerza bruta en WordPress
Créditos: Intel Security // Intel.com

Los hackers tampoco quieren invertir mucho dinero o tiempo en cálculos intensivos de contraseñas largas. Por lo tanto, la regla general es: cuanto más larga sea tu contraseña, mejor.

No obstante, las contraseñas largas y complejas son difíciles de recordar.

¡Cierto!, pero en la era de los gestores de contraseñas, solo tenemos que recordar una contraseña larga y compleja y dejar que estos gestores creen y almacenen el resto.

Si tenemos esta única contraseña y, en el mejor de los casos, la cambiamos de vez en cuando, estamos en el lado seguro.

Aquí tienes un secreto a voces sobre cómo crear contraseñas largas y complejas y recordarlas a la primera:

Contraseñas complejas de fuerza bruta en WordPress
Créditos: xkcd.com 

Esto significa que podemos tomarnos al pie de la letra esta tira cómica de XKCD y crear una contraseña larga siguiendo uno de los patrones siguientes:

Asientotren+campoverde-7Parpadeos

O utilizamos frases completas con un poco más de complejidad:

Como_jamón_1_vez_al_día

Hemos creado una frase relativamente sin sentido con caracteres especiales y un número, que es muy muy difícil de adivinar y al mismo tiempo memorable (más puntos por la rima). Esto también se llama frase de paso.

Muchos gestores de contraseñas, como BitWarden, crean esas frases de contraseña memorables pero complejas para ti.

Recomendación: utilizar un nombre de usuario seguro

Como ya se ha dicho: el 50% de tu acceso (login) es el nombre de usuario.

Si una persona atacante conoce esta parte del acceso, entonces la mitad está hecha. Lo único que queda es la contraseña. Así que no utilices nombres de usuario como admin, administrador o tu nombre, no utilices el nombre de tu o vuestro sitio web o el dominio o cualquier cosa que tenga que ver con sitio en sí. 

Ejemplo

Si tu sitio se llama www.ireallylovecats.com, no selecciones un nombre que tenga que ver con gatos

Mejor aún, toma el mismo truco de la contraseña de arriba y utiliza una frase larga y añada complejidad como asfalto/puede/también/con/7/especies.

Crea una contraseña en Raidboxes

Crea una contraseña y un nombre de usuario con una longitud máxima (en WordPress actualmente 60 caracteres para el nombre de usuario y 64 caracteres para la contraseña, consulta las propiedades de la base de datos) y muchas letras, números y caracteres especiales. Entonces simplemente usa el Single Sign On en dashboard, un inicio de sesión seguro con un solo clic.

Medida 4: Plugins de seguridad

Sugerencia: plugins polivalentes

Protección: 🔒🔒🔒🔒

Esfuerzo técnico: 🛠️🛠️ a 🛠️🛠️🛠️

Hay muchos plugins de seguridad para WordPress en el mercado, por ejemplo:

Todos estos plugins de seguridad ofrecen una protección de fuerza bruta integrada y mucho más. Para la mayoría de los sitios web WordPress, la instalación y el mantenimiento de estos plugins serán una protección suficiente. Asimismo, la configuración y el mantenimiento son mínimos.

Sin embargo, los plugins presentan una desventaja (en la mayoría de los casos pequeña): la carga en el servidor debida a la fuerza bruta no puede ser reducida por dichos plugins. Estos plugins necesitan un proceso PHP para comprobar si el acceso es válido, si la IP no está en la lista de bloqueo, etc.

Todo esto supone una carga para el servidor por cada petición. Por supuesto, esto sigue siendo menos que un intento de inicio de sesión en sí mismo, y hasta que el servidor se vea realmente afectado, el ataque debe tomar dimensiones casi de D/DOS, pero no se puede despreciar.

No obstante, volvamos a las numerosas ventajas de los plugins: si se mantienen siempre actualizados, los nuevos tipos de ataques se detectan y mitigan rápidamente sin que tengas que hacer nada.

Consejo: ocultar el inicio de sesión de WP

Protección: 🔒

Esfuerzo técnico: 🛠️

"Security through obscurity" (en español: "seguridad a través de la oscuridad") es una frase que se utiliza a menudo en seguridad para este método.

En última instancia, significa intentar detener los ataques simplemente disfrazando un problema. Esto funciona bien en algunos casos, porque los ataques de fuerza bruta no pasan por el formulario de acceso, sino que utilizan parámetros de consulta para iniciar los intentos de acceso.


Solo por el hecho de que la URL por defecto como /wp-admin o /wp-login.* no sea accesible, no quiere decir que estos ataques se detendrán.

Conclusión

Espero haber sido capaz de explicar los diferentes tipos de ataques de fuerza bruta y darte consejos sobre cómo proteger tu WordPress de ellos en el futuro. Si tienes alguna otra pregunta, nos encantaría leerla.

¿Te ha gustado el artículo?

Con tu valoración nos ayudas a mejorar aún más nuestro contenido.

Escribe un comentario

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