O Fail2ban é uma ferramenta essencial para aumentar a segurança de servidores Linux. Este guia passo a passo mostra como instalar o Fail2ban no Debian 12 e configurá-lo para proteger o SSH contra tentativas de login por força bruta.

1) O que é Fail2ban e por que usar

  • Monitora logs de serviços (como SSH) em busca de padrões suspeitos.
  • BLOQUEIA IPs temporariamente via iptables (ou firewalld/ufw) ao detectar tentativas malsucedidas.
  • Reduz significativamente o risco de ataques de força bruta no SSH.

2) Requisitos prévios

  • Servidor com Debian 12 rodando
  • Acesso root ou usuário com sudo
  • SSH ativo (se já está acessando por SSH, mantenha a sessão disponível para evitar bloqueios acidentais)

3) Passo a passo: instalar o Fail2ban

  1. Atualizar o sistema
    sudo apt update && sudo apt upgrade -y
  2. Instalar o Fail2ban
    sudo apt install fail2ban -y
  3. Verificar o serviço
    sudo systemctl status fail2ban
  4. Habilitar o serviço para iniciar com o boot
    sudo systemctl enable fail2ban

4) Configurar o Fail2ban para SSH

  1. Copiar o arquivo de configuração padrão para edição
    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  2. Editar o arquivo jail.local
    sudo nano /etc/fail2ban/jail.local
  3. Localize a seção [sshd] (ou adicione se não existir) e ajuste:
    • enabled = true
    • port = ssh (ou port = 22 se necessário)
    • logpath = /var/log/auth.log (em Debian, confirme se existe)
    • maxretry = 3
    • bantime = 3600 (tempo do ban em segundos; 3600 = 1 hora)
    • findtime = 600 (janela de tempo para contagem de tentativas)
  4. Exemplo mínimo:
    [sshd]
     enabled  = true
     port     = ssh
     logpath  = /var/log/auth.log
     maxretry = 3
     bantime = 3600
     findtime = 600
            

4.b) (Opcional) Ativar proteção adicional para outros serviços

Você pode adicionar seções como [recidive], [nginx-http-auth], etc., conforme serviços usados.

5) Testar a configuração

  1. Reiniciar o Fail2ban
    sudo systemctl restart fail2ban
  2. Verificar status e jails ativas
    sudo fail2ban-client status
    sudo fail2ban-client status sshd

6) Regras de firewall (opcional, mas recomendado)

  • Se estiver usando ufw:
    sudo ufw allow OpenSSH
    sudo ufw enable
  • Observação: Fail2ban funciona com iptables/nftables; certifique-se de não bloquear acidentalmente seu próprio IP.

7) Boas práticas adicionais

  • Manter o sistema atualizado regularmente
    sudo apt update && sudo apt upgrade -y
  • Monitorar logs do Fail2ban
    sudo tail -f /var/log/fail2ban.log
  • Ajustar thresholds conforme o comportamento do seu tráfego
  • Considerar autenticação por chave SSH e desabilitar login por senha no SSH:
    • Edite /etc/ssh/sshd_config:
      PasswordAuthentication no
    • Reinicie o SSH:
      sudo systemctl reload sshd

8) Dicas de solução de problemas

  • Se o sshd jail não aparecer:
    sudo fail2ban-client -V
    sudo fail2ban-client set sshd banip <IP>
  • Verifique permissões de log ou caminhos incorretos no jail.local:
    grep -R "logpath" -n /etc/fail2ban

9) Considerações finais

Fail2ban é uma linha de defesa eficaz, mas não substitui boas práticas de segurança (patching, MFA, SSH com chave pública). Revise periodicamente as regras e a necessidade de bloquear IPs com alto tráfego.

Seção de Perguntas Frequentes

  • É seguro reiniciar o Fail2ban? Sim. Reiniciar aplica novas regras sem interromper serviços, contanto que o SSH esteja acessível.
  • Posso usar BanTime mais curto? Depende do tráfego. Em ambientes com muitos IPs legítimos, considere umban maior.

CTA

Quer mais dicas de hardening para Debian 12? Comente abaixo ou confira meus próximos posts sobre: DLP com fail2ban e psad; Configurações avançadas de SSH com Chave Pública; Monitoramento de logs com ELK Stack.