
SO: Ubuntu Server 18.04
Fail2ban: v0.10.2
Estou tentando entender um bug na minha instalação do Fail2ban (acredito que seja de minha própria autoria). Eu tenho um cron job que preenche o iptables com uma lista predefinida usando:
iptables -A INPUT -s <ip address> -j DROP
iptables -A INPUT -s <ip address> -j DROP
etc
etc
No início deste script, ele executa:
iptables -F INPUT
para liberar a cadeia INPUT. Este cron job estava presente no servidor antes de eu instalar o Fail2ban para banir dinamicamente atores mal-intencionados. No entanto, percebi que comecei a receber muitos avisos informando que um determinado IP era already banned
. Quando interrompi a execução do cron job do iptables, esse erro desapareceu e foi executado sem nenhum problema.
Minha pergunta é: que tipo de conflito estou criando ao executar iptables -F INPUT
enquanto o Fail2ban ainda está em execução? Este comando não deveria funcionar, já que IPs banidos são colocados em suas respectivas f2b-<jail>
cadeias, ou estou entendendo mal? Se este script iptables precisar ser executado, devo também fazer algo com o banco de dados Fail2ban (limpar, etc)?
Obrigado.
Responder1
fail2ban também deve colocar regras na cadeia INPUT para chamar as cadeias que define para cada prisão individual. Ao removê-los, você está fazendo com que essas regras não se apliquem, e os endereços IP que deveriam ser banidos ainda serão transmitidos, e o fail2ban avisa sobre isso dizendo que eles já foram banidos.
Você não deve ter nenhum motivo para liberar a cadeia INPUT dessa maneira. Em vez disso, seu cron job deve criar sua própria cadeia definida pelo usuário e apenas adicionar à cadeia INPUT uma regra para chamar essa cadeia definida pelo usuário. Melhor ainda, você deve usar um ipset, que tem melhor desempenho e também pode ser trocado atomicamente quando você quiser alterá-lo. (E pela mesma razão você deve fazer com que o fail2ban use ipsets também.)