Segurança com iptables

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.

[ Hits: 66.582 ]

Por: Leonardo Damasceno em 29/10/2009 | Blog: https://techcraic.wordpress.com


Conceito básico



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.

    Próxima página

Páginas do artigo
   1. Conceito básico
   2. Sintaxe do iptables, chains e tabelas
   3. Regras e parâmetros
   4. IP Masquerade, SNAT e DNAT
Outros artigos deste autor

I-Educar no Gnu/Linux

Instalando o WebHTB

Adicionando usuário no OpenLDAP

PFSense com Snort

Segurança em seu Linux

Leitura recomendada

Criando um Firewall transparente com Bridges no Debian Etch

Autenticação no Iptables

Como construir um firewall de baixo custo para sua empresa (parte 3)

Bloqueando o UltraSurf e o WebMessenger do Hotmail com Proxy Transparente

Dominando o Iptables (parte 2)

  
Comentários
[1] Comentário enviado por tiagomb em 29/10/2009 - 17:30h

muito bom o artigo....

[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+

[3] Comentário enviado por kelbel em 29/10/2009 - 18:25h

Cara, eu já trabalho com Iptables a tempos, mas este artigo está muito bom.
Muito bem escrito e de forma bem didática para os iniciantes.
Parabéns!

[4] Comentário enviado por hugoalvarez em 29/10/2009 - 19:47h

Gostei de rever a QUEUE e RETURN, são assunto de livro hehehe, pena não ter nenhuma amostra delas em uso, mesmo assim parabéns.

[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.

Não sei se estou sendo ignorante.

Se puder me ajudar ficarei muito agradecido

Abraço

[6] Comentário enviado por grandmaster em 29/10/2009 - 22:26h

guardado nos favoritos :)

---
Renato de Castro Henriques
CobiT Foundation 4.1 Certified ID: 90391725
http://www.renato.henriques.nom.br

[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.


[8] Comentário enviado por mesaque em 30/10/2009 - 13:47h

Obrigado caro amigo.
Não sei como faz, vou dar uma pesquisada, mas se puder dar uma luz agradeço.

Teria algo a ver com a opção 252 do dhcp e configuração de um wpad.dat no apache?

Abraço,

Mesaque

[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:

iptables -t nat -A PREROUTING -i INTERFACE -s IPS -p tcp --dport 80 -j REDIRECT --to 3128

Para uma outra mais ou menos assim:

iptables -t nat -A PREROUTING -i INTERFACE -s IPS -p tcp --dport 80 -j DNAT --to IPDOTEPROXY:3128

Só que se o proxy estiver na mesma rede dos clientes, vai dar problemas pois a resposta não irá para o roteador, mas sim direto ao cliente que o descartará (veja meus comentários em http://www.vivaolinux.com.br/topico/netfilter-iptables/Redirecionamento-de-portas-2/ e http://www.vivaolinux.com.br/topico/Squid-Iptables/Problema-com-redirect-em-Iptables/ )

Neste caso tu "resolve" com um duplo nat:

iptables -t nat -A POSTROUTING -d IPDOPROXY -p tcp --dport 3128 -j MASQUERADE

:-D

[10] Comentário enviado por mesaque em 03/11/2009 - 17:06h

Ok amigo, vou tentar hoje a noite e respondo para ver se deu certo.

Valeu!

Abraço


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts