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.
- Confirme que o fail2ban está instalado:
- Verifique o status do serviço fail2ban:
- Habilite o fail2ban para iniciar com o sistema:
sudo apt-get install fail2ban # Para sistemas Debian/Ubuntu
sudo yum install epel-release # Para sistemas RHEL/CentOS
sudo yum install fail2ban
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
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.
- Abra o arquivo de configuração jail.local para edição:
- Adicione a seguinte configuração para proteger o SSH:
- 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.
- Reinicie o serviço fail2ban para aplicar as alterações:
sudo nano /etc/fail2ban/jail.local
[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
findtime = 600
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.
- Abra o arquivo jail.local novamente para adicionar a configuração do Nginx:
- Adicione a seguinte configuração para o Nginx:
- Adapte a configuração do logpath conforme necessário para o seu setup específico.
- Reinicie o serviço fail2ban novamente para aplicar as novas regras:
sudo nano /etc/fail2ban/jail.local
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/error.log
maxretry = 3
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.
- Adicione a configuração para proteção do Apache no arquivo jail.local:
- Insira a seguinte configuração:
- Verifique se o caminho do log logpath está correto para o seu sistema.
- Restart o fail2ban após fazer essas alterações:
sudo nano /etc/fail2ban/jail.local
[apache-auth]
enabled = true
filter = apache-auth
port = http,https
logpath = /var/log/apache2/error.log
maxretry = 3
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.
- Edite o arquivo jail.local para adicionar a proteção para o Postfix:
- Adicione o seguinte bloco para monitorar o serviço Postfix:
- Após inserir as configurações, salve e feche o arquivo.
- Reinicie o fail2ban para aplicar essa última configuração:
sudo nano /etc/fail2ban/jail.local
[postfix]
enabled = true
port = smtp,ssmtp
filter = postfix
logpath = /var/log/mail.log
maxretry = 3
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.
- Visualize o status completo do fail2ban:
- Para checar o status específico de um serviço, por exemplo, o SSH:
sudo fail2ban-client status
Status
|- Number of jail: 4
`- Jail list: sshd, nginx-http-auth, apache-auth, postfix
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.