Algumas dicas do uso do ipTables

Em todas as regras de iptables listadas aqui, usarei a eth0 como exemplo. Não se esqueçam de alterar conforme as interfaces de suas máquinas.

Nos exemplos que darei aqui os defaults das filas INPUT e OUTPUT foram alterados para DROP, assim para todas as regras serão necessárias duas regras para permitir o tráfego.

Caso a sua rede interna seja confiável, você pode fazer com que a fila de OUTPUT tenha como default a política ACCEPT, assim as regras de firewall bastarão ser criadas na fila de INPUT, ou seja, para controlar o tráfego entrante.

Configurando as regras para a política default

Por default as políticas do iptables é ACCEPT para todas as filas. Você pode alterar estas políticas para DROP, por exemplo, para todas as filas usando o seguinte comando:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

Quando as filas INPUT e OUTPUT têm como default a opção DROP, para cada regra de firewall que você criar, você terá que criar duas regras uma na fila INPUT e uma na fila OUTPUT para permitir o tráfego, ou seja, uma regra para o tráfego entrante e uma regra para o tráfego sainte.

Apagar regras existentes retornando ao default

Para apagar as regras que existam no ipTables, basta fazer o comando flush, como mostrado a seguir:

iptables -F
(ou)
iptables --flush

É uma boa prática, antes de começar a definir novas regras, fazer uma limpeza geral, retornado as regras para o default usando o comando acima.

Apagar regras existentes

Para apagar uma regra de uma fila usando o índice da lista, deve-se usar o comando abaixo

iptables -t nat -D POSTROUTING <id>

Onde voce deve indicar o nome da fila através do parâmetro -t e o <id> que seria a posição dentro da lista, por exemplo: 1 para a primeira regra da lista.

Salvando as regras entre reboots no Ubuntu

No Ubuntu, este serviço é realizado pelo pacote iptables-persistent. Então vamos instalá-lo:

sudo apt-get install iptables-persistent

Depois de instalado, para salvar/restaurar as regras basta usar os parâmetros: save/reload respectivamente:

sudo /etc/init.d/iptables-persistent save 
sudo /etc/init.d/iptables-persistent reload
Alterando o endereço ip de destino

A regra abaixo muda o endereço ip de destino 1.2.3.4 para o endereço 5.6.7.8

iptables -t nat -I OUTPUT --dest 1.2.3.4 -p tcp --dport 80 -j DNAT --to-dest 5.6.7.8

Pode se fazer a mesma regra com uma lista de portas se for necessário, do seguinte modo:

iptables -t nat -I OUTPUT --dest 1.2.3.4 -p tcp --dport 65500:65530 -j DNAT --to-dest 5.6.7.8:65500-65530
Como fazer para o iptables mostrar o número das linhas

O iptables pode listar as regras com a numeração de ordenação das regras, assim se pode inserir uma regra no meio da lista, que por default sempre é colocada como última.

iptables -nL --line-numbers
Como inserir uma regra no meio da lista de regras

Se for necessário acrescentar uma regra no meio da lista de regras se deve usar a seguinte sintaxe.

iptables -I INPUT {LINE_NUMBER} -i eth0 -p tcp --dport 22 -s 1.2.3.4 -j ACCEPT -m comment --comment "Esta regra tem que vir antes das demais"
Exceto onde for informado ao contrário, o conteúdo neste wiki está sob a seguinte licença: Public Domain