---
# System prepended metadata

title: Instalación y configuración de Fail2ban

---

[TOC]
# Instalación y configuración de Fail2ban
<p style="text-align: justify;"> 
Ahora vamos a instalar y configurar Fail2ban es una herramienta de seguridad que monitorea los logs de nuestro sistema en tiempo real. Cuando detecta patrones sospechosos (por ejemplo, múltiples intentos fallidos de inicio de sesión), bloquea temporalmente las IPs responsables usando reglas de firewall. Es especialmente útil para proteger servicios como SSH, Postfix, Dovecot y Rainloop.
    
Instalar Fail2ban:
    
    sudp apt update 
    sudo apt install fail2ban -y
    
Configurar Fail2ban:
    
    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.orig
    
    sudo vi /etc/fail2ban/jail.d/jail-debian.local
    
Editamos:
    
    [DEFAULT]
    ignoreip = 127.0.0.1/8 10.24.153.0/24  # IPs que nunca deben ser bloqueadas
    bantime = 600                     # Tiempo de bloqueo (en segundos)
    maxretry = 3                      # Número máximo de intentos fallidos antes de bloquear
    destemail = admin@ccuellar.test   # Email donde recibirás notificaciones
    sender = Fail2Ban                 # Remitente de las notificaciones
    action = %(action_mw)s            # Acción predeterminada (bloquea la IP y envía un email)

    [sshd]
    port = 22
    maxretry = 3

    [dovecot]
    enabled = true
    port = pop3,pop3s,imap,imaps
    filter = dovecot
    logpath = /var/log/dovecot.log
    maxretry = 3

    [postfix]
    enabled = true
    port = smtp,ssmtp
    filter = postfix
    logpath = /var/log/mail.log
    maxretry = 3

    [postfix-sasl]
    enabled = true
    port = smtp,ssmtp,submission
    filter = postfix-sasl
    logpath = /var/log/mail.log
    maxretry = 3

    [apache]
    enabled = true
    port = http,https
    filter = apache-auth
    logpath = /var/log/apache*/*error.log
    maxretry = 3
    
Proteger Rainloop:
    
    sudo vi /var/www/html/email.ccuellar.test/data/_data_/_default_/configs/application.ini
    
Editamos:
    
    time_offset = "2"  # Ajusta esto según zona horaria
    auth_logging = On
    auth_logging_filename = "fail2ban/auth.log"
    auth_logging_format = "{date:Y-m-d H:i:s} Auth failed: ip:{request:ip} user:{imap:login} host:{imap:host} port:{imap:port}"
    
Configurar Fail2ban para Rainloop:
    
    sudo vi /etc/fail2ban/jail.d/rainloop-auth.conf
    
Añadimos:
    
    [rainloop-auth]
    enabled = true
    filter = rainloop-auth
    port = http,https
    logpath = /var/www/html/email.ccuellar.test/data/_data_/_default_/logs/fail2ban/auth.log
    bantime = 600
    maxretry = 3
    
Crear el filtro para Rainloop:
    
    sudo vi /etc/fail2ban/filter.d/rainloop-auth.conf
    
Añadimos:
    
    [Definition]
    failregex = Auth failed\: ip\:<HOST> user\:.* host\:.* port\:.*$
    ignoreregex =
    
Reiniciamos los servicios:
    
    sudo systemctl restart fail2ban
    sudo fail2ban-client status
    sudo fail2ban-client status sshd
    
Desbloquear una IP:
    
    sudo fail2ban-client set postfix-sasl unbanip X.X.X.X
    
# Prueba del servicio con un buzón nuevo
<p style="text-align: justify;">   
Ahora vamos a probar nuestro servidor de correo.
    
Instalar herramientas para enviar correos:
    
    sudo apt update
    sudo apt install mailutils -y

<p style="text-align: justify;"> 
Durante la instalación, te pedirá que configures Postfix nuevamente. Selecciona la opción "Configuración local" si solo vas a usarlo para pruebas locales.
    
Enviar un correo de prueba:
    
    echo "Esto es un correo de prueba enviado desde mi servidor de correo." | sudo mail -s "Correo de prueba" carla@ccuellar.test-aFrom:admin@ccuellar.test
    
Verificar que el correo se envió correctamente:
    
    sudo tail -f /var/log/mail.log
    
Observamos:
    
    status=sent (250 2.0.0 OK ...)
    
Probar la recepción de correos:
    
Una vez enviado, verifiquemos que llegó al buzón usando el comando mail:
    
    sudo mail -f /var/mail/vhosts/ccuellar.test/email/
    
Prueba el puerto SMTP:
    
    telnet localhost 25
    
🤗
    
---
    
## [👈Anterior sección](https://hackmd.io/@ccuellar/Bkx1l19Tye) 😄 [Índice de secciones aquí](https://hackmd.io/@ccuellar/rJ73y6FpJe) 
    