Visite também: Br-Linux ·  VivaOLinux ·  LinuxSecurity ·  Dicas-L ·  NoticiasLinux ·  SoftwareLivre.org ·  [mais]
Voltar   Under-Linux.org Fóruns > UnderLinux Wiki
Wiki Classificados Galeria Reviews Jogos Comunidades RSS Feeds FAQ Termos de Uso Sobre
Cadastre-se FotosBlogs Lista de Membros Calendário Pesquisar Mensagens de Hoje Marcar Fóruns Como Lidos

Ferramentas pessoais
Publicidade

From UnderLinux Wiki

Por Rafael M. Capovilla - 1c3_m4n - iceman NAOSPAM underlinux com br


Tabela de conteúdo

Introdução

O projeto l7-filter é um "classificador" para o subsistema do Kernel Netfilter que identifica pacotes baseado no conteúdo da camada de aplicação (camada 7 OSI). Isto significa que é possivel facilmente classificar pacotes como HTTP,FTP,eDonkey,MSN,etc.. além das portas. Ele complementa os classificadores existentes que comparam endereços, portas,etc.
A intenção do l7-filter é para ser utilizado em conjunto com o QoS, mas é possível utilizá-lo como meio de filtrar o que entra e sai da rede.

Pacotes necessários


Kernel - http://www.kernel.org
Iptables - http://www.netfilter.org
L7-filter - http://l7-filter.sourceforge.net/

Neste exemplo estou utilizando
Kernel - 2.6.11.8
Iptables - 1.3.1

Mão na massa

Não vou entrar em detalhes de como se compila o kernel neste tutorial, vou apenas mostar como aplicar o patch necessário:

tar -zxvf netfilter-layer7-v1.3.tar.gz
cd /path/do/kernel
patch -p1 < /path/do/netfilter-layer7-v1.3/kernel-2.6.11-layer7-1.3.patch

Agora execute o make menuconfig ou xconfig para entrar nas opções do kernel e ative:
# EXPERIMENTAL (Code maturity level options > Prompt for development and/or incomplete code/drivers)
# Netfilter (Device Drivers > Networking support > Networking Options > Network packet filtering)
# Connection tracking (Network packet filtering > IP: Netfilter Configuration > Connection tracking)
# "Connection tracking flow accounting" and "IP tables support" (na mesma tela)
# "Layer 7 match support" (mesma tela)
# Opcional: as demais opções para o iptables

Recompile o kernel e reinicie o sistema

Agora vamos (re)compilar o iptables:

cd /path/do/iptables
patch -p1 < /path/do/netfilter-layer7-v1.3/iptables-layer7-1.3.patch
make KERNELDIR=/path/do/kernel
make KERNELDIR=/path/do/kernel install
O último passo antes de começar a criar as regras é copiar os
protocolos do l7, descompacte o arquivo l7-protocols-2005-04-29.tar.gz
e copie seu conteúdo para o diretório /etc/l7-protocols/, vc deve ficar
com uma estrutura parecida com esta:

root@under:/etc/l7-protocols# ls

CHANGELOG  LICENSE   README  extra       l7-protocols.spec  protocols
HOWTO      Makefile  WANTED  file_types  malware


Cada um destes diretórios contém alguns protocolos prontos para serem utilizados, por exemplo dentro do diretorio protocols existem as regras:

root@under:/etc/l7-protocols# ls protocols/

100bao.pat           gkrellm.pat           nbns.pat            socks.pat
README               gnucleuslan.pat       ncp.pat             soribada.pat
aim.pat              gnutella.pat          netbios.pat         ssdp.pat
aimwebcontent.pat    goboogy.pat           nntp.pat            ssh.pat
applejuice.pat       gopher.pat            openft.pat          subspace.pat
ares.pat             h323.pat              poco.pat            telnet.pat
battlefield1942.pat  hddtemp.pat           pop3.pat            tesla.pat
bgp.pat              hotline.pat           pressplay.pat       tftp.pat
biff.pat             http.pat              qq.pat              tls.pat
bittorrent.pat       ident.pat             quake-halflife.pat  tsp.pat
ciscovpn.pat         imap.pat              quake1.pat          unknown.pat
counterstrike.pat    ipp.pat               rdp.pat             validcertssl.pat
cvs.pat              irc.pat               rlogin.pat          vnc.pat
dhcp.pat             jabber.pat            rstp.pat            x11.pat
directconnect.pat    kugoo.pat             shoutcast.pat       xboxlive.pat
dns.pat              live365.pat           sip.pat             yahoo.pat
edonkey.pat          lpd.pat               skype.pat           zmaap.pat
fasttrack.pat        msn-filetransfer.pat  smb.pat
finger.pat           msnmessenger.pat      smtp.pat
ftp.pat              mute.pat              snmp.pat


Exemplos de Regras

Concluídos os passos anteriores, podemos criar as regras que utilizarão o l7, darei apenas um simples exemplo, mas você pode facilmente criar suas regras, basta ter um pouco de conhecimento em iptables, para maiores informações sobre ele veja: http://iptables.underlinux.com.br

Regra para bloquear o MSN na rede INTERNA:

#!/bin/bash
 IPTABLES=/sbin/iptables
 LANNET=192.168.0.0/24
 $IPTABLES -A FORWARD -m layer7 --l7proto msnmessenger -d $LANNET -j DROP
 $IPTABLES -A FORWARD -m layer7 --l7proto msnmessenger -s $LANNET -j DROP


Conclusão

Colocar o l7-filter da um pouco de trabalho no início, mas depois de tudo compilado reduz o seu trabalho em criação de regras para bloqueios como no caso do msn, se você for utilizar apenas iptables + squid você vai precisar criar uma série de bloqueios e mesmo assim corre o risco de seus usuários acessarem o msn por proxys externos,tuneis,etc. O l7-filter consegue bloquear tudo isso facilmente pois ele analisa o conteudo do pacote, além de endereços ou portas.
Além disso é possível criar seus próprios filtros, ainda estou estudando esta parte mas me parece perfeitamente possível utilizar as regras do snort com o l7-filter e bloquear worms,ataques,etc diretamente.
Existe o outro patch para netfilter chamado patch-o-matic que tem o mesmo intuito, de analisar o conteúdo do pacote, mas o patch-o-matic tem uma desvantagem, ele não analisa o pacote pela camada de aplicação como o l7-filter faz, isso faz com que o patch-o-matic consuma muitos recursos da máquina.

Se você quiser aprender como criar seus próprios protocolos para o l7-filter leia este documento: Pattern Writing Howto

Horários baseados na GMT -3. Agora são 10:30.


Powered by vBulletin®
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd
SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.