Introdução
O fail2ban é uma ferramenta escrita em python que analisa os arquivos de log dos seu sistema e automaticamente cria regras de bloqueio no iptables para ips que estejam realizando alguma atividade suspeita. Por exemplo, em casos de muitas tentativas de acesso pelo ssh inválidas, o fail2ban identifica estas tentativas com erro no log do sistema ( /var/log/syslog ) e cria uma regra no iptables bloqueando este ip por alguns minutos.
Estes bloqueios são registrados em seu arquivo de log /var/log/fail2ban.log , e tem um conteúdo no padrão abaixo:
2015-05-06 09:58:46,692 fail2ban.actions: WARNING [ssh] Unban 115.239.248.69 2015-05-06 10:07:00,233 fail2ban.actions: WARNING [ssh] Unban 58.218.204.241 2015-05-06 10:12:42,600 fail2ban.actions: WARNING [ssh] Ban 222.186.21.236 2015-05-06 10:16:29,843 fail2ban.actions: WARNING [ssh] Ban 115.239.248.69 2015-05-06 10:21:09,140 fail2ban.actions: WARNING [ssh] Unban 222.89.166.12
Analisando por colunas:
- Data do evento
- Hora do evento
- Origem
- Nível de alerta
- Tipo do serviço
- Ação ( Banido ou liberado )
- IP de origem
Análises:
1 - Quantidades de bloqueios por dia:
awk '/2015-05-05.*Ban.*/{print $7}' /var/log/fail2ban.log | wc -l
Neste comando filtramos apenas as linhas com a data que desejamos e imprimimos a coluna 7 que contem os ips ( neste comando poderia ser qualquer uma ) e passamos o resultado para o comando wc que irá contar as linhas resultantes.
2 - Quantidade de tentativas por cada ip:
awk '/2015-05-05.*Ban.*/{print $7}' /var/log/fail2ban.log | sort | uniq -c | sort
Neste caso utilizamos o inicio do comando anterior removendo o filtro por data ( cada arquivos de log contem informações de aproximadamente 3 dias ) em seguida passamos o resultado para o comando sort que ira ordenar o resultado que é passado para o comando uniq com o parâmetro -c que diz que ele deve remover as linhas repetidas e informa a quantidade de cada registro único encontrado, por fim passamos o resultado novamente para o comando sort para facilitar a leitura e identificar rapidamente os ips "insistentes".
Caso deseje ler mas sobre o fail2ban ou ate mesmo sobre o iptables, deixe um comentário com seu email que eu irei criar um post sobre o assunto solicitado e te aviso por email quando estiver pronto.
Obrigado por visitar o blog. :D