Eu não sei a configuração básica do ufw , no entanto, como você mencionou a permissão de portas, veja algumas reflexões:
- bloquear portas para tráfego de entrada não significa aumentar a segurança. Quero dizer, se você bloquear a porta que não está aberta (ou seja, nenhum serviço está escutando nessa porta) é principalmente a segurança pela obscuridade;
- bloqueio de portas para tráfego de saída pode, às vezes, ser bloqueado. Você não pode bloquear portas > 1024, pois você bloqueará toda a conexão de saída iniciada pelo seu servidor (cliente ssh, cliente http, solicitações de DNS do seu servidor, ...);
- você pode bloquear o tráfego iniciado pelo seu servidor nas portas < 1024 (por exemplo, tráfego TCP com sinalizador SYN cujo IP de origem é seu servidor) para evitar que um invasor que já tenha acesso ao servidor se comunique com o servidor. Mas isso não seria muito útil, pois (como visto no bullet anterior) a comunicação de saída pode ser feita através de um maior intervalo de portas.
Mas o que você realmente pode fazer é reduzir a superfície de ataque:
- restrinja os serviços mínimos que seu servidor está executando (mesmo que não seja público). Por exemplo, desligue seu servidor http (nginx, apache, ..) se você não usá-lo;
- evite instalar software não mantido;
- atualize sempre softwares (e quaisquer componentes, por exemplo, o wordpress core e plugins)
- secure ssh (dê uma olhada no link )
- use chaves ssh em vez de senhas. Você também pode configurar 2FA
- usuários da lista branca que são concedidos para acessar seu servidor
- você pode configurar a porta batendo em suas portas de escuta (por exemplo, ssh)
- você pode usar outras ferramentas para ajudá-lo a aumentar a segurança (fail2ban, ...)
Existem muitos outros conselhos que a comunidade pode lhe dar, mas não se esqueça de que a segurança não é uma ação única, a segurança é uma ação permanente (atualizações, monitoramento de registros, ...).