Segurança da VPS: primeiros passos (firewall, Fail2ban e chave SSH)

Um servidor VPS recém-criado já recebe tentativas de acesso de robôs em poucos minutos. Com cinco passos simples você fecha as portas mais usadas por ataques automáticos: atualizações automáticas, firewall, bloqueio de tentativas repetidas e acesso por chave SSH. Os comandos valem para Ubuntu e Debian e devem ser executados como root.

1. Atualize o sistema

# apt update
# apt full-upgrade -y
Se uma atualização do kernel for instalada, reinicie o servidor com reboot quando puder.

2. Ative as atualizações automáticas de segurança

# apt install -y unattended-upgrades
# systemctl enable --now unattended-upgrades apt-daily.timer apt-daily-upgrade.timer
A partir daí, as correções de segurança são instaladas sozinhas todos os dias.

3. Ligue o firewall (UFW)

Libere o SSH antes de ativar o firewall, senão a conexão atual cai. Libere também as portas dos serviços que você vai usar, como 80 e 443 para sites:

# apt install -y ufw
# ufw allow OpenSSH
# ufw allow 80,443/tcp
# ufw enable
# ufw status
Atenção: portas publicadas pelo Docker não passam pelas regras do UFW. Em servidores com Docker, publique só as portas necessárias.

4. Bloqueie tentativas repetidas com o Fail2ban

O Fail2ban bloqueia por um tempo os endereços que erram a senha do SSH várias vezes. Ele já vem configurado para o SSH:

# apt install -y fail2ban
# fail2ban-client status sshd

5. Acesse por chave SSH e desligue a senha

No seu computador (não no servidor), gere um par de chaves e copie a chave pública para o servidor. No Windows, use o PowerShell ou o Terminal:

# ssh-keygen -t ed25519
# ssh-copy-id root@IP-DO-SERVIDOR
No Windows, que não tem o ssh-copy-id, copie o conteúdo do arquivo .ssh\id_ed25519.pub da sua pasta de usuário para o arquivo /root/.ssh/authorized_keys do servidor.

Abra uma nova conexão e confirme que entra sem pedir a senha. Só então desligue o login por senha no servidor:

# nano /etc/ssh/sshd_config.d/00-och.conf
Deixe o arquivo assim:

PermitRootLogin prohibit-password
PasswordAuthentication no
# sshd -t && systemctl reload ssh
A partir daí, o servidor só aceita acesso com a sua chave. Se perder a chave, use o console de recuperação do painel de conta para entrar e voltar a configuração.
Caso tenha alguma dificuldade, abra um ticket de suporte: Abrir ticket