V
e
r

l
i
s
t
a
d
o

tractatus@lapipaplena:/# _

 

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
Navegando por staredsi.eu aceptas las cookies que utilizamos en esta web. Más información: Ver política de cookies
[0] 0:bash*
1837 entradas - Acerca del Tractatus
La Pipa Plena 2018