Um aplicativo que estou executando registra logins incorretos como este:
Tue, 19 Mar 13 20:46:03 +0000 failed login from iphere !
Tue, 19 Mar 13 20:46:03 +0000 failed login from iphere !
Tue, 19 Mar 13 20:46:03 +0000 failed login from iphere !
Estou tentando impedir que pessoas que não conseguem efetuar login no IP sejam banidas para evitar ataques de força bruta. Nota: iphere é obviamente o IP real. E não, não 127.0.0.1 como isso é excluído do banimento na configuração:)
O que eu tentei
O Fail2ban está trabalhando com o jail / filtro SSH não alterado padrão! Eu tentei entrar no SSH algumas vezes e isso causa uma proibição. Então é minha configuração de alguma forma.
Um bom guia que encontrei é o seguinte: link
Uma correção que apliquei foi esta: fail2ban.action.action ERRO na inicialização / reinicialização Eu tive vários fail2ban.action.action erro na inicialização / reinicialização. Parece que houve uma condição de "corrida" com o iptables. Eu resolvi o problema completamente no meu sistema editando / usr / bin / fail2ban-client e adicionando um time.sleep (0.1) Este foi um erro que vi no log do fail2ban que foi resolvido acima.
Arquivos de log
Os arquivos de log mostram que a cadeia começa bem. Eu posso ver as linhas sendo gravadas em /var/log/myapp.log fail2ban-client -d me fornece isso, além do filtro SSH padrão:
['add', 'myapp', 'polling']
['set', 'myapp', 'addlogpath', '/var/log/myapp.log']
['set', 'myapp', 'maxretry', 3]
['set', 'myapp', 'addignoreip', '127.0.0.1/8']
['set', 'myapp', 'findtime', 60000]
['set', 'myapp', 'bantime', 1800]
['set', 'myapp', 'addfailregex', '.*failed login from <HOST> .*']
Abaixo você encontrará meus arquivos de configuração.
Filtro
/etc/fail2ban/filter.d/myapp.conf
[Definition]
failregex = .*failed login from <HOST> .*
Eu testei o filtro com:
fail2ban-regex /var/log/myapp.log /etc/fail2ban/filter.d/myapp.conf
Resultado (nada de especial, apenas uma lista de correspondências e isso): Sucesso, o número total de jogos é de 254
O filtro deve estar bem.
Prisão
[myapp]
enabled = true
port = all
filter = myapp
logpath = /var/log/myapp.log
findtime = 60000
bantime = 1800
maxretry = 3
banaction = iptables-multiport-log
Depois de configurá-los, obviamente, eu fiz uma atualização do fail2ban-client e reiniciei o serviço com o fail2ban.
É suficiente dizer que nenhuma proibição está sendo feita. Passei bastante tempo nessa questão, mas achei que tem que ser algo pequeno, então achei que seria bom perguntar aqui.