~ / blog / segurança
16 set 2026segurança7 min de leitura

Fail2ban no Ubuntu Server em 10 minutos

Proteger SSH e serviços web contra força bruta com jails e ban time sensatos.

Fail2banSSHUbuntu

Instalação

Servidor exposto sem rate limit em SSH é convite a bots. Fail2ban lê logs e bloqueia IPs no firewall.

sudo apt update
sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban

Jail local para SSH

# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 4
bantime = 1h
findtime = 10m
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd
CUIDADO Não se auto-banque: tenha console ou IP allowlist se o acesso for crítico.

Comandos e opções explicados

Cada linha do artigo tem uma função. A tabela abaixo explica o comando ou a opção e o que ela muda na prática.

Comando ou opçãoO que faz
sudo apt updateAtualiza a lista de pacotes disponíveis antes de instalar.
sudo apt install fail2ban -yInstala o Fail2ban. O -y responde "sim" às confirmações.
sudo systemctl enable --now fail2banenable liga o serviço no boot e --now também o inicia agora.
[sshd]Nome da jail, o conjunto de regras que vigia um serviço, aqui o SSH.
enabled = trueLiga a jail. Sem isso ela existe, mas não age.
port = sshPorta a bloquear para o IP banido. ssh equivale à 22; se você mudou a porta, escreva o número.
filter = sshdFiltro com as expressões regulares que reconhecem falhas de login no log.
logpath = /var/log/auth.logArquivo de log que o Fail2ban lê.
maxretry = 4Quantas falhas são toleradas dentro da janela findtime.
findtime = 10mJanela em que as falhas são contadas.
bantime = 1hPor quanto tempo o IP fica bloqueado.
sudo systemctl restart fail2banReinicia o serviço para ler o jail.local.
sudo fail2ban-client status sshdMostra falhas atuais, total de bloqueios e a lista de IPs banidos.

Lendo as opções juntas: um IP que errar o login 4 vezes em 10 minutos fica bloqueado por 1 hora.

Exemplo: como fica a saída de um IP bloqueado

Com o serviço ativo, fail2ban-client status sshd mostra algo parecido com isto (o IP é fictício):

Status for the jail: sshd
|- Filter
|  |- Currently failed: 2
|  |- Total failed:     37
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 1
   |- Total banned:     3
   `- Banned IP list:   203.0.113.45
Para…Comando
desbloquear um IPsudo fail2ban-client set sshd unbanip 203.0.113.45
nunca bloquear o seu IPadicione ignoreip = 127.0.0.1/8 ::1 SEU_IP na seção [DEFAULT] do jail.local
recarregar sem reiniciarsudo fail2ban-client reload

Erros comuns e como resolver

SintomaCausa provávelSolução
Mensagem "Have not found any log file for sshd jail"O logpath não existe, o que acontece em sistemas sem rsyslog (sem auth.log).Use backend = systemd na jail e remova o logpath, ou instale o rsyslog.
Você mesmo foi bloqueadoMuitas tentativas de login erradas dentro da janela.Entre pelo console do provedor e use unbanip. Depois inclua seu IP no ignoreip.
A configuração sumiu após uma atualizaçãoA edição foi feita no jail.conf, que o pacote pode sobrescrever.Mantenha suas regras no jail.local ou em jail.d/*.local.
Nenhum IP é bloqueadoA porta do SSH foi alterada e a jail ainda aponta para a 22.Ajuste port para o número usado no sshd_config.

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