DEV Community

Cover image for Hardening Básico de Servidor Ubuntu/Debian: Acesso SSH e Firewall
João Pedro
João Pedro

Posted on

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 
Enter fullscreen mode Exit fullscreen mode

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" 
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

Exibir o conteúdo da chave pública:

cat ~/.ssh/id_rsa.pub 
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

Criar (ou editar) o arquivo authorized_keys:

sudo vim /home/whiterose/.ssh/authorized_keys 
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

Modificar ou adicionar:

PermitRootLogin no PasswordAuthentication no 
Enter fullscreen mode Exit fullscreen mode

Reiniciar o serviço SSH:

sudo systemctl restart ssh 
Enter fullscreen mode Exit fullscreen mode

!!! 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 
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

Reinicie o Fail2Ban

sudo systemctl restart fail2ban sudo systemctl enable fail2ban 
Enter fullscreen mode Exit fullscreen mode

Verificar os logs

sudo tail -f /var/log/fail2ban.log 
Enter fullscreen mode Exit fullscreen mode

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.

Top comments (0)