Академический Документы
Профессиональный Документы
Культура Документы
Page 1 of 4
Abordarei nesse artigo algumas definições sobre tabelas, chains, comandos, ações e alvos do iptables para facilitar a
criação de suas regras.
Tabelas
Tabela FILTER
É a tabela responsável pelos filtros dos pacotes. Ela se divide em 3 chains padrão.
INPUT
A chain INPUT é responsável por filtrar todo o tráfego que entra no firewall.
FORWARD
A chain FORWARD é responsável por filtrar todo o tráfego que passará pelo firewall, ou seja, todos os pacotes onde o
NAT será aplicado.
OUTPUT
A chain OUTPUT é responsável por filtrar todo o tráfego que sairá pelo firewall.
Tabela NAT
PREROUTING
A chain PREROUTING é utilizada para alterar pacotes antes que os mesmos sejam roteados.
OUTPUT
POSTROUTING
Tabela MANGLE
É a tabela responsável pela alteração de prioridade na entrada e saída de pacotes, baseando-se no tipo de serviço
(TOS). É dividida em 2 chains.
PREROUTING
OUTPUT
A chain OUTPUT trata pacotes originados localmente no firewall antes que sejam roteados.
Comandos e ações
Comandos
-A
-D
-L
http://www.htmlstaff.org/imprimir.php?id=21373 24/3/2011
htmlstaff.org - Informação para todos! Page 2 of 4
-P
-F
-I
-R
-N
-E
-X
Ações
-p
Especifica o protocolo ao qual a regra se aplicará. Também podemos utilizar o valor numérico que referencia o protocolo
em /etc/protocol. Exemplo: -p gre ; -p 47
-i
Especifica a interface de entrada utilizada pela regra. Pode ser utilizada apenas com as chains INPUT e FORWARD.
Exemplo: -i eth0 ou -i eth+ para especificar todas as entradas.
-o
Especifica a interface de saída utilizada pela regra. Pode ser utilizada apenas com as chains FORWARD e OUTPUT.
Exemplo: -o eth0
-s
Especifica o endereço ou a rede de origem utilizada pela regra. Se não especificarmos a máscara de rede, o iptables
utiliza a máscara padrão da classe C 255.255.255.0. Também podemos utilizar nomes DNS. Exemplo: -s 192.168.0.1; -s
192.168.0.0/255.255.255.0 -s vivaolinux.com.br
-d
Especifica o endereço ou a rede de destino utilizado pela regra. Se utiliza da mesma maneira que a ação -s.
Utilizado para especificar exceções. Exemplo: -s ! 192.168.0.5 # A regra se aplicaria a todos os ips que tivessem origem
diferente de 192.168.0.5.
-j
Utilizado para aplicar um alvo a regra, os mesmos podem ser ACCEPT, DROP, REJECT e LOG. Exemplo: -j ACCEPT
--sport
Especifica a porta de origem utilizada. Só podemos aplicar a ação quando estivermos tratando dos protocolos tcp e udp.
Exemplo: -p tcp --sport 25
--dport
http://www.htmlstaff.org/imprimir.php?id=21373 24/3/2011
htmlstaff.org - Informação para todos! Page 3 of 4
Especifica a porta de destino utilizada. Funciona da mesma forma que a ação --sport. Exemplo: -p tcp --dport 25.
Alvos e módulos
Alvos
Quando temos um pacote que combinou com todas as opções da regra, necessitamos especificar um destino para o
mesmo, como vimos anteriormente podemos especificar os seguintes alvos/destinos:
ACCEPT
DROP
Descarta o pacote.
REJECT
Descarta o pacote, porém diferente de DROP, ele retorna uma mensagem ao emissor informando o que houve com o
pacote.
LOG
RETURN
QUEUE
SNAT
DNAT
REDIRECT
TOS
Módulos
limit
Impõe um limite de vezes que a regra poderá ser executada. state Utiliza o estado da conexão, que pode ser NEW,
ESTABLISHED, RELATED, INVALID. mac Permite a utilização do endereço mac nas regras. multiport Permite a
utilização de até 15 portas em uma única regra em conjunto com o --dport. string Verifica o conteúdo do pacote para
aplicar a regra. owner Verifica o usuário que criou o pacote.
http://www.htmlstaff.org/imprimir.php?id=21373 24/3/2011
htmlstaff.org - Informação para todos! Page 4 of 4
Abaixo exemplos de algumas regras de firewall. Basta utilizar as informações anteriores e adequá-las a sua real
necessidade:
#zera contador
iptables -t filter -Z
iptables -t nat -Z
iptables -t mangle -Z
#INPUT
#libera entrada para serviços locais do firewall
iptables -A INPUT -i lo -j ACCEPT #libera tráfego local
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT #libera Squid
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT #libera DNS
iptables -A INPUT -m state ESTABLISHED, RELATED -j ACCEPT #libera pacotes sincronizados
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT #libera ping.
#OUTPUT
iptables -A OUTPUT -j ACCEPT #libera toda a saída
#FORWARD
iptables -N INT2EXT #Cria chain INT2EXT para tratar a saída do tráfego
iptables -N EXT2INT #Cria chain EXT2INT para tratar a entrada do tráfego.
iptables -A FORWARD -i eth0 -o eth1 -j EXT2INT #aceita tráfego de entrada especificado em EXT2INT
iptables -A FORWARD -i eth1 -o eth0 -j INT2EXT #aceita tráfego de saída especificado em INT2EXT
iptables -A INT2EXT -p tcp -s 192.168.0.10 -j ACCEPT #libera o host 192.168.0.10 a sair por qualquer porta tcp
iptables -A INT2EXT -p tcp -m multiport --dport 25,110 -j ACCEPT #libera envio e recebimento de email para a rede
iptables -A EXT2INT -p tcp --dport 80 -j ACCEPT #libera entrada para serviço web.
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.0.10:80 #direciona tráfego http para para o host 1
iptables -t mangle -A INPUT -p tcp --dport 80 -j TOS --set-tos 16 #prioriza tráfego na porta 80
http://www.htmlstaff.org/imprimir.php?id=21373 24/3/2011