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.
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.
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.
ghost com sudoNunca 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.
ghostCopia 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.
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
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.
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.
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
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.
No Módulo 04 vamos instalar Docker + EasyPanel pro lado Ops da Dual Architecture.