Iptables layer7

34
UNIVERSIDADE PARA O DESENVOLVIMENTO DO ALTO VALE DO ITAJAÍ UNIVERSIDADE PARA O DESENVOLVIMENTO DO ALTO VALE DO ITAJAÍ UNIVERSIDADE PARA O DESENVOLVIMENTO DO ALTO VALE DO ITAJAÍ UNIVERSIDADE PARA O DESENVOLVIMENTO DO ALTO VALE DO ITAJAÍ Pró-reitoria de Pós-Graduação, Pesquisa e Extensão Latu Sensu – Redes de Computadores e Segurança de Sistemas Projeto e Configuração de Firewalls Prof. Dr. Emerson Ribeiro de Mello Data: 11/12/2010. Acadêmicos: Diego Adriano Sieves Joel Schafer Paulo Luis Steinhauser Thiago Branco Meurer

Transcript of Iptables layer7

Page 1: Iptables layer7

UNIVERSIDADE PARA O DESENVOLVIMENTO DO ALTO VALE DO ITAJAÍUNIVERSIDADE PARA O DESENVOLVIMENTO DO ALTO VALE DO ITAJAÍUNIVERSIDADE PARA O DESENVOLVIMENTO DO ALTO VALE DO ITAJAÍUNIVERSIDADE PARA O DESENVOLVIMENTO DO ALTO VALE DO ITAJAÍPró-reitoria de Pós-Graduação, Pesquisa e ExtensãoLatu Sensu – Redes de Computadores e Segurança de SistemasProjeto e Configuração de FirewallsProf. Dr. Emerson Ribeiro de MelloData: 11/12/2010.

Acadêmicos:Diego Adriano SievesJoel SchaferPaulo Luis SteinhauserThiago Branco Meurer

Page 2: Iptables layer7

� O Iptables consiste em um módulo do kernel do Linux utilizado como front-end para configurar o Netfilter;

� É o Netfilter que realiza toda a filtragem de pacotes no Linux;pacotes no Linux;

� O Iptables nada mais é que uma ferramenta que nos permite adicionar e remover regras a cada uma das chains (filas onde os pacotes são processados).

Page 3: Iptables layer7

Exemplos:

� Bloquear qualquer pacote TCP destinado à porta 80 de sua máquina. Bastaria que fosse utilizado o seguinte comando:

# iptables # iptables # iptables # iptables ----A OUTPUT A OUTPUT A OUTPUT A OUTPUT ----p tcp p tcp p tcp p tcp --------dport 80 dport 80 dport 80 dport 80 ----j DROPj DROPj DROPj DROP# iptables # iptables # iptables # iptables ----A OUTPUT A OUTPUT A OUTPUT A OUTPUT ----p tcp p tcp p tcp p tcp --------dport 80 dport 80 dport 80 dport 80 ----j DROPj DROPj DROPj DROP

� Descartar qualquer pacote enviado à máquina local pela máquina de endereço 200.156.12.3, por exemplo. O comando neste caso seria

# iptables # iptables # iptables # iptables ----A INPUT A INPUT A INPUT A INPUT ----s 200.156.12.3 s 200.156.12.3 s 200.156.12.3 s 200.156.12.3 ----j DROPj DROPj DROPj DROP

Page 4: Iptables layer7

� Uma característica que confere muito poder ao Iptables é a expansibilidade, ou seja, podem ser criados módulos que lhe acrescentem funcionalidades, como filtragem por protocolo de camada de aplicação.por protocolo de camada de aplicação.

� Como bloquear o uso de MSN na minha rede? E para bloquear serviço Web?

Page 5: Iptables layer7

� É inquestionável a utilidade de um mecanismo de filtragem que atue diretamente na camada de aplicação, bloqueando diretamente o protocolo http, por exemplo, ou o protocolo usado por messengers. É ou o protocolo usado por messengers. É exatamente isso que faz o Layer 7.

Page 6: Iptables layer7

HistóriaHistóriaHistóriaHistória

• O desenvolvimento do Layer 7 começou em 2003 em resposta a constatação de que quase todas as aplicações de controle de largura de banda e Qos em uso eram proprietárias, muito caras e de difícil proprietárias, muito caras e de difícil adaptação. Buscava-se então uma solução de código-aberto.

Page 7: Iptables layer7

HistóriaHistóriaHistóriaHistória

• Em maio de 2003 foi lançada a primeira versão do l7, um patch adicionando um "filtro" (classificador) no kernel do Linux . Até outubro 2003, nada havia sido feito de funcional com relação a QoS, sendo lançada funcional com relação a QoS, sendo lançada então uma versão para Netfilter.

Page 8: Iptables layer7

HistóriaHistóriaHistóriaHistória

