19.9.2019
En esta guía te enseñamos a instalar y configurar esta herramienta para mejorar la seguridad de nuestros servidores.
Mantener los servidores protegidos es una tarea de monitoreo y atención constante. Mantener el sistema actualizado, revisión de puertos abiertos y logs del sistema. En este último punto, Fail2ban nos permite automatizar la navegación entre los logs para detectar intentos de ingresos no autorizados al server y tomar acciones para mitigarlos.
La premisa de fail2ban
es simple: automáticamente revisa los registros de acceso y si se repiten una cantidad de intentos fallidos de conexión, se bloquea la dirección de IP por un período de tiempo. La cantidad de tiempo e intentos son controlados por nosotros mediante un archivo de configuración. Cabe destacar que si bien este programa ayuda a asegurar nuestro servidor no elimina todos los riesgos.
Instalar fail2ban.
Para instalarlo en Ubuntu y Debian ejecutar como root
apt-get install fail2ban
Si tu servidor es CentOS o Fedora, vas a necesitar tener instalado el repositorio EPEL (Extra Packages for Enterprise Linux). Podés ver la guía acá. Una vez instalado ejecutar como root
yum install fail2ban
Configurar fail2ban.
Una vez instalado, lo primero que hay que hacer es copiar la configuración base que se encuentra en el archivo /etc/fail2ban/jail.conf
. Nota: si utilizas VestaCP
cómo panel de control es muy posible que ya esté preconfigurado. Puedes verlo en https://tuserver:puerto_vesta/edit/server/fail2ban/
.
Copiar configuración básica
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Ahora vamos a editar el archivo de configuración de fail2ban
vi /etc/fail2ban/jail.conf
# o usando nano
nano /etc/fail2ban/jail.conf
Lo que tenemos que editar es la sección [DEFAULT]
ignoreip
: Es la lista blanca de IPs que no van a ser analizadas ni bloqueadas. Pueden ser direcciones IP o nombre de dominio separados por,
(comas).bantime
: El tiempo en segundos que van a ser bloqueadas las conexiones.maxretry
: La cantidad de rechazos que son aceptados antes de ser baneados.findtime
: El período de tiempo en el que se realizan los intentos (maxretry
) fallidos.
Una vez configurado, guardamos y reiniciamos el servicio para aplicar las nuevas configuraciones.
service fail2ban restart
Acá dejamos la configuración por defecto de VestaCP
para tener cómo referencia
[ssh-iptables]
enabled = true
filter = sshd
action = vesta[name=SSH]
logpath = /var/log/secure
maxretry = 5
[vsftpd-iptables]
enabled = false
filter = vsftpd
action = vesta[name=FTP]
logpath = /var/log/vsftpd.log
maxretry = 5
[exim-iptables]
enabled = true
filter = exim
action = vesta[name=MAIL]
logpath = /var/log/exim/main.log
[dovecot-iptables]
enabled = true
filter = dovecot
action = vesta[name=MAIL]
logpath = /var/log/dovecot.log
[mysqld-iptables]
enabled = false
filter = mysqld-auth
action = vesta[name=DB]
logpath = /var/log/mysqld.log
maxretry = 5
[vesta-iptables]
enabled = true
filter = vesta
action = vesta[name=VESTA]
logpath = /var/log/vesta/auth.log
maxretry = 5