Antes da 0.11, não havia nenhum recurso padrão ou uma configuração no fail2ban para conseguir isso. Mas, começando com a próxima versão 0.11, o tempo de banimento é calculado automaticamente e aumenta exponencialmente a cada nova ofensa que, a longo prazo, significará um bloqueio mais ou menos permanente.
Até então, sua melhor abordagem provavelmente é configurar o fail2ban para monitorar seu próprio arquivo de log . É um processo de duas etapas ...
Passo 1
Poderíamos precisa criar um filtro para verificar se há BAN é no arquivo de log (arquivo de log do fail2ban)
Passo 2
Precisamos definir a prisão , semelhante ao seguinte ...
[fail2ban]
enabled = true
filter = fail2ban
ação = iptables-allports [nome = fail2ban]
logpath = /path/to/fail2ban.log
# findtime: 1 dia
findtime = 86400
# bantime: 1 ano
bantime = 31536000
Tecnicamente, não é um bloqueio permanente , mas apenas bloqueios por um ano (que também podemos aumentar).
Enfim, para a sua pergunta (isso pode ser alcançado apenas com fail2ban ou preciso escrever meu próprio script para fazer isso?) ... escrever o próprio script pode funcionar bem. Configurar o script para extrair os IPs freqüentemente banidos e depois colocá-los /etc/hosts.deny
é o que eu recomendo.