em Sem categoria

Linux Secutiry: Bloqueando redes P2P com Fail2ban

Os créditos deste post são do site http://blog.bibliotecaunix.org/?p=103

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.