Aula 13: fail2ban — proteção de SSH, Nginx, Apache e Postfix

Aula 13: fail2ban — proteção de SSH, Nginx, Apache e Postfix

Na aula de hoje, vamos explorar como podemos usar o fail2ban para proteger serviços essenciais em nosso servidor, como SSH, Nginx, Apache e Postfix. Entenderemos por que é crucial implementar tais proteções, não apenas do ponto de vista teórico, mas também prático, configurando o fail2ban para responder a tentativas de intrusão. Ao final desta aula, você será capaz de configurar e personalizar o fail2ban em diferentes cenários, aumentando a segurança da sua infraestrutura de TI.

O fail2ban é uma ferramenta poderosa para mitigar ataques de força bruta e outras ameaças, monitorando logs de serviços e tomando medidas ativas para proteger seu sistema. Nesta lição, continuaremos a expandir nosso conhecimento adquirido nas aulas anteriores do curso “Firewall, fail2ban e CrowdSec — Do Zero ao Avançado”. Estamos no meio do caminho e a complexidade começa a aumentar, mas também aumenta a capacidade de proteger nossos ativos.

Antes de iniciarmos, é essencial garantir que todas as ferramentas necessárias já estejam instaladas e configuradas corretamente. Nesta aula, também discutiremos alguns dos desafios comuns que você pode enfrentar ao configurar o fail2ban e como solucioná-los eficazmente.

Em projetos da JRT Technology Solutions, adotamos o fail2ban como uma solução padrão para nossa pilha de segurança, devido à sua eficácia e facilidade de integração com diversos sistemas. Nós também fornecemos treinamentos e suporte para empresas que buscam melhorar sua infraestrutura de segurança.

O que você vai aprender nesta aula

  • Como instalar e configurar o fail2ban em sistemas baseados em Debian e RHEL/CentOS
  • Proteção de serviços SSH, Nginx, Apache e Postfix com fail2ban
  • Verificação da configuração e teste das regras
  • Resolução de erros comuns no uso do fail2ban
  • Boas práticas na utilização do fail2ban para segurança de TI

Pré-requisitos e Ambiente

Certifique-se de que seu ambiente de teste está devidamente configurado conforme as aulas anteriores. Para esta aula, você precisará de:

  • Um sistema operacional baseado em Linux, como Ubuntu ou CentOS
  • Acesso root ou privilégios sudo
  • fail2ban instalado (se você não fez isso nas aulas anteriores, revisite nossa aula sobre instalação)
  • Serviços SSH, Nginx, Apache, e Postfix configurados
  • Conexão à internet para baixar pacotes e atualizações necessárias

Configuração Básica do fail2ban

Antes de avançarmos para configurações específicas de cada serviço, precisamos garantir que o fail2ban está instalado e funcionando corretamente em nosso sistema. Vamos recapitular rapidamente como verificar e configurar o fail2ban.

  1. Confirme que o fail2ban está instalado:
  2. sudo apt-get install fail2ban         # Para sistemas Debian/Ubuntu
    sudo yum install epel-release        # Para sistemas RHEL/CentOS
    sudo yum install fail2ban
    
  3. Verifique o status do serviço fail2ban:
  4. sudo systemctl status fail2ban
    ● fail2ban.service - Fail2Ban Service
       Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
       Active: active (running) since Wed 2026-06-10 10:00:00 UTC; 5min ago
    
  5. Habilite o fail2ban para iniciar com o sistema:
  6. sudo systemctl enable fail2ban
    Created symlink from /etc/systemd/system/multi-user.target.wants/fail2ban.service to /lib/systemd/system/fail2ban.service.
    

Protegendo SSH com fail2ban

O SSH é um dos serviços mais comumente alvo de ataques, e reforçar sua segurança é fundamental. Vamos configurar o fail2ban para monitorar o arquivo de logs SSH e bloquear tentativas de login falhas repetidas.

  1. Abra o arquivo de configuração jail.local para edição:
  2. sudo nano /etc/fail2ban/jail.local
  3. Adicione a seguinte configuração para proteger o SSH:
  4. [sshd]
    enabled = true
    port = ssh
    logpath  = /var/log/auth.log
    maxretry = 5
    bantime  = 3600
    findtime = 600
    
    • enabled ativa o monitoramento para o serviço SSH.
    • port especifica a porta de escuta (padrão é 22).
    • logpath indica o arquivo de log a ser monitorado.
    • maxretry é o número máximo de tentativas de login antes de um ban.
    • bantime define o período de tempo (em segundos) que um IP será banido.
    • findtime indica o tempo utilizado para contar o limite de tentativas de login.
  5. Reinicie o serviço fail2ban para aplicar as alterações:
  6. sudo systemctl restart fail2ban

Protegendo Nginx com fail2ban

O Nginx é um servidor web popular, e protege-lo contra ataques também é crucial. Vamos configurar o fail2ban para detectar e bloquear ataques de força bruta e solicitações potencialmente maliciosas no Nginx.

  1. Abra o arquivo jail.local novamente para adicionar a configuração do Nginx:
  2. sudo nano /etc/fail2ban/jail.local
  3. Adicione a seguinte configuração para o Nginx:
  4. [nginx-http-auth]
    enabled  = true
    filter   = nginx-http-auth
    port     = http,https
    logpath  = /var/log/nginx/error.log
    maxretry = 3
    
  5. Adapte a configuração do logpath conforme necessário para o seu setup específico.
  6. Reinicie o serviço fail2ban novamente para aplicar as novas regras:
  7. sudo systemctl restart fail2ban

