O Fail2Ban é uma ferramenta de segurança amplamente utilizada para proteger servidores contra ataques maliciosos, como tentativas de login forçado (bruteforce). Ele funciona monitorando os logs do sistema em busca de padrões suspeitos e bloqueando endereços IP que violam regras de segurança predefinidas. Isso ajuda a manter o servidor seguro e livre de acessos não autorizados.
Neste artigo, exploraremos em detalhes o que é o Fail2Ban, como instalá-lo, exemplos práticos de configuração, e as APIs que podem ser usadas em conjunto com ele para aprimorar ainda mais a segurança do seu servidor.
O Que é o Fail2Ban?
O Fail2Ban é uma aplicação que monitora os arquivos de log do sistema (como /var/log/auth.log
ou /var/log/secure
) e reage a padrões suspeitos (como múltiplas tentativas de login falhas). Quando detecta atividades suspeitas, ele aplica ações predefinidas, como bloquear o endereço IP por um período específico utilizando o firewall do sistema.
Instalação do Fail2Ban
A instalação do Fail2Ban é bastante simples e pode ser realizada na maioria das distribuições Linux. Abaixo, vamos detalhar o processo de instalação nas distribuições mais comuns.
1. Instalando o Fail2Ban
Em Distribuições Baseadas em Debian (Ubuntu)
No Ubuntu ou outras distribuições baseadas em Debian, use o seguinte comando:
sudo apt-get update
sudo apt-get install fail2ban
Em Distribuições Baseadas em Red Hat (CentOS, Fedora)
Para instalar o Fail2Ban em distribuições baseadas em Red Hat, execute:
sudo dnf install epel-release
sudo dnf install fail2ban
2. Inicializando o Fail2Ban
Após a instalação, inicie o serviço Fail2Ban e habilite-o para iniciar automaticamente no boot:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
3. Verificando o Status do Fail2Ban
Para verificar se o Fail2Ban está funcionando corretamente, use:
sudo systemctl status fail2ban
O comando deve mostrar o serviço ativo e em execução.
Configuração do Fail2Ban
A configuração do Fail2Ban é feita principalmente por meio de arquivos de configuração localizados em /etc/fail2ban/
. É recomendado não modificar diretamente o arquivo principal (jail.conf
), mas sim criar uma cópia personalizada chamada jail.local
.
1. Configurando o jail.local
Crie uma cópia do arquivo de configuração:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Abra o arquivo jail.local
em um editor de texto:
sudo nano /etc/fail2ban/jail.local
2. Configurando o Tempo de Banimento e Tolerância
No arquivo jail.local
, você pode definir o tempo de banimento (bantime
) e o número máximo de tentativas de login falhas permitidas (maxretry
):
bantime = 600
findtime = 600
maxretry = 5
- bantime: Tempo em segundos pelo qual um IP ficará bloqueado. Pode ser configurado como “forever” para um banimento permanente.
- findtime: Período de tempo durante o qual o número de tentativas de login falhas será contado.
- maxretry: Número máximo de tentativas de login falhas permitidas antes de o IP ser bloqueado.
3. Configurando Jails Específicas
Os “jails” no Fail2Ban são as regras específicas que você deseja monitorar. Cada jail monitora um serviço específico e possui suas próprias configurações. Por exemplo, para habilitar um jail para SSH, adicione ou modifique a seção [sshd]
no arquivo jail.local
:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
- enabled: Define se o jail está ativo.
- port: Porta que será monitorada (padrão é 22 para SSH).
- filter: O arquivo de filtro específico a ser usado (geralmente definido em
/etc/fail2ban/filter.d/
). - logpath: Caminho do arquivo de log onde o Fail2Ban buscará por tentativas de login falhas.
Após fazer alterações no arquivo de configuração, reinicie o serviço Fail2Ban:
sudo systemctl restart fail2ban
4. Verificando IPs Bloqueados
Para visualizar a lista de IPs atualmente bloqueados, use:
sudo fail2ban-client status sshd
Esse comando mostra o status do jail SSH, incluindo a lista de IPs banidos.
Exemplo de Utilização do Fail2Ban
Vamos configurar o Fail2Ban para monitorar um servidor Apache e bloquear IPs que tentem acessar URLs sensíveis repetidamente. Para isso, precisamos criar um novo filtro.
1. Criando um Filtro Personalizado
Crie um arquivo de filtro para o Apache:
sudo nano /etc/fail2ban/filter.d/apache-auth.conf
Adicione o seguinte conteúdo para detectar tentativas de acesso não autorizadas:
[Definition]
failregex = ^<HOST> -.* "(GET|POST).* HTTP.*" 401
Este filtro identifica respostas “401 Unauthorized” no log do Apache.
2. Configurando o Jail
Adicione o seguinte bloco ao seu jail.local
para ativar o filtro:
[apache-auth]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/access.log
maxretry = 3
Isso fará com que o Fail2Ban monitore os logs do Apache e bloqueie IPs que tentem acessar páginas protegidas mais de três vezes.
3. Reiniciando o Fail2Ban
Após adicionar as configurações, reinicie o Fail2Ban para aplicar as mudanças:
sudo systemctl restart fail2ban
APIs que Podem Ser Usadas em Conjunto com o Fail2Ban
Existem várias APIs e ferramentas que podem ser usadas em conjunto com o Fail2Ban para aprimorar ainda mais a segurança do servidor:
1. AbuseIPDB
O AbuseIPDB é uma API que permite verificar e reportar endereços IP maliciosos. O Fail2Ban pode ser configurado para consultar a API do AbuseIPDB, verificando se um endereço IP está listado como malicioso e, em seguida, tomar medidas adicionais, como banimento imediato.
2. MaxMind GeoIP
O MaxMind GeoIP permite identificar a localização geográfica de um endereço IP. O Fail2Ban pode ser configurado para banir automaticamente IPs de regiões específicas, aumentando a segurança contra ataques que se originam de determinados países.
3. Blacklist da Dolutech
A Dolutech mantém uma blacklist constantemente atualizada com endereços IP que praticam atividades maliciosas, como ataques de força bruta, DDoS, ransomware e phishing. Integrar essa blacklist ao Fail2Ban permite bloquear automaticamente IPs conhecidos por comportamento abusivo, melhorando significativamente a segurança do seu servidor.
4. CrowdSec
O CrowdSec é uma solução colaborativa de segurança que coleta e compartilha informações sobre IPs maliciosos em tempo real. O Fail2Ban pode ser integrado ao CrowdSec para adicionar ou remover IPs da lista de banidos com base em dados de inteligência compartilhados.
Conclusão
O Fail2Ban é uma ferramenta indispensável para administradores de sistemas que desejam proteger seus servidores contra ataques como tentativas de login forçado. Sua flexibilidade e capacidade de integração com diversas APIs e serviços tornam-no um aliado poderoso na implementação de medidas de segurança.
Com as configurações corretas e a integração de APIs como AbuseIPDB, MaxMind GeoIP, e a blacklist da Dolutech, o Fail2Ban pode fornecer uma camada adicional de proteção ao seu ambiente de servidor, mantendo-o seguro contra uma ampla gama de ameaças cibernéticas.
Amante por tecnologia Especialista em Cibersegurança e Big Data, Formado em Administração de Infraestrutura de Redes, Pós-Graduado em Ciências de Dados e Big Data Analytics e Machine Learning, Com MBA em Segurança da Informação, Escritor do livro ” Cibersegurança: Protegendo a sua Reputação Digital”.