O
Fail2ban é uma solução para prevenir ataques de força bruta. Ele realiza a análise de logs (syslog) e na sequência, realiza algumas ações como a criação de regras no Firewall e o envio de alertas aos administradores do sistema.
Após instalar o Fail2ban, podemos fazer uso de diversos filtros, em vários serviços como o SSH, Postfix, dentre outros. 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 riscos de um sistema de autenticação falho.
Pensando na proteção de servidores, uma das utilidades do Fail2ban que mais me agrada é a proteção do serviço SSH, onde podemos controlar quantas vezes um usuário pode tentar realizar o login. E caso ele tente e erre mais vezes que o permitido, sele será banido automaticamente. Ao logar-me em um servidor de um cliente, quando observei o syslog dessa máquina, identifiquei que estava ocorrendo um ataque SSH de força bruta.
Neste caso, eu poderia bloquear o IP diretamente utilizando o IPtables e resolver o problema temporariamente, mas essa solução são será efetiva, pois o atacante pode utilizar um proxy, ou apenas trocar de IP, voltando então a realizar o ataque de força bruta.
Precisamos que o servidor seja capaz de identificar os ataques, realizando os bloqueios de forma automática, sem que o administrador de sistemas precise realizar alguma ação neste sentido. Para isto, iremos ver neste material como instalar o Fail2ban na distribuição
Debian, sendo que ele se encarregará de realizar esse tipo de proteção, deixado nossos servidores mais seguros.
Instalação
A instalação ocorre com o comando:
# apt install fail2ban
Após esse comando, automaticamente o Fail2ban é instalado e começa a funcionar no servidor, aplicando as regras de segurança necessárias assim que forem necessárias.
Como podemos observar no log acima, o IP 45.141.86.128 está realizando um ataque de força bruta contra o servidor, utilizando um dicionário de senhas, como hello, master, 11111, 1234, backup, dentre outras.
Na segunda imagem de log, observamos que o Fail2ban baniu esse IP, já que ao observar o histórico do log, percebeu as diversas notificações de tentativas de log com erros (falso positivos) e já aplicou a proteção necessária. Observe também que vários outros IPs foram banidos, como o 45.55.50.52, 222.186.31.204 e o 67.247.123.8.
Configuração
Após a instalação do Fail2ban, podemos agora configurá-lo para que ele trabalhe de acordo com as nossas necessidades de segurança, editando o arquivo de configuração:
# nano /etc/fail2ban/jail.conf
Devemos localizar as seguintes linhas neste arquivo, para realizar nossas configurações:
Como administrador de servidores, prefiro ajustar melhor essas configurações, tornando o ataque nessas máquinas mais difícil, utilizando os seguintes ajustes:
- O atacante fica banido por 1 hora ao realizar um ataque: bantime = 60m
- Caso o atacante realize um ataque em menos de 3 minutos, será banido.
- O contador de tempo de análise é reiniciado a cada 3 minutos: findtime = 3m
- Máximo de tentativas que um usuário pode realizar antes de ser banido: maxretry = 3
Devo ressaltar que cada administrador pode configurar o Fail2ban de acordo com suas necessidades, ou seja, de acordo com as necessidades de segurança dos servidores de seus clientes.
Ao olharmos mais abaixo no arquivo de configuração, podemos ver as 'jaulas' de cada serviço em funcionamento no
Linux, como por acaso, nosso servidor SSH.
Podemos observar a linha com "maxretry = 2", no final das configurações do nosso servidor SSH. Nessa linha, o máximo de tentativas de login antes do banimento, no serviço de SSH, ficou definido como 2, reforçando a proteção contra a tentativa de logins incorretos nesse serviço.
Desta forma, fica claro que podemos configurar o "maxretry =" individualmente para cada serviço Linux, aumentando e definindo de forma adequada à segurança de cada servidor em nossa rede, ou na internet.
Ao final dessas configurações, podemos então verificar se o Fail2ban está atuando na verificação dos serviços necessários, no seguinte arquivo:
# nano /etc/fail2ban/jail.d/defaults-debian.conf
Observe na figura abaixo, que o módulo SSHD está ativado, sendo que podemos adicionar todos os módulos configurados no arquivo "jail.conf":
Quando todas as configurações forem realizadas, podemos aplicá-las utilizando o comando:
# systemctl restart fail2ban
Com o comando
tail, podemos visualizar nossos arquivos de log, observando o syslog para vermos quando somos atacados:
# tail -f /var/log/syslog
Por outro lado, podemos ver quando o Fail2ban bane e 'desbane' um atacante:
# tail -f /var/log/fail2ban.log
A partir deste momento, podemos deixar a aplicação de segurança trabalhando e bloqueando todos que tentarem realizar o login com senhas incorretas nos nossos servidores.