Protegendo Apache com fail2ban

Assim como o Nginx, o Apache é outra escolha popular para servidores web. Aqui está como podemos proteger o Apache utilizando o fail2ban.

  1. Adicione a configuração para proteção do Apache no arquivo jail.local:
  2. sudo nano /etc/fail2ban/jail.local
  3. Insira a seguinte configuração:
  4. [apache-auth]
    enabled  = true
    filter   = apache-auth
    port     = http,https
    logpath  = /var/log/apache2/error.log
    maxretry = 3
    
  5. Verifique se o caminho do log logpath está correto para o seu sistema.
  6. Restart o fail2ban após fazer essas alterações:
  7. sudo systemctl restart fail2ban

Protegendo Postfix com fail2ban

Finalizando nossa proteção base, vamos assegurar que o Postfix, um dos servidores de e-mails mais comuns, também esteja protegido com fail2ban.

  1. Edite o arquivo jail.local para adicionar a proteção para o Postfix:
  2. sudo nano /etc/fail2ban/jail.local
  3. Adicione o seguinte bloco para monitorar o serviço Postfix:
  4. [postfix]
    enabled = true
    port = smtp,ssmtp
    filter = postfix
    logpath = /var/log/mail.log
    maxretry = 3
    
  5. Após inserir as configurações, salve e feche o arquivo.
  6. Reinicie o fail2ban para aplicar essa última configuração:
  7. sudo systemctl restart fail2ban

Verificando a Instalação / Testando a Configuração

A verificação de nossa configuração é um passo crítico para garantir que o fail2ban está operando conforme o esperado. Para isso, podemos usar alguns comandos específicos para visualizar o status de jails e bans ativos.

  1. Visualize o status completo do fail2ban:
  2. sudo fail2ban-client status
    Status
    |- Number of jail:      4
    `- Jail list:   sshd, nginx-http-auth, apache-auth, postfix
    
  3. Para checar o status específico de um serviço, por exemplo, o SSH:
  4. sudo fail2ban-client status sshd
    Status for the jail: sshd
    |- Filter
    |  |- Currently failed: 0
    |  `- Total failed:     0
    `- Actions
       |- Currently banned: 0
       `- Total banned:     0
    

Erros Comuns e Como Resolver

  • Erro: Falta o arquivo de configuração “jail.local”. Causa: O arquivo não foi criado ou está em local incorreto. Solução: Crie ou mova o arquivo para “/etc/fail2ban/jail.local”.
  • Erro: fail2ban não inicia automaticamente. Causa: Serviço não habilitado. Solução: Use “sudo systemctl enable fail2ban”.
  • Erro: “Logpath” não encontrado. Causa: Caminho de log incorreto. Solução: Confira os logs reais dos serviços e ajuste o caminho no “jail.local”.
  • Erro: Nenhuma ação de banimento aplicada. Causa: Configuração de “maxretry” ou “findtime” inadequadas. Solução: Ajuste esses parâmetros para valores que representem a frequência de tentativas falhas esperadas.

Boas Práticas e Dicas Avançadas

Agora que configuramos diversas jails, algumas práticas são importantes para maximizar a eficácia do fail2ban:

  • Mantenha suas regras e serviços de log atualizados para ações rápidas e eficazes.
  • Reavalie periodicamente o tempo de banimento e os limites para adaptar a novos padrões de ataque.
  • Documente todas as alterações de configuração e sua justificativa para facilitar manutenções futuras.
  • Considere integrar logs e alertas de fail2ban com um sistema de SIEM para maior visibilidade e resposta.

Resumo da Aula 13

Nesta aula, aprofundamos o uso do fail2ban para a proteção de serviços críticos como SSH, Nginx, Apache e Postfix, cobrindo desde a instalação até a configuração avançada de jails. Discutimos desafios comuns e soluções, além de boas práticas para manutenção da segurança. A Tabela 1 abaixo resume os principais comandos usados nesta aula. Na próxima aula, exploraremos o CrowdSec como uma evolução natural do nosso stack de segurança, permitindo colaboração na detecção de ameaças.

Comando Descrição
sudo apt-get install fail2ban Instala o fail2ban em sistemas Debian/Ubuntu.
sudo yum install fail2ban Instala o fail2ban em sistemas RHEL/CentOS.
sudo systemctl restart fail2ban Reinicia o serviço fail2ban para aplicar alterações em suas configurações.
sudo fail2ban-client status Exibe o status atual do fail2ban, incluindo jails ativas.

Para suporte e implementação avançada de soluções de segurança como fail2ban, os especialistas da JRT Technology Solutions estão à disposição para auxiliar sua empresa na proteção de sua infraestrutura de TI.

Quer aprender na prática com especialistas?

A JRT Technology Solutions oferece treinamentos e implementação de Firewall, fail2ban e CrowdSec para equipes corporativas.



Falar no WhatsApp

Thiago Paes Rodrigues

Com mais de 22 anos de experiência em Tecnologia da Informação, este profissional construiu uma trajetória sólida como empresário, atuando de forma estratégica na implementação de soluções tecnológicas que otimizam processos e impulsionam resultados em diferentes setores.