Sunteți pe pagina 1din 49

SERVIO NACIONAL DE APRENDIZAGEM INDUSTRIAL

CURSO TCNICO EM REDES DE COMPUTADORES


CLAUDIO BIEGING

FIREWALL IPTABLES

JARAGU DO SUL
2010

CLAUDIO BIEGING

FIREWALL IPTABLES

Trabalho
apresentado

banca
examinadora de TCC do curso Tcnico
em Redes de Computadores do
SENAI/SC Jaragu do Sul, sob a
orientao do Prof. Alexandre Ramos

JARAGU DO SUL
2010

SUMRIO

Sumrio
1INTRODUO............................................................................................................4
1.1OBJETIVO GERAL...................................................................................................4
1.2OBJETIVOS ESPECFICOS.................................................................................... 5
1.3JUSTIFICATIVA....................................................................................................... 5
1.4METODOLOGIA.......................................................................................................6
2FUNDAMENTAO TERICA..................................................................................7
2.1ENDEREO IP.........................................................................................................7
2.1.1O IPv4 ..................................................................................................................7
2.1.2IPv6.......................................................................................................................8
2.2PORTAS................................................................................................................... 8
2.3LINUX....................................................................................................................... 9
2.4FIREWALL................................................................................................................9
2.4.1Stateful.................................................................................................................9
2.4.2Stateless.............................................................................................................10
3O FIREWALL IPTABLES.........................................................................................11
3.1.1Tabelas e Chains...............................................................................................11
3.1.2Aes .................................................................................................................12
3.1.3Comandos .........................................................................................................13
4DESENVOLVIMENTO..............................................................................................21
4.1INSTALAO DO IPTABLES................................................................................ 21
4.2O AMBIENTE......................................................................................................... 26
4.3CRIANDO O COMPARTILHAMENTO DA CONEXO ATRAVS DE NAT.........27
4.3.1Arquivo de inicializao do Firewall IPTables...............................................28
4.3.2Inserindo as regras...........................................................................................29
4.3.3Entendendo o script..........................................................................................34
4.3.4Restringindo acesso indevido.........................................................................38
5CONCLUSO ..........................................................................................................41

SUMRIO DE TABELAS

Tabela 1 - Bloqueia qualquer pacote que chegar ao firewall......................................13


Tabela 2 - Exclui a regra anterior................................................................................13
Tabela 3 - Exibe todas as regras em vigor no firewall................................................13
Tabela 4 - Muda a poltica padro da chain INPUT para DROP................................13
Tabela 5 - Limpa todas as regras em vigor no firewall...............................................14
Tabela 6 - Bloqueia qualquer pacote que chegar ao firewall......................................14
Tabela 7 - Substitui a regra acima..............................................................................14
Tabela 8 - Cria uma nova chain chamada rede_local................................................14
Tabela 9 - Renomeia chain rede_local para rede_externa.........................................14
Tabela 10 - Faz o pr-roteamento de pacotes............................................................14
Tabela 11 - Aceita qualquer pacote proveniente da interface ppp0...........................14
Tabela 12 - Aceita qualquer pacote com o destino a interface de rede eth0.............15
Tabela 13 - Aceita qualquer pacote proveniente do endereo 192.168.0.1...............15
Tabela 14 - Aceita qualquer pacote com destino ao host 192.168.0.1......................15
Tabela 15 - Bloqueia qualquer pacote do tipo TCP que chegar a porta 80...............15
Tabela 16 - Bloqueia todos as requisies de ping....................................................15
Tabela 17 - Bloqueia as respostas de Ping que chegarem ao firewall.......................15
Tabela 18 - Esta regra faz o bloqueio do ip 200.221.2.45 a porta do servidor ssh....16
Tabela 19 - Ignora qualquer pacote que chegar ao firewall.......................................16
Tabela 20 - Ignora o pacote que for do tipo TCP e com a porta 80 de origem..........16
Tabela 21 - Rejeita pacotes que forem do tipo TCP e com destino a porta 22..........16
Tabela 22 - Ignora qualquer pacote proveniente do endereo fsico 00:e3:12:54:g5:fd
.....................................................................................................................................16
Tabela 23 - Bloqueia as portas 80 e 443 impossibilitando navegar em pginas Web.
.....................................................................................................................................17
Tabela 24 - Rejeita qualquer pacote que contem a palavra sexo em seu corpo.......17
Tabela 25 - O usurio com o uid 1000 no ira enviar nenhum pacote para rede......17
Tabela 26 - Os usurios do grupo com o gid 60 no tero acesso ao site
www.google.com.br.....................................................................................................17
Tabela 27 - Descarta os pacotes que tentam abrir uma nova conexes...................17
Tabela 28 - Aceitas pacotes referentes a conexes estabelecidas e relacionadas.. .18

Tabela 29 - Ignora pacotes ICMP que venham a ser invlidos.................................18


Tabela 30 - Ignora pacotes ICMP que cheguem ao Firewall a cada 5 segundos......18
Tabela 31 - Bloqueia o acesso ao site orkut.com entre as 07:00 at as 12:00..........18
Tabela 32 - Esta regra libera o acesso a site por data...............................................19
Tabela 33 - Ignora o acesso ao servidor ssh nos dias 21,23 e 26 de cada ms.......19
Tabela 34 - Libera o acesso ao site www.youtube.com nos sbados e domingos de
todos os meses...........................................................................................................19
Tabela 35 - Bloquei o protocolo HTTP que chegar ao IP 192.168.56.2.....................20
Tabela 36 - Instala os pacotes com o comando apt-get.............................................21
Tabela 37: Descompacta o cdigo fonte do kernel.....................................................22
Tabela 38 - Copia a configurao do kernel atual para o kernel novo.......................22
Tabela 39 - Cria a pasta layer7...................................................................................22
Tabela 40 - Entra na pasta layer7...............................................................................22
Tabela 41 - Faz do download do cdigo fonte do layer7............................................22
Tabela 42 - Faz o download do arquivos protocolos usado pelo layer7....................22
Tabela 43 - Faz o download do cdigo fonte do IPTables..........................................23
Tabela 44 - Descompacta o cdigo fonte do IPTables...............................................23
Tabela 45 - Descompacta o cdigo fonte do plugin layer7.........................................23
Tabela 46 - Descompacta o arquivo protocolos usado pelo plugin layer7.................23
Tabela 47 - Entra no diretrio do cdigo fonte do kernel............................................23
Tabela 48 - Aplica o patch do layer7 no cdigo fonte do kernel.................................23
Tabela 49 - Comando para abrir o aplicativo de configurao do kernel...................23
Tabela 50 - Caminho para a configurao do kernel..................................................24
Tabela 51 - Comando para compilar o kernel.............................................................24
Tabela 52 - Comando para entrar na pasta src..........................................................24
Tabela 53 - Instala todos os pacotes com a terminao .deb....................................24
Tabela 54 - Entra na pasta extensions do IPTables...................................................25
Tabela 55 - Prepara o suporte ao layer7 no IPTables................................................25
Tabela 56 - Remove o software IPTables atualmente instalado no sistema..............25
Tabela 57 - Descompacta o cdigo fonte do kernel compilado com o suporte ao
layer7...........................................................................................................................25
Tabela 58 - Prepara o cdigo fonte para compilar os binrios...................................25
Tabela 59 - Sai da pasta extensions...........................................................................25
Tabela 60 - Comando para criar os binrios do IPTables..........................................26

Tabela 61 - Instala o IPTables no sistema..................................................................26