• Esta versão foi a 1.0, de janeiro de 2005. Até dezembro de 2006, percebeu-se que trabalhar em nível de kernel não era uma boa idéia, então foi lançada uma versão que funcionava no nível do usuário e obtinha seus funcionava no nível do usuário e obtinha seus dados através do Netfilter QUEUE .

Page 9: Iptables layer7

� As formas tradicionais de classificação de pacotes, baseadas geralmente no tipo de protocolo de transporte, na camada 4 do modelo de rede OSI e nas portas de origem e/ou destino, são suficientes na maioria dos casos.

� Porém ela pode ser ineficaz em alguns casos específicos, como por exemplo, no caso de programas de P2P, como o Kazaa, que utilizam portas aleatórias ou em caso de serviços rodando em uma porta não padrão (por exemplo um servidor HTTP rodando na porta 1111).

Page 10: Iptables layer7

� Assim surge o Projeto l7 filtering <http://l7-filter.sourceforge.net>, e como o próprio nome diz, ele trabalhou com filtro para a camada 7 do modelo OSI, ou seja, a camada de aplicação. Normalmente o kernel do Linux trabalhando na camada 4 acaba por não observar o conteúdo de um pacote, podendo por isso passar o conteúdo de um pacote, podendo por isso passar muito tráfego sem ser percebido. O Layer7 olha dentro dos pacotes, a procura de expressões regulares para achar determinados tipos de conteúdo, sendo considerado uma grande solução para procura de aplicações em uma rede.

Page 11: Iptables layer7

� Mas como nada é perfeito, o Layer 7 também tem suas desvantagens, pois ele pode trazer prejuízos para a empresa dependendo da situação em que é utilizado. O fato de haver a análise do conteúdo pode acarretar em grande uso de CPU, o que não é recomendado, por exemplo, a sua utilização em um roteador Linux com exemplo, a sua utilização em um roteador Linux com alto tráfego, podendo haver perda de informações e aplicações como o VOIP.

Page 12: Iptables layer7

� Como já sabemos, o iptables pode atuar nas camadas de enlace, rede e transporte:

� Enlace: iptables -A CHAIN -m mac -mac-source;� Rede: iptables -A CHAIN -s IP_ADDRESS;� Transporte: iptables -A CHAIN -p tcp -dport xxx.� Transporte: iptables -A CHAIN -p tcp -dport xxx.

� No entanto, combinando o Layer 7 serão aplicados novas features para o netfilter filtrar alguma aplicação que normalmente pertenceria apenas a camada 4.

Page 13: Iptables layer7

� Apesar da utilização do l7 não ser muito complexa, a sua instalação é um tanto quanto trabalhosa, pois devemos baixar vários pacotes, entre eles o próprio kernel do Sistema Operacional, que pode ser encontrado no seguinte endereço: http:/ /www.kernel.org. http:/ /www.kernel.org.

� Para o trabalho foi utilizado o kernel linux-2.6.31.14, utilizado no Ubuntu 9.10

Page 14: Iptables layer7
Page 15: Iptables layer7

� Além da versão do kernel utilizada pelo sistema operacional, houve a necessidade de baixar outros arquivos correspondentes ao Layer 7, bem como a instalação de pacotes para compilar o novo kernel, já com o iptables Layer7 instalado.com o iptables Layer7 instalado.

� A instalação foi feita dentro de um ambiente virtual, uma vez que um problema na compilação poderia ocasionar problemas maiores se fosse numa máquina real.

Page 16: Iptables layer7
Page 17: Iptables layer7

� Após baixar todos os arquivos, foi criado um link chamado linux que apontava para o kernel recém baixado;

� Entrando no kernel através do link linux foram � Entrando no kernel através do link linux foram aplicados os seguintes comandos:

� # patch -p1 < /usr/src/netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.patch

� # cp /boot/config-2.6.31-14-generic /usr/src/linux-2.6.31-14/.config

Page 18: Iptables layer7

� O próximo passo foi entrar dentro do menu de configuração do kernel e ativar o módulo l7.# make menuconfig

Page 19: Iptables layer7

� Saindo da configuração do kernel, foi dado o comando para a compilação do mesmo:# make-kpkg –initrd kernel-image

Page 20: Iptables layer7

� Depois desta etapa, foi utilizado o comando abaixo para instalar o novo kernel:

Page 21: Iptables layer7

� Após todos os procedimentos anteriores, resta acessar a pasta dos fontes do iptables e compilá-los para posteriormente instalar o iptables (já com o layer7).

� Para finalizar, foram instalados os protocolos que foram baixados e descompactados no início da instalação.

Page 22: Iptables layer7

� Podemos bloquear, por exemplo, o uso do msn (e de aplicativos que utilizem o mesmo protocolo) com os comandos:

