Você está na página 1de 79

FGP - FACULDADE GENNARI & PEARTREE

Sistemas de Informao

Estudo comparativo entre os filtros de pacotes IPFW e IPTables

Waldir S. S. Filho

Pederneiras - SP 2006

FGP - FACULDADE GENNARI & PEARTREE


Sistemas de Informao

Estudo comparativo entre os filtros de pacotes IPFW e IPTables

Waldir S. S. Filho

Trabalho apresentado como requisito obrigatrio concluso do Curso de Bacharelado de Sistema de Informao da Faculdade Gennari & Peartree. Orientador: Cezar SantAnna

Pederneiras - SP 2006

Folha de Aprovao
Pederneiras, 01 de dezembro de 2006

Orientador: ______________________ _________________________ Examinador: _____________________ _________________________ Examinador: _____________________ _________________________

RESUMO
A necessidade de segurana sobre as informaes que circulam em um rede se torna cada dia maior, preocupaes para evitar intrusos, vrus, spams, e outras ameaas que tanto circulam hoje pelas redes inevitvel, dessa preocupao surgiram sistemas de segurana, entre eles podemos citar os firewalls, ferramentas de deteco de intruso (IDS - Intrusion Detection System), ferramentas de preveno de intrusos (IPS Intrusion Prevention System), antivrus, anti-spams, entre outras ferramentas. Um firewall, assunto principal deste trabalho, uma ferramenta para restringir tipos de acesso e trfego de sua rede, sendo que existem hoje 3 tipos de firewalls, cada um atuando em nveis diferentes do modelo OSI, so eles o filtro de pacotes, os proxyes e o NAT, estes ferramentas poderosssimas para se obter um controle e uma segurana maior e melhor para sua rede. Dentre todas as ferramentas de segurana disponveis hoje, os firewalls, se tornaram devido s alteraes e crescimento da tecnologia, simples, bsicos, funcionais e fundamentais. Um firewall pode evitar possveis invases, ataques, trfegos mal intencionados, permite limitaes de acesso, manipula endereos e portas, aplicaes, entre outras funcionalidades dependendo do nvel do modelo OSI no qual est trabalhando. O objetivo do presente trabalho apresentar dois tipos de firewalls e elaborar um estudo comparativo entre eles, abordando dois tipos de filtros de pacotes: IPFW e o IPTables. Esse estudo apresentar as diferenas e facilidades de cada um e, em seguida, sero realizados teste de desempenho e consumo de recursos da mquina como CPU (processamento) e memria. Palavras chave: Firewalls, filtro de pacotes, ipfw, netfilter, iptables.

LISTA DE FIGURAS
Figura 1 - Camadas, interfaces e protocolos.............................................................................11 Figura 2 - PDU .........................................................................................................................15 Figura 3 - Topologia de rede de barramento linear ..................................................................16 Figura 4 Topologia de rede em anel .....................................................................................17 Figura 5 Topologia de rede em estrela ..................................................................................17 Figura 6 Topologia de rede em estrela estendida ..................................................................18 Figura 7 Topologia de rede em rvore ..................................................................................18 Figura 8 Topologia de rede completa (malha) ......................................................................19 Figura 9 - Estrutura do quadro Ethernet ...................................................................................22 Figura 10 - Estabelecimento de conexo TCP (Handshake Triplo).........................................24 Figura 11 Estrutura do segmento TCP ..................................................................................26 Figura 12 Estrutura do segmento UDP..................................................................................28 Figura 13 Estrutura do pacote IP ...........................................................................................32 Figura 14 Posio de um firewall..........................................................................................39 Figura 15 Tabelas padro do Netfilter/Iptables .....................................................................44 Figura 16 Funcionamento do IPFW .....................................................................................46 Figura 17 Laboratrio de testes ............................................................................................51 Figura 18 Grfico do consumo da CPU usada pelo ipfw.......................................................70 Figura 19 Grfico do consumo da CPU usada pelo iptables.................................................71 Figura 10 Grfico do consumo da memria RAM usada pelo ipfw ......................................71 Figura 21 Grfico do consumo da memria RAM usada pelo iptables ................................72 Figura 22 Grfico do consumo de banda durante os testes com o ipfw.................................72 Figura 23 Grfico do consumo de banda durante os testes com o iptables...........................73

LISTA DE TABELAS
Tabela 1 - IPFW x IPTABLES ..................................................................................................74

SUMARIO
1. 2. Introduo .........................................................................................................................8 Redes ..................................................................................................................................9 Um pouco da histria......................................................................................................9 Modelo OSI ..................................................................................................................10 Topologia e Meios ........................................................................................................16 Protocolos de comunicao ..........................................................................................23 TCP - Trasmission Control Protocol .......................................................................23 UDP - User Datagram Protocol...............................................................................27 IP Internet Protocol ...............................................................................................28 ICMP Internet Control Message Protocol ............................................................33 Principais formas de ataque..........................................................................................35 Spoof.........................................................................................................................35 DOS (Denial of Service) e DDOS (Distributed Denial of Service) .........................36 Pacotes fragmentados. ..............................................................................................37

2.1. 2.2. 2.3. 2.4. 2.4.1. 2.4.2. 2.4.3. 2.4.4. 2.5. 2.5.1. 2.5.2. 2.5.3. 3. 3.1. 3.2. 3.3. 3.4. 3.5. 3.6. 3.7. 4. 4.1. 4.2. 5. 6.

FIREWALLS ...................................................................................................................39 O que ..........................................................................................................................39 Porque utilizar um Firewall..........................................................................................40 Tipos .............................................................................................................................40 Limitaes ....................................................................................................................43 Netfilter/Iptables...........................................................................................................43 IP FIREWALL (IPFW) .................................................................................................46 IPFW x IPTABLES .......................................................................................................47 Estudo de caso.................................................................................................................51 Testes Realizados .........................................................................................................57 Resultados Obtidos .......................................................................................................70 Concluso ........................................................................................................................75 Referncias ......................................................................................................................77

1. INTRODUO

Com o avano da tecnologia os computadores passaram a se tornar cada dia mais indispensveis e acessveis, as instituies cresceram se expandindo por todo o mundo, a quantidade de informaes processadas e armazenadas cresceu muito rpido. As redes de computadores surgiram da necessidade do compartilhamento dessas informaes e tambm do compartilhamento dos recursos disponveis, a partir delas o foco das aplicaes comearam a mudar, assim como o perfil de seus usurios. Com essa nova tendncia ganhando fora, motivos de preocupao perante as informaes internas das cooperaes trabalhando em rede se tornaram imprescindveis, para isso muitas tecnologias surgiram, dentre elas os firewalls. Os firewalls tm por finalidade restringir o trfego que entra e sai de uma rede, com esse objetivo e sucesso em sua tarefa, os firewalls tornaram-se uma ferramenta obrigatria na implementao de um sistema de segurana confivel e eficiente. O objetivo do presente trabalho, apresentar os tipos de firewalls que existem atualmente e fazer um comparativo entre 2 sistemas de um dos tipos de firewalls, o filtro de pacotes, entre eles o IPFW e o IPTables. Em seguida, realizar sobre esses filtros testes de desempenho e consumo de recursos da mquina como processamento e memria. Este trabalho est organizado da seguinte forma: no captulo 1 apresentada uma breve introduo sobre o assunto abordado no trabalho. No captulo 2, um resumo geral explicativo e introdutrio aos conceitos de redes de computadores, que sero fundamentais para o entendimento do restante do trabalho. No captulo 3 so apresentadas as definies, explicaes e exemplificaes de firewalls e seus tipos, assim como conceitos mais especficos e tcnicos de algumas tecnologias. No captulo 4 apresentado o estudo de caso, os testes e seus resultados, no captulo 5 descrita a concluso do trabalho e, no captulo 6, as referncias bibliogrficas usadas para que este trabalho seja realizado.

2. REDES

2.1. Um pouco da histria

Pereira (1999) relata que os primeiros registros sobre a idia de redes surgiram em agosto de 1962 em uma srie de memorandos escritos por J.C.R. Licklider do MIT (Massachussets Institute of Technology). Os memorandos abordavam o conceito da rede galxica, prevendo vrios computadores interconectados globalmente, de forma que todos pudessem acessar as informaes de qualquer lugar rapidamente. Dois anos depois, Leonard Kleinrock, tambm do MIT, publicou o primeiro livro sobre a teoria de troca de pacotes, possibilitando teoricamente a comunicao entre diferentes computadores usando pacotes, ao invs de circuitos, representando um grande passo para tornar realidade as redes de computadores. Em 1965, Lawrence G. Roberts e Thomas Merrill conectaram um computador TX-2 em Massachussets com um Q-32 na Califrnia atravs de uma linha discada de baixa velocidade, criando assim a primeira rede entre computadores. Segundo Pereira (1999), com a guerra fria em seu auge, a necessidade da construo de uma rede capaz de sobreviver a uma guerra nuclear era enorme, foi ento que surgiu uma rede de pacotes conhecida como ARPANET. Seus pacotes trafegavam independentes uns dos outros usando vrias rotas existentes entre cada par de pontos da rede, o que garantia que se problemas com os pontos intermedirios acontecessem esses pacotes chegariam ao seu destino atravs de rotas alternativas. Nos anos 70 A ARPANET evoluiu ainda mais e em 1971 surgiu o primeiro protocolo de comutao de pacotes usado pela ARPANET chamado de Network Control Protocol (NCP), mais tarde inadequado para as necessidades da rede um novo conjunto de protocolos, envolvendo diversas tecnologias, desde fsicas at um nvel mais alto como a representao dos dados foi criado, chamado ento de Transfer Control Protocol/Internet Protocol (TCP/IP). O protocolo TCP/IP facilitou a interconexo de diferentes tecnologias fsicas de rede, o que proporcionou ainda mais o crescimento da ARPANET, que era constituda por poucos pontos espalhados pelos Estados Unidos e por alguns pases aliados, pontos que eram apenas organizaes militares e universidades ligadas ao projeto, com o tempo, vrias outras redes menores comearam a ingressar e fazer parte da ARPANET.

10

Novas redes comeam a surgir ao longo dos anos, outras deixam de existir, como a ARPANET em 1990, at chegar aos dias atuais onde a rede internacional de computadores mais conhecida como Internet prevalece sobre qualquer outra. A seguir ser apresentado o modelo OSI, que possibilitou a criao padronizada das redes, marcando o incio de uma nova fase para a computao.

2.2. Modelo OSI


De acordo com a Wikipedia (2006), em 1980 a Organizao Internacional de Normalizao (ISO International Standards Organization) aprovou um modelo de arquitetura genrico visando permitir a comunicao entre mquinas heterogneas, padronizando, assim, a implementao de qualquer tipo de rede. O modelo foi denominado OSI (Open Systems Interconnection). Segundo Pinheiro (2004) a arquitetura de uma rede formada por nveis representados por camadas, interfaces e protocolos. Cada camada oferece um conjunto de servios ao nvel superior, usando funes realizadas no prprio nvel e servios disponveis nos nveis inferiores. Os protocolos so conjuntos de regras e formatos que permitem a comunicao entre diferentes mquinas. Em cada camada podem ser definidos um ou mais protocolos. J as interfaces representam o limite entre cada nvel adjacente onde uma camada compreende as informaes vindas de outra camada. O modelo OSI define uma arquitetura genrica de sete camadas, cada camada presta servios para a camada imediatamente superior, respectivamente e cada camada recebe os servios prestados pela camada imediatamente inferior. A figura 1 apresenta as camadas do modelo OSI.

11

Figura 1 - Camadas, interfaces e protocolos Para Pinheiro (2004), pode-se considerar genericamente que as trs camadas mais baixas (camadas 1, 2 e 3) do modelo OSI cuidam dos aspectos relacionados transmisso dos dados propriamente dita, a quarta camada cuida da comunicao entre os hosts, enquanto que as trs camadas superiores (camadas 5, 6 e 7) cuidam dos aspectos relacionados aplicao, nvel de usurio. As camadas do Modelo OSI so as seguintes: Camada de Aplicao (camada 7) essa camada fornece aplicaes de rede. Essas aplicaes so processos rodando no sistema operacional que criam e tratam as mensagens que sero trafegadas pela rede, que so o resultado da interao direta com o usurio. Exemplos de aplicaes de rede so navegadores, correios eletrnicos, FTP, etc.

12

Camada de Apresentao (camada 6) a camada de apresentao atua tambm no sistema operacional e trata do formato e representao de dados gerados pelas aplicaes de rede. Para cada tipo de servio prestado pelas aplicaes existe um padro para a criao das mensagens que serve para garantir que os aplicativos obtenham as informaes de formas significativas para serem processadas, entre elas a formatao, a criptografia e a compactao dos dados. JPEG, TIFF, MP3, MPEG so exemplos de padres implementados nessa camada. Camada de Sesso (camada 5) conforme a Cisco Systems (2000), a camada de sesso implementa diversos mecanismos para controlar, estabelecer, encerrar e gerenciar sesses de comunicao entre hosts. A camada de sesso tambm trabalha no sistema operacional e gerencia as sesses enquanto os aplicativos estiverem interagindo entre dois ou mais hosts de comunicao. Os hosts envolvidos podem executar dois tipos diferentes de funes, uma delas o cliente, que solicita servios ao outro tipo de host que seria o servidor, este sempre respondendo as solicitaes requisitadas para o cliente. Para que essa conversao exista necessrio estabelecer um controle de dilogo entre esses dois tipos de hosts e aqui que ser definido se a comunicao ser full-duplex (envia e recebe dados ao mesmo tempo) ou halfdupex (envia e recebe dados, porm um de cada vez). A camada de sesso possui vrios protocolos importantes, por exemplo, o Network File System (NFS), Structured Query Language (SQL), Remote Procedure Call (RPC), etc. Camada de Transporte (camada 4) a camada de transporte desempenha o papel de fornecer servios de comunicao eficiente, confivel e de baixo custo independente da rede fsica aos processos de aplicao rodando em diferentes hosts. De acordo com Piccinin (1996), a camada de transporte aceita os dados da camada de sesso, se necessrio divide os dados em unidades menores para que estes possam ser transmitidos pela rede. Alm disso, tambm responsvel por funcionalidades como a multiplexao, demultiplexao e a entrega confivel de todas as unidades transmitidas, Piccinin (1996) diz que o modelo OSI define trs fases de operao dentro da camada de transporte e dois tipos de servios para a transferncia de dados:

13

Fase de estabelecimento tem por objetivo o estabelecimento de conexes entre funes de servios das camadas mais altas, a qualidade dos servios de conexo negociada durante esta fase.

Fase de transferncia tem como objetivo fazer a transferncia de dados de acordo com a qualidade dos servios estabelecidos na fase anterior.

Fase de terminao encerra uma sesso terminando a conexo e notificando ambas as partes envolvidas na comunicao.

Servio orientado a conexo tem o objetivo de fornecer qualidade e confiana na entrega dos dados das aplicaes que o requisitaram, um protocolo que implementa esse tipo de servio o TCP. As principais funes desse tipo de servio so a segmentao e concatenao de unidades de dados, a recuperao de erros fim-a-fim, o controle de seqncia fim-a-fim sobre cada conexo de transporte, o controle de fluxo fim-a-fim sobre cada conexo, entre outros.