Tabela 62 - Entra na pasta protocols..........................................................................26
Tabela 63 - Instala o protocols no sistema.................................................................26
Tabela 64 - Configurao da rede..............................................................................26
Tabela 65 - Linha do arquivo sysctl.conf antes da alterao......................................27
Tabela 66 - Linha do arquivo sysctl.conf depois da alterao....................................27
Tabela 67 - Comando para criar o arquivo firewall usando o gedit............................28
Tabela 68 - Arquivo do script base apara inserir as regras........................................28
Tabela 69 - Comando para alterar as permisses do script de firewall.....................29
Tabela 70 - Comando para iniciar o firewall................................................................29
Tabela 71 - Comando para parar a execuo do firewall...........................................29
Tabela 72 - Comando para reiniciar o firewall............................................................29
Tabela 73 - Arquivo com as regras do Firewall IPTables...........................................33
Tabela 74 - Regras para redirecionar o seqncia do firewall...................................34
Tabela 75 - Regras para o tratamento de pacotes de DNS.......................................35
Tabela 76 - Regras para tratamento de pacotes proveniente da rede local..............35
Tabela 77 - Regra responsvel pela criao do compartilhamento NAT...................36
Tabela 78 - Regras responsveis pelo acesso as repositrios do sistema Linux
Ubuntu.........................................................................................................................36
Tabela 79 - Encaminhamento de pacotes para um host especifico...........................37
Tabela 80 - Libera as portas principais dos servios conhecidos..............................37
Tabela 81 - Limpa as regras da tabela nat.................................................................38
Tabela 82 - Apaga todas as chains criadas pelo script..............................................38
Tabela 83 - Libera a poltica padro...........................................................................38
Tabela 84 - Limpa todas as regras em todas as chains.............................................38
Tabela 85 - Bloqueia contatos do MSN Messenger...................................................39
Tabela 86 - Bloquei o domnio orkut.com por horrio.................................................39
Tabela 87 - Bloqueio da aplicao MSN Messenger por horrio...............................40

RESUMO

Firewall um software voltado para a segurana em rede de computadores, ele


protege a rede contra acesso indevido, seja vindo de dentro da rede ou de fora da
rede. O mesmo usa as informaes dos pacotes que trafegam para designar um
destino aos mesmos, tento como base uma serie de regras pr-definidas pelo
administrador.
O IPTables um firewall de cdigo livre, desenvolvido para trabalhar em sistemas
GNU/Linux. Com ele possvel identificar protocolos da camada de rede e com a
ajuda de alguns plugins identificar protocolos da camada de aplicao. Podendo
assim criar regras mais complexas para o melhor controle sobre a rede.

4
1

INTRODUO

A Internet deixou de ser um ambiente privado para estudantes e pessoas do meio


corporativo para se tornar um dos maiores meios de comunicao na atualidade,
so milhes de pessoas conectadas a grande rede e das mais diversas classes
sociais executando as mais variadas tarefas. Seja comunicando-se com outras
pessoas, atravs de correio eletrnico, mensagens instantneas ou at executando
transaes bancarias, interligando estabelecimentos.
Com o crescimento da Internet, vieram os problemas relacionados ao acesso
indevido a dados restritos, pessoas no autorizadas obtendo dados sigilosos, seja
por falhas na segurana das redes ou aes que induzem os usurios ao erro.
Contudo, ha ferramentas que dificultam as aes dessas pessoas no intuito de
melhorar a segurana da rede. Uma dessas ferramentas chama-se Firewall, um
software que monitora os dados que trafegam na rede, identificando a origem e o
destino dos dados e a qual software pertencem. A idia criar regras de acesso,
delimitando o acesso dos usurios aos recursos da rede, seja para usurios da rede
local como para supostos intrusos da rede externa.

1.1

OBJETIVO GERAL

Aplicar na pratica o Firewall IPTables, utilizado todos os recursos de filtragem de


pacotes a nvel de aplicao e roteamento, utilizando um servidor e um cliente para
a pratica.

5
1.2

OBJETIVOS ESPECFICOS

Os objetivos especficos deste trabalho so:


a) Reunir informaes a respeito do Firewall IPTables
b) Explorar as possibilidades de utilizao do firewall;
c) Elaborar regras avanadas para a filtragem de pacotes;
d) Analisar os resultados obtidos.

1.3

JUSTIFICATIVA

A segurana em uma rede de computadores primordial, principalmente em


grandes empresas. Para tal se faz necessrio o uso de software responsveis na
filtragem do acesso aos recursos da rede, para que estes no venham a
comprometer a integridade das informaes. Informaes estas que entram e saiam
da rede, muitas com informaes sigilosas.
Entretanto a casos em que a filtragem de dados se faz necessria para o melhor
aproveitamento dos recursos da rede ou at delimitando o acesso a sites e recursos
da rede externa.
Em um sentido amplo, um firewall um sistema que protege a rede local
da grande rede global ruim. o sentinela pelo qual todo o trafego da rede
tem que passar antes de entrar ou poder deixar a rede local. (HUNT, Craig.
2004)

6
1.4

METODOLOGIA

O ambiente de testes consiste em dois computadores, um sendo o servidor onde


ser instalado o sistema operacional Linux Ubuntu 9.04, com o Firewall IPTables
1.4.0. O segundo computador ser o cliente de testes, onde ser utilizado o sistema
operacional Microsoft Windows XP. O servidor estar compartilhando o acesso a
Internet, nele ser feito o controle do trafego de entrada e sada, como tambm o
trafego que ir para o cliente. Utilizando ainda plugins adicionais para aumentar as
funcionalidades do firewall.

7
2

FUNDAMENTAO TERICA

Para ocorrer troca de dados entre os computadores, se faz necessrio algum tipo
de identificao, algo que seja nico para cada computador. Para esta identificao,
da-se o nome de endereo IP.

2.1

ENDEREO IP

O endereo IP, um conjunto de bits dividido em grupos chamados de octetos.


Para formar um endereo IP usamos nmeros de 0 at 255 que nada mais do que
a forma decimal dos octetos. Existem duas verses do protocolo IP, o IPv4 e o IPv6.

2.1.1 O IPv4

No IPv4, so usados 32 bits que so separados em 4 octetos. Originalmente foram


definidas 3 classes, onde no mesmo endereo IP temos a informao do endereo
do host e da rede. No caso de um IP classe A, o primeiro octeto, indica a rede que o
IP pertence e os outros 3 octetos identificam o host.. Esta classe comea no IP
1.1.1.1 e vai at o 127.255.255.255.
A segunda classe a classe B, onde os dois primeiros octetos indicam a rede e os
outros dois indicam o host. No caso da classe B, esta comea no IP 128.0.0.0 e vai
at o endereo 191.255.255.255.
Por fim, temos a classe C, onde somente o ultimo octeto identifica o host, enquanto
os 3 primeiros octetos identificam a rede. Estes por sua vez comeam no IP
192.0.0.255. e termina em 233.255.255.255.

8
Em geral, os endereos de rede, que so nmeros de 32 bits, so escritos
em notao decimal com pontos. Nesse formato, cada um dos 4 bytes
escrito em notao decimal, de 0 a 255. Por exemplo, o endereo
hexadecimal de 32 bits C0290614 escrito como 192.41.6.20. O endereo
IP mais baixo 0.0.0.0 e o mais alto 255.255.255.255. (TANENBAUM.
Andrew S, 2002)

2.1.2 IPv6

O protocolo IPv6, foi projetado para suprir a demando por endereos IP vlidos, j
que o atual protocolo IPv4 esta com no seu limite de IPs vlidos, por isso ele um
protocolo pouco utilizado. Com ele temos a possibilidade de ter mais de 4 bilhes de
endereos IP vlidos. Para isso foram usados 128 bits para representar um
endereo IP.
Em primeiro lugar, o IPv6 tem endereos mais longos que o IPv4. Eles tm
16 bytes, o que resolve o problema que o IP v6 se prope resolver: oferecer
um nmero ilimitado de endereos na Internet ( TANENBAUM. Andrew S,
2002)

2.2

PORTAS

Para que as aplicaes possam usar a rede ao mesmo tempo so usados


protocolos especficos, cada protocolo por sua vez se utiliza de uma porta. Estas
portas vo de 1 at 65.535, ou seja, temos 65.535 portas disponveis, porem as
1.024 primeiras portas so ditas padres por pertencer a aplicaes especificas.
Existem 65,356 portas TCP, numeradas de 1 a 65,536. cada porta pode ser
usada por um programa ou servio diferente, de forma que em teoria
poderamos ter at 65,536 servios diferentes ativos simultaneamente em
um mesmo servidor, com um nico endereo ip valido.(MORIMOTO. Carlos
E, 2006)

2.3

LINUX

Linux um sistema operacional de cdigo fonte aberto, amplamente utilizado em


servidores porem atualmente esta aparecendo tambm nos desktops. A sua licena
GPL que prev a livre distribuio do seu cdigo fonte. Qualquer pessoa pode
utilizar o sistema para qualquer fim, sendo tambm livre de taxas referentes
licena.

2.4

FIREWALL

Firewall uma camada de proteo rede de computadores que geralmente se


