Os primeiros 10 passos de segurança num VPS novo
Num VPS novo, as primeiras tarefas são atualizar o sistema, criar um utilizador à parte que entra com uma chave em vez de root, desativar o acesso por palavra-passe, ativar a firewall e o fail2ban, ativar as atualizações de segurança automáticas e verificar se as cópias de segurança funcionam. Abaixo estão os 10 passos pela ordem em que os deve fazer. Os comandos são para Ubuntu e Debian.
Todos os servidores na internet são alvo de varreduras automáticas e de robôs que adivinham palavras-passe, e isto vê-se no seu próprio registo de SSH. A ordem importa: confirme que os passos 2 e 3 funcionam antes de fazer o passo 4, ou pode ficar sem acesso. O sudo nos comandos também funciona se tiver entrado como root.
Sistema e contas
1. Atualize o sistema
sudo apt update && sudo apt upgrade -y
No Ubuntu, o ficheiro /var/run/reboot-required aparece quando uma atualização precisa de reinício. Se aparecer, reinicie o servidor uma vez. O Debian pode não criar este ficheiro, por isso reinicie de qualquer modo após uma atualização do kernel.
2. Crie o seu próprio utilizador
Não use o root no dia a dia. Crie um utilizador à parte com permissões de sudo. Substitua deploy pelo nome que quiser:
sudo adduser deploy
sudo usermod -aG sudo deploy
3. Entre com uma chave SSH
Se o seu computador ainda não tem um par de chaves, crie um com ssh-keygen -t ed25519. Depois copie a chave pública para o novo utilizador e teste o acesso:
ssh-copy-id [email protected]
Se entrou sem que lhe pedissem a palavra-passe, está pronto. O Windows não tem o ssh-copy-id. No PowerShell, este comando faz o mesmo:
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | ssh [email protected] "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Reforce o SSH
4. Desative o acesso por palavra-passe e como root
Primeiro confirme que consegue entrar como o novo utilizador com a sua chave. Depois descubra que ficheiros definem estas opções. Quando o OpenSSH encontra a mesma opção em vários sítios, usa o primeiro valor que lê. No Debian e no Ubuntu, o ficheiro de configuração principal inclui a pasta /etc/ssh/sshd_config.d/ logo no início. As imagens de fornecedores podem deixar nessa pasta um ficheiro que ativa o acesso por palavra-passe. Mesmo que escreva no no ficheiro principal, o yes desse ficheiro continua em vigor:
sudo grep -rniE "^\s*(PasswordAuthentication|PermitRootLogin|KbdInteractiveAuthentication)" /etc/ssh/sshd_config /etc/ssh/sshd_config.d/
Defina como no cada linha ativa do resultado, no ficheiro em que aparece: PasswordAuthentication no, PermitRootLogin no, KbdInteractiveAuthentication no. Acrescente ao fim de /etc/ssh/sshd_config qualquer opção que não apareça no resultado. Depois teste, aplique e verifique os valores que estão realmente em vigor:
sudo sshd -t && sudo systemctl reload ssh
sudo sshd -T | grep -E "^(passwordauthentication|permitrootlogin|kbdinteractiveauthentication)"
As três linhas devem terminar em no. Não feche a sessão aberta. Abra um novo terminal e confirme que o acesso por chave funciona antes de sair. Se mesmo assim ficar sem acesso, abra a consola VNC a partir do painel. O acesso pela consola não é afetado pelas definições do SSH.
Estas definições podem voltar atrás sem darmos por isso. Ações no painel do fornecedor, como adicionar uma chave SSH ou repor a palavra-passe, podem fazer com que o script de primeiro arranque do fornecedor (cloud-init) corra de novo no arranque seguinte, e esse script pode voltar a ativar o acesso por palavra-passe. Após qualquer ação deste tipo, execute outra vez o comando sshd -T acima e verifique os valores.
Restrinja o acesso exterior
5. Ative a firewall
No ufw, permita primeiro o SSH e só depois ative a firewall. Se fizer ao contrário, a ligação cai. Se o SSH corre numa porta diferente da 22, use essa porta em vez da 22:
sudo ufw allow 22/tcp
sudo ufw enable
sudo ufw status verbose
Se vai executar um servidor web, permita também as portas 80 e 443. Por predefinição, o ufw rejeita as ligações de entrada. O painel também tem uma ferramenta de firewall. Se usa o Docker, tenha cuidado: segundo a documentação do Docker, as portas que publica contornam as regras do ufw. Para serviços a que só o próprio servidor precisa de aceder, publique a porta apenas no endereço de loopback, por exemplo 127.0.0.1:5432:5432 num ficheiro Docker Compose.
6. Instale o fail2ban
O fail2ban bloqueia durante algum tempo os endereços IP que falham repetidamente o acesso:
sudo apt install -y fail2ban python3-systemd
printf '[sshd]\nenabled = true\nbackend = systemd\nmaxretry = 5\nbantime = 1h\n' | sudo tee /etc/fail2ban/jail.local
sudo systemctl enable fail2ban && sudo systemctl restart fail2ban
sudo fail2ban-client status sshd
Nos servidores com aplicação de um clique da Seturack, o ufw está ativo e o fail2ban corre. Se instalou um sistema operativo limpo, verifique o estado de ambos com sudo ufw status e systemctl is-active fail2ban.
7. Reveja as portas abertas
sudo ss -tulpn
O comando lista todos os serviços e portas à escuta. Os serviços que não precisam de acesso exterior, como bases de dados e caches, devem escutar apenas em 127.0.0.1. Desligue o que não precisa: sudo systemctl disable --now service-name
Manter assim
8. Automatize as atualizações de segurança
Segundo a documentação do Ubuntu, o pacote unattended-upgrades costuma vir pré-instalado e as atualizações de segurança estão ativas. Se não existir, instale-o e ative-o:
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
O reinício automático vem desativado por predefinição, por isso reinicie o servidor por si após as atualizações do kernel. Segundo os termos de serviço, manter o sistema atualizado depois da configuração é da sua responsabilidade.
9. Faça cópias de segurança e teste uma restauração
Na Seturack, o seu servidor tem uma cópia de segurança todas as noites e guardam-se os últimos 7 dias. Isto está incluído no preço. No separador Gestão, abra Cópias de segurança para as ver, recuperar um único ficheiro ou restaurar o servidor inteiro. Para testar uma restauração, recupere um único ficheiro: restaurar o servidor inteiro substitui todo o disco atual. Criar um instantâneo antes de uma alteração grande é um bom hábito, mas um instantâneo não é uma cópia de segurança. Guarde também uma cópia dos seus dados importantes fora do servidor. Para mais pormenores, veja o artigo sobre as cópias de segurança diárias.
10. Reforce as suas palavras-passe
A sua conta do painel é a chave do servidor. Use aí uma palavra-passe longa que não use em mais lado nenhum e guarde-a num gestor de palavras-passe. Altere com sudo passwd root a primeira palavra-passe de root que copiou do painel. Proteja a sua chave privada SSH com uma frase-passe. Nunca cole palavras-passe ou chaves em mensagens de suporte ou conversas.
Comentários0
Ainda não existem comentários
Seja a primeira pessoa a partilhar a sua opinião.
Inicie sessão ou crie uma conta para deixar um comentário.