Voltar ao blog
VPS e Linux Fail2ban VPS Linux Segurança SSH Força bruta

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.

Publicado em Matheus Henrique Leitura de 12 min

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

  1. 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 -y

    Em 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
  2. 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
  3. 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 em jail.local.

    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    sudo nano /etc/fail2ban/jail.local
  4. 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 ::1

    Se você tem IP fixo em casa ou no trabalho, adicione esse IP em ignoreip para evitar bloqueio acidental.

  5. 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 = 3600

    Se o SSH usa uma porta personalizada, troque port = ssh pela porta correta. Em sistemas RHEL-like, confirme se o log é /var/log/secure.

  6. 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 sshd

    A 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 = true para reincidentes.
  • Revise logs: acompanhe padrões de ataque para ajustar maxretry e findtime.
  • 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.local para evitar perder alterações em atualizações.
  • Usar logpath errado: confirme se sua distribuição usa /var/log/auth.log ou /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