Servio no orientado a conexo esse tipo de servio implementado pelo protocolo UDP. Esse protocolo foi especificado para ser utilizado com servios de rede muito confiveis, como no orientado conexo, no necessita estabelecer, gerenciar e fechar conexes, tendo apenas que transmitir os dados, transformando assim a taxa de fluxo de dados transmitidos sobre a rede muito maior. Alm disso, no garante a entrega nem a ordenao das unidades transmitidas, tambm no capaz de segmentar as mensagens e no possui controle de fluxo algum.

Camada de Rede (camada 3) a camada de rede responsvel pelo endereamento lgico dos pacotes atravs de alguns protocolos implementados

14

por ela, por exemplo, o IP e o IPX. Depois dos dados endereados esta camada torna-se responsvel pelo transporte desses dados ditando regras de como e para onde devem ser enviados atravs da rede fsica, de forma que os pacotes consigam chegar o mais rpido possvel encontrando o melhor caminho. Exemplos de protocolos responsveis por esta parte so o RIP, OSPF, IGRP, EIGRP, EGP, etc. Existem outros protocolos para outras funes como o ICMP, ARP, RARP, etc. que tambm fazem parte desta camada. O encaminhamento, endereamento, controle de congestionamento, sequenciamento de pacotes, entre outros, so funes desta camada. Os roteadores so especificados nessa camada e trabalham em cima dos seus protocolos. Camada de Enlace de Dados (camada 2) segundo a Cisco Systems (2000), a camada responsvel por tratar as limitaes dos meios fsicos, onde os dados sero colocados. Dentre os protocolos utilizados nessa camada pode-se citar Frame Relay, PPP e CSMA/CD e nessa camada tambm que os switches e bridges esto especificados. A camada de enlace de dados dividida em duas subcamadas. A primeira a subcamada de enlace que gerencia a comunicao entre os dispositivos atravs um link da rede, ou seja, fornece trnsito confivel dos dados atravs de um link fsico e responsvel pelo endereamento fsico, topologia de rede, acesso rede, etc. A segunda a subcamada de controle de acesso ao meio, que trata dos protocolos que um host segue para acessar os meios fsicos. Camada Fsica (camada 1) de acordo com Silveira e Matarazzo (2004), a camada Fsica a camada responsvel por injetar os bits nos meios fsicos, como cabos, hubs, repetidores, conectores, etc. Nesta camada, tambm esto especificadas as caractersticas mecnicas, eltricas, funcionais e os procedimentos para ativar, manter e desativar conexes fsicas para a transmisso de bits. O bit considerado como a unidade de dados bsica da camada fsica e seus protocolos devem ser independentes do meio de transmisso, para que os dados possam ser transmitidos em diversos meios sem que sejam alterados.

15

Cada uma dessas sete camadas so independentes entre si, apesar de prestarem servios outra. Cada camada s se preocupa com a funo da mesma. Por exemplo, a camada de sesso vai se preocupar apenas com o formato das mensagens, depois do servio efetuado ela passa os dados obtidos para a outra camada e a partir dali a responsabilidade passa a ser da camada que recebeu os dados, sendo assim, a comunicao e tratamento dos dados ocorre entre camadas do mesmo nvel. Por exemplo, depois que a camada de rede empacota os dados recebidos e os transferem para a camada abaixo, esses dados s sero desempacotados e entendidos por outra camada de rede, em roteadores ou nos destinos finais. Os dados recebidos de outra camada so chamados de Unidade de Dados do Servio (SDU - Service Data Unit). Esses dados so encapsulados pela camada que os recebeu que tambm adiciona um cabealho contendo todas as informaes necessrias para um tratamento correto na outra ponta pela camada do mesmo nvel. Esse cabealho chamado de Informao de Controle do Protocolo (PCI - Protocol Control Information), o resultado da integrao PCI + SDU chamado de Unidade de Dados do Protocolo (PDU - Protocol Data Unit). Descendo a pilha de camadas at a camada de transporte, a maioria das PDUs formadas no recebem nenhum nome especfico, j a PDU formada pela camada de transporte recebe o nome de segmento, a PDU da camada de rede o nome pacote e a PDU da camada de enlace o nome de quadro. Uma PDU pode ser representada pela figura 2 logo abaixo.

Figura 2 PDU

Quando um usurio em interao com algum aplicativo cria uma mensagem e esta precisa ser enviada pela rede, essa mensagem precisa passar pelos nveis do modelo OSI at que um quadro seja formado e este ento seja injetado no meio fsico. Quando o quadro chega ao seu destino o processo contrario ao da criao feito, quando o quadro capturado do meio pela camada fsica chega camada de enlace o cabealho posto pela mesma camada na outra ponta analisado e interpretado, caso no ocorra nenhum erro o cabealho extrado. Os dados desencapsulados e mandados para a camada superior, o mesmo processo feito at a

16

mensagem chegar aplicao onde ela interpretada e apresentada ao usurio. No caso de um servidor a mensagem analisada e uma resposta gerada para ser mandada de volta.

2.3. Topologia e Meios


A topologia da rede nada mais que o layout lgico e fsico de uma rede, ou seja, a forma como os ns esto organizados e interligados, alm disso, tambm descreve como o trafego de informaes sobre o meio e como os dispositivos esto dispostos. Para escolher a melhor topologia de rede a ser utilizada, fatores como estabilidade, velocidade, confiabilidade, custo/beneficio entre outros so prioridades e devem ser considerados. Existem diversas topologias, de acordo com a Cisco Systems (2000), as mais importantes so: Topologia de rede de barramento linear a Figura 3 ilustra esse tipo de topologia, onde todos os host so ligados no mesmo cabo, sendo assim, todos podem se comunicar diretamente e ver todos os sinais de todos os outros dispositivos. Problemas de trafego e colises so comuns e no caso de um problema no cabo principal os hosts so desconectados uns dos outros.

Figura 3 - Topologia de rede de barramento linear


Fonte: Material do Curso da Cisco (CCNA)

17

Topologia de rede em anel a Figura 4 ilustra esse tipo de topologia, onde os dispositivos so conectados diretamente uns aos outros, as informaes so transmitidas de um host para outro adjacente.

Figura 4 Topologia de rede em anel Fonte: Material do Curso da Cisco (CCNA)

Topologia de rede em estrela a Figura 5 ilustra esse tipo de topologia, onde um n central interliga todos os hosts. Para os hosts se comunicarem os dados devem passar obrigatoriamente, pelo n central podendo aumentar o nvel de segurana, porm se algum problema ocorrer no n central os hosts sero todos desconectados e dependendo do tipo de dispositivo usado no n central as colises podem trazer problemas.

Figura 5 Topologia de rede em estrela Fonte: Material do Curso da Cisco (CCNA)

Topologia de rede em estrela estendida a Figura 6 ilustra esse tipo de topologia, que igual a uma topologia em estrela, porm cada n vinculado ao n central tambm um n central de uma outra estrela.

18

Figura 6 Topologia de rede em estrela estendida Fonte: Material do Curso da Cisco (CCNA)

Topologia de rede em rvore esse tipo de topologia similar topologia de rede em estrela estendida. Conforme ilustra a Figura 7, ao invs de possuir um n central ela usa um tronco que vai se ramificando at outros ns.

Figura 7 Topologia de rede em rvore Fonte: Material do Curso da Cisco (CCNA)

Topologia de rede completa (malha) todos os ns so ligados diretamente a todos os outros ns da rede, criando caminhos redundantes e estabelecendo assim conexes ponto a ponto entre os hosts. Esse tipo de topologia fsica geralmente utilizada em estabelecimentos executando algum tipo de servio crtico que em nenhuma hiptese pode parar. Nesta topologia, caso um caminho seja interrompido vrios outros ainda estaro em funcionamento trazendo assim garantias para o funcionamento do servio, porm devido ao nmero de caminhos torna-se invivel para redes com grandes quantidades de ns. Essa topologia representada pela figura 8.

19

Figura 8 Topologia de rede completa (malha) Fonte: Material do Curso da Cisco (CCNA)

Para que os hosts possam se comunicar e trocar informaes necessrio interliglos, para isto existem diversas formas atravs dos meios fsicos disponveis hoje em dia. Segundo Tanenbaum (2003) pode-se dividir os meios fsicos em meios guiados (cabos de par tranado, coaxiais e fibras ticas) e em meios no guiados (sem fio). Ele tambm especifica os mais usados da seguinte forma: Cabo de par tranado esse tipo de meio o mais antigo e o mais comum. Cada par constitudo de dois fios de cobre encapados e tranados de forma helicoidal. Eles so tranados a fim de reduzir a interferncia, uma vez tranados as ondas de diferentes partes do fio se cancelam melhorando a qualidade do meio. Em 1988 foram lanados os pares tranados de categoria 5, mais tarde melhorado e ento chamado de categoria 5e, estes possuem mais voltas por centmetro do que seus antecessores (categoria 3) melhorando ainda mais a qualidade do meio diminuindo as interferncias. O cabo de categoria 5e possui quatro pares de fios tranados, todos dentro de uma capa protetora, podendo chegar a transmitir dados a uma tima velocidade (1 Gigabit/s). O tamanho mximo recomendado para um cabo desse de 100 metros, caso ultrapasse esse tamanho os dados transmitidos por ele perdero fora e sero perdidos no meio do caminho, para acabar com esse problema devem ser usados aparelhos como repetidores, hubs entre outros.

20

Cabo coaxial tambm muito comum nas instalaes de rede. Esse tipo de cabo possui uma blindagem muito melhor em relao ao cabo de par tranado podendo se estender a distncias maiores (500 metros) com menos interferncias. constitudo por um fio de cobre na parte central, que envolvido por uma material isolante que por sua vez, envolvido por um condutor cilndrico, geralmente uma malha metlica entrelaada, que tambm possui uma capa protetora por cima, esse tipo de cabo tambm muito usado em instalaes de televiso a cabo que hoje tambm oferecem acesso a Internet, pelo mesmo meio que o sinal de tv, porm necessrio um dispositivo chamado cable modem para obter o acesso a rede. Fibra tica este o meio mais veloz e eficiente na transmisso de dados porm o mais caro. Segundo Nascimento (2003), sua velocidade pode chegar a casa dos 300 Terrabits/s para conexes de longa distncia e milhares de Terrabist/s em conexes de curta distncia. Os amplificadores de sinais hoje em dia so colocados aproximadamente a cada 50km de fibra, por trafegarem feixes de luz ao invs de energia eletromagntica este meio est livre de interferncias iguais as dos outros meios j citados. Existem dois tipos de fibra ptica: multmodo fibra ptica com a dimenso do ncleo relativamente grande, permite a incidncia de raios de luz em vrios ngulos. monomodo fibra ptica com a dimenso do ncleo muito pequena, permite a incidncia de raios de luz em um nico ngulo. O cabo de fibra ptica semelhante ao cabo coaxial porm no possui a malha metlica entrelaada. Seu ncleo muito fino envolvido por um revestimento de vidro com um ndice de refrao inferior ao do ncleo, garantindo que os feixes de luz no escapem do ncleo. Por sua vez esse revestimento de vidro possui uma capa protetora. Sem fio esse tipo de meio trabalha com ondas eletromagnticas, ondas de rdio, ondas de microondas, ondas de luz, ondas infravermelhas, etc. As ondas podem se propagar pelo ar facilitando a conexo dos hosts na rede que podem estar em qualquer lugar dentro do alcance das ondas, se libertando ento de cabos e lugares

21

especficos para se conectarem a rede, a velocidade e a distncia que esse tipo de meio pode atingir depende da freqncia das ondas emitidas. Apesar da alta tecnologia que esses meios possuem nenhuma garantia de que os dados sero entregues perfeitamente ao seu destino pode ser dada, segundo a Cysco Systems (2000). Os meios fsicos podem sofrer danos, interferncias, entre outros problemas, para tratar esses problemas de erro, tratar da topologia de rede e do controle de fluxo sobre os meios fsicos foram especificados padres, esses padres so especificados na camada de enlace, cada um desses padres define a nomeao, o enquadramento e as regras de controle de acesso aos meios, o padro mais comum usado em redes locais (LAN - Local Area Networks) o padro Ethernet. O padro de rede Ethernet, segundo a Cysco Systems (2000), tem suas origens nos anos 60, onde o mtodo de acesso ao meio usado por este padro o CSMA/CD (carrier sense multiple access/collision detection) foi criado na universidade do Hava. A Ethernet foi projetada para transportar um trfrego espordico, intenso e com altas taxas de transferncia de dados. As estaes em uma rede Ethernet podem acessar a rede a qualquer momento, antes de acessar a rede as estaes a escutam para determinar se ela j est em uso, caso ela esteja em uso, a estao aguardam at que a rede esteja liberada. Uma coliso pode ocorrer quando duas estaes escutam a rede ao mesmo tempo, no identificam nenhum trfego de rede e transmitem os dados ao mesmo tempo. Nesse caso, as informaes transmitidas iro colidir umas com as outras no chegando at seu destino final. Para tratar esse caso um tempo aleatrio disparado em cada maquina que est envolvida nesta coliso, durante esse tempo nenhum dado pode ser transmitido por essas estaes. Quando este tempo termina o mesmo processo de escuta da rede para ver se os dados podem ser transmitidos feito e caso o meio esteja livre os dados sero novamente transmitidos. As LANs Ethernet so redes de broadcast, ou seja, os quadros colocados no meio chegam em todas as estaes independente de serem ou no o destino correto do quadro. Dessa forma cada estao deve analisar o quadro para ver se ela o destino, caso for os dados so passados para a camada superior, caso contrrio o quadro descartado. Para detectar se aquela estao o destino dos dados essa estao verifica o endereo MAC, o endereo MAC o endereo fsico da estao, esse endereo fica em um chip na placa de rede e exclusivo dessa placa, nenhuma outra no mundo possui o mesmo endereo, este endereo possui 48bits de comprimento e expresso por doze dgitos hexadecimais, os

22

seis primeiros dgitos identificam o fabricante ou fornecedor da placa e os outros seis dgitos identificam o nmero serial de interface definido pelo fabricante ou fornecedor. Um quadro Ethernet tem de 64 bytes a 1518 bytes e representado abaixo pela figura 9.

Figura 9 - Estrutura do quadro Ethernet


Fonte: Material do Curso da Cisco (CCNA)

Prembulo padro alternado de 1s e 0s para informar s estaes se o quadro Ethernet ou IEEE 802.3. Incio do quadro (SOF Start Of Frame) Endereos de origem e destino endereos fsicos (MAC). Tipo especifica o protocolo da camada superior que receber os dados depois que o processamento estiver concludo. Dados dados propriamente ditos, o padro Ethernet espera receber pelo menos 46 bytes de dados. FCS (Frame Check Sequence) verificador de 4 bytes (CRC), criado pelo dispositivo que envio os dados e recalculado no receptor para verificar se o quadro possui erros.