utiliza de hardware e software. Tudo o que entra ou sai da rede, deve
obrigatoriamente passar pelo firewall, ele que decide o que pode ou no entrar na
rede. Existem 2 tipos de firewall, os stateful e stateless.
O firewall, nessa configurao, tem dois componentes: dois roteadores que
filtram pacotes e um gateway de aplicao. Tambm existem configuraes
mais simples, mas a vantagem desse projeto que cada pacote deve
passar por dois filtros e um gateway de aplicao para sair ou entrar na
rede. No existem outras rotas. (TANENBAUM. Andrew S, 2002)

2.4.1 Stateful

O firewall stateful, visa todos os pacotes relacionados a mesma conexo, ou


conexes j existentes. Assim o firewall consegue identificar o pacote e saber qual a
conexo o mesmo pertence. Que tipo de pacote , e o que o mesmo faz.

10

2.4.2 Stateless

Um firewall stateless analisa cada pacote separadamente, ou seja, sem considerar


as conexes j feitas.

Cada pacote analisado de forma isolada, levando em

considerao a origem e o destino do mesmo. Porem sem se preocupar com qual


conexo o mesmo pertence.

11
3

O FIREWALL IPTABLES

O firewall Iptables foi criado por Rusty Russell, e incorporado ao kernel do Linus em
junho de 1999. Suas funes vo alem de um simples firewall, j que possui uma
infinidade de recursos que ajuda no gerenciamento da rede.
Como principais caractersticas o IPTables nos da um amplo leque de
possibilidades tais como a implementao desde filtro de pacotes utilizando
a tabela Filter a NAT via tabela NAT e mais controles avanados como o
desenvolvimento de de QoS sobre o trafego, suporte a SNAT e DNAT,
redirecionamento de endereamento de portas , mascaramento de
conexes, deteco de fragmentos, monitoramento de trafego, TOS,
bloqueio a ataques Spoofing, Syn-flood, DoS, scanners ocultos, pings da
morte entre muitos outros. (NETO. Urubatan, 2004)

Para a sua configurao, criado um arquivos de texto, que contem as regras a


serem aplicadas, uma a uma, para isso elas preciso estar ordem para que uma
regra no conflite com a regra seguinte.

3.1.1 Tabelas e Chains

As tabelas so um conjunto de registros, onde encontramos as chains que executam


as aes prescritas nas regras. As tabelas podem ser do tipo;

filter Usada para filtrar os pacotes, a tabela padro do Firewall Iptables.

nat Tabela usada para fazer roteamento de pacotes.

mangle Nesta tabela feita o tratamento especial de pacotes, como o Tipo


de Servio (TOS), onde podemos dar prioridade aos pacotes correspondentes
a regra.

As chains padres so

INPUT Fazem referencia aos pacotes que chegam at o firewall.

OUTPUT Referencie aos pacotes que saem do firewall.

12

FORWARD Usando esta chain dizemos ao pacote que ele deve ser
repassado a outro destino, ou seja, no entra no computador firewall.

PREROUTING Esta chain usada para alterar os pacotes antes de


chegarem ao firewall.

POSTROUTING - Altera os pacotes antes de sarem do firewall.

Entretanto, podemos criar outras chains para melhorar a organizao do firewall, de


modo que o mesmo fique mais dinmico. Contribuindo assim com o melhor
gerenciamento do mesmo.

Por exemplo, possvel criar uma chain chama

REDE_LOCAL, identificando que as regras que contem esta chain fazem referencia
a rede loca.

3.1.2 Aes

A ao o destino que o Firewall IPTables deve dar ao pacote que coincide com a
regra.

ACCEPT O pacote aceito pelo firewall.

REJECT O pacote rejeitado pelo firewall. Porem enviada uma


mensagens de volta a origem do mesmo indicando falha.

DROP O pacote rejeitado, mas desta vez sem o envio de mensagens.

LOG Nesta regra, acontece o registro do pacote. Neste registro consta a


data e a hora em que o pacote chegou ao firewall. O nome do computador
que fez o registro do mesmo. O servio que fez o registro do pacote. Contem
tambm a placa de rede em que o pacote foi recebido e tambm a placa por
qual ele foi enviado. O endereo de origem e de destino do pacote. O
endereo MAC da placa de rede que recebeu, enviou e pela qual o pacote
saiu. O tamanho em bytes do pacote. Tempo de vida do pacote. Se o pacote
um fragmento ou no. O protocolo, que pode ser do tipo UDP, TCP e ICMP.
E a porta de origem e de destino do pacote.

RETURN Envia o pacote a outra o regra.

13

SNAT Usado para alterar o endereo de origens dos pacotes.

DNAT usado para alterar o endereo de destino dos pacotes

REDIRECT - Faz o redirecionamento de portas, no entenda necessrio


especificar a opo to-port e por fim a porta a ser usada.

3.1.3 Comandos

Na criao do script do firewall usamos comandos especficos para tipo de ao a


ser executada.
-A

Adiciona uma nova regra.

iptables -A INPUT -j DROP


Tabela 1 - Bloqueia qualquer pacote que chegar ao firewall.

-D

Exclui um regra.

iptables -D INPUT -j DROP


Tabela 2 - Exclui a regra anterior.

-L

Exibe as regras existentes.

iptables -L
Tabela 3 - Exibe todas as regras em vigor no firewall.

-P

Configura a poltica padro.

iptables -P INPUT DROP


Tabela 4 - Muda a poltica padro da chain INPUT para DROP.

14
-F

Apaga todas as regras.

iptables -F
Tabela 5 - Limpa todas as regras em vigor no firewall.

-I

Adiciona uma regra, porem a mesma adicionada no inicio da tabela.

iptables -I INPUT -j REJECT


Tabela 6 - Bloqueia qualquer pacote que chegar ao firewall.

-R

Substitui uma regra.

iptables -R INPUT -j ACCEPT


Tabela 7 - Substitui a regra acima.

-N

Adiciona uma nova chain a tabela.

iptables -N rede_local
Tabela 8 - Cria uma nova chain chamada rede_local.

-R

Renomeia a chain criada anteriormente, porem, este comando no

renomeia as chain padres do firewall.


iptables -R rede_externa
Tabela 9 - Renomeia chain rede_local para rede_externa.

-t

Especifica a tabela a ser usada. Este item pode ser omitido caso a

tabela a ser usada seja a filter


iptables -t nat -A POSTROUTING -j ACCEPT
Tabela 10 - Faz o pr-roteamento de pacotes.

-i

Especifica a interface de rede em que o pacote chega.

iptables -A INPUT -i ppp0 -j ACCEPT


Tabela 11 - Aceita qualquer pacote proveniente da interface ppp0.

-o

Especifica a interface de rede em que o pacote sai.

15

iptables -A FORWARD -o eth0 -j ACCEPT


Tabela 12 - Aceita qualquer pacote com o destino a interface de rede eth0.

-s

Esta opo especifica o IP de origem do pacote

iptables -A INPUT -s 192.168.0.1 -j ACCEPT


Tabela 13 - Aceita qualquer pacote proveniente do endereo 192.168.0.1.

-d

Opo usada para indicar o endereo de destino do pacote

iptables -A INPUT -d 192.168.1.1 -j DROP


Tabela 14 - Aceita qualquer pacote com destino ao host 192.168.0.1.

-p

Especifica o protocolo a ser usado, podem ser do tipo TCP, UDP e

ICMP.
Iptables -A INPUT -p tcp dport 80 -j DROP
Tabela 15 - Bloqueia qualquer pacote do tipo TCP que chegar a porta 80.

Contudo podemos utilizar flags em conjunto com a opo -p, aumentando assim a
eficincia do firewall.
Quando utilizamos o protocolo ICMP, temos a opo de identificar os tipos de
mensagens ICMP. Estas mensagens servem como controle e testes da rede.
-p icmp --icmp-type echo-request

Esta opo, identifica os pacotes

ICMP que contem a requisio do resposta por parte do host. Com o bloqueio do
destes pacotes, o host no ir responder, dando a impresso que o mesmo no est
ligado ou conectado a rede.
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
Tabela 16 - Bloqueia todos as requisies de ping.

-p icmp --icmp-type echo-reply

Esta

opo

faz

identifica

mensagens icmp que contenham as resposta do host.


iptables -A INPUT -p icmp --icmp-type echo-replay -j DROP
Tabela 17 - Bloqueia as respostas de Ping que chegarem ao firewall

as

16
-p tcp --syn

Para o protocolo TCP temos as pacotes TCP do tipo syn,

