Volver al índice


fail2ban

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 (monitorizar las ip baneadas)

# awk '($(NF-1) = /Ban/){print $NF}' /var/log/fail2ban.log | sort | uniq -c | sort (Solo muestra las Ips.)

# awk '($(NF-1) = /Ban/){print $NF,"("$NF")"}' /var/log/fail2ban.log | sort | logresolve | uniq -c | sort (Mostrando el nombre del host)

# systemctl status fail2ban (comprobar el estado de fail2ban)

# fail2ban-client status (comprobar los servicios activos)

# fail2ban-client status sshd (comprobar bloqueos de ips por ataques a ssh)

# fail2ban-client set mysqld-auth unbanip IP (borrar una ip bloqueada del servicio mysql-auth)

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

Volver al índice