Depois do aumento significativo de usurios e aplicaes de rede, a necessidade por mais velocidade na transmisso tornou-se imprescindvel, assim surgiram novos padres totalmente compatveis com a Ethernet, entre eles: FastEthernet e Gigabit Ethernet. A nica diferena entre esses padres a velocidade, sendo que a Ethernet trabalha a uma taxa de transmisso de 10Mb/s, a FastEthernet a 100Mb/s e a Gigabit Ethernet a 1000Mb/s. Como trabalham da mesma forma, mudando apenas a velocidade, o custo para migrao, por exemplo, de Ethernet para FastEthernet, relativamente baixo.

23

Conforme Wikipdia (2006), um outro padro de rede bastante usado chamado Token Ring, foi desenvolvido pela IBM em 1980. Esse padro funciona a taxas de 4 a 16Mb/s sobre cabos de par tranado usando como topologia fsica a topologia em anel. O padro Token Ring, bem diferente do padro Ethernet, para que uma mquina da rede possa se comunicar ela precisa receber uma permisso, chamada de token, o token passado de mquina em mquina na rede, quando uma o recebe ela pode ento executar servios e transmitir dados durante um espao de tempo, depois dos dados serem transmitidos o token passado para outra mquina e esta ento poder transmitir dados na rede. Segundo Wikipdia (2006), o token um pequeno bloco de dados composto de trs bytes, a principal diferena entre o padro Ethernet e o padro Token Ring, que no Token Ring cada mquina tem um momento e tempo determinado para transmitir os dados, mesmo que o meio esteja livre este s pode ser acessado pela mquina com o token, assim problemas de coliso bastante comuns em redes Ethernet no so possveis.

2.4. Protocolos de comunicao

2.4.1. TCP - Trasmission Control Protocol


Segundo Pereira (1999), o TCP comeou a ser desenvolvido em 1973 pelos norteamericanos Vinton G. Cerf e Robert E. Kahn como parte de um projeto patrocinado pela DARPA (Defense Advanced Research and Projects Agency). Mesmo publicado em 1974 marcando o incio do TCP/IP ainda seriam necessrios vrios anos de modificaes e redesenho para que ficasse completo e adaptado universalmente. O TCP ganhou espao e fora depois de ser integrado ao UNIX BSD bastante difundido na poca entre as universidades e seus estudantes. O TCP um protocolo da camada de transporte, evoluo do nvel de transporte original da ARPANET, o NCP, tem como principal caracterstica a entrega confivel dos dados por ser orientado a conexo. Alm disso, tem outras caractersticas, como dividir as mensagens enviadas em segmentos e depois reagrup-las no destino, sempre ponto a ponto, Handshake triplo, a idia de janela deslizante, entre vrios outros. Junto com o protocolo de

24

nvel mais baixo, o IP, problemas como entrega organizada, confirmao de recebimento e reenvio de pacotes, foram solucionados. Para iniciar uma conexo TCP, segundo Comer (1998), o transmissor da inicio ao processo de Handshake Triplo, que funciona da seguinte forma, o transmissor envia um segmento destinado ao receptor com um conjunto de bits SYN e fica aguardando uma resposta do receptor. O receptor ento envia um segmento concordando com o pedido, um conjunto de bits ACK, e para continuar o handshake triplo, o segmento tambm possui um conjunto SYN. Em seguida, o transmissor envia outro segmento com um conjunto ACK afim de informar ao receptor que ambos concordam com o estabelecimento da conexo, esse processo necessrio e suficiente para sincronizar corretamente as duas pontas, durante esse processo todo os requisitos necessrios para que se tenha uma conexo so efetuados, por exemplo, o tamanho da janela deslizante, os nmeros de seqncia iniciais dos pacotes. A figura 10 descreve o processo de estabelecimento de conexes TCP.

Figura 10 Estabelecimento de conexo TCP (Handshake Triplo)


Fonte: http://www.usenix.org/events/bsdcon02/full_papers/lemon/lemon_html/img1.png

25

Depois da conexo estabelecida os dados podem ser transmitidos, para ter a certeza de que os dados chegaram ao destino final corretamente o TCP oferece alguns processos. Depois que um segmento foi enviado, o transmissor fica aguardando uma confirmao do receptor dizendo que os dados chegaram e que nenhum erro foi encontrado. Para que os dados no se percam no caminho e no atinjam seu destino, um tempo tambm disparado, caso nenhuma confirmao desse segmento chegue durante esse tempo os dados so retransmitidos. Para finalizar uma conexo um segmento contendo um conjunto de bits FIN enviado e a conexo encerrada. Outras seqncias de bits como a RST para restabelecer a conexo, URG para setar o segmento como urgente, PSH para forar os dados a serem enviados imediatamente, tambm existem. Segundo Tanenbaum (2003), as etapas para estabelecimento e encerramento das conexes podem ser representadas em onze estados, em cada um desses estados eventos so determinados vlidos, neste caso possvel executar uma ao, caso outro evento (no determinado) ocorra um erro ser reportado. Os estados so: CLOSED nenhuma conexo est ativa ou pendente. LISTEN o servidor est esperando por uma solicitao. SYN RCVD uma solicitao por conexo chegou, aguardando uma confirmao para concluir o estabelecimento da conexo. SYN SENT aplicao comeou o processo para estabelecer uma conexo. ESTABLISHED conexo estabelecida. FIN WAIT 1 aplicao informou que acabou de transmitir. FIN WAIT 2 a outra ponta concordou em encerrar a conexo. TIMED WAIT aguardando entrega de todos os segmentos. CLOSING as duas pontas tentaram encerrar a conexo ao mesmo tempo. CLOSE WAIT a outra ponta deu incio ao processo de encerramento da conexo. LAST ACK aguardando entrega de todos os segmentos.

O TCP possui 65.535 portas para que possa haver uma interao com as aplicaes, cada aplicao fica ouvindo uma porta. Assim que um segmento chega a camada de transporte ele analisado e os dados so encaminhados a porta especificada. Essa tcnica serve para

26

facilitar a entrega dos dados a aplicao correta, por este motivo duas aplicaes no podem compartilhar da mesma porta. Dentre as 65.535 portas, as 1.024 primeiras so reservadas a aplicaes especificas e muito comuns, por exemplo, a porta 80 reservada para servidores WEB, a 23 para TELNET, 20 e 21 para FTP, 110 para POP3 e 25 para SMTP, entre vrias outras. Esses servidores no precisam necessariamente ouvir essas portas, alterando a configurao do servidor essas portas podem ser mudadas. Portas acima de 1.024 so usadas aleatoriamente por outras aplicaes apenas no momento em que os dados esto sendo transferidos. Conforme Comer (1998) a estrutura de um segmento TCP formado pelo cabealho TCP mais os dados, sua forma representada pela figura 11.

Figura 11 - Estrutura do segmento TCP Fonte: Livro Interligao em rede com TCP/IP (Douglas E. Comer) Porta de Origem nmero da porta TCP de origem. Porta de Destino nmero da porta TCP de destino. Nmero de Seqncia nmero que identifica o segmento na janela. Nmero de Reconhecimento nmero que a origem espera receber para efetuar o reconhecimento do segmento. HLEN nmero inteiro que especifica o comprimento do cabealho do segmento. Reservado campo de 6 bits reservado para utilizao futura. Bits de Cdigo seqncia de bits informando a finalidade e contedo do segmento, por exemplo, SYN, FIN, ACK, etc.

27

Janela nmero que especifica o tamanho da janela usada na conexo, atravs deste campo o TCP informa a quantidade de dados que espera receber sempre que envia um segmento. Soma de Verificao clculo gerado na origem e recalculado no destino para verificao de erro. Ponteiro Urgente especifica a posio no segmento onde os dados urgentes terminam. Opes opes negociadas entre as duas pontas, um exemplo pode ser o tamanho do segmento. PADDING depende das opes selecionadas. Dados os dados propriamente ditos.

2.4.2. UDP - User Datagram Protocol


O UDP (User Datagram Protocol), conforme Comer (1998). um protocolo da camada de transporte, no orientado a conexo, sendo assim, no confivel, pois no usa de confirmaes para certificar-se de que as mensagens foram entregues ao destino com sucesso, no fornece o controle para ordenar os segmentos que chegam ao destino e tambm no fornece informaes para controlar a velocidade com que os segmentos fluem entre os hosts, por isso os segmentos UDP podem ser duplicados, se perderem no meio do caminho ou chegarem com problemas. Porm uma das suas vantagens a velocidade, como no possui a confirmao nem os controles de chegada dos segmentos a velocidade com que o UDP processa e entrega os dados se torna bem superior, sendo ideal para aplicaes relacionadas a vdeos por exemplo, assim teremos uma representao sem atrasos e falhas sobre a cena sendo filmada. Para entregar os dados s aplicaes corretas o UDP usa o mesmo esquema de portas usado pelo TCP inclusive o mesmo nmero de portas, 65.535, exemplos de aplicaes que usam o UDP como protocolo para transporte so: DNS usando a porta 53, TFTP usando a porta 69, DHCP usando a 67, entre outras aplicaes menos comuns. Quando o UDP recebe os dados ele os encapsula adiciona seu cabealho e passa o segmento a camada inferior.

28

O segmento UDP bem mais simples com muito menos informaes comparado ao segmento TCP, a estrutura do segmento UDP a representado pela figura 12.

Figura 12 - Estrutura do segmento UDP Fonte: Livro Interligao em rede com TCP/IP (Douglas E. Comer) Porta de Origem nmero da porta UDP de origem. Porta de Destino nmero da porta UDP de destino. Comprimento de Mensagem UDP nmero contendo o tamanho do segmento UDP, incluindo cabealho e dados. Soma de Verificao clculo gerado na origem e recalculado no destino para verificao de erro. Dados os dados propriamente ditos.

2.4.3. IP Internet Protocol


O IP (Internet Protocol), um protocolo rotevel da camada de rede usado para encaminhar os dados corretamente pela rede at chegarem ao seu destino. O IP foi publicado pela primeira vez em 1981, sendo hoje o protocolo de endereamento mais usado no mundo. Segundo a Wikipdia (2006), o IP fornece um servio no confivel, ou seja, o protocolo no garante a entrega dos dados, por isso os pacotes podem se perder, serem duplicados ou chegarem fora de ordem. Dessa forma, trabalhando em conjunto com o TCP esses problemas so tratados e as aplicaes que necessitam de confiabilidade pode trabalhar corretamente. O IP oferece um endereo para identificar logicamente as mquinas da rede, a partir desse endereo os caminhos para atingir o destino so encontrados. O endereo IP possui 32

29

bits em sua verso mais usada atualmente, o IPv4, cada equipamento que trabalha na camada de rede e os hosts possuem um desses endereos para identificao. Conforme Tanenbaum (2003), esses endereos so escritos em notao decimal com pontos, a cada 8 bits um ponto usado separando os nmeros, cada conjunto desses bits escrito em notao decimal de 0 a 255. A Cisco Systems (2000) diz que esse tipo de endereamento pode ser dividido em 2 partes, sendo elas o endereo da rede e o endereo do host daquela rede, assim so possveis milhares de redes e hosts. Os endereos IPS so divididos em 5 classes, sendo elas: classes A, B, C, D e E. A classe A foi definida para ter o primeiro bit do primeiro octeto sendo 0, ela usa o primeiro octeto para enderear a rede e os 3 octetos restantes para enderear hosts possibilitando ento 126 redes com 16.777.214 hosts cada. A classe B possui os dois primeiros bits do primeiro octeto sendo respectivamente 1 e 0, ela usa os dois primeiros octetos para enderear a rede e os dois restantes para enderear os hosts, sendo ento 16.382 redes com 65.534 hosts cada. A classe C possui os trs primeiros bits do primeiro octeto iguais a 1, 1 e 0 respectivamente, sendo os trs primeiros octetos usados para enderear a rede e o ltimo octeto para enderear os hosts fornecendo ento 2.097.150 redes com 254 hosts cada. A classe D tem definido os quatros primeiros bits do primeiro octeto sendo 1, 1, 1 e 0 respectivamente, os endereos dessa classe so reservados para endereos de Multicast. A classe E tem definido os cinco primeiros bits do primeiro octeto como 1, 1, 1, 1 e 0 respectivamente, os endereos dessa classe so reservados para uso futuro. Seus endereos na notao binria ficariam da seguinte forma: Classe A 0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxx Classe B 10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxx Classe C 110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxx Classe D 1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxx Classe E 11110xxx.xxxxxxxx.xxxxxxxx.xxxxxxx

Com esses dados pode-se afirmar ento que os endereos das classes variam da seguinte forma: Classe A 1.0.0.0 at 127.255.255.255

30

Classe B 128.0.0.0 at 191.255.255.255 Classe C 192.0.0.0 at 223.255.255.255 Classe D 224.0.0.0 at 239.255.255.255 Classe E 240.0.0.0 at 247.255.255.255

O ultimo endereo da rede, por exemplo, 192.168.0.255 um endereo reservado, ou seja nenhum hosts pode us-lo. Este endereo chamado de endereo de broadcast. Quando um pacote injetado na rede com este endereo significa que este pacote est endereado a todos os hosts dessa rede, sendo assim todas as mquinas recebem o pacote e o analisam, caso o receptor seja o portador do servio, utilidade ou qualquer funo desejada pelo host que mandou o broadcast este responde a origem e as demais mquinas, caso o receptor no esteja relacionado requisio, a solicitao ignorada e descartada. Os primeiros endereos, como 192.168.0.0, so endereos de rede e tambm no podem ser associados a nenhum host, assim fica claro o porqu de 254 hosts e no 256 hosts disponveis na classe C e sucessivamente para as outras classes. Como o nmero de redes vem crescendo exponencialmente, foram reservados alguns endereos de cada uma dessas classes para serem usados em redes locais, estes endereos no so vlidos na rede pblica, assim pode-se ter milhes de redes iguais, por exemplo, 192.168.0.0, espalhadas pelo mundo sem que nenhum problema de conflito ocorra, os endereos reservados so: Classe A 10.0.0.0 at 10.255.255.255 Classe B 176.16.0.0 at 172.31.255.255 Classe C 192.168.0.0 at 192.168.255.255

Para que essas redes privadas, como so chamadas, consigam se comunicar com a rede pblica um host com um IP pblico precisa estar conectado a esta rede privada. Este host tem a funo de receber os pacotes dessa rede privada e reendere-los com seu IP pblico para que os dados possam atingir um destino externo, assim como tambm sua funo fazer o inverso, ou seja, receber o pacote externo, reendere-lo novamente caso este pacote tenha como destino uma mquina interna e ento envi-lo at a mquina interna. Esse servio chamado de NAT (Network Address Translator). Com essa funcionalidade implementada,

31

uma organizao s necessitar de um IP pblico ao invs de vrios, liberando endereos que por sinal j esto se esgotando devido ao tamanho da rede pblica ou Internet. A escolha da classe depende das necessidades e nmeros de hosts encontrados na rede. Os endereos pblicos so distribudos por rgos controladores, j os endereos privados devem ser escolhidos pelo administrador da rede. Para determinar qual parte do endereo IP o endereo de rede e qual o endereo do host uma mscara usada. Cada mscara como o endereo IP possui 32 bits escritos em notao decimal com pontos. Por padro cada classe recebe uma mscara, sendo elas: Classe A 255.0.0.0 Classe B 255.255.0.0 Classe C 255.255.255.0

