Você está na página 1de 19

IPTABLES

Universidade Federal de Minas Gerais Departamento de Cincia da Computaao e c Laboratrio de Software Livre o 21 de dezembro de 2009

Sumrio a
1 Introduo ca 2 Pr-requisitos e 2.1 Dependencias . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Instalaao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c 3 Funcionamento 3.1 Tabelas / Tables . . . . 3.2 Cadeias / Chains . . . . 3.3 Relaao Tables e Chains c 3.4 Fluxo de tratamento . . 3.5 Pol tica Default . . . . . 3.6 Targets . . . . . . . . . . 3 3 3 3 4 5 5 6 7 8 8

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

4 Utilizao ca 4.1 Comandos para manipular chains . . . . . . . . 4.2 Comandos para manipular regras de chains . . . 4.2.1 Parmetros de especicaao de regra . . a c 4.2.2 Extenso parmetro protocolo (-p) . . . a a 4.2.3 Extenso parmetro match module (-m) a a 5 Exemplos 5.1 Listando as regras . . . . . . . . . . . . . . . . . 5.2 Bloqueando uma porta . . . . . . . . . . . . . . 5.3 Apagando uma regra . . . . . . . . . . . . . . . 5.4 Forward de uma porta para uma maquina local 5.5 Dendo regra Padro . . . . . . . . . . . . . . . a 5.6 Liberando Ping para um host espec co . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

9 . 9 . 9 . 9 . 10 . 11 12 12 13 14 15 15 16

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

6 Apndice e 17 6.1 Tabela ICMP . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 7 Crditos e 19

Introduo ca

Netlter um modulo do kernel linux responsvel pelo controle da rede e a entre computadores, ele quem controla as funes NAT, Firewall e Log e co do sistema. Iptables o nome da ferramenta que controla o modulo nete lter do kernel linux, este nome usualmente utilizado para referenciar as e funcionalidades do netlter.

2
2.1

Pr-requisitos e
Dependencias

A instalao da ferramenta depende apenas do pacote libc6. ca

2.2

Instalao ca

O pacote Iptables j vem instalado por default em varias distribuioes a c GNU/Linux, a ultima verso do ubuntu ( 9.04 ) tambem segue esta ideia. a Porem se for preciso instalar-la, basta executar: # aptitude install iptables

Funcionamento

O iptables se baseia em pares de regras e aes. As regras denem em co quais pacotes atuar (Ex: pacotes originados de uma rede em espec co) e a aao dene qual atitude deve ser tomada quando um pacote bater com c a regra em questo (Ex: recusar pacotes de origens duvidosas). O netlter a ir processar todas as regras sequencialmente, e quando encontrar uma que a especique um dado pacote, ele atuar com a ao par daquela regra. Caso a ca No encontre uma regra, a regra Default da chain ser utilizada. As aes a a co podem ser terminativas ou no. Por exemplo, uma aao que diz ao netlter a c para ignorar um pacote executada e nenhuma outra executada. Esta e e e uma ao terminativa. Por outro lado, uma aao especicando para apenas ca c noticar a existncia de um pacote, faz seu papel e diz ao netlter para e continuar processando as demais regras (Ex: fazer log quando certo pacote passa pela mquina). a

3.1

Tabelas / Tables

O nome iptables vem do fato de que esta ferramenta trabalha baseada em tabelas, onde cada tabela especializada em um certo tipo de tratamento e para os pacotes. Normalmente as tabelas existentes so raw, nat, mangle e a lter, sendo a tabela default a lter. T abela Raw Nat Mangle Filter Descriao c
Faz pequenas mudanas nos pacotes, c usualemte utilizada para colocar marcas. Muda os cabearios dos pacotes, c usualmente utilizada para NAT 1 . Realiza alteraes especicas nos pacotes, co usualmente utilizada para aplicar TOS 2 Utilizada para Filtragem dos pacotes.

3.2

Cadeias / Chains

No Iptables existe o conceito de cadeias ou chains. Essas cadeias nada mais so que a diviso das regras do iptables em conjuntos mais lgicos, a a o para melhorar o entendimento de como o Netlter processa os pacotes. Este conceito foi implementado j no Ipchains, mas foi melhorado no iptables. a

C adeia Descriao c INPUT Trfego que tem como destino a prpria mquina a o a FORWARD Trfego que passante/repassado pela mquina a a OUTPUT Trfego gerado localmente, tanto como destino local quanto remoto a PREROUTING Utilizada no trfego ingressante na mquina 3 a a POSTROUTING Utilizada em todo trfego de sa da mquina 4 a da a Observao: A cadeia FORWARD tem um tratamento especial no kernel ca do Linux, e vem com uma trava fora do rewall, que por padro bloqueia a
1 2

