Você está na página 1de 19

IPTABLES

Universidade Federal de Minas Gerais Departamento de Ci encia da Computa ca o Laborat orio de Software Livre 21 de dezembro de 2009

Sum ario
1 Introdu c ao 2 Pr e-requisitos 2.1 Dependencias . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Instala ca o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Funcionamento 3.1 Tabelas / Tables . . . . 3.2 Cadeias / Chains . . . . 3.3 Rela ca o Tables e Chains 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 Utiliza c ao 4.1 Comandos para manipular chains . . . . . . . . 4.2 Comandos para manipular regras de chains . . . 4.2.1 Par ametros de especica ca o de regra . . 4.2.2 Extens ao par ametro protocolo (-p) . . . 4.2.3 Extens ao par ametro match module (-m) 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 Padr ao . . . . . . . . . . . . . . . 5.6 Liberando Ping para um host espec co . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

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

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

6 Ap endice 17 6.1 Tabela ICMP . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 7 Cr editos 19

Introdu c ao

Netlter e um modulo do kernel linux respons avel pelo controle da rede entre computadores, e ele quem controla as fun c oes NAT, Firewall e Log do sistema. Iptables e o nome da ferramenta que controla o modulo netlter do kernel linux, este nome e usualmente utilizado para referenciar as funcionalidades do netlter.

2
2.1

Pr e-requisitos
Dependencias

A instala c ao da ferramenta depende apenas do pacote libc6.

2.2

Instala c ao

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

Funcionamento

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

3.1

Tabelas / Tables

O nome iptables vem do fato de que esta ferramenta trabalha baseada em tabelas, onde cada tabela e especializada em um certo tipo de tratamento para os pacotes. Normalmente as tabelas existentes s ao raw, nat, mangle e lter, sendo a tabela default a lter. T abela Raw Nat Mangle Filter D escri ca o
Faz pequenas mudan cas nos pacotes, usualemte utilizada para colocar marcas. Muda os cabe carios dos pacotes, usualmente utilizada para NAT 1 . Realiza altera c oes especicas nos pacotes, 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 s ao que a divis ao das regras do iptables em conjuntos mais l ogicos, para melhorar o entendimento de como o Netlter processa os pacotes. Este conceito foi implementado j a no Ipchains, mas foi melhorado no iptables.

C adeia D escri ca o INPUT Tr afego que tem como destino a pr opria m aquina FORWARD Tr afego que passante/repassado pela m aquina OUTPUT Tr afego gerado localmente, tanto como destino local quanto remoto PREROUTING Utilizada no tr afego ingressante na m aquina 3 POSTROUTING Utilizada em todo tr afego de sa da da m aquina 4 Observa c ao: A cadeia FORWARD tem um tratamento especial no kernel do Linux, e vem com uma trava fora do rewall, que por padr ao bloqueia
1 2

Network Address Translation Type Of Service: http://en.wikipedia.org/wiki/TOS 3 O tr afego gerado localmente com destino a pr opria maquina tamb em e incluso 4 Inclusive o tr afego gerado localmente com destino local

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

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

Rela c ao Tables e Chains

Como foi dito antes, a ferramenta Iptables trabalha com tabelas e o conceito de cadeias. Uma tabela pode ter uma ou mais abstra c oes de cadeias, podemos discriminar essa rela c ao deste modo:

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 tr afego de pacotes e tratado pelo Iptables apartir do 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 a utilizada caso algum pacote n ao se encaixe em nenhuma das regras estabelecidas. Recomenda-se que a pol tica default seja DROP, ou seja, tudo o que n ao for expressamente permitido ser a descartado (proibido).

3.6

Targets

Toda regra tem um target, ele nada mais e do que a a ca o tomada pela regra em rela ca o ao pacote. As possibilidades s ao:

T arget ACCEPT DROP REJECT USER CHAIN