Pegando a mscara da classe A como referncia para o exemplo, pode-se perceber que o primeiro octeto no sofre nenhuma alterao, pois o nmero explicito na mscara 255, ou seja, todos os bits do octeto foram usados para definir a rede e os octetos representados por 0 podem sofrer alteraes pois nenhum de seus bits foram preenchidos. Assim estes octetos podem ao decorrer da necessidade serem modificados para incluso de novos hosts. As mscaras tambm podem ser expressas de uma outra forma, por exemplo, a mscara padro da classe A 255.0.0.0, essa mscara pode ser representada por um /8 logo aps o endereo IP, o /8 significa que os 8 primeiros bits esto preenchidos. Assim uma rede 10.0.0.0/255.0.0.0 tambm pode ser representado como 10.0.0.0/8. A mscara de rede tambm pode ser usada para definir sub-redes, por exemplo, uma rede com 10 mquinas no precisa usar uma classe C completa, pois ela oferece 254 hosts e a necessidade de apenas 10, nesse caso o nmero do trafego de broadcast alto e desnecessrio. Para diminuir esse trafego, necessrio pegar emprestado 4 bits dos 8 disponveis para os hosts e defini-los como uma sub-rede, assim tem-se dentro de uma rede 14 sub-redes possveis com 14 hosts possveis, diminuindo bruscamente o trafego de broadcast de 254 hosts para apenas 14. O gerenciamento da rede devido estas configuraes ficam mais simples e problemas podem ser encontrados com mais facilidade. O mnimo de bits que podem ser emprestados para criar uma sub-rede 2 e o mximo qualquer nmero sendo que necessariamente 2 bits tem que sobrar para enderear os hosts.

32

Quando os dados chegam na camada de rede estes dados so encapsulados e um cabealho adicionado e ento estes dados so passados a prxima camada, no caso do IP, segundo Comer (1998) a estrutura do pacote representada pela figura 13.

Figura 13 - Estrutura do pacote IP Fonte: Livro Interligao em rede com TCP/IP (Douglas E. Comer) VERS verso do protocolo IP utilizado para criar o pacote. HLEN nmero que especifica o comprimento do cabealho do pacote. Tipo de servio especifica como o pacote deve ser tratado. Comprimento total fornece o comprimento do pacote IP medido em octetos. Identificao nmero inteiro nico que identifica o pacote. Flags bits que controlam a fragmentao. Deslocamento do fragmento especifica o deslocamento do dos dados que esto sendo transportados no fragmento. TTL especifica o tempo em segundos que um pacote pode permanecer no sistema de interligao em redes. Protocolo especifica qual protocolo de nvel superior foi usado para criar a mensagem que est sendo transportada no pacote. Soma de verificao assegura a integridade dos valores do cabealho IP. Endereo de origem endereo IP de origem. Endereo de destino endereo IP de destino.

33

Opes usadas principalmente para testes ou depurao da rede. PADDING depende das opes selecionadas. Dados dados propriamente ditos. Um pacote IP como este acima, precisa encaixar-se corretamente a um quadro fsico

para tornar a transmisso dos dados na rede eficiente, conforme Comer (1998), os projetistas de IP selecionaram um tamanho mximo para este pacote, de modo que este sempre se encaixe em um quadro fsico, este tamanho varia da tecnologia usada na rede, por exemplo, a Ethernet limita o tamanho do pacote a 1.500 octetos de dados, a FDDI a 4.470 octetos, esse tamanho mximo chamado de MTU (Maximum Transfer Unit). Quando um pacote muito grande, no se encaixando no quadro para percorrer o meio fsico, ele ento dividido em unidades menores, esse processo chamado de fragmentao e geralmente ocorre em um roteador em algum ponto entre a origem e o destino. Cada um desses fragmentos possui o mesmo formato que o pacote original e todos so montados no destino final formando o pacote original. Uma nova verso do IP est em desenvolvimento, o IPv6, segundo Wikipedia (2006), essa nova verso tem como objetivo substituir a verso 4 que suporta apenas cerca de 4 bilhes de endereos, previstos para acabar em Janeiro de 2014, assim futuramente o IPv4 ser substitudo pelo IPv6. Cada endereo desta verso possui 128 bits, possuindo capacidade para suportar 3.4 x 10^38 endereos, novas funcionalidades tambm esto agregadas a essa nova verso, como encriptao, capacidade de extenso, suporte a qualidade diferenciadas, entre outras.

2.4.4. ICMP Internet Control Message Protocol


O ICMP (Internet Control Message Protocol), conforme Comer (1998), uma parte necessria do IP e deve ser includo em cada implementao IP para reportar os erros ou fornecer informaes sobre problemas inesperados como congestionamento, tempo de vida expirado, falha na linha de comunicao e nos processadores, mquinas desconectadas da rede entre outros. As mensagens ICMP trafegam pela rede na parte de dados do pacote IP e seu destino final no uma aplicao e sim o software IP implementado no outra ponta. O ICMP usado para reportar os erros ao transmissor original da mensagem e no pode ser usado para

34

informar os erros aos equipamentos de rede entre o transmissor e o receptor, pois cada pacote s contm os campos quem especificam origem e destino e como existem milhes de rotas possveis impossvel determinar qual o caminho percorrido pelo pacote para gerar um relatrio correto especificando o local do erro. Cada mensagem ICMP tem seu prprio formato, porm todas possuem alguns campos especficos como tipo de mensagem, o cdigo da mensagem, a soma de verificao e todas carregam com si os primeiros 64 bits de dados do pacote que causou o problema. Ao total so 13 tipos de mensagens ICMP que so especificadas por um nmero inteiro no campo TIPO, assim temos: 0 resposta de eco (Echo Reply) 3 destino no acessvel 4 dissipao da origem 5 redirecionamento (mudar a rota) 8 solicitao de Eco (Echo Request) 11 tempo excedido para um pacote 12 problema de parmetro num pacote 13 solicitao de indicao de hora 14 resposta de indicao de hora 15 solicitao de informao (obsoleto) 16 resposta de informao (obsoleto) 17 solicitao de mscara de endereo 18 resposta de mscara de endereo

Os tipos de mensagens ICMP mais usados so a resposta de eco, solicitao de eco e destino inacessvel. Quaisquer aparelhos como roteadores ou mquinas que recebem uma solicitao de eco respondem com uma resposta de eco, essas mensagens segundo Comer (1998) so ferramentas de depurao mais usadas e servem para testar se o receptor est acessvel e respondendo. Caso o transmissor receba a resposta fica provado que o sistema de transporte funciona em sua maior parte. O comando para enviar esse tipo de solicitao de eco o ping, esse comando pode mandar uma srie de solicitaes, ele tambm captura a resposta e fornece dados estatsticos sobre perda de pacotes, a partir dele tambm possvel especificar o tamanho dos dados enviados e o intervalo de tempo entre as solicitaes.

35

Quando o pacote no chega ao destino ou um roteador no consegue enviar uma solicitao de eco, uma mensagem de destinatrio inacessvel enviada de volta ao transmissor. Existem 12 tipos dessa mensagem que so identificadas por um campo chamado CDIGO, os 12 tipos so: 0 rede inacessvel 1 host inacessvel 2 protocolo inacessvel 3 porta inacessvel 4 fragmentao necessria e DF 5 rota de origem em falha 6 rede de destino desconhecida 7 host de destino desconhecido 8 host de origem isolado 9 comunicao com rede destinatria administrativamente proibida 10 comunicao com host destinatrio administrativamente proibida 11 rede inacessvel para tipo de servio 12 host inacessvel para tipo de servio

Assim sempre que um roteador no conseguir rotear ou entregar um pacote por causa de um erro, ao invs dele apenas descartar o pacote, o roteador envia uma mensagem de destino inacessvel de volta origem e s depois descarta esse pacote, como a mensagem possui um prefixo do pacote que causou o problema, o transmissor saber exatamente qual o endereo inacessvel.

2.5. Principais formas de ataque 2.5.1. Spoof


A tcnica de Spoofing bastante usada em ataques as redes, segundo a Wikipdia (2006), consiste em mascarar o campo de endereo do remetente com um endereo inexistente, impossibilitando que a origem do ataque seja encontrada, assim o atacante no sofrer com respostas e nem poder ser identificado.

36

As duas tcnicas de Spoofing mais utilizadas so o IP Spoofing e o MAC Spoofing, respectivamente, a primeira forma dessa tcnica consiste em alterar o endereo IP de origem no cabealho do pacote IP por um endereo inexistente, geralmente os endereos privados das classes IPs so usados. A segunda tcnica citada acima possui o mesmo conceito da primeira porm invs de mascarar o endereo IP o atacante mascara o endereo MAC de sua placa de rede no cabealho do quadro. O Endereo MAC o endereo fsico da mquina e est associado placa de rede. Cada placa de rede possui seu prprio endereo MAC, assim no existem 2 endereos MACs iguais em todo o mundo. Esses tipos de ataques so frequentemente usados em conjunto com outras tcnicas possibilitando um melhor desempenho para o atacante.

2.5.2. DOS (Denial of Service) e DDOS (Distributed Denial of Service)

Esse tipo de ataque pode trazer srios problemas a um servidor e consequentemente a rede, conforme Tanembaum (2003) o ataque funciona durante a estabilizao da conexo entre duas mquinas, melhor dizendo, este ocorre durante o Handshake triplo, como dito anteriormente, para estabelecer uma conexo as duas pontas envolvidas precisam trocar algumas informaes, estas distintas em 3 fases, o pedido de conexo, a concordncia da outra ponta com a conexo e finalmente a resposta da ponta que pediu a conexo dizendo que tambm concorda, durante esses trs passos as pontas ficam paradas esperando a resposta uma da outra para que a conexo seja estabelecida e ai que esta tcnica de ataque funciona. O cliente mal intencionado solicita uma conexo com o servidor, este responde e fica esperando a ltima mensagem de confirmao que omitida pelo solicitador, deixando assim o servidor em espera, ele fica em espera at que o timeout (tempo de vida da solicitao) estore, no caso de apenas uma solicitao o efeito no chega a ser problemtico, mas se pensarmos em diversas requisies desse tipo chegando no servidor ao mesmo tempo, o prejuzo pode ser grande, pois o servidor tentar atender a todas as requisies e os recursos da mquina sero usados para tentar abrir uma nova conexo que nunca ser estabelecida. Quando todos os recursos estiverem em uso a mquina comear a negar as outras solicitaes impossibilitando que novas conexes legitimas ou no sejam estabelecidas. Esse tipo de ataque chamado de DoS (Denial of Service negao de servio), uma outra variante deste tipo de ataque chamado de DDoS (Distributed Denial of Service) ainda pior que a primeira, j que o cliente mal intencionado utiliza centenas de mquinas

37

distribudas pelo mundo, por isso o Distributed, para atacar o mesmo alvo ao mesmo tempo. Esta tcnica alm de aumentar o poder de fogo do cliente mal intencionado reduz as chances de deteco do atacante. Por mais rpido que seja o processo de reconhecimento, processamento e descarte da falsa solicitao a mquina ainda usa de seu processamento e caso um nmero muito grande desses tipos de solicitaes cheguem por segundo, a mquina passar a usar todo seu tempo e processamento lidando com as falsas requisies, assim os servios podem funcionar mal ou at mesmo parar.

2.5.3. Pacotes fragmentados.


A priori esta tcnica que implementada pelo protocolo IP muito til em certas situaes, como citado anteriormente, um pacote IP pode ser muito grande para trafegar pela rede ento este dividido em uma srie de pacotes menores, sendo que cada um transporta um pedao da informao original que no podia ser trafegada por inteiro e quando chegam ao destino, esses pacotes so remontados em um nico pacote que seria idntico ao pacote originalmente criado pelo transmissor. Para fazer essa remontagem o IP cria um pacote IP temporrio com uma parte fragmentada, conforme a chegada dos outros pacotes com as informaes especificadas para a remontagem, o IP vai remontando o pacote at que este seja inteiramente remontado para poder ser processado, afim de evitar repeties de remontagens e refragmentao em redes intermediarias estes tipos de pacote s so remontados no host de destino, assim estes fragmentos tornam-se transparentes para firewalls e roteadores. Conforme Leon (2003), essa tcnica pode se tornar uma ameaa, por exemplo, um servidor possui dois servios rodando, entre eles um na porta 80, esta no filtrada pelo firewall e um na porta 23, esta filtrada pelo firewall. Inicialmente o cliente mal intencionado gera o pacote com a porta TCP de destino sendo a 80, como no possui nenhuma restrio este pacote chega at o host que da inicio ao processo de remontagem, assim um pacote temporrio com destino a porta 80 criado e a parte fragmentada comea a chegar aos poucos em vrios pacotes. Cada um desses pacotes possui um campo que especifica a sua respectiva posio no pacote original (inteiro), caso este cliente gere um outro pacote especificando sua posio como sendo a primeira, este chegar normalmente e sobre escrever a sua respectiva parte no pacote, no caso ele poderia gerar um pacote idntico ao que j existe, porm, ao invs de estar

38

especificando a porta 80 como antes, ele especifica a porta 23, ento quando o pacote chegar, ele sobe escrever o existente trocando a porta, assim quando o pacote tiver sido remontado por inteiro e for processado, esse pacote no ser mais encaminhado porta 80 e sim porta 23 que por ser filtrada no deveria receber pacote algum. Assim o firewall enganado e um possvel ataque aplicao que no deveria receber nada efetuado.

39

3. FIREWALLS

3.1. O que
Firewalls, em redes de computadores, so sistemas ou grupos de sistemas posicionados entre duas ou mais redes afim de bloquear trfegos no desejados, possveis ataques e qualquer outro tipo de ameaa ao qual a rede est exposta, a figura 14 exemplifica a localizao de um firewall.

Figura 14 Posio de um firewall Uma tima representao adotada por Tanenbaum (2003) facilita o entendimento, segundo ele um firewall uma adaptao moderna de uma forma de segurana muito antiga, seria esta, um profundo fosso em torno do castelo a ser protegido, dessa forma tudo o que entra e sai do castelo ser forado a passar por uma nica ponte de acesso, sendo essa levadia reforada por guardas, aumentando ainda mais a restrio para a entrada e a sada de qualquer coisa do castelo em questo. Seguindo essa representao pode-se representar o firewall como a ponte levadia, assim todos os dados que entram e saem da empresa obrigatoriamente passam pelo firewall onde so analisados e ento so liberados ou restringidos dependendo da poltica adotada pelo administrador da rede.

40

3.2. Porque utilizar um Firewall


Com o passar do tempo e avano da tecnologia o foco das aplicaes de rede mudaram, antigamente tnhamos aplicaes dedicadas e restritas servindo as organizaes, hoje as aplicaes de rede so abertas, ou seja, todos podem ter acesso. A necessidade de se ter uma aplicao que fornea dados em qualquer lugar que voc possa estar pode trazer srios riscos de segurana a organizao, sendo assim medidas para torn-la segura devem ser tomadas. A medida mais bsica e funcional que qualquer organizao deve tomar a implementao de um firewall, este restringir o acesso no autorizado sua rede e suas respectivas aplicaes, evitando a possvel entrada de dados rotulados como inseguros e indevidos, sejam esses dados resultados de programas, vrus, ataques, etc. assim como restringir a sada no autorizada de informaes particulares da organizao. A seguir sero apresentados os tipos de firewalls.

