Fail2Ban :: Serviço de Proteção e Jail de Serviços Contra Ataques de Força Bruta


Fail2Ban é uma ferramenta de gerenciamento de requisições que funciona como um agente monitor de portas e serviços do sistema, gerando logs constantes de acessos aos serviços que você parametriza. Em suas configurações você determina um número de tentativas que um IP será considerado suspeito e um tempo de jail, onde todas as máquinas que tentarem forçar uma entrada após X tentativas são colocadas e automaticamente são negadas pelo firewall dinamicamente por um X período de tempo.

Essa solução é muito bacana, e detém muito do core dos ataques automatizados em vários tipos de situações. Eu mesmo já passei por algo bem parecido, onde criamos uma blacklist gigante de IP's chineses que ficavam tentando xeretar alguns roteadores.

Site do projeto:http://www.fail2ban.org/

Instalando em distribuições Debian e Ubuntu:

 [email protected]:~# sudo apt-get install fail2ban  


Instalando em distribuições Fedora, Red Hat e CentOS

 [email protected]:~# sudo yum install fail2ban  


Instalando em distribuições Slackware via SBOpkg

 [email protected]:~# sbopkg -i fail2ban  

 


Configurando o Monitoramento de Serviços do Fail2Ban 

Para realizar uma configuração básica que proteja sua porta SSH, vamos editar o arquivo de configurações do Fail2Ban

 [email protected]:~# vim /etc/fail2ban/jail.conf  

Procure no arquivo pela tag [DEFAULT]
Nela, iremos realizar algumas configurações de funcionamento do serviço, como Whitelists de acesso, tempo do ban e o número de tentativas que vai identificar o IP como malicioso e 'enjaular' o mesmo no Firewall.

Dentro dela, tente localizar os parâmetros abaixo e altere seus valores para:

 ignoreip =192.168.0.202  
 bantime = 3600  
 maxretry = 5  


Ajuste os parâmetros como melhor desejar, no caso:

ignoreip: Irá ignorar todos os IPs que você descrever, tornando os mesmos imunes as regras do Fail2Ban
bantime: É a quantidade de tempo descrita em segundos que a máquina ficara banida caso o Fail2Ban seja acionado
maxretry: É o número de tentativas que uma máquina poderá realizar sem ativar o serviço

Agora localize a tag [sshd] e modifique os parâmetros

 enabled = true  
 port = ssh  
 filter = sshd  
 logpath = /var/log/auth.log  


Vou realizar um teste em um ambiente de teste onde atacarei a porta 22 padrão ssh de um servidor em produção monitorando os logs de acesso. Você pode acessá-lo em tempo real dando um tail ou cat -f no arquivo fail2ban.log

 [email protected]:~# tail -f /var/log/fail2ban.log  

 


Realizei o teste com uma máquina com IP 192.168.0.61, e ela entrou em jail por 3600 segundos após 6 tentativas de acesso na porta ssh

Para proteger os acessos a um FTP, basta procurar o tipo de serviço que você está utilizando como ProFTPDPure FTPD ou WuFTPD. Vou dar um exemplo utilizando o ProFTPD, é só modificar os parâmetros para:

 [proftpd]  
 enabled = true  
 port   = ftp,ftp-data,ftps,ftps-data  
 filter  = proftpd  
 logpath = /var/log/proftpd/proftpd.log  
 maxretry = 6  
 

E no caso de um servidor Web

 [apache]  
 enabled = true  
 port   = http,https  
 filter  = apache-auth  
 logpath = /var/log/apache*/*error.log  
 maxretry = 60000  
 

No caso de um servidor Web, o numero de Max Retry tem que ser muito alto, pois normalmente a cada acesso, são várias requisições realizadas entre o cliente e o servidor. Aconselho você a ser bem generoso nesse sentido para não arrumar mais dores de cabeça com o cliente. (Dica da dor).

Visualizando a Lista de IP's Banidos 

Para visualizar a lista de IP's que entraram e sairam da Blacklist do Fail2ban, basta acessar o arquivo 

 # vim /var/log/fail2ban.log


Esse aquivo tem uma lista (quase) completa de todos os IP's que entram e saem da Blacklist do Fail2ban.
Quase? Mas por que quase?? Porque quando o log passa de um tamanho x, ele é compactado  em um arquivo.gz. Caso queira consultar, eles sempre vão ficar ali ba pasta de logs do sistema.


Para visualizar os logs de autenticação do sistema, basta ler o arquivo 

 # vim /var/log/auth.log  


Os serviços suportados por default pelo Fail2ban são:

[ssh-ddos], [apache] [apache-multiport] [apache-noscript] [apache-overflows] [vsftpd] [proftpd] [pure-ftpd] [wuftpd] [postfix] [couriersmtp] [courierauth] [sasl] [dovecot] [named-refused-tcp] [xinetd-fail] [pam-generic] [dropbear] [ssh]


 

Fonte: http://www.nanoshots.com.br/2015/07/fail2ban-prevenindo-ataques-de-forca.html

.