Fail2ban: como proteger seu VPS contra ataques de força bruta
Bots tentam acessar servidores com IP público todos os dias. Com o Fail2ban, você bloqueia automaticamente IPs com muitas falhas de login e adiciona uma camada prática de defesa ao SSH.
Resumo rápido
O que o Fail2ban faz no VPS
O Fail2ban monitora arquivos de log do sistema, identifica padrões suspeitos, como várias tentativas de login falhas em pouco tempo, e bane o IP de origem usando o firewall do servidor. Na prática, ele reduz muito ataques automatizados de força bruta contra o SSH.
- Serviço principal
- sshd
- Configuração
- jail.local
- Teste
- fail2ban-client
Pré-requisitos
- Um VPS com Ubuntu, Debian, Rocky Linux, AlmaLinux, CentOS, RHEL ou distribuição similar.
- Acesso root ou usuário com privilégios
sudo. - Firewall básico configurado, como UFW, iptables ou nftables. É opcional, mas recomendado.
Passo a passo
- 01
Instale o Fail2ban
Em distribuições baseadas em Debian ou Ubuntu, atualize os pacotes e instale o serviço:
sudo apt update sudo apt install fail2ban -yEm Rocky Linux, AlmaLinux, CentOS ou RHEL, habilite o repositório EPEL quando necessário e instale:
sudo dnf install epel-release -y sudo dnf install fail2ban -y - 02
Habilite e inicie o serviço
Depois de instalar, deixe o Fail2ban iniciar junto com o sistema e verifique o status:
sudo systemctl enable fail2ban sudo systemctl start fail2ban sudo systemctl status fail2ban - 03
Use o arquivo jail.local
O arquivo
jail.confé o padrão do pacote e pode mudar em atualizações. Suas configurações devem ficar emjail.local.sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local - 04
Configure os limites principais
Na seção
[DEFAULT], ajuste tempo de banimento, janela de análise, tentativas permitidas e IPs ignorados:[DEFAULT] # Tempo que o IP fica banido. 3600 = 1 hora bantime = 3600 # Janela de tempo para contar tentativas falhas findtime = 600 # Tentativas falhas antes do banimento maxretry = 5 # IPs que nunca devem ser banidos ignoreip = 127.0.0.1/8 ::1Se você tem IP fixo em casa ou no trabalho, adicione esse IP em
ignoreippara evitar bloqueio acidental. - 05
Habilite a jail do SSH
Ainda no
jail.local, procure a seção[sshd]e deixe a proteção ativa:[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 5 bantime = 3600Se o SSH usa uma porta personalizada, troque
port = sshpela porta correta. Em sistemas RHEL-like, confirme se o log é/var/log/secure. - 06
Reinicie e teste o Fail2ban
Reinicie o serviço e valide se a jail do SSH está ativa:
sudo systemctl restart fail2ban sudo fail2ban-client status sshdA saída deve mostrar a jail sshd, o arquivo de log monitorado e a lista de IPs banidos no momento.
Comandos úteis do dia a dia
Ver todas as jails ativas
sudo fail2ban-client status Ver IPs banidos no SSH
sudo fail2ban-client status sshd Desbanir ou banir um IP manualmente
sudo fail2ban-client set sshd unbanip 123.45.67.89
sudo fail2ban-client set sshd banip 123.45.67.89 Acompanhar logs em tempo real
sudo tail -f /var/log/fail2ban.log Protegendo outros serviços
O Fail2ban também pode proteger Nginx, Apache, Postfix, WordPress e outros serviços. A maioria dos
filtros prontos fica em
/etc/fail2ban/filter.d/.
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
[nginx-limit-req]
enabled = true
filter = nginx-limit-req
logpath = /var/log/nginx/error.log
[postfix]
enabled = true
filter = postfix
logpath = /var/log/mail.log Boas práticas de segurança
- Use chave SSH: o Fail2ban reduz ataques, mas login por chave pública é uma camada mais forte que senha.
- Aplique banimento progressivo: em versões compatíveis, use
bantime.increment = truepara reincidentes. - Revise logs: acompanhe padrões de ataque para ajustar
maxretryefindtime. - Não dependa de uma ferramenta só: combine Fail2ban com firewall, atualizações e boas permissões no servidor.
Erros comuns ao configurar Fail2ban
- Editar o jail.conf: prefira
jail.localpara evitar perder alterações em atualizações. - Usar logpath errado: confirme se sua distribuição usa
/var/log/auth.logou/var/log/secure. - Ignorar seu IP fixo: se possível, coloque seu IP confiável em
ignoreip. - Não reiniciar o serviço: depois de editar a configuração, rode
sudo systemctl restart fail2ban.
Perguntas frequentes
Fail2ban substitui firewall no VPS?
Não. O Fail2ban é uma camada de proteção automática contra tentativas repetidas de login ou abuso. Ele deve ser usado junto com firewall, autenticação por chave SSH e atualizações regulares.
Posso me bloquear acidentalmente no Fail2ban?
Sim, principalmente se você errar a senha várias vezes no SSH. Se tiver IP fixo, adicione-o em ignoreip para reduzir esse risco.
Qual log o Fail2ban usa para proteger SSH?
Em Ubuntu e Debian, normalmente é /var/log/auth.log. Em distribuições como Rocky Linux, AlmaLinux, CentOS e RHEL, o log de autenticação costuma ficar em /var/log/secure.
Fail2ban protege apenas SSH?
Não. Ele também pode proteger Nginx, Apache, Postfix, WordPress e outros serviços, desde que exista um filtro compatível e um caminho de log correto.
Conclusão
O Fail2ban é leve, gratuito e muito eficiente para reduzir ataques automatizados de força bruta em VPS. Em poucos minutos, você adiciona uma defesa automática ao SSH e ganha mais controle sobre tentativas suspeitas de acesso.
Como próximo passo, configure também firewall, autenticação SSH por chave pública e uma rotina de atualização do sistema.
BedHosting LTDA | CNPJ: 60.677.890/0001-00 | BedHosting.com.br