Fail2ban é um software para prevenir ataques de força bruta. Sendo que ele faz análise de logs, tomando algumas atitudes como criação de regras no firewall e envio de alerta ao administrador. Após instalação, podemos usar diversos filtros para vários serviços (ssh, postfix…). Fail2ban: configuração básica para prevenir ataques de força bruta. Segundo o site da própria ferramenta o Fail2ban é capaz de reduzir a taxa de tentativas de logins não desejados, entretanto isso não elimina os risco de um sistema de autenticação falho.
Instalação do fail2ban
Inicialmente é necessário dizer que os pré-requisitos básicos são python>=2.X e um firewall, no caso será o iptables. A instalação pode ser feita a partir do código-fonte, entretanto para facilitar utilizaremos o gerenciador de pacotes em um ambiente Ubuntu.
sudo apt update
sudo apt install fail2ban
Para instalar o fail2ban no Fedora, execute:
sudo dnf install fail2ban
Se ainda utiliza o CentOS, execute:
sudo yum install fail2ban
Arquivos e diretórios importantes
Antes de configurar é necessário conhecer alguns termos e arquivos básicos.
- Filtros(filters): Um filtro é definido com expressões regulares, que correspondem a padrões de tentativas de invasões em logs.
- Ações(actions): define comandos a serem executados, por exemplo, bloquear ou liberar um determinado IP.
- Jail(jaulas): combina os filtros com as ações.
- /etc/fail2ban/fail2ban.conf: Arquivo com configurações básicas.
- /etc/fail2ban/jail.conf: arquivo com configurações de serviços monitorados, combinando filtros e ações. Na verdade, configurações feitas pelo usuário, se recomenda a utilização do jail.local ao invés de jail.conf.
- /etc/fail2ban/action.d/: diretório onde ficam as regras de ações a serem tomadas, caso os filtros deêm match.
- /etc/fail2ban/filter.d/: diretório com expressões e padrões para detectar os ataques.
Arquivo jail.local do fail2ban
Agora que está instalado, vamos configurar para monitorar um serviço. No caso explicando linha a linha:
- Habilitando a verificação com enabled = true.
- Pedindo para usar o filtro sshd que fica na pasta /etc/fail2ban/filter.d/ (filtro já existe, não foi necessário alterar).
- Usando 1 script de ação iptables que fica em /etc/fail2ban/filter.d/.
- Usando a variável logpath para dizer o arquivo de log, que será usado para verificar as tentativas de login que falharam.
- Com maxretry, estamos dizendo a quantidade máxima que um usuário pode errar a senha antes do banimento do IP.
- Bantime é o tempo de vigência do banimento do IP em segundos.
- E por fim com ignoreip, como o nome já diz estamos pedindo para ignorar faixas de IP.
[ssh]
enabled = true
filter = sshd
action = iptables[name=ssh, port=”ssh”, protocol=tcp]
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
ignoreip = 127.0
Comandos básicos do fail2ban
Iniciando:
service fail2ban start
Verificando IP bloqueado:
iptables -L
Desbloqueando IP(onde a <Chain name> e <IP> conseguimos no comando acima):
iptables -D fail2ban- -s -j DROP
Verificando Log:
tail /var/log/fail2ban.log
Checando serviços/Jail configurado:
fail2ban-client status
Checando status de serviços/Jail:
fail2ban-client status ssh
Checando filtro (regex):
fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf
Sobre Fail2ban: configuração básica para prevenir ataques de força bruta
Fail2ban é uma excelente alternativa para prevenir ataques de força bruta, entretanto não te salvará em casos de senhas fracas e outras políticas de segurança equivocadas. Mas acredito que ficará surpreso com a quantidade de IPs bloqueados, após a instalação dele em uma máquina com portas abertas na internet.
Todavia é possível realizar testes, para isso erre de propósito sua senha SSH mais vezes que o máximo permitido, e verifique que o IP de sua máquina será bloqueado. Para finalizar esse é apenas uma maneira de configurar o software, pois pode ser usados com diversos sistemas operacionais e diversos meios de bloquear acessos (outros firewall).
Se precisar de mais informações ou de acesso ao código do fail2ban, acesse o botão abaixo.