3.3. Tipos
Basicamente existem 3 tipos de firewall, so eles: Filtro de pacotes Segundo Lemos (2003), filtros de pacotes como o IP FIREWALL, Netfilter, IPF, PF, Check Point, trabalham em cima dos protocolo das camadas 2, 3 e 4 do modelo OSI, especificadamente sobre os cabealhos dos quadros, pacotes e segmentos. A partir das informaes encontradas nesses cabealhos possvel tomar atitudes perante esse pacote como, bloque-los, liber-los, encaminhlos, entre outras opes no comumente usadas. Cada um dos filtros de pacotes possuem suas prprias caractersticas internas para analisar e processar da melhor forma os pacotes que por ele passam, mas genericamente todos trabalham da mesma forma.

41

Basicamente um filtro de pacotes possui uma ou mais tabelas onde so inseridas todas as regras pelo administrador, quando um pacote chega ao firewall este o pega e analisa os campos dos cabealhos e vai comparando as informaes obtidas no cabealho com as regras na tabela, caso as informaes recolhidas do cabealho coincidam com alguma regra contida na tabela esta aplicada sobre o pacote. Hoje os filtros mais novos esto trabalhando com estados de conexes, alm dos dados encontrados no cabealho TCP/IP, chamados de Statefull, esse tipo de filtro grava em um tabela as informaes do estabelecimento da conexo e suas caractersticas, assim podem decidir da melhor forma como e se as informaes requisitadas por aquele pacote pode ou no ser enviadas em resposta, alm de tambm acompanhar a quem pertencem os fragmentos (no caso de pacotes fragmentados), o lado do filtro onde a conexo se iniciou, detectam tambm o fim das conexes, alm de tambm serem responsveis por fecharem conexes inativas depois de um tempo programado. O outro tipo de filtro de pacotes trabalha apenas com os dados encontrados no cabealhos dos quadros, pacotes e segmentos, este tipo de filtro chamado de Stateless, esse toma decises baseadas apenas nos campos dos cabealhos, por exemplo, porta de origem, porta de destino, endereo de origem, endereo de destino, tipo de pacote (TCP, UDP, ICMP, etc), entre outras informaes obtidas nos cabealhos. Para tomar as decises e por em prtica as aes devidas, qualquer um desses filtros de pacotes tem por base regras estabelecidas pelo administrador. NAT O NAT (Network Address Translation), nada mais que a troca do endereo da rede interna que privado por um endereo pblico, assim quando uma mquina interna faz uma requisio de algo que est na rede pblica, o seu pacote s roteado dentro da rede interna at chegar ao servidor de internet ou o roteador que faz o NAT, depois disso o servidor ou roteador pega o pacote e troca o IP de origem que privado pelo seu que pblico para que este pacote possa trafegar pela rede pblica sem problemas.

42

Quando o pacote chega ao seu destino ele tratado e ento uma resposta endereada ao IP do servidor ou roteador enviada, quando o pacote chega a um deles o processo contrrio feito, ou seja, o servidor ou roteador identificam a mquina interna que fez o pedido e troca o IP de destino que no momento um IP pblico para o IP da mquina que privado. Assim o pacote pode ser roteado na rede interna at chegar ao seu destino correto, dando a possibilidade das mquinas internas estarem se comunicando com a rede pblica sem serem identificadas e expostas. Proxy Proxy um servio que filtra todas as requisies de um determinado protocolo ou cliente da rede interna. ele trabalha com aplicaes das camadas 5, 6 e 7, sendo assim, ele quem recebe as solicitaes e as trata, caso ele no possua a informao em seu cache, ele as busca na rede pblica e depois fornece para a rede interna. Por exemplo, um WEB Proxy, este fica escutando a rede interna, quando uma solicitao de uma pgina WEB feita por uma mquina da rede interna, o proxy ento verifica se j a possui em seu cache, caso a contenha, ele responde a mquina interna com a pgina em questo que est em seu cache, no caso de no t-la, o proxy faz ento uma solicitao e a envia para a rede pblica. Quando esta solicitao respondida o proxy recebe a pgina e a guarda em seu cach. depois disso ele a entrega a mquina da rede interna. No caso de outra mquina fazer a mesma requisio, a pgina solicitada j estar em seu cache, no sendo necessrio fazer uma solicitao ao servidor que contm a pgina na rede pblica, assim o proxy apenas pega a pgina de seu cache e a envia para a mquina da rede interna. Esse processo diminui o trfego e intensifica a velocidade pois as pginas solicitadas j estaro na rede interna, alm de trazer mais segurana, pois suas mquinas no tero acesso direto a rede pblica.

43

3.4. Limitaes
Um firewall, sendo de qualquer tipo, trababalha apenas com os cabealhos dos pacotes, segmentos, quadros e mensagens, ou seja, ele no consegue tratar os dados que esto dentro dos pacotes, assim informaes inseguras, como vrus, Worms, Trojans, Spams, overflows, entre outros no podem ser barrados, assim outras atitudes devem ser tomadas afim de aumentar a segurana. O melhor exemplo para um sistema de segurana uma cebola, ela possui vrias camadas, ou seja para atingir o centro o atacante tem que passar por vrias camadas, sendo que cada uma trabalha de forma diferente, com propsitos diferentes, com dados diferentes, mas sempre uma auxiliando a outra. O firewall, a primeira camada de qualquer sistema de segurana, ele bloquear apenas portas, endereos, requisies e conexes, assim um atacante pode inserir dentro de um pacote que ele sabe que passar pelo firewall um contedo extremamente perigoso, por isso, o administrador deve implementar as outras camadas de segurana, como um IDS (Intrusion Detection System), anti-vrus, entre milhares de outros sistemas de segurana disponveis, para que diminua as chances de ataques serem bem sucedidos.

3.5. Netfilter/Iptables

O Netfilter, segundo as especificaes encontradas em seu site, um FrameWork encontrado dentro do kernel do linux 2.4.x e do 2.6.x que permite a filtragem de pacotes, entre vrias outras funcionalidades. O Netfilter nada mais que um conjunto de ganchos dentro do kernel que da a este a permisso para mdulos processarem cada pacote dentro da pilha de rede. Para manipular e adicionar regras sobre o filtro de pacotes Netfilter uma ferramenta chamada Iptables, que tambm parte integrante do FrameWork encontrado dentro do kernel usada. O Iptables/Netfilter o sucessor do Ipchains que vem integrado ao kernel 2.2.x do linux que por sua vez sucessor do Ipfwadm que vem integrado ao kernel 2.0.x do linux, estes so bem mais complexos que o Iptables/Netfilter que ao longo do tempo veio sendo aprimorado em cima de seus antecessores para se tornar o que hoje, um filtro de pacotes statefull, bem mais

44

simples que seus antecessores, estvel e com timo desempenho perante seus concorrentes. O funcionamento do Netfilter/Iptables simples e consiste basicamente em 3 tabelas, segundo Mota Filho (2001), quando um pacote chega ao kernel do linux estes so analisados e decidido ento qual chain ir tratar do pacote, este processo chamado de roteamento interno, a chain escolhida para tratar o pacote depender da tabela que est sendo usada no momento, no caso do Netfilter/Iptables existem 3 tabelas possveis, so elas: Filter tabela padro, e trata do trfego normal sem NAT, esta tabela possui 3 chains, INPUT, OUTPUT e FORWARD, seu fluxo pode ser melhor entendido e explicado pela figura 15.

Figura 15 Tabelas padro do Netfilter/Iptables Fonte: http://www.eriberto.pro.br/iptables/3.html

Na figura 14, podemos observar o processo para o tratamento dos pacotes, quando um pacote chega ao kernel, este analisado e ento decidido

45

qual chain tratar o pacote, caso este pacote seja endereado a mquina em questo o pacote passar pela chain INPUT se for aceito conforme as regras nela especificadas o pacote com as informaes so processadas e passadas para a chain OUTPUT que tambm analisar o pacote de acordo com suas restries, caso este tambm seja aceito o pacote ento enviado ao seu destino. Caso o pacote no seja destinado a essa mquina o roteamento interno decide envi-lo para a chain FORWARD que analisar o pacote, se for aceito este ento encaminhado a sada para ser enviado ao seu destino, no caso de algum pacote ser barrado por alguma dessas chains este ento descartado. Nat esta tabela utilizada quando h necessidade de ser fazer um NAT, possui as chains PREROUTING, POSTROUTING e OUTPUT. Mangle esta tabela trabalha basicamente com marcao de pacotes e QoS (Quality of Service). A criao das regras para manipular os pacotes segue o seguinte escopo: iptables [-t tabela] [opo] [chain] [dados] -j [ao] -t tabela aqui a tabela especificada, elas podem ser filter, nat ou mangle caso nenhuma seja especificada a tabela filter que a padro ser a tabela selecionada. opo opes para adicionar, apagar, listar as regras, entre outras. chain especifica a chain da tabela que ser usada. dados aqui so especificados os dados que devem ser correspondentes aos dados do pacote para que uma ao possa ser tomada, exemplos desses dados so o endereo de origem e destino, portas de origem e destino, estados da conexo, flags TCP, protocolos, entre outras. ao este campo especifica o que deve ser feito com o pacote caso ele case com a regra, no caso aceitar, descartar, rejeitar ou logar os pacotes.

46

A possibilidade de criao de regras usando o Iptables infinita e depende das necessidades da rede, cabendo ao administrador da rede defini-las e aplic-las corretamente.

3.6. IP FIREWALL (IPFW)

O IP FIREWALL assim como o Netfilter, um sistema de filtragem de pacotes, porm o filtro padro do FreeBSD, seu funcionamento bem diferente e muito mais simples que do Netfilter. Conforme as pginas de seu manual, ipfw(8) (2006), este usa uma ferramenta chamada ipfw para criar e manipular suas regras. Atravs dessa ferramenta possvel criar regras numeradas de 1 a 65535 que sero usadas quando um pacote chega ao filtro de pacotes que se encontra dentro do kernel, este o pega e o compara com as regras impostas pelo ipfw. A comparao das regras com os pacotes feito de acordo com a numerao das regras, caso alguma case com a regra esta executada e a ao devida dizendo o que deve ser feito com o pacote tomada e a execuo das comparaes para aquele pacote finalizada. Esse processo representado na figura 16.

Figura 16 Funcionamento do IPFW

47

Uma regra especificando um desvio para outra regra tambm possvel, assim o pacote sofre novamente o processo de comparao mas a partir da regra para a qual ele foi desviado. O ipfw atualmente tambm um filtro de pacotes statefull. O escopo do ipfw para criao e manipulao das regras o seguinte: ipfw [opo] [nmero da regra] [ao] [dados] opo opes para adicionar, apagar, listar as regras, entre outras. Nmero da regra nmero de 1 a 65535 que especifica sua posio perante as outras regras, esse nmero dita a ordem na hora de comparar os pacotes com as regras. ao este campo especifica o que deve ser feito com o pacote caso ele case com a regra, no caso aceitar, descartar, rejeitar, logar os pacotes, desviar o fluxo de comparao, entre outros.. dados aqui so especificados os dados que devem ser correspondentes aos dados do pacote para que uma ao possa ser tomada, exemplos desses dados so o endereo de origem e destino, portas de origem e destino, estados da conexo, flags TCP, protocolos, entre outras. Como mencionado no captulo anterior, as regras a serem criadas e manipuladas pelo ipfw depende da necessidade da rede, cabendo ao administrador da rede decidir qual ser a melhor forma de se fazer essa tarefa.

3.7. IPFW x IPTABLES


A principal diferena entre esses filtros de pacotes est relacionada s suas regras, suas sintaxes so bem diferentes, alm de algumas particularidades de cada um. Para mostrar a diferena sero usadas as regras abaixo:

Ipfw: ipfw add 10 allow log all from any to any via fxp0

48

Iptables: iptables -A INPUT -p ALL -i eth0 -s 0/0 -d 0/0 -j LOG --log-level=6 iptables -A INPUT -p ALL -i eth0 -s 0/0 -d 0/0 -j ACCEPT iptables -A FORWARD -p ALL -i eth0 -s 0/0 -d 0/0 -j LOG --loglevel=6 iptables -A FORWARD -p ALL -i eth0 -s 0/0 -d 0/0 -j ACCEPT iptables -A OUTPUT -p ALL -o eth0 -s 0/0 -d 0/0 -j LOG --log-level=6 iptables -A OUTPUT -p ALL -o eth0 -s 0/0 -d 0/0 -j ACCEPT

A primeira regra a regra do ipfw para liberar e logar (armazenar em disco mensagens sobre pacotes correspondentes a regra em questo) os pacotes de todos os protocolos com qualquer origem e destino passando pela interface de rede eth0 (linux) ou fxp0 (FreeBSD) da mquina. Como visto a primeira regra a regra do ipfw para tal tarefa, sendo as abaixo as regras equivalentes para o iptables. Alm do nmero de regras que se diferencia para atingir o mesmo objetivo pode-se observar que a regra do ipfw de fcil entendimento, sua sintaxe aparenta uma ordem em ingls. J a sintaxe do iptables bem mais complicada, requerendo um conhecimento tcnico bem maior por parte do administrador da rede que adicionar e manipular as regras no filtro. Outro ponto observado a diferena para logar (armazenar em disco mensagens sobre pacotes correspondentes a regra em questo) os pacotes. No ipfw basta especificar na mesma regra que voc deseja logar os pacotes que casarem com a regra enquanto no iptables necessrio uma regra em especfico. O ipfw usa por padro o syslog (servio do sistema para gerao e armazenamento de logs), enquanto no iptables necessrio especificar o modo como os logs sero gerados e guardados. As mensagens de log dos dois sistemas muito diferente, os logs do ipfw so bem mais fceis de serem entendidos do que os do iptables que requerem um alto nvel de conhecimento como mostrado abaixo. Log do ipfw:

49

Aug 28 14:18:24 teste kernel: ipfw: 20 Accept TCP 192.168.0.1:1027 192.168.0.2:80 in via fxp0 Log do iptables: Aug 25 09:33:20 teste kernel: IN=eth0 OUT= MAC=00:11:11:24:2d:c1:00:14:2a:02:25:41:08:00 SRC=192.168.0.1 DST=192.168.0.2 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=1027 DPT=22 WINDOW=0 RES=0x00 RST URGP=0 No ipfw existe a possibilidade de definir o nmero mensagens iguais que devem ser logadas, caso este nmero seja atingido o ipfw automaticamente comea a contar nmero de repeties e ento adiciona ao log a mensagem, no caso de 45 vezes, tem-se a seguinte mensagem: Aug 28 14:18:24 teste last message repeated 45 times

