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.516 ]

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

Instalando o WebHTB

Desmistificando o GNU/Linux

Adicionando usuário no OpenLDAP

Segurança em seu Linux (parte 2)

I-Educar no Gnu/Linux

Leitura recomendada

Script de Firewall com redirecionamento de portas em Linux Debian

Servidor seguro com Bridge, Snort e Guardian

Iptables 1.3.4 com Layer 7 e Kernel 2.6.14 no Debian 3.1

Zentyal 2.0 - Solução completa de segurança open source

IPTABLES - Conceitos e aplicação

  
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