Biblioteca Unix Sua fonte sobre o mundo Unix

24ago/102

Bloqueando P2P com Snort e Fail2ban


Hoje estavamos com problemas relacionados a muitas pessoas baixando torrent na rede e a quantidade de alertas
do CAIS sobre pirataria estava além do limite.

Buscamos então uma forma de resolver o problema, primeiro vamos utilizar o snort para buscar as entradas P2P com
uma regra especial e depois configuramos o fail2ban para filtrar e bloquear as entradas dos peers dinâmicamente.

Vamos instalar os pacotes necessários:

 # apt-get install snort fail2ban

após instalarmos estes 2 pacotes, vamos adicionar a seguinte regra no arquivo local.rules do snort:

 # vim /etc/snort/rules/local.rules
 alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"TO_BAN"; flow:to_server,established; content:"|13|BitTorrent protocol"; depth:20; sid:2181; rev:2;)

esta  regra vai filtrar o protocolo do BitTorrent. Para juntarmos com o fail2ban, vamos fazer com que o snort escreva um log que seja
compreendido por ele, adicione a seguinte linha ao seu snort.conf:

 # vim /etc/snort/snort.conf
 output alert_csv:  /var/log/snort/p2p timestamp,dst

e reinicie o snort:

 # /etc/init.d/snort restart

pronto, o arquivo de log p2p está sendo gerado, temos que fazer o fail2ban entendê-lo agora. Edite o arquivo de interpretação de datas
do fail2bain para que ele compreenda a saída de timestamp do snort:

 # vim /usr/share/fail2ban/server/datedetector.py

e adicione o seguinte:

 # snort 08/23-20:03:12.062498
 template = DateStrptime()
 template.setName("Month/Day-Hour:Minute:Second[.Millisecond]")
 template.setRegex("\d{2}/\d{2}-\d{2}:\d{2}:\d{2}")
 template.setPattern("%m/%d-%H:%M:%S")
 self.__templates.append(template)

isso vai casar com o padrão do alert_csv que definimos no snort. Vamos agora criar a regra dentro do fail2ban:

 # vim /etc/fail2ban/filter.d/p2p.conf
 [Definition]
 failregex = ,< HOST >
 ignoreregex =

(os parênteses são juntos ao HOST, mas o Blog não deixou colocar junto) e a regra no jail.conf:

 # vim /etc/fail2ban/jail.conf
 [p2p]
 enabled  = enable
 protocol = tcp
 filter   = p2p
 port = 1:65535
 logpath  = /var/log/snort/p2p
 maxretry = 5

reinicialize o fail2ban para garantir que nosso ambiente vai estar de fato filtrando as entradas:

 # /etc/init.d/fail2ban restart

pronto, nosso filtro em tempo real de P2P está configurado.

Leia o artigo também na Wiki
Staff

Comentários (2) Trackbacks (1)
  1. Opa amigo, eu tentei implementar essa solução aqui, porém sem sucesso. Tudo rodou direito, mas qd uso um cliente torrent ele baixa normalmente e o arquivo /var/log/snort/p2p está sem conteúdo. Vc sabe o q posso ter feito de errado?
    Obrigado.

  2. Estranho… você está mapeando corretamente no HOME a sua rede interna??


Leave a comment

(required)