Instalar Fail2ban en CentOS, Fedora, y derivados.
Fail2ban es la herramienta de prevención de intrusiones por excelencia. De código abierto y totalmente configurable es la más utilizada en servidores y sistemas en red a nivel mundial.
Su forma de operar es bastante simple, ya que tan solo escanea los archivos de registro buscando direcciones IP con síntomas maliciosos, por ejemplo demasiados errores al introducir la contraseña.
Al detectar un dirección ip que incumple con su configuración, automáticamente actualiza las reglas del firewall (normalmente iptables o nftables) de manera que sea rechazada. Por defecto, ya viene con filtros preconfigurados para los servicios más comunes, incluido sshd.
En este artículo, vemos cómo instalar y configurar fail2ban en nuestro servidor o VPS. En este articulo usamos como plataforma un CentOS 8 minimal que hemos instalado con netinstall.
Instalar Fail2ban en CentOS o Fedora
El paquete fail2ban no está en los repositorios oficiales pero si en el repositorio EPEL, así que lo habilitamos.
dnf install epel-release o yum install epel-release
Ahora instalamos Fail2ban.
dnf install fail2ban o yum install fail2ban
Instalar Fail2ban
Configurar Fail2ban
Bien, una vez instalado vamos a configurar fail2ban. Los archivos de configuración los puedes localizar en /etc/fail2ban/, y los filtros en /etc/fail2ban/filter.d/. También tenemos el archivo de configuración general en /etc/fail2ban/jail.conf, pero no te recomiendo que pierdas el tiempo con el, mejor filtro por filtro ya que cada servicio requiere de su propia seguridad.
Lo que te recomiendo encarecidamente es crear un archivo llamado jail.local, y definir o configurar los filtros que necesites. Por ejemplo:
nano /etc/fail2ban/jail.local
Ejemplo de jails de un servidor web en producción.
[DEFAULT]
ignoreip = 127.0.0.1/8
destemail = webmaster@midominio.es
bantime = 21600
maxretry = 2
findtime = 600
[apache]
maxretry = 4
enabled = true
logpath = /var/www/vhosts/system/*/logs/error_log
/var/log/httpd/*error_log
action = iptables-multiport[name=apache, port=»http,https,7080,7081″]
[apache-badbot]
enabled = true
action = iptables-multiport[name=BadBots, port=»http,https,7080,7081″]
logpath = /var/www/vhosts/system/*/logs/*access*log
/var/log/httpd/*access_log
[dovecot]
enabled = true
action = iptables-multiport[name=»plesk-dovecot», port=»imap,imap3,imaps,pop3,pop3s,4190″]
[postfix]
enabled = true
action = iptables-multiport[name=»plesk-postfix», port=»smtp,smtps,submission»]
[proftpd]
maxretry = 1
enabled = true
action = iptables-multiport[name=»plesk-proftpd», port=»ftp,ftp-data,ftps,ftps-data»]
[roundcube]
enabled = true
action = iptables-multiport[name=»roundcube», port=»http,https,7080,7081″]
[wordpress]
enabled = true
logpath = /var/www/vhosts/system/*/logs/*access*log
/var/log/httpd/*access_log
action = iptables-multiport[name=»plesk-wordpress», port=»http,https,7080,7081″]
[ssh]
enabled = true
action = iptables[name=SSH, port=ssh, protocol=tcp]
Guarda el archivo y cierra el editor.
Iniciamos fail2ban y lo habilitamos para que inicie con el sistema.
systemctl start fail2ban systemctl enable fail2ban
Podemos verificar que esta funcionando correctamente.
systemctl status fail2ban
ejemplo…
[root@host ~]# systemctl status fail2ban
● fail2ban.service – Fail2Ban Service
Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
Active: active (running) since mié 2019-10-16 08:32:37 CEST; 1 day 1h ago
Docs: man:fail2ban(1)
Main PID: 3616 (fail2ban-server)
Tasks: 21
Memory: 25.3M
CGroup: /system.slice/fail2ban.service
└─3616 /usr/bin/python /usr/bin/fail2ban-server -xf start
Podemos ver las direcciones ip bloqueadas de un servicio en particular con «status», en el ejemplo ssh.
fail2ban-client status ssh
ejemplo de salida…
[root@host ~]# fail2ban-client status ssh
Status for the jail: ssh
|- Filter
| |- Currently failed: 0
| |- Total failed: 385
| `- File list: /var/log/secure
` – Actions
|- Currently banned: 26
|- Total banned: 200
`- Banned IP list: 37.139.21.75 185.112.250.113 171.240.196.80…etc,etc…
Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.
Buena herramienta!!!
Dependiendo la sensibilidad en la configuración te das cuenta a diario de como escanean los servidores las 24hs los 365 días del año.
Muy buena y recomendada.
Excelente herramienta !!
Estoy haciendo practicas de Fail2ban para Zimbra sin obtener los resultados esperados… los fallos de autenticación desde el interface web de otras maquinas los registra como realizado desde la maquina local (servidor Zimbra con fail2ban), lo que hace que se bloquee el servicio y quede inoperativo para el resto de usuarios… Sigo investigando en esa linea.
Seguid así !!
Saludos
Es muy extraño tu caso, tal vez tengas el server a través de un proxy.
Buenas..
Al parecer es un Bug notificado, para hacer que se reconozca la IP real del origen (y no la del propio mail server) se debe realizar los siguientes pasos.
su – zimbra
zmprov mcf +zimbraMailTrustedIP 127.0.0.1 +zimbraMailTrustedIP xxx.xxx.xxx.xxx
Donde las x es la ip Local del mail server
zmmailboxdctl restart
Despues de esto en el log /opt/zimbra/log/mailbox.log
en el campo ya aparece el IP real de la maquina origen. Antes de la modificaciones se mostraba la IP local del mail server
Saludos
Fuente:
https://wiki.zimbra.com/wiki/Log_Files#Logging_the_Originating_IP
Gracias por el aporte.
Muy bueno, voy a probarlo!