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"