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

Deixe um comentário