~ / blog / segurança
01 ago 2026 segurança 8 min de leitura

Hardening de Servidor Linux: SSH, UFW e Fail2ban

Checklist prático de segurança para servidores expostos: chave SSH, hardening do sshd, firewall UFW e proteção contra brute force.

LinuxSSHUFWFail2ban

1. Atualização e usuário

sudo apt update && sudo apt full-upgrade -y
sudo adduser admin
sudo usermod -aG sudo admin

Teste o sudo com o novo usuário antes de seguir.

2. SSH só com chave

$ # na máquina local
ssh-keygen -t ed25519 -C "seu-email"
ssh-copy-id admin@IP-DO-SERVIDOR

Em /etc/ssh/sshd_config:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
sudo systemctl restart ssh
warn · Mantenha uma sessão aberta enquanto testa. Se travar, use o console do provedor.

3. Hardening do sshd

Port 2222
KexAlgorithms curve25519-sha256
Ciphers [email protected],[email protected]
MACs [email protected],[email protected]
AllowUsers admin
ClientAliveInterval 300
ClientAliveCountMax 2
MaxAuthTries 3

4. UFW

sudo apt install ufw -y
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp comment 'SSH'
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose
tip · Em backend, libere só o necessário.

5. Fail2ban

sudo apt install fail2ban -y
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 1h
findtime = 10m
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd

6. Checklist

  • Sistema atualizado
  • Usuário sudo; root sem login SSH
  • SSH só por chave
  • Porta SSH restrita no UFW
  • UFW default deny
  • Fail2ban no SSH
  • unattended-upgrades para patches

7. Comandos e diretivas explicados

ComandoO que faz
sudo apt update && sudo apt full-upgrade -yAtualiza a lista de pacotes e instala todas as atualizações, inclusive as que adicionam ou removem dependências.
sudo adduser adminCria o usuário admin com pasta pessoal e senha.
sudo usermod -aG sudo adminAdiciona admin ao grupo sudo. O -a acrescenta sem remover dos outros grupos.
sudo ufw default deny incomingNega por padrão toda a entrada.
sudo ufw allow 2222/tcp comment 'SSH'Libera a porta escolhida para o SSH.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localCria uma cópia editável, que não é sobrescrita nas atualizações do pacote.
Diretiva do sshd_configO que faz
ChallengeResponseAuthentication noDesativa a autenticação interativa por desafio. Em versões novas do OpenSSH, o nome atual é KbdInteractiveAuthentication.
UsePAM yesMantém o PAM ativo para contas, sessões e políticas de acesso.
Port 2222Muda a porta. Reduz o ruído de bots nos logs, mas não substitui as outras proteções.
KexAlgorithms curve25519-sha256Restringe a troca de chaves a um algoritmo moderno. Clientes muito antigos podem deixar de conectar.
Ciphers e MACsListas de algoritmos de cifra e de integridade permitidos.
AllowUsers adminSó o usuário admin entra por SSH.
ClientAliveInterval 300 e ClientAliveCountMax 2Envia um sinal a cada 300 segundos e encerra a sessão após 2 sem resposta, cerca de 10 minutos de inatividade.
MaxAuthTries 3Máximo de tentativas por conexão.
Diretiva do Fail2banO que faz
port = 2222deve acompanhar a porta do SSH
maxretry = 33 falhas dentro da janela levam ao bloqueio
findtime = 10mjanela de contagem das falhas
bantime = 1hduração do bloqueio

8. Exemplo: conferir se tudo ficou no lugar

sudo ss -lntp | grep ssh
sudo ufw status verbose
sudo fail2ban-client status sshd
ComandoO que você deve ver
ss -lntp | grep ssho sshd escutando na porta escolhida (por exemplo, :2222)
ufw status verboseDefault: deny (incoming) e a regra da porta do SSH
fail2ban-client status sshda jail ativa, com a mesma porta e a lista de IPs bloqueados

9. Erros comuns e como resolver

SintomaCausa provávelSolução
Ficou sem acesso depois de mudar a portaA nova porta não foi liberada no UFW antes de reiniciar o SSH.Libere a porta no UFW primeiro e mantenha uma sessão aberta. Se travar, use o console do provedor.
O Fail2ban não bloqueia depois de trocar a portaO port do jail.local continua na 22.Ajuste port para o mesmo número do sshd_config.
O SSH continua na porta 22 no Ubuntu recenteVersões novas do Ubuntu iniciam o SSH por ativação de socket, e o Port do sshd_config pode ser ignorado.Confira com ss -lntp e, se necessário, ajuste o ssh.socket ou desative a ativação por socket.
Clientes antigos não conectamAs listas de KexAlgorithms, Ciphers e MACs são restritas demais.Amplie as listas ou atualize o cliente.
$ next

Precisa de infraestrutura na prática?

falar com a IRN Devs → serviços

Quer aplicar isso ao seu contexto?

Se esse problema existe na sua operação, podemos analisar o cenário em um diagnóstico gratuito de 30 minutos.

solicitar diagnóstico gratuito →

Leia também