VPS Master7 · Módulo 03

Hardening de
Segurança

SSH key-only, user ghost brandado, UFW firewall, fail2ban, updates automáticos. Em 20 minutos seu servidor vira fortaleza antes de expor qualquer app na internet.

Duração20 min
NívelIntermediário
EntregávelVPS blindada
Pré-módulo01 (SSH funcional)
CriticidadeALTA

Por que hardening ANTES de qualquer app?

Assim que sua VPS entra na internet, bots começam a escanear em segundos. SSH brute-force é o vetor #1 de invasão. Antes de instalar Docker, EasyPanel ou qualquer app, travamos o básico.

🚨 Realidade: nos primeiros 10 minutos de uma VPS nova exposta, você já recebe dezenas de tentativas de login root por senha. Esse módulo bloqueia 99.9% delas.
01

Update + upgrade completo do sistema

Conectado como root (módulo 01), primeiro atualiza tudo:

apt update && apt upgrade -y
apt autoremove -y
apt install -y ufw fail2ban unattended-upgrades curl wget git htop ncdu

Se aparecer tela azul perguntando sobre reiniciar serviços, escolha Yes. Se pedir pra reiniciar a VPS: reboot. Espera 1-2 min e reconecta.

02

Criar user ghost com sudo

Nunca use root pro dia-a-dia. O user ghost é brandado GL7:

adduser ghost
# Senha forte (20+ chars). Nome completo: Ghost Lab7 Operator. Outros: Enter.

usermod -aG sudo ghost

# Sudo sem senha (opcional, mais produtivo):
echo "ghost ALL=(ALL) NOPASSWD:ALL" | tee /etc/sudoers.d/ghost
chmod 440 /etc/sudoers.d/ghost
⚠️ Sudo NOPASSWD: conveniente mas se a chave SSH vazar, atacante tem root direto. Se preferir mais segurança, pula essa linha e digite senha toda vez que usar sudo.
03

Autorizar sua chave SSH no user ghost

Copia a chave pública do root pro ghost (ou adiciona a que estava usando):

mkdir -p /home/ghost/.ssh
cp /root/.ssh/authorized_keys /home/ghost/.ssh/authorized_keys
chown -R ghost:ghost /home/ghost/.ssh
chmod 700 /home/ghost/.ssh
chmod 600 /home/ghost/.ssh/authorized_keys

Teste SEM FECHAR o SSH root. Abre outro terminal no Mac/Linux e tenta:

# Mac/Linux local:
ssh -i ~/.ssh/master7_ed25519 ghost@SEU_IP

Se entrou como ghost sem pedir senha, sucesso. Se falhar, NÃO feche o terminal root — arrume antes de seguir.

04

Desabilitar login root por senha

Agora que ghost funciona, trava o SSH:

sudo nano /etc/ssh/sshd_config

# Altera estas linhas (ou adiciona se não existirem):
PermitRootLogin prohibit-password
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes

# Salva com Ctrl+O, Enter, Ctrl+X
sudo systemctl restart ssh
🚨 Teste imediato: abre outro terminal e tenta ssh root@IP com senha. Deve falhar com "Permission denied". Se passar, seu sshd_config tá errado — NÃO feche a sessão root ativa até confirmar.
05

UFW Firewall — só abre o necessário

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp    # SSH
sudo ufw allow 80/tcp    # HTTP
sudo ufw allow 443/tcp   # HTTPS
sudo ufw enable          # Confirma "y"

sudo ufw status verbose

Output esperado: 3 portas abertas (22, 80, 443), resto bloqueado.

06

fail2ban — ban automático de brute-force

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

# Dentro do arquivo, edita:
# [DEFAULT]
# bantime = 1h
# findtime = 10m
# maxretry = 5
#
# [sshd]
# enabled = true
# port = 22
# logpath = %(sshd_log)s

sudo systemctl enable fail2ban
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd
07

Updates automáticos de segurança

sudo dpkg-reconfigure --priority=low unattended-upgrades
# Escolhe "Yes" na tela

# Verifica config:
cat /etc/apt/apt.conf.d/50unattended-upgrades | head -20

De agora em diante, a VPS atualiza security patches sozinha todo dia.

✅ VPS blindada. Você tem: user não-root, SSH key-only, firewall restritivo, fail2ban ativo, updates automáticos. Esse é o baseline de hardening que 95% das VPSs em produção falham.

Próximo passo

No Módulo 04 vamos instalar Docker + EasyPanel pro lado Ops da Dual Architecture.