Skip to main content

Fail2ban | Linux

  • Fail2ban | Linux

Jails

  • sshd: Protege contra tentativas de invasão via SSH.
  • apache-auth: Lida com falhas de autenticação nos logs do Apache.
  • nginx-http-auth: Monitora tentativas falhas de autenticação HTTP básica no Nginx.
  • postfix: Monitora tentativas de invasão no serviço de e-mail Postfix.
  • dovecot: Protege o serviço de e-mail Dovecot contra acessos não autorizados.
  • vsftpd: Monitora tentativas falhas de login no servidor FTP vsftpd.
  • mysqld-auth: Lida com falhas de autenticação no MySQL.
  • recidive: Uma jail especial que monitora os próprios logs do Fail2Ban para identificar IPs que foram banidos várias vezes e, então, - **bane esses IPs por um período mais longo.

Passos para adicionar um novo filtro

Criar (ou editar) a configuração do jail

Você pode usar o arquivo principal de customização:

sudo nano /etc/fail2ban/jail.local

👉 ou, se preferir manter separado, crie um novo arquivo dentro de jail.d/:

sudo nano /etc/fail2ban/jail.d/meu-jail.conf

Adicionar o bloco do jail

Por exemplo, um jail para o Nginx (usando nginx-blocked):

[nginx-blocked]
enabled = true
filter = nginx-blocked
action = iptables-allports
logpath = /var/log/nginx/access.log
maxretry = 1
bantime = 172800 ; 2 dias
findtime = 600
ignoreip = 111.1111.11.11 222.222.22.22
  • filter aponta para um arquivo .conf dentro de /etc/fail2ban/filter.d/
  • logpath define o log que será monitorado
  • bantime e findtime controlam o tempo e janela de verificação

Criar o filtro correspondente

Se ainda não existe, crie o filtro em:

sudo nano /etc/fail2ban/filter.d/nginx-blocked.conf

Exemplo de filtro para códigos 404 e 444:

[Definition]
failregex = <HOST> - .* "(GET|POST).*" (404|444)
ignoreregex =

Testar o filtro

Antes de ativar, teste com:

fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/nginx-blocked.conf

👉 Isso mostra quantas linhas dos logs são capturadas pelo regex.


Recarregar o Fail2Ban

Depois de salvar os arquivos:

sudo fail2ban-client reload

ou, mais seguro:

sudo systemctl restart fail2ban

Conferir se o jail foi ativado

Liste todos os jails:

sudo fail2ban-client status

Veja detalhes do seu novo jail:

sudo fail2ban-client status nginx-blocked

Validar funcionamento

  • Gere manualmente um 404 (ex.: acesse https://seudominio.com/pagina-inexistente).
  • Espere alguns segundos.
  • Confira se o IP foi banido:
sudo fail2ban-client status nginx-blocked

Ban e Unban IP

Ban

sudo fail2ban-client set <jail-name> banip <IP-address>

Unban

sudo fail2ban-client set <jail-name> unbanip <IP-address>