IPTables causa conflito com Fail2Ban

IPTables causa conflito com Fail2Ban

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 INPUTpara 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 INPUTenquanto 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.)

informação relacionada