Como os dois filtros se encontram dentro do kernel necessrio ativ-los no mesmo. No processo de ativao do ipfw possvel definir alguns parmetros, por exemplo, quando o ipfw ativado uma regra padro estipulada esta regra diz se o filtro ir bloquear ou permitir todo o trfego, esta ao uma das quais podem ser definidas dentro do kernel do FreeBSD, outra opo definir o nmero de mensagens iguais que o firewall ir registrar nos logs, entre outras. No iptables isso no existe, no caso da ativao de algum mdulo que o filtro suporte, o suporte ser abilitado e nenhuma atitude perante regras tomada. Por padro, depois da ativao o iptables vem aberto, ou seja, permitindo qualquer tipo de trfego. Outra das facilidades do ipfw em relao ao iptables que ele vem com alguns conjunto de regras pr-estabelecido no sistema operacional, na hora da inicializao do sistema operacional, o administrador pode escolher o tipo de filtro pr-estabelecido, que so: OPEN aberto. CLOSED fechado.

50

SIMPLE - define algumas regras para bloquear tipos de ataque spoof, libera o trafego proveniente da rede interna, pedidos de conexo, pacotes fragmentados, entre outras funcionalidades. CLIENT libera apenas o trafego proveniente da rede interna. UNKNOWN no adota nenhuma regra por padro apenas da ao administrador a possibilidade de criar um filtro a partir do zero, para isso um arquivo deve ser setado contendo as regras desejadas.

No caso do iptables, nenhum filtro pr-estabelecido existe, obrigando o administrador criar um script para a gerao das regras desejadas e o execut-lo na inicializao do sistema operacional. Apesar das diferenas e facilidades entre os filtros, a escolha por qual deve ser usado depende das necessidades por funcionalidades especficas de cada, pela anlise de qual atender de melhor forma todas as necessidade da rede e na maior parte das vezes do gosto e preferncia do administrador da rede. A seguir ser apresentado um estudo de caso, onde um pequeno laboratrio criado para comparar os dois filtros de pacotes j citados em produo.

51

4. Estudo de caso

O objetivo desse trabalho o de comparar 2 filtro de pacotes (NetFilter e o IP FIREWALL) quando submetidos a trabalhar intensamente durante um espao de tempo suficiente para obter algum resultado. O filtro de pacote testado analisar todos os pacotes gerados e atravs das regras nele especificadas e decises como descartar, aceitar e gravar em disco os pacotes que por ele passaro, sero tomadas, para isto sero usadas 2 mquinas, uma para gerar grficos estatsticos, gerar e mandar pacotes at a outra que estar rodando o filtro de pacotes e servindo suas estatsticas de desempenho. As maquinas sero ligadas diretamente uma a outra atravs de um cabo crossover de par tranado categoria 5e e sero endereadas pelo protocolo IP, assim a mquina responsvel por criar os pacotes ter o endereo 192.168.0.1 com uma mscara de rede 255.255.255.252 e a mquina com o firewall receber o endereo 192.168.0.2 com uma mscara 255.255.255.252, como mostra a figura 17. A mquina responsvel por gerar os pacotes ser um AMD Athlon(tm) XP 2200+ 1.8GHz com 256MB de memria RAM, rodando o sistema operacional Linux Slackware 10.2 com o kernel 2.6.17.8.

Figura 17 Laboratrio de testes Para gerar os pacotes um programa ser usado, este programa chama-se packit, atravs desse programa segmentos TCP, ICMP e UDP sero gerados e encapsulados em pacotes IP, estes por sua vez encapsulados em quadros Ethernet e sero ento enviados at a

52

outra mquina simulando um trfego de rede real, estes pacotes sero todos gerados atravs de processos paralelos do packit para que os pacotes injetados na rede sejam intercalados e com uma alta intensidade, para iniciar todos os processos de uma vez ser necessrio usar um shell script, esse script ser inteiramente explicado atravs de comentrios em seu cdigo e apresentado logo abaixo.

#!/bin/bash

#Aqui so definidas as variveis usadas no shell script. PACK=/usr/local/sbin/packit PACK_INJECT_LOG_TCP="/tmp/packit_tcp" PACK_INJECT_LOG_TCP_SYN="/tmp/packit_tcp_syn" PACK_INJECT_LOG_TCP_ACK="/tmp/packit_tcp_ack" PACK_INJECT_LOG_TCP_SYNACK="/tmp/packit_tcp_synack" PACK_INJECT_LOG_UDP="/tmp/packit_udp" PACK_INJECT_LOG_ICMP_ECHO_REPLY="/tmp/packit_icmp_echo_reply" PACK_INJECT_LOG_ICMP_ECHO_REQUEST="/tmp/packit_icmp_echo_reqest" PACK_INJECT_LOG_ICMP_ECHO_UNREACHABLE="/tmp/packit_icmp_unreachable" #Aqui removemos possveis arquivos em disco contendo os pacotes gerados. rm -rf /tmp/packit* #Aqui criamos os arquivos em disco onde as informaes sobre os pacotes gerados sero #gravadas. touch $PACK_INJECT_LOG_TCP touch $PACK_INJECT_LOG_TCP_SYN touch $PACK_INJECT_LOG_TCP_ACK

53

touch $PACK_INJECT_LOG_TCP_SYNACK touch $PACK_INJECT_LOG_UDP touch $PACK_INJECT_LOG_ICMP_ECHO_REPLY touch $PACK_INJECT_LOG_ICMP_ECHO_REQUEST touch $PACK_INJECT_LOG_ICMP_ECHO_UNREACHABLE

#D-se permisso de leitura e escrita para o proprietrio do arquivo, para o grupo do #proprietrio e tambm para qualquer outro usurio do sistema. chmod 666 /tmp/packit*

echo "===> Injecting Packets..." echo "" echo -n "==> TCP..." for i in 20 21 22 23 25 53 80 110 139 443 445 447 1024 37666 45890 56134 65008 65512; do #Um Loop feito, e o comando abaixo que gerar 100.000 pacotes definido pelo parmetro #c, sendo eles mandados a todo o momento onde a cada momento sero injetados na rede 150 #pacotes definidos ento respectivamente pelos parmetros w que define o tempo de espera #em segundos entre o envio dos pacotes e b que define o nmero de pacotes injetados a cada #intervalo especificado pelo -w, com origem e destino estabelecidos pelos parmetros s e d, #sendo a porta de origem definida por S e a porta de destino definida pelo parmetro D #sendo elas especificadas no loop pela varivel i. $PACK -m injection -t TCP -c 100000 -w 0 -b 150 -v -s 192.168.0.1 -d 192.168.0.2 -S 1025 -D $i -f >> $PACK_INJECT_LOG_TCP & done echo " [OK]"

54

echo -n "==> TCP (SYN Flood)..." for i in 22 25 80 110 500 1439 139 10000 6512; do #Aqui temos o mesmo raciocnio e implementao para criar os processos como criados no #loop acima, porm aqui definimos que este pacote TCP ter a flag SYN estabelecida atravs #do parmetro F S, e estes no sero fragmentados, isto definido pelo parmetro f. $PACK -m injection -t TCP -c 100000 -w 0 -b 150 -v -s 192.168.0.1 -d 192.168.0.2 -S 1027 -D $i -f -F S >> $PACK_INJECT_LOG_TCP_SYN & done echo " [OK]"

echo -n "==> TCP (ACK)..." for i in 22 25 80 110 728 26346 982 1552; do #Como o anterior mudando apenas a flag SYN por uma flag ACK do pacote TCP. $PACK -m injection -t TCP -c 100000 -w 0 -b 150 -v -s 192.168.0.1 -d 192.168.0.2 -S 3029 -D $i -f -F A >> $PACK_INJECT_LOG_TCP_ACK & done echo " [OK]"

echo -n "==> TCP (SYN+ACK)..." for i in 22 25 80 110 1788 9103 65222 866 7287; do #Novamente a mesma idia, porm teremos agora as duas flags marcadas tanto a SYN quanto #a ACK. $PACK -m injection -t TCP -c 100000 -w 0 -b 150 -v -s 192.168.0.1 -d 192.168.0.2 -S 3030 -D $i -f -F SA >> $PACK_INJECT_LOG_TCP_SYNACK &

55

done echo " [OK]"

echo "" echo -n "==> UDP..." for i in 53 80 115 1028 982 6487 10837 27333 8272 65000; do #Segue o mesmo raciocnio da criao dos pacotes TCP, mas agora sero criados pacotes #UDP. $PACK -m injection -t UDP -c 100000 -w 0 -b 150 -v -s 192.168.0.1 -d 192.168.0.2 -S 2010 -D $i >> $PACK_INJECT_LOG_UDP & done echo " [OK]"

echo "" echo -n "==> ICMP (Echo Request)..." #Aqui criaremos pacotes ICMP de pedido de Eco, o tipo do pacote ICMP definido atravs #do parmetro k, sempre seguindo as mesmas especificaes para a injeo dos pacotes na #rede como no caso dos pacotes TCP e UDP. $PACK -m injection -t ICMP -c 100000 -w 0 -b 150 -v -s 192.168.0.1 -d 192.168.0.2 -k 8 >> $PACK_INJECT_LOG_ICMP_ECHO_REQUEST & echo " [OK]"

echo -n "==> ICMP (Echo Reply)..." #Tambm o mesmo processo do anterior, porm estes pacotes sero pacotes ICMP de #resposta de Eco.

56

$PACK -m injection -t ICMP -c 100000 -w 0 -b 150 -v -s 192.168.0.1 -d 192.168.0.2 -k 0 >> $PACK_INJECT_LOG_ICMP_ECHO_REPLY & echo " [OK]"

echo -n "==> ICMP (Unreachable)..." #Aqui temos pacotes ICMP que dizem que um host est inacessvel, os parmetros j e J #definem respectivamente o host original de origem e a porta original origem do pacote #ICMP, assim como os parmetros l e L que definem respectivamente o host original de #destino e a porta original de destino do pacote, assim teremos ento a simulao de #intermedirios na rede, ou seja, o host 192.168.0.1 passando a informao para o host #192.168.0.2, sendo esta informao vinda do host 192.168.0.3 com destino ao host #192.168.0.4. $PACK -m injection -t ICMP -c 100000 -w 0 -b 150 -v -s 192.168.0.1 -d 192.168.0.2 -k 3 -j 192.168.0.3 -J 80 -l 192.168.0.4 -L 2110 >> $PACK_INJECT_LOG_ICMP_ECHO_UNREACHABLE & echo " [OK]"

echo "" echo "===> Packets Injected..."

Atravs desse shell script ser obtido 57 processos paralelos, injetando na rede 100.000 pacotes cada, ento tem-se um total de 5.700.000 pacotes injetados na rede no fim de todos estes processos. Dentre estes 57 processos tem-se 44 processos criando e injetando pacotes TCP, onde 18 desses 44 processos criaro e injetaro pacotes TCP normais, 9 processos criando e injetando pacotes TCP com a flag SYN marcada, 8 com a flag ACK marcada e os ltimos 9 processos criando e injetando pacotes TCP com as flags SYN e ACK marcadas.

57

Tirando os 44 processos destinados a pacotes TCP ainda sobram 13 processos, sendo estes, 10 destinados criao e injeo de pacotes UDP e os outros 3 restantes para pacotes ICMP, dentre esses 3 teremos 1 para criao e injeo de pacotes ICMP de pedido de eco, 1 para resposta de eco e 1 para hosts inacessveis. Alm desse programa para criao e injeo dos pacotes na rede, foi usado um outro programa para capturar as estatsticas da mquina rodando o filtro a ser testado e gerar a partir dessas estticas grficos que demonstram a utilizao de recursos da mquina. Este programa chama-se cacti, ele buscar as informaes publicadas pelo protocolo SNMP rodando na outra mquina, gravar em seu banco de dados, no caso o MySQL 5.0.24a, e gerar um grfico com um programa especfico, chamado RrdTool. Os grficos gerados informaro sobre o trfego de rede, grfico de consumo de processamento e consumo de memria. Como os dois filtros de pacotes rodaro na mesma mquina onde as mesmas condies fsicas sero oferecidas, a comparao entre os filtros ser possvel. A outra mquina em questo ser usada para rodar os firewalls e um servio para colher e publicar as estatsticas de desempenho e uso dos recursos da mquina para processar e filtrar todos os pacotes destinados a esta, para isso um servio SNMP, mais precisamente o Net-SNMP ser usado. A mquina responsvel por rodar os firewalls ser um Intel(R) Celeron(R) CPU 2.4GHz com 256Mb de memria RAM, usando uma placa de rede Ethernet Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+. A seguir sero apresentados os testes e suas polticas.

4.1. Testes Realizados

O objetivo dos testes sobre os filtros bem simples, descobrir qual deles possui um melhor desempenho, para isso foi escolhido fazer os testes sobre os filtros sem alguma otimizao tanto sobre o filtro quanto do sistema operacional que so diferentes, o sistema teve uma instalao bsica, ou seja, apenas o necessrio foi instalado e configurado, assim como seu kernel. As diferenas entre os sistemas operacionais so vrias, entre elas, o gerenciamento de memria, sistema de arquivos, I/O, processamento, etc. essas diferenas influenciaram no

58

resultado dos testes, pois os filtros so dependentes da tecnologia usada no sistema operacional para processar os pacotes e tomar decises. Apesar das diferenas dos sistemas operacionais que no so o foco desse trabalho so evidentes, os filtros tambm so diferentes e foram desenvolvidos em cima dessas tecnologias visando sempre obter os melhores resultados possveis, assim possvel avaliar os filtros e suas necessidades por recursos independentes do sistema operacional. Os filtros usados nos testes foram filtros simples, de fcil implementao e procurando sempre estar de acordo com as necessidades comuns do dia a dia. Todo o esquema para o sucesso do teste foi especificado anteriormente, faltando ressaltar aqui apenas os filtros usados em cada um dos testes. Os filtros utilizados nesse teste possuem as mesmas caractersticas apesar das suas particularidades diferentes, tanto o ipfw quanto o iptables foram configurados para cumprir tarefas idnticas. Dois testes foram aplicados em cada um deles, sendo que no primeiro, os filtros foram configurados para logar todos os pacotes que corresponderem a alguma regra, j no segundo testem os logs foram extintos, sendo assim teremos os seguintes scripts com comentrios quem explicam suas funes para criao dos filtros de pacotes: ipfw com log: #Limpa todas as regras /sbin/ipfw -f flush #libera todo o trfego na interface de loopback /sbin/ipfw add 10 allow log all from any to any via lo0 #libera todo o trfego proveniente de uma conexo j estabelecida /sbin/ipfw add 20 allow log all from any to any established #bloqueia a entrada de pacotes fragmentados /sbin/ipfw add 30 deny log all from any to any in frag #bloqueia spoof /sbin/ipfw add 40 deny log all from 10.0.0.0/8 to any via fxp0 /sbin/ipfw add 50 deny log all from 172.16.0.0/12 to any via fxp0

59

