Eu tentei procurar por isso; Eu encontrei muitas pessoas perguntando, mas não consegui encontrar uma solução que funcionasse (para mim).
Eu tenho um aplicativo que registra cada conexão em um arquivo de log personalizado.
Quando o fail2ban detecta mais de 10 conexões em 5 segundos do mesmo ip, proíbe o "atacante" por 600 segundos.
Acontece que o invasor pode fazer 11/20 conexões antes de ser banido (e tudo bem).
Depois disso recebo xxx.xxx.xxx.xxx already banned
mensagens em fail2ban.log
para cada linha > 11. Há uma dessas mensagens a cada segundo; É como se o fail2ban levasse 1 segundo para cada uma das linhas de log com o mesmo IP após a proibição.
Mas enquanto isso eu tenho outro invasor de outro IP e ele conecta com sucesso mais vezes (ou seja, 50) porque o fail2ban está analisando as linhas do log do IP anterior (1 por segundo).
E assim por diante ... Enquanto o fail2ban processa as linhas do log passado, novos invasores fazem milhares de conexões. Isso é incremental e apenas os primeiros atacantes são banidos.
Eu tenho fail2ban agora analisando linhas que eram de conexões feitas 1 ou mais horas antes.