D escri ca o
O paacote ser a aceito. O pacote ser a destruido. O pacote ser a rejeitado e uma mensagem icmp ser a enviada a ` origem. O pacote ser a enviado para outra chain.

4
4.1

Utiliza c ao
Comandos para manipular chains
D escri ca o
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] D escri ca o
Acrescenta uma regra a uma chain Insere uma regra numa posi c ao da chain Troca posi c ao de regra na chain Apaga regra de uma chain

4.2.1

Par ametros de especica c ao de regra

Os seguintes par ametros s ao os mais utilizados para especica co es em regras, regularmente utilizados nos comandos: add, delete, insert, replace e append.

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

D escri ca o
Especica o endere co de origem Especica o endere co de destino Especica o protocolo Especica a interface de entrada dos pacotes Especica a interface de saida dos pacotes Indica que a regra se aplica s o a fragmentos a partir do segundo pacote Indica qual a a c ao/target deve ser tomada caso a regra seja ativada 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

Extens ao par ametro protocolo (-p)

Os protocolos poss veis s ao TCP,UDP,ICMP,ALL. Cada um deles possuie suas pr oprias extens oes: TCP: Para este protocolo as extens oes s ao:

E xtens ao tcp-ags [mask] [set]6 syn sport [port] dport [port]

D escri ca o
Mask indica as ags que ser ao vigiadase o set indica quais ser ao selecionadas.

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

UDP: Para este protocolo as extens oes s ao: E xtens ao D escri ca o sport [port] Indica a porta UDP de origem dport [port] Indica a porta UDP de destino

ICMP: Para este protocolo as extens oes s ao: E xtens ao icmp-type [typename]7 D escri ca o
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 vari aveis name na tabela ICMP do ap endice

10

4.2.3

Extens ao par ametro match module (-m)

Os modulos mais utilizados s ao MAC, OWNER, STATE. Cada um deles abre uma nova gama de comandos extras: MAC: Para este modulo extens oes s ao: E xtens ao mac-soure [address] OWNER: Para este modulo extens oes s ao: E xtens ao uid-owner [userid] gid-owner [groupid] pid-owner [processid] STATE: Para este modulo extens oes s ao: E xtens ao state [state] Obs:Os estados poss veis s ao: NEW: Indica pacote que cria uma nova conex ao. ESTABLISHED: Indica um pacote que pertence a uma conex ao j a existente. RELATED: Indica um pacote relacionado com uma conex ao j a eexistente. INVALID: Indica um pacote n ao identicado. 11 D escri ca o
Analisa o estado dos pacotes

D escri ca o
Examina o Ethernet MAC address do pacote

D escri ca o
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 permiss ao de super us uario (root). Portanto a inser ca o de todas as regras pode ser feita via shell-script. Alguns exemplos simples do funciomanemto do iptables s ao:

5.1

Listando as regras

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

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 par ametro -t : # 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 e o bloqueio de 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 n umero um, o iptables simplesmente discarta o pacote para essa porta, na regra n umero dois, ele descarta o pacote mas envia uma notica ca o a ` origem deste pacote avisando que ele n ao foi aceito. 13

Lembre-se tamb em que pelo fato de n ao especicarmos uma tabela, a lter e utilizada.

5.3

Apagando uma regra

As duas formas mais utilizadas para apagar regras s ao: simplesmente 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 n ao for especicado uma table, a lter ser a utilizada. 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 e deseja apenas remover a regra de DROP da porta http (80).Para isto: # iptables -t lter -D INPUT 2 A sintaxe geral para este tipo de remo ca o de regra e: # iptables -t [table] -D [chain] [ruleid]

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

14

5.4

Forward de uma porta para uma maquina local

Outra funcionabilidade comum para o iptables e o redirecionamento de porta. Digamos que a topologia da rede necessite que quando chegar uma requisi ca o na porta 80 do host Aseja encaminhado para o host 192.168.1.3 nesta mesma porta. Para realizarmos esta fun c ao, temos que 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 Padr ao

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

15

5.6

Liberando Ping para um host espec co

Como a pol tica padr ao normalmente e DROP, digamos que desejamos que 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

Ap endice
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 R eference 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

Refer encias
[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

Cr editos

Direito Autorais Reservados R Universidade Federal de Minas Gerais Departamento de Ci encia da Computa ca o Raphael Ottoni Santiago Machado de Faria Esta documenta ca o e livre; voc e pode redistribu -la e/ou modic a-la sob os termos da Licen ca P ublica Geral GNU conforme publicada pela Free Software Foundation; tanto na sua vers ao 2, como qualquer vers ao posterior (a seu crit erio). A distribui ca o desta documenta ca o e feita na expectativa de que ela seja u til, por em, sem nenhuma garantia; nem mesmo a garantia impl cita de comerciabilidade ou adequa c ao a uma nalidade espec ca. Consulte a Licen ca P ublica Geral do GNU para mais detalhes.

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

19

Você também pode gostar