# Protégete de ataques de fuerza bruta con Fail2ban

**Fail2ban** es una herramienta de seguridad para servidores que ayuda a protegerlos contra ataques de fuerza bruta o intentos repetidos de acceso no autorizado. Funciona monitoreando archivos de `logs` (como los de intentos de acceso fallidos) y bloquea las direcciones IP sospechosas mediante reglas de firewall (como **iptables** en Linux) tras un número determinado de intentos fallidos.

<div align="left"><figure><img src="/files/fluAcEsRWBZNAzgADqzZ" alt="" width="255"><figcaption></figcaption></figure></div>

#### ¿Por qué instalar Fail2ban en un servidor?

1. **Protección contra ataques de fuerza bruta**: Si alguien intenta adivinar tu contraseña mediante múltiples intentos, Fail2ban detecta estos patrones y bloquea automáticamente la IP atacante después de varios intentos fallidos.
2. **Automatización de la seguridad**: Fail2ban reduce la necesidad de vigilancia manual, reaccionando rápidamente a posibles amenazas sin intervención humana.
3. **Configuración flexible**: Puedes ajustar los límites de intentos fallidos, el tiempo de bloqueo y qué servicios monitorear (SSH, FTP, Apache, etc.).

Vamos a ello, lo primero será instalar la aplicación:

```bash
sudo apt install fail2ban
```

A continuación, iremos a crear un archivo de configuración de servicio:

```bash
sudo nano /etc/fail2ban/jail.local
```

En el archivo deberás escribir algo asi:

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

Esto le dice que, a más de diez intentos en menos de 60 segundos para el puerto 21 (ssh), quiero que se banee la IP que esta realizando ese ataque.

Para que los cambios surtan efecto, reiniciaremos el servicio:

```bash
sudo systemctl restart fail2ban
```

Para comprobar que todo esta bien usaríamos el siguiente comando:

<pre class="language-bash"><code class="lang-bash"><strong>sudo fail2ban-client status sshd
</strong></code></pre>

***

Ahora bien, si quisiéramos probar su funcionamiento podemos usar el programa `hydra` con un diccionario preestablecido:

```bash
hydra -l user -P /usr/share/wordlist/rockyou.txt ssh://X.X.X.X
```

Al volver a escribir el comando de arriba, deberemos darnos cuenta que ha baneado la IP de la máquina atacante.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://apuntes-alex.gitbook.io/apuntes-sistemas-y-redes/ciberseguridad/securizando-un-servidor-linux/protegete-de-ataques-de-fuerza-bruta-con-fail2ban.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
