Cortafuegos. Habilitar los servicios en los que se quiera que actue el cortafuegos [ssh, apache2, ftp....] editando /etc/fail2ban/jail.conf y substituyendo el “false” por “true”. Algunos parámetros de este archivo son:
ignoreip (lista de IPs separadas por un espacio en blanco que no serán bloqueadas)
bantime (tiempo en segundos que un host permanecerá bloqueado)
maxretry (número máximo de intentos de login fallidos antes de ser bloqueado)
filter (filtro usado según el archivo /etc/fail2ban/filter.d)
logpath (archivo que utiliza para revisar los intentos de login)
Un ejemplo muestra de configuración para el servicio ssh:
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
# tail -f /var/log/fail2ban.log | grep Ban
# awk '($(NF-1) = /Ban/){print $NF}' /var/log/fail2ban.log | sort | uniq -c | sort
# awk '($(NF-1) = /Ban/){print $NF,"("$NF")"}' /var/log/fail2ban.log | sort | logresolve | uniq -c | sort
# systemctl status fail2ban
# fail2ban-client status
# fail2ban-client -i
# fail2ban-client status sshd
# fail2ban-client set mysqld-auth unbanip IP
# fail2ban-testcases
1.-
Bloquear errores w00tw00t.at.ISC.SANS en los logs de apache. En realidad estas peticiones no acaban en ningún ataque concreto. Estan producidos por el escaner de puertos Dfind que al generar sus peticiones coloca "w00tw00t.at.ISC.SANS.DFind".
Crear el archivo:
# nano /etc/fail2ban/filter.d/apache-w00tw00t.conf
Pegar el siguiente contenido:
[Definition]
failregex = ^.*\[client <HOST>\].*w00tw00t\.at\.ISC\.SANS\.*.*
ignoreregex =
Añadir la jaula:
# nano /etc/fail2ban/jail.conf
Y pegar:
[apache-w00tw00t]
enabled = true
filter = apache-w00tw00t
action = iptables-allports[name=w00tw00t]
logpath = /var/log/apache*/error.*.log
maxretry = 1
bantime = -1
Nota.- el bantime = -1 indica bloquear permanentemente.
2.-
Algunos ajustes de jail.conf para el caso de usar nginx y no apache:
# nano /etc/fail2ban/jail.conf
Prevenir ataques de inyeccion de codigo
[php-url-fopen]
enabled = true
port = http,https
filter = php-url-fopen
logpath = /var/log/nginx/access_log
maxretry = 1
Bloquea por iptables un día a los hosts que se conectan haciendo uso de un "User Agent" sospechoso
[nginx-badbots]
enabled = true
filter = apache-badbots
action = iptables-multiport[name=BadBots, port="http,https"]
logpath = /var/log/nginx*/*access*.log
bantime = 86400
maxretry = 1
Solicitar 240 páginas en 1 minuto o 4 paginas segundo, bloqueo por dos dias
[nginx-dos]
enabled = true
port = http,8090
filter = nginx-dos
logpath = /var/log/nginx/access.log
findtime = 60
bantime = 172800
maxretry = 240
Fallar la autentificación en el servidor web, bloqueo por 10 minutos
[nginx-auth]
enabled = true
port = http
filter = nginx-auth