Há algumas coisas que você está perdendo e precisam corrigir para que o filtro funcione:
- Dentro do seu
expressjs.conf
você definiufindtime = 600
emaxretry = 5
Isso significa que em um espaço de 10 minutos (600s) você precisará ter 5 tentativas fracassadas (correspondência regex) para gerar o bloco automático / rejeitar iptables regra.jail.conf
manpage:
findtime time interval (in seconds) before the current time where failures will count towards a ban. maxretry number of failures that have to occur in the last findtime seconds to ban then IP.
Observando seus registros, você tem mais de 10 minutos entre a primeira entrada de log e a última entrada de log (5 tentativas) no log que você colou aqui. Primeiro: 20:49
, Último: 21:16
-
Todos os seus registros são provenientes de
127.0.0.1
. Se você olhar seujail.conf
dentro do bloco[DEFAULT]
, encontrará a configuração padrãoignoreip = 127.0.0.1/8
. A menos que você tenha alterado isso, é muito perigoso bloquear um endereço de host local, já que ele quebrará outros softwares usando esse endereço para comunicação interna. -
Você
expressjs.conf
não tem a configuraçãodatepattern =
, portanto, o fail2ban não pode adivinhar qual parte do arquivo de log é a data. Obtenha alguns exemplos dos arquivos/etc/fail2ban/filter.d
e você encontrará o regex de data comodatepattern = ^L %%d/%%m/%%Y - %%H:%%M:%%S
oudatepattern = ^%%Y:%%m:%%d-%%H:%%M:%%S
. Outro problema aqui é que sua "segunda" parte da data de registro não tem o zero à direita em sec < 10 (ex:21:16:9
no seu último log) e isso precisa ser corrigido.
Dê uma olhada no wiki oficial do Fail2ban para obter exemplos e melhorar o filtro. Você tem muitas coisas para consertar.