Tutoriais/Seguranca/Layer7
De 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 RegrasConcluí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 #!/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ãoColocar 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. |


