Esse artigo aborda a parte teórica do iptables (firewall para Linux). Nele (artigo) procuro explicar todos os elementos necessários para criação de uma regra de filtragem de pacote.
Composição das regras do iptables: tabelas, opções e chains
Tabelas
São os locais usados para armazenar os chains. As tabelas são referenciadas em uma regra iptables com a opção "-t tabela". Existem 3 tabelas disponíveis:
filter - tabela padrão, usada no tráfego de dados comum com ocorrência de NAT (geração de outra conexão);
nat - usada quando há ocorrência de NAT (geração de outra conexão);
mangle - raramente usada, utilizada para alterações especiais de pacotes.
Se você deixar em branco [-t tabela], a tabela usada será a filter.
Opções
Representada por uma letra sempre escrita em maiúscula.
-P = define uma regra padrão;
-A = acrescenta uma nova regra às existentes;
-D = apaga uma regra;
-L = lista as regras existentes;
-F = apaga todas as regras;
-I = insere uma nova regra;
-h = mostra a ajuda;
-R = substitui uma regra;
-C = chega as regras existentes;
-Z = zera uma regra especifica;
-N = cria uma nova regra com um nome;
-X = exclui uma regra específica pelo seu nome.
Chains
Com eles podemos especificar a situação do tratamento dos pacotes, seja qual tabela for, exemplo: para tabelas filter temos as seguintes tipos de chains:
INPUT - consultado para dados que chegam ao computador;
OUTPUT - consultado para dados que saem do computador;
FORWARD - consultado para dados que são redirecionados para outra interface de rede ou outra máquina.
Já para as tabelas nat os chains possíveis são:
PREROUTING - consultado para os dados que precisam ser modificados logo que chegam (DNAT e redirecionamento de portas);
POSTROUTING - consultado para dados que precisam ser modificados após o tratamento de roteamento (SNAT e IP Masquerading);
OUTPUT - consultado quando os dados gerados localmente precisam ser modificados antes de serem roteados (IPs locais).
Para as tabelas mangle usamos os seguintes chains: INPUT, FORWARD, PREROUTING, POSTROUTING, OUTPUT. Como dito anteriormente, esse tipo de tabela é raramente usada (alterações especiais de pacotes).
[1] Comentário enviado por White_Tiger em 01/09/2006 - 10:20h
Cara. Tenho de te elogiar. Esse artigo ajuda muita gente a entender como funciona o firewall. Acho que vc poderia incrementar ele com expluicações sobre o prerouting com redirect que eh algo que vive tirando o povu do sério.
[2] Comentário enviado por ijv314 em 01/09/2006 - 11:34h
Ótimo artigo. A um tempo atrás precisei de informações nesse nivel e tive que quebrar um pouco a cabeça. Com certeza esse artigo me ajudou a entender melhor o funcionamento dessa importante ferramenta para o gerenciamento de redes.
[4] Comentário enviado por brunokino em 03/09/2006 - 10:23h
Nossa, Muito bom, parabéns, informações de nivel é super importante. Continue assim, compartilhando conhecimentos. :-) esse é o verdadeiro espirito Open Source :-)
[5] Comentário enviado por rrinfor em 04/09/2006 - 13:58h
Sou novato em gerenciamento de redes Linux, e lêr o seu artigo foi de extrema importância para mim, agora tenho uma forte introdução sobre o assunto, o que me dar mais liberdade para evoluir em conhecimento sobre o mesmo.
[9] Comentário enviado por rogerio_gentil em 04/07/2008 - 16:56h
Eu estava com muitas dúvidas sobre iptables. Lendo o artigo, consegui entender melhor a sintaxe das regras e do comando. Para quem esta iniciando, como eu, é uma ótima leitura.