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.

Similar Posts