que so as mensagens de requisio de conexo, esta a primeira mensagens que


um host envia antes de se conectar a algum servidor. Com o IPTables, temos a
opo de identificar este tipo de mensagem.

iptables -A INPUT -s 200.221.2.45 -p tcp --syn -dport 22 -j DROP


Tabela 18 - Esta regra faz o bloqueio do ip 200.221.2.45 a porta do servidor ssh.

-j

Especifica a ao que o firewall deve tomar.

iptables -A INPUT -j DROP


Tabela 19 - Ignora qualquer pacote que chegar ao firewall.

--sport

Indica qual a porta de origem do pacote, esta opo s pode ser

usada em conjunto com a opo -p.


iptables -A INPUT -p tcp --sport 80 -j DROP
Tabela 20 - Ignora o pacote que for do tipo TCP e com a porta 80 de origem
.

--dport

Indica a porta de destino que o pacote deve tomar. Esta opo

com a anterior, tambm s pode ser usada com a opo -p


iptables -A INPUT -p tcp --dport 22 -j REJECT
Tabela 21 - Rejeita pacotes que forem do tipo TCP e com destino a porta 22.

-m

Permite indicar ao firewall IPTables

mdulos externos,

aumentando assim as suas funcionalidades e adicionando mais opes.


-m mac

Permite indicar ao Firewall IPTables o endereo fsico da placa

de rede.
iptables -A INPUT -m mac --mac-source 00:e3:12:54:g5:fd -j DROP
Tabela 22 - Ignora qualquer pacote proveniente do endereo fsico 00:e3:12:54:g5:fd

-m --multiport

Esta opo nos permite estipular varias portas ao mesmo

tempo.
iptables -A INPUT -p tcp -m multiport --dport 80,443 -j REJECT

17
Tabela 23 - Bloqueia as portas 80 e 443 impossibilitando navegar em pginas Web.

-m string

Opo que permite verificar o contedo dos pacotes

usando como referencia uma string.


iptables -A INPUT -m string --string sexo -j REJECT
Tabela 24 - Rejeita qualquer pacote que contem a palavra sexo em seu corpo.

-m owner

Opo capaz de identificar o usurio que criou o pacote.

Contudo essa opo s ser processada se utilizar a opo OUTPUT na regra do


IPTables.
Dentro desta opo, so usadas outras em conjunto, para um perfeito
gerenciamento do firewall.
-m owner --uid-owner

Especifica o uiduser a ser usado na regra. O

uid de cada usurio esta no arquivo /etc/passwd.

iptables -A OUTPUT -m owner --uid-owner 1000 -j REJECT


Tabela 25 - O usurio com o uid 1000 no ira enviar nenhum pacote para rede.

-m owner gid-owner

Indica o groupid do grupo de usurios. A

informao do groupid dos grupos de usurios, se encontra em /etc/group.


iptables -A OUTPUT -m owner --gid-owner 60 -d www.google.com.br -j REJECT
Tabela 26 - Os usurios do grupo com o gid 60 no tero acesso ao site
www.google.com.br.

-m state

Atribui a regra verificando o estado da conexo, que pode

ser NEW para novas conexes-, ESTABLISHED para pacotes que pertencem a
conexes j estabelecidas, RELATED para pacotes relacionados com outras
conexes e INVALID referentes a pacotes no reconhecidos por algum motivo.
iptables -A INPUT -m state --state NEW -j DROP
Tabela 27 - Descarta os pacotes que tentam abrir uma nova conexes.

18

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


Tabela 28 - Aceitas pacotes referentes a conexes estabelecidas e relacionadas.

iptables -A INPUT -p icmp -m state --state INVALID -j DROP


Tabela 29 - Ignora pacotes ICMP que venham a ser invlidos.

-m limit

Um opo ao Firewall IPTables que limita o numero de

processos da regra em segundos.

iptables -A INPUT -p icmp -m limit --limit 5/s -j DROP


Tabela 30 - Ignora pacotes ICMP que cheguem ao Firewall a cada 5 segundos.

-m time

Esta opo nos permite especificar horrios e datas nas

regras do firewall.
-m time --timestart Aqui indicamos o horrio em que a regra entra em vigor.
-m time --timestop Neste caso, indicamos o horrio em que a regra deixa de
ser valida.
No caso da opo timestart, ela passa a vigorar entre as 23:59:59 horas at a hora
especificada. Em timestop, a regra deixa de ser valida entre a hora 00:00:00 at o
horrio especificado. Porem, nada nos impede de utilizar as duas opo na mesma
regra, especificando assim, uma faixa de horrio em que a regra ser valida.
-m time --utc

Esta uma opo que passamos ao firewall, para ele

utilizar o horrio local do servidor.

iptables -A INPUT -s orkut.com -m time --utc --timestart 07:00 --timestop 12:00 -j


DROP
Tabela 31 - Bloqueia o acesso ao site orkut.com entre as 07:00 at as 12:00.

-m time --datastart Aqui podemos especificar uma data em que a regra entra
em vigor.
-m time --datastop Tambm temos a opo de indicar a data em que a regra
deixara de vigorar.

19
Tanto na opo datastart como na datastop, a forma como as informaes da data
so formadas a mesma, sempre comeando pelo ano-ms-diaThora-minutosegundos. Da mesma forma, podemos indicar a data de inicio e fim na mesma regra,
limitando o vigor da mesma a uma faixa de tempo.
iptables -A INPUT -d www.fisl.org.br -m time --datastart 2009-06-24T09:00:00
--datastop 2009-06-27T21:00:00 -j ACCEPT
Tabela 32 - Esta regra libera o acesso a site por data.

-m time --mothdays

Esta opo, indica o dia em que a regra do firewall

deve vigorar. Aqui podemos indicar o dia entre 1 a 31. As datas devem ser
separadas por vrgula.

iptables -A INPUT -p tcp --dport 22 -m time --mothdays 21,23,26 -j DROP


Tabela 33 - Ignora o acesso ao servidor ssh nos dias 21,23 e 26 de cada ms.

-m time --weekday

Aqui podemos identificar os dias da semana. As

nomeclaturas usadas so Mon, Tue, Wed, Thu, Fri, Sat, Sun, que no os dias da
semana em ingls, Mon para segunda-feira, Tue para tera-feira, Wed para quartafeira, Thu para quinta-feira, Fri para sexta-feira, Sat para sbado e Sun para
domingo. Podemos tambm utilizar nmeros de 1 at 7 indicando os dias da
semana, sendo que 1 faz referencia a segunda-feira, e 7 ao domingo. De qualquer
forma, os dias da semana devem ser separados por vrgula, caso seja indicado mais
de um dia.

iptables -A INPUT -s www.youtube.com -m time --weekdays 6,7 -j ACCEPT


Tabela 34 - Libera o acesso ao site www.youtube.com nos sbados e domingos de
todos os meses

-m layer7

Esta a opo que habilita o plugin layer7 que permite ao

IPTables trabalhar na camada de aplicao.


-m layer7 --l7protocolos

Especifica um protocolo da camada de aplicao.

Os protocolos so especificados pela aplicao em que pertencem, a lista de opo


de protocolos encontra-se em anexo 1.

20

--algo

Aqui especificado o algoritmo usado na regra para procurar a

incidncia da string nos pacotes. As opes so:


kmp KnuthMorrisPratt. Algoritmo que procura uma diferena em uma string.
Inventado por Donald Knuth. Vaughan Pratt e J.H, Morris em 1977.
bm Algoritmo de Robert Boyer e J. Moore . Algoritmo mais eficiente em aplicaes
simples do tipo localizar ou substituir.

iptables -A INPUT -d 192.168.56.2 -m layer7 --l7proto http --algo kmp -j DROP


Tabela 35 - Bloquei o protocolo HTTP que chegar ao IP 192.168.56.2

21
4

DESENVOLVIMENTO

Para a instalao do firewall Iptables, foi utilizado a verso 1.4.1.1, no entendo


necessrio recompilar o kernel do sistema Linux para ativar as funes extras do
firewall IPTables. A verso do kernel a 2.6.28 e foi adquirida nos prprios
repositrios da distribuio.

4.1

INSTALAO DO IPTABLES

Para compilar o kernel necessrio a instalao de softwares adicionais ao sistema,


de modo que perfaa as dependncias necessrias. Softwares esses que fazem
parte do compilador e da interface de configurao.
Os pacotes adicionais so