/sbin/ipfw add 70 deny log all from 224.0.0.0/4 to any via fxp0 /sbin/ipfw add 80 deny log all from 240.0.0.0/5 to any via fxp0 #libera pedidos de conexo nas portas 21, 22, 25, 80 e 110 /sbin/ipfw add 100 allow log tcp from any to me 21 in setup /sbin/ipfw add 110 allow log tcp from any to me 22 in setup /sbin/ipfw add 120 allow log tcp from any to me 25 in setup /sbin/ipfw add 130 allow log tcp from any to me 80 in setup /sbin/ipfw add 140 allow log tcp from any to me 110 in setup #libera trafego referente as estatsticas de desempenho (NetSNMP) /sbin/ipfw add 141 allow log udp from any to me 161 /sbin/ipfw add 142 allow log udp from me 161 to any #libera entrada de trfego referente ao DNS /sbin/ipfw add 150 allow log udp from any to me 53 in #bloqueia pedidos de conexo /sbin/ipfw add 160 deny log tcp from any to me tcpflags syn #libera a sada de pedidos de Eco /sbin/ipfw add 170 allow log icmp from me to any out icmptypes 8 #libera a entrada de resposta de Eco /sbin/ipfw add 180 allow log icmp from any to me in icmptypes 0 #bloqueia trfego icmp de pedidos de Eco /sbin/ipfw add 190 deny log icmp from any to any in icmptypes 8 #libera trfego icmp referente a hosts inacessveis /sbin/ipfw add 200 allow log icmp from any to any icmptypes 3

60

ipfw sem log: #Limpa todas as regras /sbin/ipfw -f flush #libera todo o trfego na interface de loopback /sbin/ipfw add 10 allow all from any to any via lo0 #libera todo o trfego proveniente de uma conexo j estabelecida /sbin/ipfw add 20 allow all from any to any established #bloqueia a entrada de pacotes fragmentados /sbin/ipfw add 30 deny all from any to any in frag #bloqueia spoof /sbin/ipfw add 40 deny all from 10.0.0.0/8 to any via fxp0 /sbin/ipfw add 50 deny all from 172.16.0.0/12 to any via fxp0 /sbin/ipfw add 70 deny all from 224.0.0.0/4 to any via fxp0 /sbin/ipfw add 80 deny all from 240.0.0.0/5 to any via fxp0 #libera pedidos de conexo nas portas 21, 22, 25, 80 e 110 /sbin/ipfw add 100 allow tcp from any to me 21 in setup /sbin/ipfw add 110 allow tcp from any to me 22 in setup /sbin/ipfw add 120 allow tcp from any to me 25 in setup /sbin/ipfw add 130 allow tcp from any to me 80 in setup /sbin/ipfw add 140 allow tcp from any to me 110 in setup #libera trafego referente as estatsticas de desempenho (NetSNMP) /sbin/ipfw add 141 allow udp from any to me 161 /sbin/ipfw add 142 allow udp from me 161 to any #libera entrada de trfego referente ao DNS /sbin/ipfw add 150 allow udp from any to me 53 in

61

#bloqueia pedidos de conexo /sbin/ipfw add 160 deny tcp from any to me tcpflags syn #libera a sada de pedidos de Eco /sbin/ipfw add 170 allow icmp from me to any out icmptypes 8 #libera a entrada de resposta de Eco /sbin/ipfw add 180 allow icmp from any to me in icmptypes 0 #bloqueia trfego icmp de pedidos de Eco /sbin/ipfw add 190 deny icmp from any to any in icmptypes 8 #libera trfego icmp referente a hosts inacessveis /sbin/ipfw add 200 allow icmp from any to any icmptypes 3

Iptables com log: #!/bin/bash IPTABLES=/usr/sbin/iptables IF=eth0 #Limpa todas as regras iptables -F iptables -Z iptables -X #Define uma poltica fechada iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP

62

#libera todo o trfego na interface de loopback $IPTABLES -A INPUT -p ALL -i lo -s 0/0 -d 0/0 -j LOG --log-level=6 --log-prefix="LOOPBACK " $IPTABLES -A INPUT -p ALL -i lo -s 0/0 -d 0/0 -j ACCEPT $IPTABLES -A FORWARD -p ALL -i lo -s 0/0 -d 0/0 -j LOG --loglevel=6 --log-prefix="LOOPBACK " $IPTABLES -A FORWARD -p ALL -i lo -s 0/0 -d 0/0 -j ACCEPT $IPTABLES -A OUTPUT -p ALL -o lo -s 0/0 -d 0/0 -j LOG --loglevel=6 --log-prefix="LOOPBACK " $IPTABLES -A OUTPUT -p ALL -o lo -s 0/0 -d 0/0 -j ACCEPT

#libera todo o trfego proveniente de uma conexo j estabelecida $IPTABLES -A INPUT -p ALL -m state --state ESTABLISHED -s 0/0 -d 0/0 -j LOG --log-level=6 --log-prefix="ATIVAS " $IPTABLES -A INPUT -p ALL -m state --state ESTABLISHED -s 0/0 -d 0/0 -j ACCEPT $IPTABLES -A FORWARD -p ALL -m state --state ESTABLISHED s 0/0 -d 0/0 -j LOG --log-level=6 --log-prefix="ATIVAS " $IPTABLES -A FORWARD -p ALL -m state --state ESTABLISHED s 0/0 -d 0/0 -j ACCEPT $IPTABLES -A OUTPUT -p ALL -m state --state ESTABLISHED -s 0/0 -d 0/0 -j LOG --log-level=6 --log-prefix="ATIVAS " $IPTABLES -A OUTPUT -p ALL -m state --state ESTABLISHED -s 0/0 -d 0/0 -j ACCEPT #bloqueia a entrada de pacotes fragmentados $IPTABLES -A INPUT -p ALL -s 0/0 -d 0/0 -f -j LOG --log-level=6 -log-prefix="FRAG " $IPTABLES -A INPUT -p ALL -s 0/0 -d 0/0 -f -j DROP #bloqueia spoof

63

$IPTABLES -A INPUT -i $IF -p ALL -s 10.0.0.0/8 -d 0/0 -j LOG -log-level=6 --log-prefix="SPOOF " $IPTABLES -A INPUT -i $IF -p ALL -s 10.0.0.0/8 -d 0/0 -j DROP $IPTABLES -A FORWARD -i $IF -p ALL -s 10.0.0.0/8 -d 0/0 -j LOG --log-level=6 --log-prefix="SPOOF " $IPTABLES -A FORWARD -i $IF -p ALL -s 10.0.0.0/8 -d 0/0 -j DROP $IPTABLES -A OUTPUT -p ALL -s 10.0.0.0/8 -d 0/0 -j LOG --loglevel=6 --log-prefix="SPOOF " $IPTABLES -A OUTPUT -p ALL -s 10.0.0.0/8 -d 0/0 -j DROP

$IPTABLES -A INPUT -i $IF -p ALL -s 172.16.0.0/12 -d 0/0 -j LOG -log-level=6 --log-prefix="SPOOF " $IPTABLES -A INPUT -i $IF -p ALL -s 172.16.0.0/12 -d 0/0 -j DROP $IPTABLES -A FORWARD -i $IF -p ALL -s 172.16.0.0/12 -d 0/0 -j LOG --log-level=6 --log-prefix="SPOOF " $IPTABLES -A FORWARD -i $IF -p ALL -s 172.16.0.0/12 -d 0/0 -j DROP $IPTABLES -A OUTPUT -p ALL -s 172.16.0.0/12 -d 0/0 -j LOG -log-level=6 --log-prefix="SPOOF " $IPTABLES -A OUTPUT -p ALL -s 172.16.0.0/12 -d 0/0 -j DROP $IPTABLES -A INPUT -i $IF -p ALL -s 224.0.0.0/4 -d 0/0 -j LOG -log-level=6 --log-prefix="SPOOF " $IPTABLES -A INPUT -i $IF -p ALL -s 224.0.0.0/4 -d 0/0 -j DROP $IPTABLES -A FORWARD -i $IF -p ALL -s 224.0.0.0/4 -d 0/0 -j LOG --log-level=6 --log-prefix="SPOOF " $IPTABLES -A FORWARD -i $IF -p ALL -s 224.0.0.0/4 -d 0/0 -j DROP $IPTABLES -A OUTPUT -p ALL -s 224.0.0.0/4 -d 0/0 -j LOG --loglevel=6 --log-prefix="SPOOF " $IPTABLES -A OUTPUT -p ALL -s 224.0.0.0/4 -d 0/0 -j DROP

64

$IPTABLES -A INPUT -i $IF -p ALL -s 240.0.0.0/5 -d 0/0 -j LOG -log-level=6 --log-prefix="SPOOF " $IPTABLES -A INPUT -i $IF -p ALL -s 240.0.0.0/5 -d 0/0 -j DROP $IPTABLES -A FORWARD -i $IF -p ALL -s 240.0.0.0/5 -d 0/0 -j LOG --log-level=6 --log-prefix="SPOOF " $IPTABLES -A FORWARD -i $IF -p ALL -s 240.0.0.0/5 -d 0/0 -j DROP $IPTABLES -A OUTPUT -p ALL -s 240.0.0.0/5 -d 0/0 -j LOG --loglevel=6 --log-prefix="SPOOF " $IPTABLES -A OUTPUT -p ALL -s 240.0.0.0/5 -d 0/0 -j DROP

#libera pedidos de conexo nas portas 21, 22, 25, 80 e 110 $IPTABLES -A INPUT -p TCP --dport 21 -s 0/0 -d 192.168.0.2 -m state --state NEW -j LOG --log-level=6 --log-prefix="FTP " $IPTABLES -A INPUT -p TCP --dport 21 -s 0/0 -d 192.168.0.2 -m state --state NEW -j ACCEPT $IPTABLES -A INPUT -p TCP --dport 22 -s 0/0 -d 192.168.0.2 -m state --state NEW -j LOG --log-level=6 --log-prefix="SSH " $IPTABLES -A INPUT -p TCP --dport 22 -s 0/0 -d 192.168.0.2 -m state --state NEW -j ACCEPT $IPTABLES -A INPUT -p TCP --dport 25 -s 0/0 -d 192.168.0.2 -m state --state NEW -j LOG --log-level=6 --log-prefix="SMTP " $IPTABLES -A INPUT -p TCP --dport 25 -s 0/0 -d 192.168.0.2 -m state --state NEW -j ACCEPT $IPTABLES -A INPUT -p TCP --dport 80 -s 0/0 -d 192.168.0.2 -m state --state NEW -j LOG --log-level=6 --log-prefix="HTTP " $IPTABLES -A INPUT -p TCP --dport 80 -s 0/0 -d 192.168.0.2 -m state --state NEW -j ACCEPT

65

$IPTABLES -A INPUT -p TCP --dport 110 -s 0/0 -d 192.168.0.2 -m state --state NEW -j LOG --log-level=6 --log-prefix="POP3 " $IPTABLES -A INPUT -p TCP --dport 110 -s 0/0 -d 192.168.0.2 -m state --state NEW -j ACCEPT #libera entrada de trfego referente ao DNS $IPTABLES -A INPUT -p UDP --dport 53 -s 0/0 -d 192.168.0.2 -j LOG --log-level=6 --log-prefix="DNS " $IPTABLES -A INPUT -p UDP --dport 53 -s 0/0 -d 192.168.0.2 -j ACCEPT #libera trafego referente as estatsticas de desempenho (NetSNMP) $IPTABLES -A INPUT -p UDP --dport 161 -s 0/0 -d 192.168.0.2 -j LOG --log-level=6 --log-prefix="DNS " $IPTABLES -A INPUT -p UDP --dport 161 -s 0/0 -d 192.168.0.2 -j ACCEPT $IPTABLES -A OUTPUT -p UDP --sport 161 -s 192.168.0.2 -d 0/0 -j LOG --log-level=6 --log-prefix="DNS " $IPTABLES -A OUTPUT -p UDP --sport 161 -s 192.168.0.2 -d 0/0 -j ACCEPT #bloqueia pedidos de conexo $IPTABLES -A INPUT -p TCP --syn -s 0/0 -d 192.168.0.2 -j LOG -log-level=6 --log-prefix="SYN_DROP " $IPTABLES -A INPUT -p TCP --syn -s 0/0 -d 192.168.0.2 -j DROP #libera a sada de pedidos de Eco $IPTABLES -A OUTPUT -p icmp --icmp-type echo-request -s 192.168.0.2 -d 0/0 -j LOG --log-level=6 --log-prefix="PING_OK " $IPTABLES -A OUTPUT -p icmp --icmp-type echo-request -s 192.168.0.2 -d 0/0 -j ACCEPT #libera a entrada de resposta de Eco

66

$IPTABLES -A INPUT -p icmp --icmp-type echo-request -s 0/0 -d 192.168.0.2 -j LOG --log-level=6 --log-prefix="PING_OK " $IPTABLES -A INPUT -p icmp --icmp-type echo-request -s 0/0 -d 192.168.0.2 -j ACCEPT #bloqueia trfego icmp de pedidos de Eco $IPTABLES -A INPUT -i $IF -p icmp --icmp-type echo-request -j LOG --log-level=6 --log-prefix="ECHO_REQUEST" $IPTABLES -A INPUT -i $IF -p icmp --icmp-type echo-request -j DROP $IPTABLES -A FORWARD -i $IF -p icmp --icmp-type echo-request -j LOG --log-level=6 --log-prefix="ECHO_REQUEST" $IPTABLES -A FORWARD -i $IF -p icmp --icmp-type echo-request -j DROP #libera trfego icmp referente a hosts inacessveis $IPTABLES -A INPUT -p icmp --icmp-type host-unreachable -s 0/0 -d 0/0 -j LOG --log-level=6 --log-prefix="ICMP_UNREACHEABLE " $IPTABLES -A INPUT -p icmp --icmp-type host-unreachable -s 0/0 -d 0/0 -j ACCEPT $IPTABLES -A FORWARD -p icmp --icmp-type host-unreachable -s 0/0 -d 0/0 -j LOG --log-level=6 --logprefix="ICMP_UNREACHEABLE " $IPTABLES -A FORWARD -p icmp --icmp-type host-unreachable -s 0/0 -d 0/0 -j ACCEPT $IPTABLES -A OUTPUT -p icmp --icmp-type host-unreachable -s 0/0 -d 0/0 -j LOG --log-level=6 --log-prefix="ICMP_UNREACHEABLE " $IPTABLES -A OUTPUT -p icmp --icmp-type host-unreachable -s 0/0 -d 0/0 -j ACCEPT Iptables sem log: #!/bin/bash

67

IPTABLES=/usr/sbin/iptables IF=eth0 #Limpa todas as regras iptables -F iptables -Z iptables -X #Define uma poltica fechada iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP #libera todo o trfego na interface de loopback $IPTABLES -A INPUT -p ALL -i lo -s 0/0 -d 0/0 -j ACCEPT $IPTABLES -A FORWARD -p ALL -i lo -s 0/0 -d 0/0 -j ACCEPT $IPTABLES -A FORWARD -p ALL -o lo -s 0/0 -d 0/0 -j ACCEPT

