Neste artigo explico as funcionalidades do iptables de uma maneira simples. Desde o que é uma tabela, um chain, até fazer um SNAT. Assim utilizaremos o iptables para proteger nossa rede, ou até mesmo o nosso desktop.
O iptables foi implantado na versão 2.4 do kernel, ele também é conhecido como "NetFilter". Antes do iptables, o firewall nativo do GNU/Linux era o ipchains.
Mas, o que é um firewall? Como o próprio nome já diz, "Fire" + "Wall", ou seja, parede de fogo, onde só vai passar o que você quer.
Vamos imaginar que as informações são escritas em papel e são feitas em forma de bola, para que sua informação chegue até o destino, ela precisa passar por uma grande parede, essa parede contém algumas regras.
Sua informação será "arremessada", então a parede vai conferir suas regras, se a sua informação está na regra com a permissão de "passar", então a parede vai "abaixar" para sua informação passar, e depois vai subir.
Outro conceito válido é um pouco mais técnico, é que o firewall é um servidor que contém determinadas regras e os pacotes que contém informações serão enviados para o destino, passando por ele, se a regra conferir, dizendo que o seu pacote pode passar, então o firewall irá direcionar a sua informação para o destino.
Tendo o conceito básico de firewall, vamos avançar para a parte prática do iptables, mas antes precisamos entender como o iptables funciona.
O iptables tem chains e tables:
Chains: Local onde as regras são armazenadas. Cada chain tem uma funcionalidade, como por exemplo o chain INPUT, que armazena pacotes que chegam a máquina, de fora para dentro.
Tables: as tabelas armazenam os chains. Cada tabela possui uma média de 3 (três) chains. A tabela mais utilizada é a Filter, que contém apenas 3 (três) chains: INPUT, OUTPUT, FORWARD.
[2] Comentário enviado por andre.vmatos em 29/10/2009 - 18:23h
Muito bom mesmo, parabéns. Por incrível que pareça, mecho com linux e segurança há vários anos, e não tinha sacado ainda essa opção -I, pra adicionar as regras no começo. Sempre que precisava, escrevia um script e colocava a regra que queria que tivesse prioridade no começo, o que era muito chato. Mas com essa opção -I, fica muito mais simples. Obrigado mesmo. Lendo a man do iptables, vi também que essa opção -I suporta também a posição da regra. Assim, você pode fazer algo como:
iptables -I INPUT [posição] [regra]
para fazer com que a regra entre na posição específicada. Parabéns novamente. T+
[5] Comentário enviado por mesaque em 29/10/2009 - 21:45h
Parabéns pelo artigo. Entendo pouca coisa de iptables, mas este artigo já melhorou um pouco minha compreensão. Tenho uma dúvida.
Tenho um servidor que uso como gateway da rede e gostaria de usá-lo apenas como firewall. Queria saber se é possível usar outro servidor da rede como proxy.
Na hora de fazer o proxy transparente encaminhar para a porta 3128 de outro pc.
[7] Comentário enviado por y2h4ck em 30/10/2009 - 13:09h
mesaque, tanto 'e possivel quanto e recomendavel :)
Porem, nesse modo nao e possivel que o proxy seja transparente. Voce deve seta-lo no Browser dos hosts da rede, ou entao adicionar o proxy diretamente na configuracao do DHCP.
[9] Comentário enviado por elgio em 31/10/2009 - 09:59h
Opa, y2h4ck e masaque. É possível sim!
Como o servidor de proxy está na mesma rede dos clientes, exige um pouco mais de perícia. Isto porque para fazer as conexões irem para o proxy é muito fácil. Apenas deve-se trocar uma linha que seja mais ou menos assim: