Edgard Leal

My personal blog hosted on Github using Jekyll

Home View on GitHub
06 May 2015
Firewall configuração com o fail2ban

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:

  1. Data do evento
  2. Hora do evento
  3. Origem
  4. Nível de alerta
  5. Tipo do serviço
  6. Ação ( Banido ou liberado )
  7. 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



blog comments powered by Disqus