Network Address Translation Type Of Service: http://en.wikipedia.org/wiki/TOS 3 O trfego gerado localmente com destino a prpria maquina tambm incluso a o e e 4 Inclusive o trfego gerado localmente com destino local a

trfego por ela. Para permitir seu funcionamento, necessrio congurar o a e a parmetro net.ipv4.ip forward do kernel do Linux. Para fazer isto, basta a utilizarmos da ferramenta sysctl : # sysctl -w net.ipv4.ip forward=1 Para vericarmos se o parmetro foi especicado corretamente basta a vericarmos o arquivo ip forward : cat /proc/sys/net/ipv4/ip forward Obs: Este bit de controle resetado e

no boot para 0. Para resolver este problema basta editar o arquivo /etc/sysctl.conf e descomentar a linha: # net.ipv4.ipi forward = 0 Mudando para : net.ipv4.ipi forward = 1

3.3

Relao Tables e Chains ca

Como foi dito antes, a ferramenta Iptables trabalha com tabelas e o conceito de cadeias. Uma tabela pode ter uma ou mais abstraes de co cadeias, podemos discriminar essa relao deste modo: ca

T abela C adeias Raw PREROUTING, OUTPUT Nat PREROUTING, OUTPUT, POSTROUTING Mangle INPUT, FORWARD, POSTROUTING, PREROUTING, OUTPUT Filter INPUT, FORWARD, OUTPUT

3.4

Fluxo de tratamento

Fluxo de como o trfego de pacotes tratado pelo Iptables apartir do a e kernel 2.6.17:

Figura 1: Fluxo de tratamento de pacotes

3.5

Pol tica Default

Pol tica default do iptables consiste na regra que ser utilizada caso algum a pacote no se encaixe em nenhuma das regras estabelecidas. Recomenda-se a que a pol tica default seja DROP, ou seja, tudo o que no for a expressamente permitido ser descartado (proibido). a

3.6

Targets

Toda regra tem um target, ele nada mais do que a aao tomada pela regra e c em relaao ao pacote. As possibilidades so: c a

T arget ACCEPT DROP REJECT USER CHAIN

