Desvendando as regras de Firewall Linux Iptables
Este artigo tem como objetivo de mostrar o funcionamento do firewall mais utilizado e famoso do mundo Linux. Iremos descrever o funcionamento das chains, o encaminhamento dos pacotes e descrever como acontece o mascaramento do endereço IP (Nat), tanto de entrada (chega a um IP válido e vai para um IP interno), quanto de saída (de um endereço interno para um endereço válido).
Iptables / firewall / tabelas básicas
Iptables
O funcionamento do firewall é basicamente o seguinte:1. Os pacotes que chegam ao firewall são filtrados através das regras que foram definidas.
2. Roteamento interno (dentro do kernel). Com base no destino do pacote, ele é encaminhado para o "filtro" (chain) apropriado ao roteamento. Explicaremos mais adiante cada um dos filtros "básicos" do iptables.
Firewall
Antes de iniciarmos o detalhamento das chains, iremos mostrar a relação entre firewall e kernel Linux.- Ifwadm --> kernel 2.0
- Ipchains --> Kernel 2.2
- Iptables --> A partir do kernel 2.4
É importante deixar claro que neste tutorial trabalharemos apenas com o firewall iptables.
As tabelas básicas
FilterÉ composta de 3 chains: INPUT, OUTPUT e FORWARD. É a tabela default, isto significa que quando não referenciamos nenhuma chain no comando iptables, a chain filter é chamada. É importante deixar claro que essa chain trata do tráfego normal de dados, isto significa que não há nenhum tipo de mascaramento (NAT) nela.
Nat
É quando temos que mascarar algum endereço IP ou rede. O Nat acontece tanto da rede externa (Internet), para a rede interna (Lan), quanto da Lan para Internet. A tabela "Nat" é composta pelas chains: PREROUTING, OUTPUT e POSTROUTING.
Mangle
Basicamente utilizada para fazer QoS. Não trataremos desse assunto neste tutorial.
A seguir ilustramos as tabelas com suas respectivas chains. Temos abaixo uma representação visual do posicionamento das chains em relação a passagem dos pacotes de dados da tabela "FILTER". Agora vamos explicar o funcionamento de cada uma das chains descritas acima:
- INPUT (Pacotes de Entrada) --> Os pacotes são encaminhados para esta chain quando a origem não é o firewall, mas o destino é o firewall.
- FORWARD (Pacotes de Passagem) --> No caso da FORWARD os encaminhamentos são feitos quando a origem não é o firewall e o destino também não é o firewall. Isto é, o pacote de dados esta apenas passando pelo firewall.
- OUTPUT (Pacotes de Saída) --> Chain responsável pelos pacotes que tem origem no firewall e destino não firewall.
A tabela filter só pode tratar do que passa ou não passa.
Muito bom e elucidativo seu artigo. Parabéns!!
Os diagramas incluídos facilitam também em muito a assimilação do conteúdo. Deve ter dado bastante trabalho a preparação dos mesmos.
Apenas uma modesta observação quanto ao uso dos parâmetros DROP e REJECT.
Ao dar preferência ao uso do parâmetro DROP em vez do REJECT, o usuário estará colocando o seu sistema em modo "Fantasma" ou seja sem dar sinais de sua existência ou presença na rede. Com isto qualquer potencial invasor não receberá indicações de que no endereço IP alvo as portas x, y, z, etc estão bloqueadas, portanto existem e pertencem a determinada máquina. O DROP que apenas descarta o sinal não mostra a presença.
Embora não seja nenhum expert no assunto, estou repassando informação sobre a configuração julgada ideal por um expert no assunto, conforme apresentado no site do mesmo (www.grc.com) no teste de vulnerabilidade online Shields-Up.
Publiquei anteriormente um artigo sobre o uso desta ferramenta confiável de teste em:
http://www.vivaolinux.com.br/artigo/Teste-a-vulnerabilidade-de-seu-PC/
Sds