Build-essential Este pacote contem a maioria dos compiladores usados no


processo.

Kernel-package Pacote que contem os utilitrios para o processo de


configurao do kernel.

Kernel-source-2.6.28 Este o pacote que contem o cdigo fonte do kernel.

Bzip2, gzip e unzip So os softwares usados para descompactar o kernel.

libncurses5-dev Biblioteca utilizada na interface de configurao do kernel.

Para instal-los no sistema, usado o gerenciador de pacotes do bebiano APT.


apt-get install kernel-package build-essential kernel-source-2.6.28 bzip2 gzip unzip
libncurses5-dev
Tabela 36 - Instala os pacotes com o comando apt-get.

Aps executar o comando, ser feito o download dos pacotes e em seguida os


mesmos sero instalados no seu sistema.

22
O arquivo com o cdigo fonte, vai estar em /usr/src, preciso descompactar o
cdigo fonte nesta mesma pasta.
tar -jxvf linux-source-2.6.28.tar.bz2
Tabela 37: Descompacta o cdigo fonte do kernel.

Para facilitar a configurao foi utilizada a configurao do kernel padro da


distribuio. Assim alterado somente o necessrio para que no venha a
acontecer problemas na configurao e comprometer outras funcionalidades do
sistema.
cp /boot/config-2.6.28-11-generic /usr/src/linux-source-2.6.28/.config
Tabela 38 - Copia a configurao do kernel atual para o kernel novo.

Antes de continuar, preciso efetuar o download do plug-in Layer7 no site do


desenvolvedor.
Para manter a organizao dos arquivos, foi criado um diretrio na pasta /usr/src.
mkdir /usr/src/layer7
Tabela 39 - Cria a pasta layer7

Ser preciso ir at este diretrio, para isso usa-se o comando


cd /usr/src/layer7
Tabela 40 - Entra na pasta layer7.

Para efetuar o download utiliza-se o software wget, que um pequeno e simples


gerenciador de downloads que funciona em modo texto.
wget http://nchc.dl.sourceforge.net/sourceforge/l7-filter/netfilter-layer7-v2.21.tar.gz
Tabela 41 - Faz do download do cdigo fonte do layer7.

wget http://jaist.dl.sourceforge.net/sourceforge/l7-filter/l7-protocols-2008-12-8.tar.gz
Tabela 42 - Faz o download do arquivos protocolos usado pelo layer7.

necessrio tambm o cdigo fonte do Firewall IPTables, o mesmo esta disponvel


no site do desenvolvedor.

23

wget http://IPTables.org/projects/IPTables/files/IPTables-1.4.1.1.tar.bz2
Tabela 43 - Faz o download do cdigo fonte do IPTables

Depois de efetuar o download, ser preciso descompactar os arquivos.


tar -xvjf IPTables-1.4.1.1.tar.bz2
Tabela 44 - Descompacta o cdigo fonte do IPTables.

tar -xzvf netfilter-layer7-v2.21.tar.gz


Tabela 45 - Descompacta o cdigo fonte do plugin layer7.

tar -xzvf l7-protocols-2008-12-18.tar.gz


Tabela 46 - Descompacta o arquivo protocolos usado pelo plugin layer7.

Agora aplica-se o patch do plug-in Layer7 no cdigo fonte do kernel.


cd /usr/src/linux-source-2.6.28
Tabela 47 - Entra no diretrio do cdigo fonte do kernel.

patch

-p1

<

/usr/src/layer7/netfilter-layer7-v2.21/kernel-2.6.25-2.6.28-layer7-

2.21.patch
Tabela 48 - Aplica o patch do layer7 no cdigo fonte do kernel.

Para configurar o kernel, utiliza-se o utilitrio menuconfig, ele organiza as opes do


kernel de forma amigvel, facilitando o processo de configurao.
make menuconfig
Tabela 49 - Comando para abrir o aplicativo de configurao do kernel.

A opo que habilita o layer7 no kernel encontra-se em Core Netfilter Configuraltion.


Para chegar nesta opo segue o caminho.

24

Networking ---> Networking options ---> [*] Network packet filtering Framework
(Netfilter) ---> Core Netfilter Configuration
Tabela 50 - Caminho para a configurao do kernel.

No item Network packet filtering Framework (Netfilter), preciso marcar as opes


Layer 7 match support (EXPERIMENTAL) como modulo e Layer 7 debugging output.
Por fim, s sair com a opo exit e salvar as configuraes feitas.
Para compilar o kernel, usa-se o comando make-kpkg, ele cria os pacotes de fcil
instalao no ubuntu (e derivados do debian).
make-kpkg initrd kernel_source kernel_headers kernel_image
Tabela 51 - Comando para compilar o kernel.

Com isso ser criado trs pacotes, um contendo o kernel, outro os headers que so
usados para compilar outros mdulos do sistema, e por fim o arquivo com o cdigo
fonte do nosso kernel.
Aps completado o processo de criao do kernel, instala-se os pacotes criados
com o utilitrio dpkg que usado para instalar pacotes locais nas distribuies
baseados no debian. Eles se encontram em.
cd /usr/src
Tabela 52 - Comando para entrar na pasta src.

E por fim, executar o comando


dpkg -i *.deb
Tabela 53 - Instala todos os pacotes com a terminao .deb.

O asterisco instrui o utilitrio a considerar todos os pacote com a terminao .deb.


Antes de continuar a instalao do plug-in layer7, necessrio reiniciar o sistema
ativando o novo kernel, para isso, basta selecionar o mesmo no gerenciador de boot
do ubuntu.
O prximo passo a instalao e do IPTables e a copia dos arquivos que fazem
referencia ao layer7. A principio se faz necessrio compilar o firewall IPTables, para
podermos habilitar o suporte ao layer7. Ele se encontra em /usr/src/layer7.

25

cd /usr/src/layer7/iptables-1.4.1.1/extensions
Tabela 54 - Entra na pasta extensions do IPTables.

Agora s resta copiar os arquivos do pacote layer7 que foram baixados do site do
desenvolvedor.

cp /usr/src/layer7/netfilter-layer7-v2.21/iptables-1.4.1.1-for-kernel-2.6.20forward ./
Tabela 55 - Prepara o suporte ao layer7 no IPTables.

Porem antes de comear o processo de compilao, necessrio, executar alguns


procedimentos para preparar o sistema. Desinstalar o software IPTables atualmente
instalado no sistema para que no aconteam conflitos.
apt-get remove iptables
Tabela 56 - Remove o software IPTables atualmente instalado no sistema.

E descompactar o cdigo fonte do kernel que foi instalado anteriormente.


tar -jxvf /usr/src/linux-source-2.6.28.tar.bz2
Tabela 57 - Descompacta o cdigo fonte do kernel compilado com o suporte ao layer7.

A principio executa-se comando configure, porem, indicando a localizao do cdigo


fonte do kernel.
./configure --with-ksource=/usr/src/linux-source-2.6.28
Tabela 58 - Prepara o cdigo fonte para compilar os binrios.

O prximo passo a execuo dos comandos make e make install que devem ser
executados em uma pasta antecessora a pasta extensions. O comando cd .. retorna
a pasta anterior.
cd ..
Tabela 59 - Sai da pasta extensions.

make

26
Tabela 60 - Comando para criar os binrios do IPTables.

make install
Tabela 61 - Instala o IPTables no sistema.

Para finalizar, falta instalar o pacote protocolos, que o responsvel pela


identificao dos protocolos. Basta agora entrar na pasta descompactada.
cd /usr/src/layer7/l7-protocols-2008-12-8
Tabela 62 - Entra na pasta protocols.

E executar o comando responsvel instalao do software.


make install
Tabela 63 - Instala o protocols no sistema.

Para completar o processo a reinicializao do sistema se faz necessria.

4.2

O AMBIENTE

Para os testes foi utilizado um computador virtual como cliente e outro como
gateway/servidor de rede. No servidor contem 2 interfaces de rede, uma chamada
de eth0 e outra vboxnet0. A interface eth0 a que esta conectada h Internet, a
vboxnet0 esta ligada ao cliente. Abaixo segue a configurao das interfaces.

Interface

Endereo IP

Mascara de rede

eth0

172.16.5.43

255.255.255.0

vboxnet0

192.168.56.1

255.255.255.0

Tabela 64 - Configurao da rede.

