Hardening Básico de Servidor Ubuntu/Debian: Acesso SSH e Firewall
Ao contrário do que muitos tutoriais sugerem, alterar apenas a porta SSH ou instalar Fail2Ban não é suficiente. Esta documentação mostra os passos exatos para endurecer a segurança de um servidor Ubuntu / Debian configurando autenticação por chave, desabilitando padrões inseguros e reduzindo a superfície de ataque.
Autor: joaoprd | joaopedrord2001@gmail.com
Criar usuário administrador seguro
Criar um usuário com privilégios sudo:
adduser whiterose
usermod -aG sudo whiterose
O usuário whiterose será o único autorizado a conectar via SSH após o hardening.
Gerar chave pública e configurar login SSH manualmente
A autenticação por chave pública evita o uso de senhas e é essencial para um servidor seguro. Essa etapa será feita manualmente, sem o uso do ssh-copy-id.
No cliente
Gerar o par de chaves RSA (caso ainda não exista):
ssh-keygen -t rsa -b 4096 -C "whiterose@servidor"
Pressione Enter
para aceitar o caminho padrão (~/.ssh/id_rsa) e, se desejar, defina uma senha para a chave privada.
As chaves geradas:
Privada: ~/.ssh/id_rsa → nunca deve sair do cliente
Pública: ~/.ssh/id_rsa.pub → será copiada para o servidor
Exibir o conteúdo da chave pública:
cat ~/.ssh/id_rsa.pub
Copie o conteúdo exibido (começa com ssh-rsa).
No servidor
Criar o diretório .ssh para o usuário whiterose (caso não exista):
sudo mkdir -p /home/whiterose/.ssh
sudo chown whiterose:whiterose /home/whiterose/.ssh
sudo chmod 700 /home/whiterose/.ssh
Criar (ou editar) o arquivo authorized_keys:
sudo vim /home/whiterose/.ssh/authorized_keys
Cole a chave pública copiada do cliente.
Ajustar permissões
sudo chown whiterose:whiterose /home/whiterose/.ssh/authorized_keys
sudo chmod 600 /home/whiterose/.ssh/authorized_keys
A partir de agora, o usuário whiterose poderá se conectar via SSH utilizando a chave privada correspondente à pública inserida.
Desativar login root e autenticação por senha no SSH
No servidor Ubuntu / Debian deve-se editar o arquivo de configuração do SSH:
sudo vim /etc/ssh/sshd_config
Modificar ou adicionar:
PermitRootLogin no
PasswordAuthentication no
Reiniciar o serviço SSH:
sudo systemctl restart ssh
!!! Faça isso somente após confirmar que o acesso com chave pública está funcionando para o usuário whiterose !!!
Ativar firewall (UFW)
Instalar e ativar o UFW:
sudo apt update && sudo apt install -y ufw
sudo ufw allow OpenSSH
sudo ufw --force enable
Todos os serviços não autorizados serão bloqueados. Apenas SSH (porta 22) estará acessível.
Corrigir permissões de arquivos sensíveis
Ajustar permissões do arquivo /etc/shadow:
sudo chmod 640 /etc/shadow
Garante que apenas root e o grupo shadow tenham acesso de leitura ao conteúdo das senhas.
Instalar e Configurar Fail2Ban (Proteção contra Brute Force)
O Fail2Ban monitora logs de autenticação e bloqueia automaticamente IPs que tentam acessar o servidor de forma maliciosa. Mesmo com autenticação por chaves, é importante protegê-lo contra scanners e tentativas de força bruta.
Instalação
sudo apt update && sudo apt install -y fail2ban
Configuração Básica
O Fail2Ban já vem com configurações padrão, mas é recomendável criar um arquivo local para personalização (evitando conflitos em atualizações):
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo vim /etc/fail2ban/jail.local
Ajustes Recomendados (em jail.local)
Na seção [DEFAULT], modifique os campos se já existirem ou adicione:
[DEFAULT]
ignoreip = (IPs que nunca serão banidos)
bantime = 1h
maxretry = 3
findtime = 10m
Reinicie o Fail2Ban
sudo systemctl restart fail2ban
sudo systemctl enable fail2ban
Verificar os logs
sudo tail -f /var/log/fail2ban.log
Conclusão
Seguindo estes passos, você garante uma proteção básica e eficiente para seu servidor Ubuntu/Debian. Usar chave SSH, desativar o login root, ativar o firewall e configurar o Fail2Ban ajuda a evitar ataques comuns e deixa seu sistema mais seguro.