Fail2Ban é uma ferramenta poderosa de segurança que ajuda a proteger seu servidor Linux contra ataques de força bruta. Ele monitora logs do sistema e cria regras no firewall para bloquear automaticamente IPs que demonstram comportamento suspeito.
🔧 O que é o Fail2Ban e por que usar?
Se você mantém um servidor de e-mails, SSH ou outros serviços expostos à internet, provavelmente já viu tentativas de login suspeitas. O Fail2Ban observa esses acessos em arquivos de log e responde criando bloqueios temporários ou permanentes para IPs maliciosos.
📦 Instalando o Fail2Ban no Oracle Linux, RHEL ou CentOS
-
- Habilite o serviço firewalld:
sudo systemctl unmask firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
-
- Adicione o repositório EPEL:
sudo dnf install epel-release -y
-
- Instale o Fail2Ban:
sudo dnf install fail2ban fail2ban-firewalld -y
⚙️ Configurando o Fail2Ban
Renomeie e edite os arquivos de configuração padrão:
sudo mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Crie uma nova ação personalizada:
Abra o arquivo:
sudo vi /etc/fail2ban/action.d/firewallcmd-rich-rules2.conf
Conteúdo do arquivo:
[INCLUDES]
before = firewallcmd-common.conf
[Definition]
actionstart =
actionstop =
actioncheck =
fwcmd_rich_rule = rule family='<family>' source address='<ip>' %(rich-suffix)s
actionban = firewall-cmd --add-rich-rule="%(fwcmd_rich_rule)s"
actionunban = firewall-cmd --remove-rich-rule="%(fwcmd_rich_rule)s"
rich-suffix = <rich-blocktype>
Depois, edite o arquivo /etc/fail2ban/jail.d/00-firewalld.local
e adicione:
banaction = firewallcmd-rich-rules2
banaction_allports = firewallcmd-rich-rules2
📝 Exemplo de configuração: servidor de e-mails Zimbra
Edite o arquivo /etc/fail2ban/jail.local
ou um arquivo customizado dentro da pasta jail.d
com as configurações abaixo:
[DEFAULT]
ignoreip = 127.0.0.1/8 192.168.0.0/16
bantime = 86400
findtime = 300
maxretry = 3
[sshd]
enabled = true
bantime = 900
maxretry = 3
[zimbra-account]
enabled = true
filter = zimbra
logpath = /opt/zimbra/log/mailbox.log
bantime = 900
maxretry = 3
[zimbra-audit]
enabled = true
filter = zimbra
logpath = /opt/zimbra/log/audit.log
bantime = 900
maxretry = 3
[zimbra-recipient]
enabled = true
filter = zimbra
logpath = /var/log/maillog
bantime = 7200
maxretry = 6
[postfix]
enabled = true
filter = postfix
logpath = /var/log/maillog
bantime = 900
maxretry = 3
🚀 Inicie e habilite o Fail2Ban
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
👀 Monitorando e administrando o Fail2Ban
Visualizar logs:
tail -f /var/log/fail2ban.log
Listar IPs banidos por um “jail”:
sudo fail2ban-client status
sudo fail2ban-client status sshd
❌ Bloquear IP manualmente
sudo fail2ban-client set sshd banip 192.0.2.10
✅ Desbloquear IP manualmente
sudo fail2ban-client set sshd unbanip 192.0.2.10
Ver as regras de firewall ativas:
sudo firewall-cmd --list-all
📌 Considerações Finais
O Fail2Ban é uma solução extremamente útil e flexível para proteger servidores Linux, especialmente em ambientes de e-mail, web e acesso remoto. Com configurações simples e práticas, é possível bloquear ameaças e manter o sistema mais seguro.
Referências:
Caso tenha alguma dúvida a respeito deste tópico sinta-se à vontade para entrar em contato