27
O IP do computador virtual foi definido como 192.168.56.2. O objetivo permitir que
o computador virtual obtenha acesso a Internet, porem com segurana e acesso
restrito.

4.3

CRIANDO O COMPARTILHAMENTO DA CONEXO ATRAVS DE NAT.

NAT um protocolo que faz a traduo de endereos IP.


Quando o pacote de um host da rede local chega ao servidor, o IP do mesmo
trocado pelo IP valido do servidor na internet, sendo assim o pacote pode seguir at
o seu destino. Quando a resposta do servidor da Internet chegar, o pacote
novamente modificado trocando o IP valido da Internet para o IP da rede local.
Assim mais de um computador pode ter acesso a Internet, atravs de um nico IP
valido.
Para que isso acontea precisamos ativar o encaminhamento de pacotes no
servidor. Em sistemas Linux, a configurao do encaminhamento de pacotes se faz
no arquivo /etc/sysctl.conf. Neste arquivo preciso encontrar a linha.

#net.ipv4.ip_forward=1
Tabela 65 - Linha do arquivo sysctl.conf antes da alterao

E descomentar (tirar o tralha no inicio da linha) ficando desta maneira.

net.ipv4.ip_forward=1
Tabela 66 - Linha do arquivo sysctl.conf depois da alterao.

A partir da, o sistema esta configurado para fazer o encaminhamento de pacotes.


O prximo passo ativar o NAT com o IPTables.

28
4.3.1 Arquivo de inicializao do Firewall IPTables.

O arquivo de inicializao do firewall se faz necessrios, pois se apenas as regras


forem executadas no terminal, da prxima vez que o sistema reiniciar as
configuraes sero perdidas. Este arquivo pode ser criado em /etc/init.d, local
padro para os arquivos de inicializao da distribuio ubuntu. Para criar este
arquivo pode ser usado o aplicativo gedit. Porem executar o mesmo como usurio
root, para que possa ser salvo. J que nesta pasta somente o root tem acesso.

gedit /etc/init.d/firewall
Tabela 67 - Comando para criar o arquivo firewall usando o gedit

A estrutura do arquivo de configurao do firewall bem parecida com um arquivo


de inicializao de algum servio do sistema Linux.
#incia o firewall IPTables.
Iniciar () {
#..comandos do IPTables para iniciar o firewall....
}
# Para o firewall IPTbles
parar () {
# comandos do IPTables para parar o firewall
}
# Reinicia o firewall IPTbles.
case "$1" in
"start") iniciar ;;
"stop") parar ;;
"restart") parar ; iniciar ;;
*) echo "Use os parmetros start, stop ou restart"
esac
Tabela 68 - Arquivo do script base apara inserir as regras.

29
Depois de criado e editado o arquivo. O mesmo salvo e as permisses do mesmo
sero alteradas, para que ele possa ser executado.
chmod +x /etc/init.d/firewall
Tabela 69 - Comando para alterar as permisses do script de firewall.

Assim para iniciar o firewall executamos o comando.


/etc/init.d/firewall start
Tabela 70 - Comando para iniciar o firewall

Para parar o firewall.


/etc/init.d/firewall stop
Tabela 71 - Comando para parar a execuo do firewall.

E para reiniciar.
/etc/init.d/firewall restart
Tabela 72 - Comando para reiniciar o firewall.

Desta maneira o processo de gerenciar o firewall se torna menos trabalhosa.

4.3.2 Inserindo as regras.

A principio preciso definir a poltica padro do firewall que neste caso ira bloquear
qualquer acesso, ser de entrada, sada ou de encaminhamento. As regras que
sero inseridas ser para abrir excees. A seguir segue o arquivo que contem as
regras do Firewall IPTables.

30

#incia o firewall IPTables.


iniciar () {
# Regra padro para as chains INPUT,OUTPUT e FORWARD
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# Aceita tudo o que vier da interface de loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -j ACCEPT
iptables -A OUTPUT -j ACCEPT
# Proteo contra alguns ataques externos
# Libera ping, porem bloquei pedidos de ping de maquinas externas
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
# Cria novas chains para melhorar o gerenciamento do firewall.
iptables -N DNS
iptables -N REDE_LOCAL
# Identifica o pacote e encaminha para a chain responsvel.
iptables -A INPUT -p udp --sport 53 -j DNS
iptables -A OUTPUT -p udp --dport 53 -j DNS
iptables -A INPUT -i vboxnet0 -j REDE_LOCAL
iptables -A OUTPUT -o vboxnet0 -j REDE_LOCAL
# Cria o compartilhamento atravs de NAT.

31

iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE


# Libera acesso aos repositrios do gateway Linux Ubuntu.
iptables -A INPUT -s 200.17.202.1 -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -d 200.17.202.1 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -s 208.67.217.132 -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -d 208.67.217.132 -p tcp --dport 80 -j ACCEPT
# Regras para liberar o DNS no gateway
# DNS primrio
iptables -A DNS -s 208.67.220.220 -p udp --sport 53 -j ACCEPT
iptables -A DNS -d 208.67.220.220 -p udp --dport 53 -j ACCEPT
# DNS secundrio
iptables -A DNS -s 208.67.222.222 -p udp --sport 53 -j ACCEPT
iptables -A DNS -d 208.67.222.222 -p udp --dport 53 -j ACCEPT
# Faz o iptables voltar a seqncia.
iptables -A DNS -j RETURN
# Regras para os pacotes que vo para o gateway provenientes da rede local.
# Acesso ao servio ssh para manuteno
iptables -A REDE_LOCAL -p tcp --dport 22 -j ACCEPT
iptables -A REDE_LOCAL -p tcp --sport 22 -j ACCEPT
# Libera acesso ao servio de DNS no gateway
iptables -A REDE_LOCAL -p udp --dport 53 -j ACCEPT
iptables -A REDE_LOCAL -p udp --sport 53 -j ACCEPT
# Libera acesso ao servido de DHCP

32

iptables -A REDE_LOCAL -p udp --sport 67 --dport 68 -j ACCEPT


iptables -A REDE_LOCAL -p udp --sport 68 --dport 67 -j ACCEPT
iptables -A REDE_LOCAL -j RETURN
# Regras para liberar acesso a internet ao cliente na rede local.
# Libera o encaminhamento das portas do emule por perodo de tempo;
iptables -A FORWARD -p tcp --dport 4662 -m time --utc --timestart 17:00 --timestop
22:00 -j ACCEPT
iptables -A FORWARD -p udp --dport 4672 -m time --utc --timestart 17:00 --timostop
22:00 -j ACCEPT
# Redireciona as portas do emule para o cliente na rede local
iptables -t nat -A PREROUTING -p tcp --dport 4662 -j DNAT --to 192.168.56.2
iptables -t nat -A PREROUTING -p udp --dport 4672 -j DNAT --to 192.168.56.2
# Limitando acesso aos contatos do messenger por horrio.
iptables -A FORWARD -d 192.168.56.2 -m multiport -p tcp --sport 80,1863 -m string
--string

"MSG

fulano1@hotmail.com"

--algo

kmp

-m

state

--state

RELATED,ESTABLISHED -j DROP
# Executa bloqueio de sites das 21 horas at as 07 horas do dia seguinte.
iptables -A FORWARD -s orkut.com -d 192.168.56.2 -m time --utc --timestart 21:00
--timestop 07:00 -j DROP
# Executa bloqueio do programa messenger entre as 21 horas at as 07 horas do
dia seguinte.
iptables -A FORWARD -d 192.168.56.2 -m layer7 --l7proto msnmessenger -m time
--utc --timestart 21:00 --timestop 07:00 -j DROP
# libera as Portas principais
iptables -A FORWARD -m multiport -p tcp --dport 1:1024 -j ACCEPT

33

iptables -A FORWARD -m multiport -p tcp --sport 1:1024 -j ACCEPT


# Aceita pacotes que sejam relacionadas com outros servios.
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
}
# Para o firewall IPTbles
parar () {
# Limpa as regras da tabela nat.
iptables -F -t nat
# Exclui todas as chains criadas
iptables -X
# Volta a poltica padro para accept.
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
# Limpa todas as regras em todas as chains
iptables -F
}
case "$1" in
"start") iniciar ;;
"stop") parar ;;
"restart") parar ; iniciar ;;
*) echo "Use os parmetros start, stop ou restart"
esac
Tabela 73 - Arquivo com as regras do Firewall IPTables.

34
4.3.3 Entendendo o script.

