Isso pode não ser o mais elegante, mas deve ser rápido e funcional:
iptables -I INPUT --m recent --name blocked --rcheck -j DROP
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --name blocked --set
Explicação:
Insira uma regra de firewall (no topo) na cadeia de entrada, que verifica se o endereço de origem do pacote está atualmente na lista "bloqueada" e, se estiver, DROP it.
Insira outra regra de firewall (acima da que acabamos de inserir) na cadeia de entrada que adiciona o endereço de origem de qualquer tentativa de conexão à porta 22 para a lista "bloqueada".
Não vejo a necessidade de realmente executar um servidor (falso) ou qualquer ouvinte na porta 22.
Editar: Olhando para a minha resposta, quero acrescentar que você provavelmente deve tempo limite da sua lista bloqueada de alguma outra forma que
"forever or at least until i drop the iptables rule"
porque você obterá muitos hits de endereços IP dinâmicos que serão posteriormente (em questão de horas, ou até minutos) reatribuídos a usuários legítimos.
Veja: link