Algumas estratégias de configuração que uso em todas VPS que subo pensando em segurança básica:
No SSH, sempre desabilito login com senha, acesso root e mudo a porta. Além disso, só libero acesso SSH para um grupo de usuário (por exemplo, externalssh com ID acima de 1000). Para esse grupo, e somente ele, eu permito SSH Tunnel.
Desabilito o login no usuário root e crio um outro, sei lá, "masterserver" com uma senha complexa e adiciono no grupo externalssh/sudo. Para as chaves pública/privada, forço o uso apenas de ed25519 e geralmente coloco uma senha nessa chave (quando o acesso é para um usuário sudo). Para VPS crítica ainda coloco a chave privada com autenticação de dois fatores ainda no SSH.
Uma coisa que não pode esquecer é de criar um usuário "rawserver", por exemplo, adicionar ele ao sudo, colocar uma senha fácil de digitar, mas não adicionar ele no SSH. Se der algum B.O. você consegue entrar por ele no console próprio de qualquer host.
No Firewall, bloqueio todas as entradas e habilito todas as saídas. Bloqueio todas as portas e liberto apenas a do SSH (personalizada), 80 e 443. Se outra máquina precisar acessar essa, libero as portas necessárias apenas para aquele IP.
Integro o Firewall com Fail2Ban e assisto os principais logs do sistema (SSH e conexões) para bloquear automaticamente IPs que tentem muitas vezes estabelecer conexões. Além disso, crio regras próprias com regex para ler os logs das aplicações e banir automaticamente os IPs (por um período) que produzirem os erros que não quero que sejam produzidos (como autenticação inválida, rate/limit, etc).
Só isso te livra de 80% das dores de cabeça.