Documente Academic
Documente Profesional
Documente Cultură
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
RESUMO
4
1
INTRODUO
1.1
OBJETIVO GERAL
5
1.2
OBJETIVOS ESPECFICOS
1.3
JUSTIFICATIVA
6
1.4
METODOLOGIA
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
2.1.1 O IPv4
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
2.3
LINUX
2.4
FIREWALL
2.4.1 Stateful
10
2.4.2 Stateless
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)
As chains padres so
12
FORWARD Usando esta chain dizemos ao pacote que ele deve ser
repassado a outro destino, ou seja, no entra no computador firewall.
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.
13
3.1.3 Comandos
-D
Exclui um regra.
-L
iptables -L
Tabela 3 - Exibe todas as regras em vigor no firewall.
-P
14
-F
iptables -F
Tabela 5 - Limpa todas as regras em vigor no firewall.
-I
-R
-N
iptables -N rede_local
Tabela 8 - Cria uma nova chain chamada rede_local.
-R
-t
Especifica a tabela a ser usada. Este item pode ser omitido caso a
-i
-o
15
-s
-d
-p
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
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.
Esta
opo
faz
identifica
as
16
-p tcp --syn
-j
--sport
--dport
-m
mdulos externos,
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
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
-m owner
-m owner gid-owner
-m state
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
-m limit
-m time
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
-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
deve vigorar. Aqui podemos indicar o dia entre 1 a 31. As datas devem ser
separadas por vrgula.
-m time --weekday
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.
-m layer7
20
--algo
21
4
DESENVOLVIMENTO
4.1
INSTALAO DO IPTABLES
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.
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.
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
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.
24
Networking ---> Networking options ---> [*] Network packet filtering Framework
(Netfilter) ---> Core Netfilter Configuration
Tabela 50 - Caminho para a configurao do 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.
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.
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.
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
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
#net.ipv4.ip_forward=1
Tabela 65 - Linha do arquivo sysctl.conf antes da alterao
net.ipv4.ip_forward=1
Tabela 66 - Linha do arquivo sysctl.conf depois da alterao.
28
4.3.1 Arquivo de inicializao do Firewall IPTables.
gedit /etc/init.d/firewall
Tabela 67 - Comando para criar o arquivo firewall usando o gedit
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.
E para reiniciar.
/etc/init.d/firewall restart
Tabela 72 - Comando para reiniciar o firewall.
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
31
32
"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
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.
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.
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
38
Tabela 81 - Limpa as regras da tabela nat.
iptables -X
Tabela 82 - Apaga todas as chains criadas pelo script.
iptables -F
Tabela 84 - Limpa todas as regras em todas as chains.
39
No script do firewall contem algumas possibilidades, uma delas o bloqueio de
contatos do MSN Messenger.
"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.
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
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
42
REFERNCIAS
43
ANEXO
44
45