Iptables Resumo
Iptables Resumo
Iptables Resumo
Resumo e Exercícios
1 Manipulando chains 3
1.1 Controle de uso do Iptables instalado no Linux Fedora 5: . . . . . . . . . . . . . . 3
1.2 Outras opções do iptables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Especicando interfaces de origem/destino . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Especicando um protocolo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5 Especicando portas de origem/destino . . . . . . . . . . . . . . . . . . . . . . . . 5
1.6 Especicando pacotes syn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.7 Especicando fragmentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.8 Especicando uma exceção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.9 Especicando LOG como alvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.10 Firewall com NAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.10.1 Criando chains na tabela nat . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.10.2 Source NAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.10.3 Destination NAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.10.4 Redirecionamento de portas . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.10.5 Exemplos com NAT: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2 Exercícios: 10
2
Capítulo 1
Manipulando chains
Adição de regras :
iptables -t lter -A INPUT -d 192.168.0.10 -j DROP
Adicionar a regra e fazer o teste com o ping e vericar os resultados
$> ping 192.168.0.10
Apagar regras:
$> iptables -t lter -D INPUT 1
$> iptables -D INPUT -d 192.168.0.10 -j DROP
Inserir regras:
$> iptables -t lter -I INPUT 1 -s 192.168.0.10 -d 192.168.0.20 -j ACCEPT
$> iptables -t lter -I INPUT 2 -d 192.168.0.30 -p icmp -j DROP
Substituir regras:
$> iptables -R INPUT 2 -d 192.168.0.30 -p icmp -j ACCEPT
Criação de chains:
iptables [-t tabela] [-N novochain]
$> iptables -t lter -N internet
Para inserir regras no chain internet:
$> iptables -t lter -A internet -s 200.100.200.100 -j DROP
Para criar um jump (pulo) (-j) do chain INPUT para o chain internet :
$> iptables -t lter -A INPUT -j internet
3
CAPÍTULO 1. MANIPULANDO CHAINS 4
Renomear chains:
iptables -t lter -E chain-antigo novo-chain
Não se pode mudar os chains defaults do iptables.
$> iptables -t lter -E internet redeuniversal
Apagar chains:
$> iptables -t lter -X internet
$> iptables -X
ATENÇÃO:
Para bloquear a passagem de tráfego da interface ppp0 para a interface eth1 (da rede
interna):
$> iptables -A FORWARD -i ppp0 -o eth1 -j DROP
• PortaOrigem default = 0
Bloqueia todos os pacotes EXCETO os que iniciam conexões (! syn), EXCETO para pacotes
vindos pela interface eth0 (! -i eth0):
$> iptables -A INPUT -p tcp ! syn -s 200.100.200.100 ! -i eth0 -j DROP
Após isso o seu Linux já está congurado. Agora os clientes da rede precisarão ser congurados
para usar o endereço IP do servidor Linux como GATEWAY. Congure também um servidor
DNS e instale um servidor Proxy (opcionais) para acelerar o desmepenho das requisições/resolução
de nomes das máquinas em rede.
Modica o endereço de origem das máquinas cliente antes dos pacotes serem enviados. Toda
operação de SNAT é feita no chain POSTROUTING
# Modica o endereço IP dos pacotes vindos da máquina 192.168.1.2 da rede interna
# que tem como destino a interface eth1 para 200.200.217.40 (que é o nosso endereço
# IP da interface ligada a Internet).
$> iptables -t nat -A POSTROUTING -s 192.168.1.2 -o eth1 -j SNAT to 200.200.217.40
OBS1: Se por algum motivo não for possível mapear uma conexão NAT, ela será derrubada.
OBS2: Tenha certeza que as respostas podem chegar até a máquina que fez o NAT. Se estiver
fazendo SNAT em um endereço livre em sua rede (como 200.200.217.73).
CAPÍTULO 1. MANIPULANDO CHAINS 8
OBS3: Como notou acima, o SNAT é usado quando temos uma conexão externa com um
ou mais IP's xos. O Masquerading é uma forma especial de SNAT usada para funcionar em
conexões que recebem endereços IP aleatórios (PPP).
OBS4: Não se esqueça de habilitar o redirecionamento de pacotes após fazer suas regra de
NAT com o comando:
echo "1" >/proc/sys/net/ipv4/ip_forward, caso contrário o redirecionamento de paco-
tes não funcionará.
Modica o endereço de destino das máquinas clientes. Muito utilizado para fazer o redireciona-
mento de pacotes, proxyes transparentes e balanceamento de carga. Toda operação de DNAT é
feita no chain PREROUTING.
# Modica o endereço IP destino dos pacotes de 200.200.217.40 vindo da interface eth0 para
192.168.1.2.
$> iptables -t nat -A PREROUTING -s 200.200.217.40 -i eth0 -j DNAT to 192.168.1.2
Também é possível especicar faixas de endereços e portas que serão substituídas no DNAT:
$> iptables -t nat -A PREROUTING -i eth0 -s 192.168.1.0/24 -j DNAT to 200.200.217.40-
200.200.217.50
Idêntico ao anterior, mas faz somente substituições na faixa de portas de destino de 1024 a
5000. A operação acima é a mesma realizada pelo ipmasqadm dos kernels da série 2.2.
OBS1: Se por algum motivo não for possível mapear uma conexão NAT, ela será derrubada.
OBS2: Não se esqueça de conferir se o ip_forward está ajustado para 1:
echo "1" >/proc/sys/net/ipv4/ip_forward
Permite passar conexões com destino a uma porta para outra porta na mesma máquina. O alvo
REDIRECT é usado para fazer esta operação, junto com o argumento to-port especicando a
porta que será redirecionada. Este é o método especíco para se fazer um proxy transparente.
Todas as operações de redirecionamento de portas é realizado no chain PREROUTING e
OUTPUT da tabela nat.
• cat /proc/net/ip_conntrack
CAPÍTULO 1. MANIPULANDO CHAINS 9
Exercícios:
1 - Instalar o iptables no seu Linux e criar um arquivo onde deverão ser colocadas as regras e
chains.
2 - Congurar de modo a bloquear conexões ICMP, TELNET e FTP de entrada.
3 - Limitar as conexões ao serviço SSH de seu servidor e bloquear as demais conexões de fora
para sua máquina.
4 - Habilitar o servidor WEB em porta de conexão não padrão e estabelecer as regras de acesso.
5 - Registrar em LOG o tráfefo do seu Firewall.
6 - Utilizar o script para examinar os LOGs do Firewall Iptables instalado
http://granito2.cirp.usp.br/Firewall/lista.portas.iptables
10