A principio, definimos as polticas padres do firewall para drop, de modo que por
padro tudo seja dropado, ou seja, o pacote seja simplesmente ignorado. Isso em
todas as chain, INPUT, OUTPUT e FORWARD.
As prximas regras dizem para liberar o comando ping que funciona sob o protocolo
ICMP, porem somente o gateway pode enviar pedidos de ping a maquinas externas.
Ningum da Internet conseguir encontrar o gateway atravs do comando ping.
As regras a seguir criam duas chains, a DNS e a REDE_LOCAL, a utilidade disso
agilizar a atualizao das regras do firewall, porem o maior beneficio organizar a
maneira como o firewall trata os pacotes. Quando um pacote chega ao firewall, ele
identifica o tipo de pacote levando em considerao uma caraterista do pacote, pode
ser a interface de rede, protocolo, porta, em fim, qualquer caracterstica, depois ela
enviada a regra que ir tratar do pacote e dar um destino para o mesmo. Isso a
acontece nas regras.
iptables -A INPUT -p udp --sport 53 -j DNS
iptables -A OUTPUT -p udp --dport 53 -j DNS
iptables -A INPUT -i vboxnet0 -j REDE_LOCAL
iptables -A OUTPUT -o vboxnet0 -j REDE_LOCAL
Tabela 74 - Regras para redirecionar o seqncia do firewall.

Nas duas primeiras regras, a caracterstica o protocolo UDP e a porta 53. Neste
caso o script vai encaminhar o pacote at a regra.

35

# DNS primrio
iptables -A DNS -s 208.67.220.220 -p udp --sport 53 -j ACCEPT
iptables -A DNS -d 208.67.220.220 -p udp --dport 53 -j ACCEPT
# DNS secundrio
iptables -A DNS -s 208.67.222.222 -p udp --sport 53 -j ACCEPT
iptables -A DNS -d 208.67.222.222 -p udp --dport 53 -j ACCEPT
iptables -A DNS -j RETURN
Tabela 75 - Regras para o tratamento de pacotes de DNS.

Aqui o pacote ira ser processado pelo IPTables e se por acaso o mesmo no bater
com nenhuma regra. Ele ira voltar a seqncia padro do script.
J a segunda regra identifica o pacote pela interface de rede em que ele ira sair ou
entrar. A partir disso o script ira direcionar o pacote para outra regra.

# Regras para os pacotes que vo para o gateway provenientes da rede local.


# Acesso ao servio ssh para manuteno
iptables -A REDE_LOCAL -p tcp --dport 22 -j ACCEPT
iptables -A REDE_LOCAL -p tcp --sport 22 -j ACCEPT
# Libera acesso ao servio de DNS no gateway
iptables -A REDE_LOCAL -p udp --dport 53 -j ACCEPT
iptables -A REDE_LOCAL -p udp --sport 53 -j ACCEPT
# Libera acesso ao servido de DHCP
iptables -A REDE_LOCAL -p udp --sport 67 --dport 68 -j ACCEPT
iptables -A REDE_LOCAL -j RETURN
Tabela 76 - Regras para tratamento de pacotes proveniente da rede local.

Nestas regras ser dado o devido tratamento ao pacote.

36
A seguir, vem a regra que faz o NAT, ou seja, o compartilhamento da conexo com
a Internet, de modo que os computadores da rede local possam acessar a Internet
usando apenas um IP valido.
# Cria o compartilhamento atravs de NAT.
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
Tabela 77 - Regra responsvel pela criao do compartilhamento NAT.

As prximas regras liberam o acesso aos repositrios de sistema Linux Ubuntu, de


modo que o mesmo possa ser atualizado. Somente os pacotes provenientes dos
repositrios usando a porta 80 podem passar pelo firewall.
# Libera acesso aos repositrios do gateway Linux Ubuntu.
iptables -A INPUT -s 200.17.202.1 -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -d 200.17.202.1 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -s 208.67.217.132 -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -d 208.67.217.132 -p tcp --dport 80 -j ACCEPT
Tabela 78 - Regras responsveis pelo acesso as repositrios do sistema Linux
Ubuntu.

Agora algumas regras que liberam o encaminhamento de pacotes para que o cliente
especifico, neste caso o cliente esta executando o software emule, usado em
compartilhamento de arquivos p2p. Este software precisa de acesso direto a
Internet.

37

# Libera o encaminhamento das portas do emule por perodo de tempo.


iptables -A FORWARD -p tcp --dport 4662 -m time --utc --timestart 17:00 --timestop
22:00 -j ACCEPT
iptables -A FORWARD -p udp --dport 4672 -m time --utc --timestart 17:00 --timestop
22:00 -j ACCEPT
# Redireciona as portas do emule para o cliente na rede local
iptables -t nat -A PREROUTING -p tcp --dport 4662 -j DNAT --to 192.168.56.2
iptables -t nat -A PREROUTING -p udp --dport 4672 -j DNAT --to 192.168.56.2
Tabela 79 - Encaminhamento de pacotes para um host especifico.

As duas primeiras regras permitem o encaminhamento de pacotes. Tanto da porta


UDP como da porta TCP. Porem com limitao de tempo. As regras a seguir fazer o
encaminhamento propriamente dito. Ela usa a tabela NAT, e faz o pr roteamento de
pacotes, ou seja, substitui o IP de origem pelo IP do cliente na rede local. No
momento da resposta do cliente, acontece o contrario, o IP do cliente substitudo
pelo IP do gateway, assim o pacote pode seguir para a Internet.
Por fim, liberado o encaminhamento de pacotes com destino as portas baixar dos
servios conhecidos. Estas portas vo de 1 at a porta 1024, as portas acima
dessas so consideradas portas altas e no tem uma aplicao especifica. Por isso
interessante vedar o acesso as mesmas. Utilizando ainda as opes para liberar
os pacotes que esto relacionados a conexes existentes.

# libera as Portas principais


iptables -A FORWARD -m multiport -p tcp --dport 1:1024 -m state --state
RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m multiport -p udp --dport 1:1024 -m state --state
RELATED, ESTABLISHED -j ACCEPT
Tabela 80 - Libera as portas principais dos servios conhecidos.

No momento em que o firewall e interrompido, executado uma serie de regras.


iptables -F -t nat

38
Tabela 81 - Limpa as regras da tabela nat.

A principio o eliminado qualquer regra na chain NAT.

iptables -X
Tabela 82 - Apaga todas as chains criadas pelo script.

Elimina todas as chains criadas na momento da execuo do firewall.

iptables -P INPUT ACCEPT


iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
Tabela 83 - Libera a poltica padro.

Volta o estado da poltica padro em todas as chains padres do firewall.

iptables -F
Tabela 84 - Limpa todas as regras em todas as chains.

Limpa todas as regras em todas as chains.


Aps isso, o firewall estar completamente inoperante.
No momento em que for executado o comando para reiniciar o firewall, o script
executa o comando de para e em seguida iniciar o firewall.

4.3.4 Restringindo acesso indevido.

Com alguns mdulos extras do Firewall IPTables, pode-se aumentar as suas


funcionalidades, identificando aplicaes, elevando o nvel do Firewall IPTables para
um firewall nvel 7, ou seja, firewall da camada de aplicao. O modulo layer7 nos da
essa possibilidade.

39
No script do firewall contem algumas possibilidades, uma delas o bloqueio de
contatos do MSN Messenger.

iptables -A FORWARD -d 192.168.56.2 -m multiport -p tcp --sport 80,1863 -m string


--string

"MSG

fulano1@hotmail.com"

--algo

kmp

-m

state

--state

RELATED,ESTABLISHED -j DROP
Tabela 85 - Bloqueia contatos do MSN Messenger.

Nesta regra, combinada com os mdulos multiport, string e state, feito o bloqueio
de contatos do messenger.
Esta regra diz que o usurio que estiver no host 192.168.56.2, no poder enviar
mensagens para fulano1@hotmail.com.
Todos os pacotes que tiver como destino o cliente 192.168.56.2 e que tiver as portas
80 e 1863 usando o protocolo TCP como origem, sendo que contem a string
fulano1@hotmail.com, ser bloqueado, levando em considerao todos os pacotes
relacionados a ele e levando tambm em considerao o destino do mesmo.

# Executa bloqueio de sites das 21 horas at as 07 horas do dia seguinte.


