fail2ban detecta conexiones que puedan ser anómalas y bloquea la IP pública que intenta acceder a dichos servicios por lo que sería un sistema activo (analiza, detecta y actua al momento), lo hace añadiendo reglas iptables rechazado las conexiones procedentes de esa dirección IP pública.
fail2ban escanea los ficheros de logs de los servicios configurados como por ejemplo "/var/log/auth.log" (ssh) o "/var/log/apache/error_log" (apache), comprobando los criterios establecidos en las directivas de cada servicio y banenado aquellas direcciones IPs públicas que intentaron acceder a dicho servicio y baneando estas direcciones IPs.
En el fichero de configuración de servicios asociados a fail2ban, se refieren a estos servicios como "jails".
/etc/fail2ban/jail.confEn el caso de configurar el servicio SSH se podría definir de la siguiente manera.
[sshd]Donde las directivas son:
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
bantime = 86400
findtime = 600
maxretry = 3
- bantime = Número de segundos en el cual una dirección IP permanecerá prohibida (10 min por defecto).
- findtime = Cantidad de tiempo entre intentos de inicio de sesión, antes de que se elimine el host. (predeterminado 10 min).
- maxretry = Número de intentos que deben realizarse antes de que se aplique una prohibición. (por defecto 3 intentos).
Consultar las IPs que intentaron acceder y fueron baneadas o bloqueadas
Desde el cliente fail2ban-client indicando el tipo de jail (servicio sshd).# fail2ban-client status sshdA través de iptables.
Status for the jail: sshd
|- Filter
| |- Currently failed: 1
| |- Total failed: 4
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 1
|- Total banned: 2
`- Banned IP list: 67.10.125.108
# iptables -L -nREJECT - reject-with icmp-port-unreachable: Conexión rechazada
Chain f2b-sshd (1 references)
target prot opt source destination
REJECT all -- 67.10.125.108 0.0.0.0/0 reject-with icmp-port-unreachable
RETURN all -- 0.0.0.0/0 0.0.0.0/0
Visualizar los registros de logs
Se almacenan en el fichero de log /var/log/fail2ban.log.Podemos hacer un "grep Ban" para ver los registros de las direcciones IPs baneadas y un "grep Unban" para las IPs que ya hayan sido desbloqueadas, transcurrido los tiempos definidos anteriormente en las directivas del fichero jail.conf.
# cat /var/log/fail2ban.log | grep Unban
2019-07-15 21:12:41,602 fail2ban.actions [18533]: NOTICE [sshd] Unban 67.10.125.108
2019-07-15 21:32:01,540 fail2ban.actions [18705]: NOTICE [sshd] Unban 74.15.62.217
2019-07-15 21:42:50,191 fail2ban.actions [18705]: NOTICE [sshd] Unban 49.80.215.108
...
Banear dirección IP manualmente
fail2ban-client set <JAIL-NAME> banip <IP-ADDRESS>
# fail2ban-client set sshd banip 37.10.145.208
Desbanear dirección IP manualmente
fail2ban-client set <JAIL-NAME> unbanip <IP-ADDRESS>Desbanear dirección IP manualmente a través de iptables indicando el número de regla.
# fail2ban-client set sshd unbanip 37.10.145.208
# iptables -L f2b-sshd --line-numbers
Chain f2b-sshd (1 references)
num target prot opt source destination
1 REJECT all -- 67.10.125.108 0.0.0.0/0 reject-with icmp-port-unreachable
2 RETURN all -- anywhere anywhere
# iptables -D f2b-sshd 1Desbanear IP manualmente a través de iptables indicando directamente la dirección IP pública.
iptables -D f2b-sshd -s 67.10.125.108 -j REJECT
Configurar una Whitelist en fail2ban
Configurar un pool de IPs a ignorar de los baneos o bloqueos temporales. Se define con la directiva ignoreip en el fichero de configuración /etc/fail2ban/jail.conf.ignoreip = 127.0.0.1/8 ::1 <IP interna o externa, rango de red a ignorar>Saludos!
ignoreip = 127.0.0.1/8 ::1 192.168.10.0/24
No hay comentarios
Publicar un comentario