Descriao c
O paacote ser aceito. a O pacote ser destruido. a O pacote ser rejeitado e uma mensagem icmp ser enviada ` origem. a a a O pacote ser enviado para outra chain. a

4
4.1

Utilizao ca
Comandos para manipular chains
Descriao c
Cria uma chain Apaga uma chain Muda a pol tica default de uma chain Lista as regras de uma chain Apaga todas as regras de uma chain Limpa todos os contadores de bytes e pacote de uma chain

C omando -N [chain] -X [chain] -P [chain] [target] -L [chain] -F [chain] -Z [chain]

4.2

Comandos para manipular regras de chains


C omando -A [chain] -I [chain] [rulenum] -R [chain] [rulenum] -D [chain] Descriao c
Acrescenta uma regra a uma chain Insere uma regra numa posio da chain ca Troca posio de regra na chain ca Apaga regra de uma chain

4.2.1

Parmetros de especicao de regra a ca

Os seguintes parmetros so os mais utilizados para especicaoes em a a c regras, regularmente utilizados nos comandos: add, delete, insert, replace e append.

P armetro a -s [address] -d [address] -p [protocolo]5 -i [input name] -o [output name] -f -j [target] -g [chain] -m [modulename]
5

Descriao c
Especica o endereo de origem c Especica o endereo de destino c Especica o protocolo Especica a interface de entrada dos pacotes Especica a interface de saida dos pacotes Indica que a regra se aplica s a fragmentos a partir do segundo pacote o Indica qual a ao/target deve ser tomada caso a regra seja ativada ca Especica que o processo deve continuar em uma outra user-chain especica Especica o uso de um modulo extendido

TCP, UDP, ICMP, ALL

4.2.2

Extenso parmetro protocolo (-p) a a

Os protocolos poss veis so TCP,UDP,ICMP,ALL. Cada um deles possuie a suas prprias extenses: o o TCP: Para este protocolo as extenses so: o a

E xtenso a tcp-ags [mask] [set]6 syn sport [port] dport [port]

Descriao c
Mask indica as ags que sero vigiadase o set indica quais sero selecionadas. a a

Examina a ag TCP SYN Indica a porta TCP da origem Indica a porta TCP de destino

UDP: Para este protocolo as extenses so: o a E xtenso a Descriao c sport [port] Indica a porta UDP de origem dport [port] Indica a porta UDP de destino

ICMP: Para este protocolo as extenses so: o a E xtenso a icmp-type [typename]7 Descriao c
Examina os tipos de icmp

6 7

As Mascaras e o set/conjunto podem ser: SYN,ACK,FIN,RST,URG,PSH,ALL,NONE Ver as variveis name na tabela ICMP do apndice a e

10

4.2.3

Extenso parmetro match module (-m) a a

Os modulos mais utilizados so MAC, OWNER, STATE. Cada um deles a abre uma nova gama de comandos extras: MAC: Para este modulo extenses so: o a E xtenso a mac-soure [address] OWNER: Para este modulo extenses so: o a E xtenso a uid-owner [userid] gid-owner [groupid] pid-owner [processid] STATE: Para este modulo extenses so: o a E xtenso a state [state] Obs:Os estados poss veis so: a NEW: Indica pacote que cria uma nova conexo. a ESTABLISHED: Indica um pacote que pertence a uma conexo j a a existente. RELATED: Indica um pacote relacionado com uma conexo j a a eexistente. INVALID: Indica um pacote no identicado. a 11 Descriao c
Analisa o estado dos pacotes

Descriao c
Examina o Ethernet MAC address do pacote

Descriao c
Aceita pacotes criados pelo user id Aceita pacotes criados pelo group id Aceita pacotes criados pelo processo pid

Exemplos

Os comandos de iptables devem ser executados em um shell com permisso de super usario (root). Portanto a inserao de todas as regras a u c pode ser feita via shell-script. Alguns exemplos simples do funciomanemto do iptables so: a

5.1

Listando as regras

A tabela default do iptables a FILTER, portanto para mostrar as e regras de cada chain desta tabela basta executar: # iptables -L Se no h ainda nenhuma regra nesta tabela a saida dever ser algo como : a a a

Chain INPUT (policy ACCEPT) target prot opt source Chain FORWARD (policy ACCEPT) target prot opt source Chain OUTPUT (policy ACCEPT) target prot opt source

destination

destination

destination

Para listar as regras de cada chain de uma outra tabela espec ca, deve-se explicitar-la com o parmetro -t: a # iptables -L -t mangle

12

Sa da:

Chain PREROUTING (policy ACCEPT) target prot opt source Chain INPUT (policy ACCEPT) target prot opt source Chain FORWARD (policy ACCEPT) target prot opt source Chain OUTPUT (policy ACCEPT) target prot opt source Chain POSTROUTING (policy ACCEPT) target prot opt source

destination

destination

destination

destination

destination

Como esperado, mostrou as cinco chains que a tabela mangle implementa.

5.2

Bloqueando uma porta

Uma das funcionabilidades mais utilizadas no iptables o bloqueio de e portas. Para este exemplo, digamos que queremos bloquear a porta ssh (22) de nossa maquina.O comando seria: # iptables -A INPUT -p tcp dport 22 -j DROP ou simplesmente: # iptables -A INPUT -p tcp dport 22 -j REJECT Obs: As duas regras possuem praticamente a mesma nalidade, bloquear o acesso externo a porta 22 de nossa maquina. Porem na regra nmero um, o u iptables simplesmente discarta o pacote para essa porta, na regra nmero u dois, ele descarta o pacote mas envia uma noticaao a origem deste pacote c ` avisando que ele no foi aceito. a 13

Lembre-se tambm que pelo fato de no especicarmos uma tabela, a lter e a utilizada. e

5.3

Apagando uma regra

As duas formas mais utilizadas para apagar regras so: simplesmente a apagar todas as regras de uma tabela de uma unica vez ou apagar uma regra espec ca de uma chain de uma determinada tabela. Para apagar todas as regras de uma tabela, basta utilizarmos o iptables com a seguinte sintaxe: # iptables -t [table] -F Lembrando que se no for especicado uma table, a lter ser utilizada. a a Agora, imagine que sua tabela lter esteja do seguinte modo :

Chain INPUT (policy target prot opt DROP tcp -DROP tcp -DROP tcp --

ACCEPT) source anywhere anywhere anywhere

destination anywhere anywhere anywhere

tcp dpt:smtp tcp dpt:http tcp dpt:ssh

Chain FORWARD (policy ACCEPT) target prot opt source Chain OUTPUT (policy ACCEPT) target prot opt source

destination

destination

Digamos que voc deseja apenas remover a regra de DROP da porta http e (80).Para isto: # iptables -t lter -D INPUT 2 A sintaxe geral para este tipo de remoao de regra : c e # iptables -t [table] -D [chain] [ruleid]

