Hardening VPS Ubuntu Como Proteger Uma VPS Nova

Categorias: Linux, Servidor

Sempre que inicio uma nova VPS em algum lugar (hostinger, proxmox local no homelab, etc), me deparo com a necessidade fazer um hardening inicial básico (proteção) antes de expor publicamente o servidor. Neste tutorial resumi os principais passos por ordem de importância, do mais para o menos importante. Servirá como guia para mim, a equipe Setor9 e qualquer um que precisar na internet futuramente.

1. Atualize o sistema

sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y

Opcionalmente reinicie se houver atualização de kernel:

sudo reboot

2. Crie um usuário comum com sudo

Evite administrar tudo como root.

adduser seuusuario
usermod -aG sudo seuusuario

Depois teste login com esse usuário antes de bloquear root.


3. Configure SSH com chave, não senha

No seu computador local, se ainda não tiver chave:

ssh-keygen -t ed25519 -C "seu-email-ou-identificacao"

Copie a chave para a VPS:

ssh-copy-id seuusuario@IP_DA_VPS

Teste:

ssh seuusuario@IP_DA_VPS

4. Endureça o SSH

Edite:

sudo nano /etc/ssh/sshd_config

Recomendações principais:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication no
X11Forwarding no

Opcionalmente mude a porta SSH, por exemplo:

Port 2222

Atenção: se mudar a porta, libere no firewall antes de reiniciar o SSH.

Teste a configuração:

sudo sshd -t

Reinicie o serviço:

sudo systemctl restart ssh

Ou, em algumas versões:

sudo systemctl restart sshd

Mantenha uma sessão SSH aberta enquanto testa uma nova, para não se trancar fora.


5. Configure firewall com UFW

Libere apenas o necessário.

Se usa SSH na porta padrão:

sudo ufw allow OpenSSH

Se mudou para porta 2222:

sudo ufw allow 2222/tcp

Para servidor web:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Ative:

sudo ufw enable
sudo ufw status verbose

6. Instale proteção contra força bruta

Use fail2ban:

sudo apt install fail2ban -y

Crie uma configuração local:

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

Para SSH, algo como:

[sshd]
enabled = true
port = ssh
maxretry = 5
bantime = 1h
findtime = 10m

Se mudou a porta SSH:

port = 2222

Reinicie:

sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd

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

sudo apt install unattended-upgrades apt-listchanges -y
sudo dpkg-reconfigure unattended-upgrades

Verifique:

systemctl status unattended-upgrades

8. Configure hostname e timezone

Hostname:

sudo hostnamectl set-hostname nome-da-vps

Timezone, se quiser São Paulo:

sudo timedatectl set-timezone America/Sao_Paulo

9. Desative serviços desnecessários

Veja serviços escutando portas:

sudo ss -tulpn

Veja serviços ativos:

systemctl --type=service --state=running

Desative o que não usa, por exemplo:

sudo systemctl disable --now nome-do-servico

10. Instale ferramentas básicas de auditoria

sudo apt install curl wget vim htop ncdu net-tools lsof jq git -y

Para segurança/auditoria:

sudo apt install auditd lynis -y

Rode um scan inicial:

sudo lynis audit system

11. Configure logs e monitoramento mínimo

Ver logs de autenticação:

sudo journalctl -u ssh

Ou:

sudo tail -f /var/log/auth.log

Ver tentativas de login:

sudo grep "Failed password" /var/log/auth.log

Em Ubuntu mais novo, alguns logs podem estar no journalctl.


12. Backups

Tenha backup fora da VPS. Idealmente:

  • backup automático;
  • criptografado;
  • testado com restore;
  • salvo em outro local, como NAS, storage S3, Backblaze, rsync remoto etc.

Ferramentas boas:

sudo apt install restic -y

Ou:

sudo apt install borgbackup -y

13. Permissões e acesso

Evite permissões amplas como 777.

Cheque arquivos sensíveis:

ls -la ~/.ssh

Permissões recomendadas:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

14. Proteja aplicações com usuário separado

Se for rodar Docker, app web, banco etc., evite rodar tudo como root.

Exemplo:

sudo adduser --system --group minhaapp

Use serviços systemd com usuário próprio quando possível.


15. Se usar Docker, cuidado extra

Instale Docker apenas se precisar. O grupo docker equivale praticamente a root.

Evite expor portas internas sem necessidade. Prefira:

ports:
  - "127.0.0.1:8080:8080"

em vez de:

ports:
  - "8080:8080"

Use reverse proxy para expor apenas 80/443.


16. Configure swap, se a VPS for pequena

Não é exatamente segurança, mas evita travamentos.

sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Adicione ao /etc/fstab:

/swapfile none swap sw 0 0

17. Use HTTPS se houver site

Com Nginx:

sudo apt install nginx certbot python3-certbot-nginx -y
sudo certbot --nginx

Com Apache:

sudo apt install apache2 certbot python3-certbot-apache -y
sudo certbot --apache

18. Checklist rápido recomendado

Se eu tivesse que resumir o essencial:

sudo apt update && sudo apt upgrade -y
sudo adduser seuusuario
sudo usermod -aG sudo seuusuario
sudo ufw allow OpenSSH
sudo ufw enable
sudo apt install fail2ban unattended-upgrades -y
sudo dpkg-reconfigure unattended-upgrades

Depois:

  1. configurar SSH por chave;
  2. desabilitar login root;
  3. desabilitar senha no SSH;
  4. liberar apenas portas necessárias;
  5. configurar backups;
  6. monitorar logs;
  7. manter tudo atualizado.

Essas medidas já reduzem bastante o risco de comprometimento em uma VPS Ubuntu nova.

Categorias
Tags