Fail2Ban – Evite ataques de força bruta

Hoje irei demonstrar a instalação e configuração básica do Fail2Ban.

Fail2Ban é uma ferramentas utilizada para impedir ataques de força bruta (Brute Force Attack) onde o atacante tenta milhões de combinações de senhas até acertar a senha correta, além disso pode prejudicar o desempenho do sistema.

Uma forma de resolver este problema é monitorar as tentativas de login e impedir que possa haver tentativas erradas ilimitadas e é exatamente isso que o Fail2Ban faz. Ele analisa o log das aplicações que foi configurado para monitorar (durante a configuração irei explicar melhor o funcionamento), se você tem um servidor exposto na internet é praticamente obrigatório o uso desta ferramenta. Dado o conceito vamos para instalação:

Fail2Ban é muito utilizado então está  por padrão nos repositórios da maioria das distribuições caso precise de alguma específica deixe sua dúvida nos comentários.

  1. Instalando o pacote:

Debian based / Ubuntu:

sudo apt install fail2ban

RHEL based / CentOS / Fedora:

sudo dnf install fail2ban

*A partir daqui os comandos e configurações são as mesmas na maioria das distribuições*

2. Ativando arranque automático junto com o sistema, iniciando o serviço e verificando status (cada passo está separado por “;” pode rodar separado se preferir):

sudo systemctl enable fail2ban; sudo service fail2ban start; sudo service fail2ban status

o retorno deve ser algo parecido com:

3. O arquivo de configuração é o /etc/fail2ban/jail.conf, nele já existe as configurações para a maioria dos serviços como ssh, mysql, phpmyadmin e muitos outros, citei estes exemplos pois irei utilizar logins no phpmyadmin como exemplo.

Primeiro passo é configurar tempos e tentativas que por padrão são:

# "bantime" is the number of seconds that a host is banned.
bantime = 20m

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 10m

# "maxretry" is the number of failures before a host get banned.
maxretry = 3

bantime: Tempo que o IP ficará banido.

findtime: Tempo limite para as tentativas (3 tentativas em 10 minutos por exemplo)

maxentry: Limite de tentativas

Por padrão o fail2ban vem desabilitado em todos os serviços, sendo necessário adicionar  “enabled = true” embaixo do “título” de cada configuração como nos exemplos abaixo:

[sshd]
# To use more aggressive sshd modes set filter parameter "mode" in jail.local:
# normal (default), ddos, extra or aggressive (combines all).
# See "tests/files/logs/sshd" or "filter.d/sshd.conf" for usage example and details.
#mode = normal
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
[apache-auth]
enabled = true
port = http,https
logpath = %(apache_error_log)s
[phpmyadmin-syslog]
enabled = true
port = http,https
logpath = %(syslog_authpriv)s
backend = %(syslog_backend)s

4. Ativado os servições desejados reinicie o serviço depois verifique o status para conferir se o serviço subiu sem nenhum erro e está operante (a saída de ser similar ao passo da instalação):

service fail2ban restart; service fail2ban status

Fiz os testes,  logs abaixo como prova de testes os logs ficam em: /var/log/fail2ban.log:

Tentativas de acesso por SSH (3 tentativas e fui banido por 20 minutos):

2022-06-09 08:40:44,118 fail2ban.filter [742485]: INFO [sshd] Found 192.168.0.117 - 2022-06-09 08:40:43
2022-06-09 08:40:49,236 fail2ban.filter [742485]: INFO [sshd] Found 192.168.0.117 - 2022-06-09 08:40:49
2022-06-09 08:40:54,767 fail2ban.filter [742485]: INFO [sshd] Found 192.168.0.117 - 2022-06-09 08:40:54
2022-06-09 08:40:54,826 fail2ban.actions [742485]: NOTICE [sshd] Ban 192.168.0.117

Tentativas de acesso por PHPMYADMIN (3 tentativas e fui banido por 20 minutos):

2022-06-09 08:43:55,740 fail2ban.filter [742485]: INFO [phpmyadmin-syslog] Found 192.168.0.117 - 2022-06-09 08:43:55
2022-06-09 08:44:36,923 fail2ban.filter [742485]: INFO [phpmyadmin-syslog] Found 192.168.0.117 - 2022-06-09 08:44:36
2022-06-09 08:44:50,068 fail2ban.filter [742485]: INFO [phpmyadmin-syslog] Found 192.168.0.117 - 2022-06-09 08:44:49
2022-06-09 08:44:50,780 fail2ban.actions [742485]: NOTICE [phpmyadmin-syslog] Ban 192.168.0.117

Obrigado por ler até aqui e espero que este artigo ajude vocês protegerem seus servidores.

Duvidas deixe nos comentários.

Link Facebook: https://www.facebook.com/gnulinuxbr

Link WhatsApp: https://chat.whatsapp.com/LYHbESy75Q0GiORiexXKF4

Link Telegram: https://t.me/gnulinux_brasil

One Comment to “Fail2Ban – Evite ataques de força bruta”

Deixe um comentário

O seu endereço de e-mail não será publicado.