Onde o ruleid indica qual a regra dentro da chain. Este indenticador e e apenas o nmero da linha em que a regra se encontra na chain contado de u cima para baixo.

14

5.4

Forward de uma porta para uma maquina local

Outra funcionabilidade comum para o iptables o redirecionamento de e porta. Digamos que a topologia da rede necessite que quando chegar uma requisiao na porta 80 do host Aseja encaminhado para o host c 192.168.1.3 nesta mesma porta. Para realizarmos esta funo, temos que ca alterar as regras de iptables do host A, devemos lembrar que possivelmente a pol tica default das tables sejam de DROP, portanto temos que primeiramente liberar a porta: # iptables -A INPUT -p tcp destination-port 80 -j ACCEPT

# iptables table nat -A POSTROUTING -o eth0 -j MASQUERADE Feito isto resta apenas realizar o redirecionamento propriamente dito:
# iptables -t nat -A PREROUTING -i eth0 -p tcp dport 80 -j DNAT to-dest 192.168.1.3:80 # iptables -A FORWARD -p tcp -i eth0 dport 80 -d 192.168.1.3 -j ACCEPT

Obs: Deve-se lembrar de que o ip forward deve estar denido como 1para q isto funcione.

5.5

Dendo regra Padro a

As regras padres, como dito antes, denem as atitudes que devem ser o tomadas quando no encontrada uma regra para um pacote espec a e co em uma chain. Para denir estas politicas padres basta seguir o modelo: o # iptables -P [chain] [target] Por exemplo para denir como pol tica padro o DROP para a chain a INPUT: # iptables -P INPUT DROP

15

5.6

Liberando Ping para um host espec co

Como a pol tica padro normalmente DROP, digamos que desejamos que a e apenas o host 192.168.1.2 possa receber respostas de ping da nossa maquina. Para isto basta executarmos:
# iptables -A INPUT -s 192.168.1.2 -i eth0 -p icmp -m icmp icmp-type 8 -j ACCEPT

16

6
6.1

Apndice e
Tabela ICMP
T ype 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20-29 30 31 32 33 34 35 36 37 38 39 40 41

N ame Reference Echo Reply [RFC792] Unassigned [JBP] Unassigned [JBP] Destination Unreachable [RFC792] Source Quench [RFC792] Redirect [RFC792] Alternate Host Address [JBP] Unassigned [JBP] Echo [RFC792] Router Advertisement [RFC1256] Router Solicitation [RFC1256] Time Exceeded [RFC792] Parameter Problem [RFC792] Timestamp [RFC792] Timestamp Reply [RFC792] Information Request [RFC792] Information Reply [RFC792] Address Mask Request [RFC950] Address Mask Reply [RFC950] Reserved (for Security) [Solo] Reserved (for Robustness Experiment) [ZSu] Traceroute [RFC1393] Datagram Conversion Error [RFC1475] Mobile Host Redirect [David Johnson] IPv6 Where-Are-You [Bill Simpson] IPv6 I-Am-Here [Bill Simpson] Mobile Registration Request [Bill Simpson] Mobile Registration Reply [Bill Simpson] Domain Name Request [RFC1788] Domain Name Reply [RFC1788] SKIP [Markson] Photuris [RFC2521] ICMP messages utilized by experimental [RFC4065] mobility protocols such as Seamoby 42-255 Reserved [JBP] 17

Referncias e
[1] http://en.wikipedia.org/wiki/Type of Service [2] http://www.faqs.org/docs/iptables/ [3] http://ornellas.apanela.com/dokuwiki/pub:pt-br:linuxfwrt [4] I Workshop do POP-MG Firewall/Iptables

18

Crditos e

Direito Autorais Reservados R Universidade Federal de Minas Gerais Departamento de Cincia da Computaao e c Raphael Ottoni Santiago Machado de Faria Esta documentaao livre; voc pode redistribu e/ou modic-la sob os c e e -la a termos da Licena Pblica Geral GNU conforme publicada pela Free c u Software Foundation; tanto na sua verso 2, como qualquer verso posterior a a (a seu critrio). e A distribuiao desta documentaao feita na expectativa de que ela seja c c e util, porm, sem nenhuma garantia; nem mesmo a garantia impl e cita de comerciabilidade ou adequao a uma nalidade espec ca ca. Consulte a Licena Pblica Geral do GNU para mais detalhes. c u

http://creativecommons.org/licenses/GPL/2.0/ http://creativecommons.org/licenses/GPL/2.0/legalcode.pt

19

Você também pode gostar