#libera todo o trfego proveniente de uma conexo j estabelecida $IPTABLES -A INPUT -p ALL -m state --state ESTABLISHED -s 0/0 -d 0/0 -j ACCEPT $IPTABLES -A FORWARD -p ALL -m state --state ESTABLISHED s 0/0 -d 0/0 -j ACCEPT $IPTABLES -A OUTPUT -p ALL -m state --state ESTABLISHED -s 0/0 -d 0/0 -j ACCEPT #bloqueia a entrada de pacotes fragmentados $IPTABLES -A INPUT -p ALL -s 0/0 -d 0/0 -f -j DROP #bloqueia spoof $IPTABLES -A INPUT -i $IF -p ALL -s 10.0.0.0/8 -d 0/0 -j DROP $IPTABLES -A FORWARD -i $IF -p ALL -s 10.0.0.0/8 -d 0/0 -j DROP

68

$IPTABLES -A OUTPUT -p ALL -s 10.0.0.0/8 -d 0/0 -j DROP $IPTABLES -A INPUT -i $IF -p ALL -s 172.16.0.0/12 -d 0/0 -j DROP $IPTABLES -A FORWARD -i $IF -p ALL -s 172.16.0.0/12 -d 0/0 -j DROP $IPTABLES -A OUTPUT -p ALL -s 172.16.0.0/12 -d 0/0 -j DROP $IPTABLES -A INPUT -i $IF -p ALL -s 224.0.0.0/4 -d 0/0 -j DROP $IPTABLES -A FORWARD -i $IF -p ALL -s 224.0.0.0/4 -d 0/0 -j DROP $IPTABLES -A OUTPUT -p ALL -s 224.0.0.0/4 -d 0/0 -j DROP $IPTABLES -A INPUT -i $IF -p ALL -s 240.0.0.0/5 -d 0/0 -j DROP $IPTABLES -A FORWARD -i $IF -p ALL -s 240.0.0.0/5 -d 0/0 -j DROP $IPTABLES -A OUTPUT -p ALL -s 240.0.0.0/5 -d 0/0 -j DROP

#libera pedidos de conexo nas portas 21, 22, 25, 80 e 110 $IPTABLES -A INPUT -p TCP --dport 21 -s 0/0 -d 192.168.0.2 -m state --state NEW -j ACCEPT $IPTABLES -A INPUT -p TCP --dport 22 -s 0/0 -d 192.168.0.2 -m state --state NEW -j ACCEPT $IPTABLES -A INPUT -p TCP --dport 25 -s 0/0 -d 192.168.0.2 -m state --state NEW -j ACCEPT $IPTABLES -A INPUT -p TCP --dport 80 -s 0/0 -d 192.168.0.2 -m state --state NEW -j ACCEPT $IPTABLES -A INPUT -p TCP --dport 110 -s 0/0 -d 192.168.0.2 -m state --state NEW -j ACCEPT

69

#libera entrada de trfego referente ao DNS $IPTABLES -A INPUT -p UDP --dport 53 -s 0/0 -d 192.168.0.2 -j ACCEPT #libera trafego referente as estatsticas de desempenho (NetSNMP) $IPTABLES -A INPUT -p UDP --dport 161 -s 0/0 -d 192.168.0.2 -j ACCEPT $IPTABLES -A OUTPUT -p UDP --sport 161 -s 192.168.0.2 -d 0/0 -j ACCEPT #bloqueia pedidos de conexo $IPTABLES -A INPUT -p TCP --syn -s 0/0 -d 192.168.0.2 -j DROP #libera a sada de pedidos de Eco $IPTABLES -A OUTPUT -p icmp --icmp-type echo-request -s 192.168.0.2 -d 0/0 -j ACCEPT #libera a entrada de resposta de Eco $IPTABLES -A INPUT -i $IF -p icmp --icmp-type echo-reply -j ACCEPT #bloqueia trfego icmp de pedidos de Eco $IPTABLES -A INPUT -i $IF -p icmp --icmp-type echo-request -j DROP $IPTABLES -A FORWARD -i $IF -p icmp --icmp-type echo-request -j DROP #libera trfego icmp referente a hosts inacessveis $IPTABLES -A INPUT -p icmp --icmp-type host-unreachable -s 0/0 -d 0/0 -j ACCEPT $IPTABLES -A FORWARD -p icmp --icmp-type host-unreachable -s 0/0 -d 0/0 -j ACCEPT $IPTABLES -A OUTPUT -p icmp --icmp-type host-unreachable -s 0/0 -d 0/0 -j ACCEPT

70

A partir do momento em que essas regras foram levantadas e comearam a funcionar, os testes comearam a serem feitos, mais precisamente, nos seguintes horrios: ipfw com log: 15:15 ipfw sem log: 15:30 iptables com log: 17:40 iptables sem log: 17:50

4.2. Resultados Obtidos


Atravs dos testes foram gerados os seguintes grficos estatsticos que permite a comparao de desempenho e uso de recursos entre as duas tecnologias diferentes. A partir dos grficos abaixo (Figuras 18 e 19) representando o uso do CPU em porcentagem, pode-se notar que o iptables usou de menos processamento comparado ao ipfw. Durante os testes onde foi implementado a gerao de logs o ipfw teve um pico de consumo de cerca de 50% da CPU enquanto o iptables teve um pico de 30% para processar os pacotes, j nos testes onde os logs no existiram, o processamento caiu muito, mesmo assim tivemos uma grande diferena entre as tecnologias, o ipfw usou cerca de 30% da CPU enquanto o iptables 15%, atravs desses nmeros pode-se confirmar ento que o iptables se saiu melhor perante o ipfw em termos de processamento e uso do recurso discutido.

Figura 18 Grfico do consumo da CPU usada pelo ipfw

71

Figura 19 Grfico do consumo da CPU usada pelo iptables As Figuras 20 e 21 apresentam os grficos referentes ao consumo de memria disponvel na mquina, atravs deles pode-se observar que o iptables usou de mais memria em relao ao ipfw que como visto no grfico quase nem usou deste recurso. No comeo dos testes do iptables tivemos cerca de 50MB de memria RAM consumida, mantendo-se estvel no outro teste, enquanto no ipfw tivemos cerca de 10MB da memria consumida que tambm se manteve estvel no restante dos testes. A partir dessa informao podemos dizer que o ipfw se saiu melhor que o iptables e que o motivo do iptables ter consumido menos processamento da CPU, como visto anteriormente, pode ser em funo do auxilio da memria durante o processamento dos pacotes.

Figura 20 Grfico do consumo da memria RAM usada pelo ipfw

72

Figura 21 Grfico do consumo da memria RAM usada pelo iptables As Figuras 22 e 23 apresentam os grficos de consumo da banda de rede. Nota-se picos de 9Mb/s foram alcanados durantes os testes, uma taxa bem alta de trfego de dados por segundo, taxas um pouco fora da realidade encontrada hoje, poucas instituies no mundo tem a capacidade de estar trabalhando a uma velocidade como essa de forma intensa atravs da rede pblica.

Figura 22 Grfico do consumo de banda durante os testes com o ipfw

73

Figura 23 Grfico do consumo de banda durante os testes com o iptables

Alguns pontos relevantes foram observados. Durante os testes onde o log foi especificado, problemas de rendimento nos firewalls foram encontrados. Nem sempre o nmero de pacotes processados foi igual ao nmero de pacotes gerados e destinados a uma porta com alguma restrio. Esses pacotes podem ter sido perdidos durante um processo de bufferizao dos pacotes, acredita-se que isto ocorreu devido a quantidade e intensidade com que foram enviados e do alto processamento envolvido para processar e gravar em disco as mensagens de cada regra, j que nos testes sem log esse problema no foi encontrado. Esse tipo de problema foi encontrado nas duas tecnologias envolvidas nos testes, sendo mais evidente no teste com ipfw. A tabela 1 abaixo faz um comparativo entre as 2 tecnologias apresentadas e testadas, representando qual delas se saiu melhor em cada quesito, seguido de comentrios.

74

IPFW IPTABLES

Comentrios

CPU

O IPTables como mostrado nos grficos apresentou melhores ndices sobre o uso do recurso de processamento que lhe foi disponvel.

Memria

O ipfw apresentou melhores ndices de consumo de memria disponvel pelo sistema.

Perca de Pacotes

O IPTables durante o teste com logs apresentou pouca perca de pacotes em relao ao ipfw, que apresentou uma grande perca de pacotes.

Facilidades

O ipfw possui muitos recursos integrados com o sistema operacional, o que facilita sua implementao, alm de mais simplicidade em seu escopo e em seus logs, dando assim um grande diferencial relacionado ao IPTables. A manuteno se torna mais fcil no ipfw devido numerao de regras podendo assim colocar regras em qualquer posio de sua lista, sendo que no IPTables regras s podem ser inseridas no comeo ou no final da lista, forando o administrador sempre alterar seu script de regras. O ipfw apresenta mais simplicidade em seus registros, facilitando sua leitura e rastreamento de informaes requeridas pelo administrador.

Manuteno

Logs

Tabela 1 IPFW x IPTables

75

5. Concluso
Durante o desenvolvimento do presente trabalho foi encontrado grandes dificuldades para obter os melhores softwares a serem testados, assim como documentaes sobre o filtro de pacotes ipfw e tambm a forma correta de escrever todo o contedo de forma simples foram encontradas. Mesmo assim foi possvel concluir os testes e o contedo do trabalho com sucesso. Estes mostraram a diferena entre os dois sistemas de filtro de pacotes durante sua criao e tambm seu desempenho e consumo de recursos em produo. Apesar das vrias e maiores facilidades encontradas no ipfw, esse se mostrou um pouco mais pesado em relao ao uso de CPU, consumindo cerca de 20% a mais que o iptables. Porm o iptables utilizou de muita memria RAM disponvel (50MB) comparado ao ipfw (10MB), o que pode justificar seu desempenho favorvel em relao ao consumo de CPU. Em relao aos consumos de recursos apresentados, pode-se dizer que, a memria utilizada pelo iptables, pode prejudicar processos paralelos e concorrentes que esto atuando em conjunto no sistema operacional, esses riscos podem trazer altos prejuzos a uma corporao dependente do firewall, assim como tambm arriscado submeter mquina a um consumo alto de CPU, pelo mesmo motivo, porm o uso de CPU relativamente fcil de ser normalizado e controlado comparado memria. As duas tecnologias so relativamente baratas, abertas e bastante viveis para serem usadas e desenvolvidas por qualquer pessoa, assim cabe ao administrador levantar os recursos disponveis, as necessidades e seu conhecimento, para melhor escolher a tecnologia que deseja usar, o gosto e a preferncia do administrador tambm fazem muita diferena na escolha do filtro a ser usado. Particularmente atravs deste trabalho com as informaes recolhidas e apresentadas, o ipfw merece a preferncia, pois se mostrou mais malevel as situaes impostas, e juntamente com o sistema operacional apresentou mais facilidades, menores riscos e simplicidade. Os resultados obtidos nesse trabalho em relao aos filtros testados esto relacionados em especfico com as situaes em que foram colocados, com algumas otimizaes do kernel e do sistema operacional, o resultado pode ser diferente, o uso dos recursos podem ser menores, porm isso envolve um alto conhecimento tcnico do

76

administrador, mas que pode trazer inmeras melhoras de desempenho para os filtros se estas foram devidamente feitas. Atravs deste trabalho foi possvel conciliar a teoria com a prtica, melhorando a percepo perante as tarefas relacionadas ao dia a dia com os dois filtros, facilitando novas implementaes e otimizaes que hoje j esto em produo em diversos clientes, assim como as manutenes necessrias e requeridas para uma melhora significativa em segurana e desempenho.

77

6. Referncias
COMER, D. E. Interligao em rede com TCP/IP. Traduo de ARX Publicaes. 3 ed. Rio de Janeiro: Campus e Elsevier, 1998 TANENBAUM, A. S. Redes de computadores. Traduo Vanderberg, D. de Souza. 4 ed. Rio de Janeiro: Campus e Elsevier, 2003. PEREIRA, Aprenda Internet Sozinho Agora, Histria da Internet. Disponvel em: <http://www.aisa.com.br/historia.html> Acesso em: 25 jun. 2006. PINHEIRO, 2006. MOTA FILHO, J. E. IPTABLES. Disponvel em: <http://www.eriberto.pro.br/iptables/> Acesso em: 15 ag. 2006. PICCININ, F. D. Q. Camada 4:Transporte (Transport Layer). Disponvel em: <http://www-usr.inf.ufsm.br/~piccinin/osi/transporte.html> Acesso em: 1 jul. 2006. LEMOS, Acesso em: 1 ag. 2006. SILVEIRA, L. M. e MATARAZZO, E A. Camada 1: Fsica. Disponvel em: <http://www.teleco.com.br/tutoriais/tutorialosi/pagina_5.asp> Acesso em: 27 jun. 2006 CISCO SYSTEMS, Material do curso preparatrio para certificao CCNA verso 2.1.2. Disponvel em: <http://www.cisco.com/web/learning/netacad/index.html> Acesso em: 28 jul. 2006. E. Disponvel em: J. M. S. O Disponvel em:

modelo

Osi.

<http://www.projetoderedes.com.br/artigos/artigo_modelo_osi.php> Acesso em: 25 jun.

Firewalls.

<http://www.securityexperts.com.br/modules.php?name=Content&pa=showpage&pid=18>

78

NASCIMENTO, 2 ag. 2006.

P.

C.,

Amplificador

potencializa

rede.

Disponvel

em:

<http://www.unicamp.br/unicamp/unicamp_hoje/ju/agosto2003/ju224pg03.html> Acesso em:

WIKIPDIA, Modelo OSI. Disponvel em: <http://pt.wikipedia.org/wiki/Modelo_OSI> Acesso em: 2 jul. 2006 WIKIPDIA, Token Ring. Disponvel em: <http://pt.wikipedia.org/wiki/Token_ring Acesso em: 15 jul. 2006 WIKIPDIA, Protocolo IP. Disponvel em: <http://pt.wikipedia.org/wiki/IPv4> Acesso em: 10 jul. 2006 WIKIPDIA, IPv6. Disponvel em: <http://pt.wikipedia.org/wiki/IPv6> Acesso em: 10 jul. 2006 WIKIPDIA, IP Spoofing. Disponvel em: <http://pt.wikipedia.org/wiki/Spoofing> Acesso em: 10 jul. 2006 CACTI, CACTI The complete RRDTool- based Graphing Solution. Disponvel em: < http://cacti.net/> Acesso em: 10 ag. 2006. MySQL, MYSQL. Disponvel em: < http://www.mysql.org/> Acesso em: 10 ag. 2006. RRDTool, About RDR tool. Disponvel em: <http://oss.oetiker.ch/rrdtool/> Acesso em: 10 ag. 2006. Packit, Disponvel em:

Packit

Network

injection

and

capture.

<http://www.packetfactory.net/projects/packit/> Acesso em: 10 ag. 2006. Net-SNMP, Net-SNMP. Disponvel em: <http://net-snmp.sourceforge.net/> Acesso em: 10 ag. 2006.

79

Manual

IPFW(8),

FreeBSD

Hypertext

Man

Pages.

Disponvel

em:

<http://www.freebsd.org/cgi/man.cgi?query=ipfw&sektion=8> Acesso em: 12 ag. 2006. Netfilter, The netfilter.org project. Disponvel em: <http://www.netfilter.org/> Acesso em: 10 ag. 2006.