[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)