Hardening de VPS Ubuntu: checklist completo

Uma VPS recém-criada está exposta à internet com configuração padrão, isso significa senha root via SSH, todas as portas acessíveis e sem proteção contra força bruta. Hardening é o processo de reduzir a superfície de ataque: desabilitar o que não é necessário, restringir o que é e monitorar o restante. Este checklist cobre os passos essenciais para qualquer VPS Ubuntu 22.04 ou 24.04.

Passo 1: atualizar e ativar atualizações automáticas de segurança

A maioria das invasões exploram vulnerabilidades conhecidas com patches disponíveis:

bash
# Atualizar tudo imediatamente
apt update && apt upgrade -y && apt autoremove -y

# Instalar unattended-upgrades
apt install -y unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades

# Verificar configuração
cat /etc/apt/apt.conf.d/20auto-upgrades
# Deve conter:
# APT::Periodic::Update-Package-Lists "1";
# APT::Periodic::Unattended-Upgrade "1";

# Testar
unattended-upgrade --dry-run --debug | head -20

Passo 2: criar usuário não-root e bloquear acesso root

Root deve ser inacessível remotamente:

bash
# Criar usuário de administração
adduser deploy
usermod -aG sudo deploy

# Copiar chave SSH do root para o novo usuário
mkdir -p /home/deploy/.ssh
cp ~/.ssh/authorized_keys /home/deploy/.ssh/
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
chmod 600 /home/deploy/.ssh/authorized_keys

# TESTE O LOGIN EM OUTRO TERMINAL ANTES DE CONTINUAR
# ssh deploy@IP_DA_VPS

# Desabilitar root via SSH
sed -i 's/^PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
systemctl reload sshd

Passo 3: firewall com UFW

Bloquear tudo que entra, liberar apenas o necessário:

bash
apt install -y ufw

ufw default deny incoming
ufw default allow outgoing

# Liberar SSH ANTES de ativar
ufw allow ssh
ufw allow 80/tcp
ufw allow 443/tcp

# Ativar
ufw enable
ufw status verbose

Passo 4: hardening SSH

Restrinja SSH além do básico:

bash
cat >> /etc/ssh/sshd_config << 'EOF'

PermitRootLogin no
PasswordAuthentication no
MaxAuthTries 3
MaxSessions 5
LoginGraceTime 30
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers deploy
X11Forwarding no
AllowAgentForwarding no
EOF

sshd -t && systemctl reload sshd

Passo 5: fail2ban e monitoramento básico

Bloquear IPs com comportamento suspeito e verificar o estado do sistema:

bash
apt install -y fail2ban

cat > /etc/fail2ban/jail.local << 'EOF'
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5

[sshd]
enabled = true
port = ssh
maxretry = 3
bantime = 86400
EOF

systemctl enable --now fail2ban

# Verificar estado do sistema
ss -tlnp          # portas abertas
last -n 10        # últimos logins
lastb | head -10  # tentativas falhas

Não quer configurar manualmente?

Implante o VPS em menos de 5 minutos com a Runstack. Infraestrutura da OPEN Datacenter, com servidores em São Paulo.

Perguntas frequentes

Na ordem: (1) apt update && apt upgrade, (2) criar usuário não-root com sudo, (3) configurar SSH com chave pública, (4) ativar UFW, (5) instalar fail2ban. Esses 5 passos levam menos de 15 minutos e cobrem 90% dos ataques comuns.

Reduz muito o ruído de logs (bots param de aparecer) mas não é segurança real, port scanners encontram qualquer porta aberta. O ganho principal é prático: menos entradas no fail2ban, logs mais limpos.

Não por padrão. Docker modifica o iptables diretamente, criando regras que precedem o UFW. Use 127.0.0.1:5432:5432 no docker-compose para expor apenas no loopback, ou redes Docker internas sem expor ao host.

ClamAV é útil para scanning de arquivos de upload enviados por usuários. Para o servidor em si: Lynis (auditoria) e rkhunter (rootkit) são mais relevantes que antivírus tradicional.

Não tente limpar, reconstrua. (1) Snapshot para evidência forense, (2) bloquear na firewall da nuvem, (3) identificar vetor de ataque nos logs, (4) criar nova VPS com hardening correto, (5) restaurar dados de backup limpo.