Instalei corretamente fail2ban
em minha máquina, ativando as regras para ssh
, ssh-dos
e recidive
; tudo funciona bem.
Ultimamente, tenho visto um aumento nos padrões de ataques repetitivos de diferentes hosts formando as mesmas redes, que contornam a regra "recidiva" ao trocar de IP após uma proibição:
2015-01-25 11:12:11,976 fail2ban.actions: WARNING [ssh] Ban XXX.41.124.29
2015-01-25 11:12:13,165 fail2ban.actions: WARNING [ssh] Ban XXX.41.124.42
2015-01-25 11:12:16,297 fail2ban.actions: WARNING [ssh] Ban XXX.41.124.28
2015-01-25 11:12:20,446 fail2ban.actions: WARNING [ssh] Ban XXX.41.124.104
Eu gostaria de detectá-lo e criar uma regra "recidive24" que bloqueie todos esses ataques, proibindo toda a sub-rede /24
.
Encontrei uma sugestão no arquivo de erros do debian para o fail2ban, e tenho aplicado, mas:
-
Se eu aplicar a proibição /24
completa quando a ssh
jail for acionada, tenho o problema de que é fácil alguém de minha mesma rede me bloquear, apenas atacando de um IP;
-
A recidive
jail seria perfeita, mas não é acionada pela tempestade mudando de IPs ...
Então eu gostaria de mudar a especificação do filtro recidive
para que ele olhe apenas os três primeiros bytes do IP, mas eu estou perdido aqui ... o regexp que faz a proibição é (de /etc/fail2ban/recidive.conf
) é
# The name of the jail that this filter is used for. In jail.conf, name the
# jail using this filter 'recidive', or change this line!
_jailname = recidive
failregex = ^(%(__prefix_line)s|,\d{3} fail2ban.actions:\s+)WARNING\s+\[(?!%(_jailname)s\])(?:.*)\]\s+Ban\s+<HOST>\s*$
... e vai corresponder a um IP completo.
A questão : Como posso alterar este failregex para que corresponda apenas aos três primeiros bytes do IP do host?
Eu pensei em filtrar o arquivo de log do fail2ban com outro daemon e escrever um segundo arquivo onde o último byte é 0 toda vez, e disparar a cadeia recidiva usando-o, mas parece muito desajeitado ...