Minha resposta é principalmente a configuração do Linux, não a segurança. Ele aborda o seu objetivo, mas não permite redefinir o tempo limite em uma senha correta ou incrementá-lo enquanto já estiver banido. Isso provavelmente tem que estar fora da banda, usando algum outro evento como chave.
Esta resposta é vinculada a um artigo que mostra como lidar com reincidentes uma vez e this mostra como executar uma proibição incremental. Como o link é ruim, vou tentar reformular o que está fazendo.
Na verdade, você deseja criar vários blocos de configuração que usam nomes quase idênticos; o autor usa "f2b-loop2", "f2b-loop3" e assim por diante. O bloco DEFAULT é o driver.
Cada etapa do loop usa o mesmo filtro. Esse filtro ignora todas as proibições com nome de loop, mas continua contando as proibições DEFAULT durante o período escasso, fazendo com que o nível determine "Quantas vezes o DEFAULT baniu esse IP no meu período de varredura / findtime?". O total de tentativas que acionam sucessivamente bantimes maiores é, portanto, uma multiplicação dos maxtimes de DEFAULT e dos maxtimes do nível de loop.
Você pode continuar esse padrão para terminar com um bantime negativo para banir permanentemente.