Um VPS KVM gerenciado é uma máquina virtual com kernel próprio, CPU, memória e disco isolados dos vizinhos, com o setup de segurança feito antes da aplicação entrar. Quem recebe o acesso root ainda precisa validar o ambiente e fechar o SSH. Estes são os primeiros comandos, em Ubuntu 22.04 ou 24.04.
A comparação com hospedagem compartilhada está em VPS gerenciado ou compartilhado. O plano com esse setup feito pela engenharia está em VPS KVM.
1. Confirmar que o hipervisor é KVM
systemd-detect-virt
free -h
nproc
lsblk
systemd-detect-virt deve imprimir kvm. free -h e nproc mostram a RAM e as vCPUs do plano. lsblk lista o disco. Se o comando imprimir openvz ou lxc, o servidor não tem kernel próprio e vários passos abaixo não se aplicam.
2. Atualizar e criar o usuário de operação
Entre como root só nesta primeira sessão.
apt update && apt upgrade -y
adduser deploy
usermod -aG sudo deploy
Na sua máquina, gere uma chave se ainda não existir e copie para o servidor:
ssh-keygen -t ed25519 -C "deploy@empresa"
ssh-copy-id deploy@IP_DO_VPS
Abra um segundo terminal e confirme que ssh deploy@IP_DO_VPS entra sem senha. Só então continue. Fechar o root antes desse teste tranca o servidor.
3. Desligar login de root e senha
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo sshd -t && sudo systemctl reload ssh
sshd -t valida o arquivo. Se ele acusar erro, não recarregue o serviço. Mantenha a sessão atual aberta e teste o login da chave em outro terminal.
4. Firewall, fail2ban e atualização automática
sudo apt install -y ufw fail2ban unattended-upgrades
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
O jail do SSH no Ubuntu não vem ligado. Crie /etc/fail2ban/jail.local:
[sshd]
enabled = true
maxretry = 5
bantime = 1h
sudo systemctl enable --now fail2ban
printf 'APT::Periodic::Update-Package-Lists "1";\nAPT::Periodic::Unattended-Upgrade "1";\n' | sudo tee /etc/apt/apt.conf.d/20auto-upgrades
sudo systemctl enable --now unattended-upgrades
sudo timedatectl set-timezone America/Sao_Paulo
ufw status precisa mostrar a regra do OpenSSH como ALLOW. Sem ela, o próximo login não entra.
5. O que conferir antes de subir a aplicação
df -h
timedatectl
sudo fail2ban-client status sshd
Disco com folga, fuso certo e o jail sshd ativo. A aplicação vem depois: usuário de serviço sem sudo, porta da app atrás de Nginx e backup fora desta máquina. O monitoramento de CPU e disco está no guia de Grafana em um VPS.
Conclusão
Esses comandos deixam o VPS KVM com um usuário, chave, firewall e atualização de segurança. É o mínimo antes de publicar qualquer site. No VPS gerenciado esse primeiro dia já sai feito, e a equipe segue com root para a aplicação.