Cómo podemos proteger Nuestro Servidor de Ataques de fuerza Bruta

Si tienes un servidor Linux, este artículo te interesa. Voy a explicar una forma muy simple para aumentar la seguridad del servidor y evitar que usuarios malintencionados puedan acceder a él o adivinar tus contraseñas.

Seguro que si sigues interesado en este tema es porque dispones de un servidor Linux y acertaría si digo que te conectas a él a través de SSH. Pues bien, voy a enseñarte a evitar que usen la fuerza bruta para descubrir tu contraseña de acceso.

Lo primero que tenemos que hacer es instalar fail2ban. En debian podemos usar este comando ‘apt install fail2ban‘.

Una vez hecho, configurarlo es muy sencillo, debemos crear un fichero que indique el servicio que queremos proteger y como queremos hacerlo. Vamos a editar el siguiente fichero ‘nano /etc/fail2ban/jail.local

Un ejemplo para SSH sería este

[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 10
findtime = 60

En este caso si se detecta que se intenta acceder más de 10 veces (maxretry) o varias veces en menos de 60 segundos (findtime) banea esa IP.

Una vez editado ese fichero es necesario reiniciar ‘sudo systemctl restart fail2ban‘. También puedes comprobar el estado de fail2ban con el siguiente comando ‘sudo systemctl status fail2ban‘.

Y para revisar que la configuración que has añadido está funcionando puedes hacerlo así: ‘sudo fail2ban-client status sshd‘.

También es posible que quieras desbloquear a un usuario, para ello debes utilizar el comando anterior para ver si realmente están dentro del listado de IPs baneadas y una vez encontrada, lanzar el siguiente comando ‘sudo fail2ban-client unban <IP-a-desbanear>‘.

También funciona para WordPress

Para ello tienes que crear un archivo en /etc/fail2ban/filter.d/wp-login.conf con el siguiente contenido:

[Definition]
failregex = <HOST> - - \[.*\] "POST /wp-login.php
ignoreregex =

Este filtro busca en los registros del servidor las instancias de intentos fallidos de POST a wp-login.php, que es el formulario de inicio de sesión de WordPress, y captura la dirección IP asociada con ese intento.

Después de crear el filtro, debes configurar una jaula en /etc/fail2ban/jail.local que lo utilice:

[wp-login]
enabled = true
filter = wp-login
action = iptables[name=WordPress, port=http, protocol=tcp]
logpath = /var/log/apache2/access.log
maxretry = 5
bantime = 3600

Esta configuración habilita la jaula wp-login, utiliza el filtro que acabas de crear, define una acción que actualiza iptables para bloquear las solicitudes, especifica la ubicación de los registros de acceso de Apache (ajusta según tu servidor web y configuración), establece un máximo de 5 intentos antes de bloquear la IP, y establece el tiempo de bloqueo en 3600 segundos (1 hora).

Dispones de más información en el siguiente enlace: Fail2Ban Info