� # iptables # iptables # iptables # iptables ----A OUTPUT A OUTPUT A OUTPUT A OUTPUT ----m layer7 m layer7 m layer7 m layer7 --------l7proto l7proto l7proto l7proto msnmessenger msnmessenger msnmessenger msnmessenger ----j DROPj DROPj DROPj DROPmsnmessenger msnmessenger msnmessenger msnmessenger ----j DROPj DROPj DROPj DROP# iptables # iptables # iptables # iptables ----A INPUT A INPUT A INPUT A INPUT ----m layer7 m layer7 m layer7 m layer7 --------l7proto l7proto l7proto l7proto msnmessenger msnmessenger msnmessenger msnmessenger ----j DROPj DROPj DROPj DROP

� Repare que utilizamos a opção -m para especificar que utilizaremos o módulo layer7 e, com isso, habilitamos a opção --l7proto que vai especificar qual protocolo iremos bloquear.

Page 23: Iptables layer7

� Podemos bloquear, por exemplo, vídeo pela Web (youtube, por exemplo):

� # iptables # iptables # iptables # iptables ----A INPUT A INPUT A INPUT A INPUT ----m layer7 m layer7 m layer7 m layer7 --------l7proto l7proto l7proto l7proto httpvideo httpvideo httpvideo httpvideo ----j DROPj DROPj DROPj DROP

� Bloqueando DNS:� Bloqueando DNS:� # iptables # iptables # iptables # iptables ----A INPUT A INPUT A INPUT A INPUT ----m layer7 m layer7 m layer7 m layer7 --------l7proto dns l7proto dns l7proto dns l7proto dns

----j DROPj DROPj DROPj DROP

Page 24: Iptables layer7

� Estes são alguns exemplos de protocolos que podem ser bloqueados, mas podemos bloquear vários outros programas como doom3, skype, edonkey, etc. Para uma lista doom3, skype, edonkey, etc. Para uma lista dos protocolos disponíveis nesta versão no Layer 7 basta acessar os diretórios /etc/l7-protocols/extra e /etc/l7-protocols/protocols.

Page 25: Iptables layer7

ProtocolosProtocolosProtocolosProtocolos

• São vários os protocolos, aplicações e arquivos que o Layer 7 consegue verificar, como softwares P2P, VoIP, Chat, Games, Mail, Remote Acess, File, Networking, Audio e Video Streaming, entre outros. Abaixo Video Streaming, entre outros. Abaixo apresentamos apenas alguns dos protocolos mais conhecidos.

Page 26: Iptables layer7

ProtocoloProtocoloProtocoloProtocolo QualidadeQualidadeQualidadeQualidade DescriçãoDescriçãoDescriçãoDescrição

Bittorrent OK P2P Torrent

Dhcp Bom Protocolo DHCP

Dns Ótimo Protocolo DNS

Edonkey Bom P2P Edonkey (Emule, entre outros)

Fasttrack Bom P2P (Kazaa, Morpheus, Imesh, etc.)Fasttrack Bom P2P (Kazaa, Morpheus, Imesh, etc.)

ftp Ótimo Protocolo FTP

http Ótimo Protocolo HTTP

Imap Ótimo Protocolo IMAP

Msnmessenger Bom MSN Messenger

Pop3 Ótimo Protocolo POP3

skypeout OK Skype para telefone

skypetoskype OK Skype para Skype

Page 27: Iptables layer7

ProtocoloProtocoloProtocoloProtocolo QualidadeQualidadeQualidadeQualidade DescriçãoDescriçãoDescriçãoDescrição

Smtp Ótimo Simple Mail Transport Protocol

Ssh Ótimo Secure Shell

Vnc Ótimo Acesso Remoto

Counterstrike-source Bom Game

Gtalk Bom Google TalkGtalk Bom Google Talk

Httpvideo Bom Vídeo sobre HTTP (Youtube)

Legenda Qualidade:• Ótimo: Funciona; • Bom: Funciona até onde sabemos; • OK: Provavelmente Funciona.

Page 28: Iptables layer7

� A seguir serão apresentados alguns testes primeiramente sem aplicar as regras do iptables layer7 e posteriormente utilizando as regras para barrar o acesso ao msn, skype e a regras para barrar o acesso ao msn, skype e a um site de vídeos.

Page 29: Iptables layer7
Page 30: Iptables layer7
Page 31: Iptables layer7
Page 32: Iptables layer7
Page 33: Iptables layer7
Page 34: Iptables layer7

� http://l7-filter.sourceforge.net� https://help.ubuntu.com/community/Kernel/Com

pilepile� http://www.howtoforge.com/kernel_compilation_

ubuntu� http://receitasdebolo.wordpress.com/2009/09/05

/layer7/� http://www.howtoforge.com/how-to-set-up-a-

linux-layer-7-packet-classifier-on-centos5.1