Antes de mais nada, não tem ssh em port 22 para reduzir a chance de sua porta ser encontrada por scanners automáticos.
Use também psad para bloquear automaticamente os hosts que verificam seu computador por um período de tempo configurável (1 hora por padrão).
Uma solução muito simples é apenas alugar um 64 or 128 meg openvz container & configure openvpn para que você tenha um fixed ip address & em seguida, limite sua regra iptables para --source vpn.ip.address no host que você deseja proteger.
Uma solução melhor é proteger totalmente sua ssh port com fwknop . Não há necessidade de executar fail2ban quando sua ssh porta estiver fechada até você enviar um gpg signed & pacote criptografado do fwknop-client que abrirá seu firewall por um período de tempo configurável (30 segundos por padrão). Você também pode configurar fwknop para aceitar apenas determinados endereços IP (como seu vpn ).
Eu tenho algumas notas extensas aqui para fwknop .
Se você é sério sobre ssh security, você também deve estar usando ed25519 keys. Mais notas aqui para usar cifras seguras com openssh . Outra boa escolha é tinyssh que tem não dependência em openssl & é seguro por padrão .
Todo o software mencionado aqui existe em Alpine Linux , que também se beneficia de randomização do layout do espaço de endereço via PaX em seu kernel Grsecurity .