Proteger o seu VPS: firewall, SSH e actualizações automáticas
Endureça um VPS novo em cerca de uma hora: SSH apenas por chave, uma firewall que não o deixa sem acesso, fail2ban afinado para além dos seus valores fracos por omissão, e actualizações de segurança automáticas.
Um VPS é seu para administrar: a myPandos gere o hardware, a rede e as cópias de segurança, mas o sistema operativo e tudo o que nele existe são da sua responsabilidade. Um servidor num IP público é analisado poucos minutos depois de entrar em linha, por isso vale uma hora logo no primeiro dia.
Estes passos vêm do endurecimento de um VPS real de cliente. Antes do trabalho, o registo de autenticação continha 1.721 tentativas SSH falhadas, tendo a origem mais activa tentado 154 vezes.
1. Use chaves SSH, não uma palavra-passe
É a alteração com maior retorno. Uma palavra-passe adivinha-se a milhares de tentativas por hora; uma chave, não. Veja Como criar uma chave SSH e adicioná-la ao seu painel.
Assim que a entrada por chave funcionar, desligue as palavras-passe em /etc/ssh/sshd_config:
PermitRootLogin no
PasswordAuthentication nosudo systemctl reload sshMantenha a sessão actual aberta enquanto testa uma nova a partir de um segundo terminal. Se falhar, ainda tem a antiga para desfazer; feche-a primeiro e fica sem acesso.
2. Ligue a firewall
O Ubuntu traz o ufw instalado e inactivo. Uma firewall inactiva não é uma firewall permissiva com bons valores por omissão — é a ausência de firewall, e cada porta aberta fica acessível a partir da Internet.
Permita antes de negar. Activar uma política de negação sem uma regra para SSH vai desligá-lo do seu próprio servidor:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp # SSH — faça isto PRIMEIRO
sudo ufw allow 80/tcp # apenas se servir um site
sudo ufw allow 443/tcp
sudo ufw enableSe trabalha por SSH e não tem consola, arme primeiro uma rede de segurança:
sudo nohup bash -c 'sleep 300; ufw --force disable' &A firewall desliga-se ao fim de cinco minutos. Confirme que consegue abrir uma nova sessão SSH e cancele com sudo pkill -f 'sleep 300'.
Veja o que está realmente à escuta antes de decidir as portas:
sudo ss -tlnpTudo o que esteja ligado a 127.0.0.1 já é local e não precisa de regra. As bases de dados pertencem a esse grupo: uma porta MySQL ou PostgreSQL aberta à Internet é uma brecha anunciada.
3. Active o fail2ban
O Ubuntu tem frequentemente o fail2ban instalado mas não activado, o que é indistinguível de o ter até verificar:
sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshdOs valores por omissão são fracos contra um atacante paciente: cinco falhas em dez minutos e bloqueio de dez minutos. Crie /etc/fail2ban/jail.d/custom.conf:
[sshd]
enabled = true
maxretry = 5
findtime = 3600
bantime = 3600sudo systemctl reload fail2banConfirme que consegue mesmo bloquear, em vez de o presumir:
sudo fail2ban-client set sshd banip 203.0.113.99
sudo iptables -S | grep f2b
sudo fail2ban-client set sshd unbanip 203.0.113.994. Deixe as actualizações de segurança aplicarem-se sozinhas
sudo apt install -y unattended-upgrades
sudo systemctl status unattended-upgradesA maioria das intrusões usa uma falha corrigida há meses. É a protecção mais barata desta lista.
5. Verifique o seu trabalho
sudo ufw status verbose
sudo systemctl is-enabled fail2ban
sudo fail2ban-client status sshd
sudo ss -tlnpis-enabled importa tanto como is-active: um serviço a correr mas não activado desaparece no próximo reinício.
O que a myPandos trata e o que é seu
- Nós tratamos: o hardware, a plataforma de virtualização, a rede, a alimentação e os snapshots.
- Você trata: o sistema operativo, tudo o que instalar, as actualizações de segurança e as regras de firewall das suas aplicações.
Se suspeita que foi comprometido
Abra um ticket em dash.mypandos.io imediatamente. Não reinicie: um reinício destrói os processos e ligações que mostram o que aconteceu. Tire um snapshot se puder e avise-nos.