iptables -A FORWARD -s orkut.com -d 192.168.56.2 -m time --utc --timestart 21:00
--timestop 07:00 -j DROP
Tabela 86 - Bloquei o domnio orkut.com por horrio.

Aqui feito um bloqueio por horrio, usando o modulo time. Esta regra diz que
qualquer pacote que for encaminhado para o host 192.168.56.2 proveniente do
domnio orkut.com ser descartado entre as 21 horas e as 07 horas do dia seguinte,
usando a hora local como referencia.
Na regra asseguir, foi usado o modulo layer7 para o bloqueio da aplicao do MSN
Messenger.

40

# Executa bloqueio do programa messenger entre as 21 horas at as 07 horas do


dia seguinte.
iptables -A FORWARD -d 192.168.56.2 -m layer7 --l7proto msnmessenger -m time
--utc --timestart 21:00 --timestop 07:00 -j DROP
Tabela 87 - Bloqueio da aplicao MSN Messenger por horrio.

A regra diz que, qualquer pacote que ser em caminhado para o host 192.168.56.2,
proveniente da aplicao do MSN Messenger ser bloqueado, no horrio das 21
horas as 07 horas do dia seguinte, utilizando o fuso horrio local como referencia.

41
5

CONCLUSO

A segurana algo primordial em uma rede, porem de nada adianta sistemas


sofisticados de segurana ou firewall bem elaborados, se os usurios no
entenderem os problemas que podem ocorrer caso forem imprudentes ao acessar
recursos pouco recomendados ou utilizar-se de senhas de acesso ditas fracas pois
estas podem ser facilmente descobertas por pessoas mal intencionadas. Os
usurios precisam ser instrudos para que no cometam esse tipo de erro e ponham
em risco a segurana da rede.
O Firewall IPTables um forte aliado na segurana de uma rede, possibilita a
criao de regras precisas para qualquer ambiente, seja em limitar acesso dos
usurios da rede a recursos no autorizados, monitorar suas aes e impedir que
algum de fora da rede possa obter acesso no autorizado com a possibilidade de
auditoria das aes executadas.
Para futuras implementaes de um gateway com mais funes, poderia se usado
um software proxy/cache de pginas Web, um cache de DNS para agilizar as
consultas de servidores DNS e conjunto com um servio de DHCP na rede seria
uma soluo completa. Podendo inclusive fazer o papel de QoS (Quality of service
Qualidade de Servio), de modo que os recursos de banda da rede possam ser
melhor aproveitados.

42
REFERNCIAS

CAMPOS, Augusto. O que Linux. BR-Linux. Florianpolis, maro de 2006.


Disponvel em <http://br-linux.org/faq-linux>. Consultado em 09 de junho de 2009.
HUNT, Craig. LINUX:Servidores de rede. Rio de Janeiro: Editora Cincia Moderna
LTDA, 2004.
MORIMOTO. Carlos E. Guia do Hardware; Como criar um firewall e compartilhar
conexo
usando
Iptables.
Disponvel
em:
<http://www.guiadohardware.net/artigos/firewall-IPTables/>. Acessado em: 22 de
abril de 2009.
Provedor
de
internet.
Ipv6.br.
Disponvel
em:<http://ipv6.br/IPV6/AjudaIPV6Provedor>. Acessado em: 06 de junho de 2009.
Roteamento
avanado
em
Linux.
News
Generation.
Disponvel
em<http://www.rnp.br/newsgen/0201/roteamento_linux.html>. Acessado em: 16 de
junho de 2009.
SILVA, Gleydson Mazioli da. Guia Foca GNU/Linux. Disponvel em:
<http://focalinux.cipsga.org.br/guia/avancado/ch-fw-IPTables.htm>. Acessado em: 22
de abril de 2009.
TANENBAUM, Andrew S. Computer Networks. Amsterdam: Vrije Universiteit, 2002.

43
ANEXO

aim Programa de mensagens instantneas.


aimwebcontent Programa de mensagens instantneas do UOL.
applejuic Software p2p da Apple.
ares Software de compartilhamento de arquivos do tipo p2p.
armagetron Jogo de corrida.
battlefield1942 Jogo de tiro.
battlefield2142 Jogo de tiro.
battlefield2 Jogo de tiro.
bgp Protocolo de roteamento.
biff Notificador de novos e-mails.
bittorrent Protocolo de troca de arquivos do tipo p2p.
chikka Software de troca de mensagens do tipo SMS com celulares.
cimd - Protocolo usado na troca de mensagens de celulares do fabricante
Nokia.
ciscovpn Software cliente de VPN da CISCO.
counterstrike-source - Jogo de tiro
cvs Software de troca de arquivos.
dayofdefeat-source - Jogo de tiro.
dhcp Protocolo de configurao de rede.
directconnect Software de troca de arquivos p2p.
dns Protocolo de domnio de nomes.
doom3 - Jogo de tiro.
edonkey - Protocolo de troca de arquivos do tipo p2p.
fasttrack - Protocolo de troca de arquivos do tipo p2p.
finger - Software para obter acesso a informaes de usurios em um
sistema UNIX.
ftp Protocolo de transferncia de arquivos.
gkrellm - Software de monitoramento de hardware.
gnucleuslan - Software de troca de arquivos do tipo p2p para redes locais.
gnutella Protocolo de troca de arquivos do tipo p2p.

44

goboogy - Protocolo de troca de arquivos do tipo p2p.


gopher - Protocolo de pginas web, antecessor ao HTTP.
guildwars - jogo on-line.
h323 Protocolo de voz sobre IP.
halflife2-deathmatch - Jogo on-line
hddtemp Software de monitoramento da temperatura do hardware.
hotline - Antigo protocolo de transferncia de arquivos do tipo p2p.
http Protocolo de pginas web.
http-rtsp - Protocolo de tunelamento via HTTP.
ident - Software de identificao de protocolos
imap - Protocolo de correio eletrnico.
imesh - Protocolo de troca de arquivos do tipo p2p.
ipp - Protocolo de impresso em rede para sistemas UNIX.
irc - Protocolo de chat on-line.
jabber -Protocolo de mensagens instantneas.
kugoo - Software de troca de arquivos do tipo p2p.
live365 - Site de radio on-line.
liveforspeed - Jogo de corrida on-line.
lpd Protocolo antigo de impresso para sistemas UNIX.
mohaa - Jogo de tiro
msn-filetransfer - Transferncia de arquivos em mensageiros do tipo MSN.
msnmessenger - Software de troca de mensagens instantneas do tipo
MSN.
mute Software de transferncia de arquivos p2p.
napster - Software de transferncias de arquivos p2p.
nbns - Protocolo de nomes em redes Windows.
ncp - Protocolo da Novell.
netbios - Protocolo de troca de arquivos entre maquinas Windows.
nntp - Protocolo de noticias on-line.
ntp - Protocolo de hora.
openft - Protocolo de troca de arquivos de tipo p2p.
pcanywhere - Software de acesso remoto da Symantec.
poco Software de troca de arquivos p2p.

45

pop3 - protocolo de correio eletrnico.


pplive - Site de streaming de vdeo.
qq - Protocolo de mensagens instantneas.
quake1 - Jogo de tiro.
quake-halflife - Jogo de tiro.
radmin Software de administrao remota em maquinas Windows.
rdp - Protocolo de administrao remota.
replaytv-ivs - Software de compartilhamento de arquivos de vdeo on-line.
rlogin Software de login remoto.
rtp - Protocolo de rede usado em aplicaes em tempo real.
rtsp - Protocolo de streaming em tempo real.
shoutcast - Software de streaming de udio.
sip Protocolo de voz sobre IP.
skypeout - Protocolo usado no software skype para ligaes a telefones
convencionais.
skypetoskype - Protocolo usado entre ligaes de softwares.
smb Protocolo de compartilhamento de recursos de rede.
smtp - Protocolo de correio eletrnico.
snmp - Protocolo usado em softwares de gerenciamento.
soribada - Protocolo de troca de arquivos p2p.
soulseek - Software de troca de arquivos p2p.
ssdp Protocolo de descoberta de dispositivos plug-and-play.
ssh - Terminal seguro por criptografia.
ssl - Protocolos de criptografia para conexes seguras.
stun - Software usado em servios de voz sobre IP.
subspace - jogo 2D.
telnet Software de terminal remoto.
tftp - Simples protocolo de transferncia de arquivos.
Anexo 1 As possveis opes para o comando l7proto do layer7.

S-ar putea să vă placă și