Imagem do artigo Como proteger uma VPS

Artigo - Como proteger uma VPS

18/04/2026

1. Configuração inicial de segurança

Atualizar o sistema

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget vim git ufw

Opcional (remove pacotes desnecessários):

sudo apt autoremove -y

Criar usuário não-root

adduser deploy
usermod -aG sudo deploy

Trocar para o novo usuário:

su - deploy

Configurar SSH seguro

1. Gerar chave SSH (na sua máquina local)

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

2. Enviar chave para o servidor

ssh-copy-id deploy@IP_DA_VPS

3. Editar configuração do SSH

sudo nano /etc/ssh/sshd_config

Altere:

Port 2222 # muda porta padrão
PermitRootLogin no # desabilita root
PasswordAuthentication no # desabilita senha
PubkeyAuthentication yes

Reiniciar SSH:

sudo systemctl restart ssh

⚠️ Antes de sair, teste:

ssh deploy@IP_DA_VPS -p 2222

🔥 2. Firewall (UFW)

Ativar UFW

sudo ufw default deny incoming
sudo ufw default allow outgoing

Permitir SSH (nova porta):

sudo ufw allow 2222/tcp

Se for servidor web:

sudo ufw allow 80,443/tcp

Ativar:

sudo ufw enable

Ver status:

sudo ufw status verbose

🛡️ 3. Proteção contra força bruta (Fail2Ban)

Instalar

sudo apt install fail2ban -y

Configuração básica

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

Exemplo recomendado:

[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5

[sshd]
enabled = true
port = 2222

Reiniciar:

sudo systemctl restart fail2ban

Ver status:

sudo fail2ban-client status sshd

⚙️ 4. Hardening do sistema

Desativar serviços desnecessários

sudo systemctl list-unit-files --type=service

Desativar exemplo:

sudo systemctl disable avahi-daemon
sudo systemctl stop avahi-daemon

Configurações de segurança do kernel


sudo nano /etc/sysctl.conf

Adicionar:

net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

Aplicar:

sudo sysctl -p

Permissões importantes

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

🌐 5. Segurança para aplicações web

Nginx seguro

sudo apt install nginx -y

Config básica segura (/etc/nginx/nginx.conf):

server_tokens off;

Proteções úteis

Limitar requisições (rate limit)

limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;

HTTPS com Let's Encrypt

Instalar:

sudo apt install certbot python3-certbot-nginx -y

Gerar certificado:

sudo certbot --nginx -d seu-dominio.com

Auto-renovação:

sudo systemctl status certbot.timer

Proteção contra ataques web

  1. Use WAF como:
  2. ModSecurity
  3. Sempre:
  4. sanitize inputs
  5. use prepared statements (SQL)
  6. valide dados no backend

📊 6. Monitoramento e logs

Logs importantes

/var/log/auth.log
/var/log/syslog
/var/log/nginx/access.log
/var/log/nginx/error.log

Ferramentas úteis

Instalar:

sudo apt install htop iotop nload -y

Monitoramento:

htop

🧬 7. Proteção contra malware/rootkits

Instalar ferramentas

sudo apt install rkhunter chkrootkit clamav -y

Atualizar:

sudo rkhunter --update
sudo freshclam

Escanear:

sudo rkhunter --check
sudo chkrootkit
sudo clamscan -r /

💾 8. Backups

Estratégia recomendada

  1. Regra 3-2-1:
  2. 3 cópias
  3. 2 locais diferentes
  4. 1 offsite

Backup com rsync

rsync -avz /var/www user@backup-server:/backup/

Automatizar:

crontab -e

Exemplo diário:

0 2 * * * rsync -az /var/www backup@IP:/backup/

🔄 9. Atualizações automáticas

Instalar:

sudo apt install unattended-upgrades -y

Configurar:

sudo dpkg-reconfigure unattended-upgrades

🚀 10. Dicas avançadas

VPN (WireGuard)

sudo apt install wireguard -y

Use para acesso administrativo → evita exposição SSH.

Port Knocking

Instalar:

sudo apt install knockd -y

Permite abrir SSH só após sequência de portas.

IDS/IPS (Snort)

sudo apt install snort -y

Detecta tráfego malicioso.

Rate limiting via UFW

sudo ufw limit 2222/tcp

🧠 Boas práticas finais

  1. Nunca exponha serviços desnecessários
  2. Use sempre chaves SSH
  3. Monitore logs regularmente
  4. Atualize frequentemente
  5. Use Cloudflare ou CDN para sites públicos
  6. Separe ambientes (prod/dev)

✅ Checklist rápido

  1. SSH sem senha
  2. Root desativado
  3. Firewall ativo
  4. Fail2Ban ativo
  5. HTTPS configurado
  6. Backups funcionando
  7. Atualizações automáticas



Ver todos os posts