Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Slackware na Veia
Por hellanio
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Artigo

Iptables - Segurança total para sua rede
Linux user
phrich
17/01/2012
O objetivo aqui neste artigo não é realizar um estudo profundo do iptables, mas sim aprendermos sobre algumas regras do mesmo e criarmos um script simples, porém seguro, para que a partir daí você possa melhorá-lo à sua maneira.
Por: Phillip Vieira
[ Hits: 11502 ]
Conceito: 9.0   5 voto(s)5 voto(s)5 voto(s)5 voto(s)5 voto(s) + quero dar nota ao artigo

Introdução

O iptables, resumidamente, é um Firewall (Jura??? Eu não sabia...)

Brincadeiras à parte, o iptables é uma maravilhosa ferramenta de segurança para sua rede, que nada mais é do que um 'frontend' para o módulo 'netfilter'.

Como vamos ver mais adiante, o iptables é muito flexível, completo e complexo, porém podemos contar com ele quando o entendemos. O grande segredo do iptables é entender sua sintaxe, saber como, quando e onde inserir uma regra, saber como ele se comporta, etc.

Neste artigo iremos construir um script do iptables, simples, usando apenas a tabela 'Filter' e compartilhamento de internet com a tabela 'Nat'.

Para melhor aproveitamento deste artigo, o leitor deve ter certo conhecimento sobre o iptables, sua sintaxe e conhecimentos sobre redes de um modo geral.

- Leitura recomendada:

Página oficial do iptables: www.netfilter.org

Sobre o iptables: http://pt.wikipedia.org/wiki/Netfilter

Vale a pena também ler o manual do iptables. No terminal digite:

$ man iptables

O que devo saber para criar um script do iptables?

Para começarmos a criar um script do iptables, devemos ter em mente para qual propósito o mesmo vai ser utilizado.

Então vamos responder às seguintes perguntas:
  • Estou procurando segurança?
  • Estou querendo mais segurança?
  • Quero facilidade?
  • Quero confiança?
  • Meu firewall deve bloquear tudo e liberar apenas o necessário?
  • O que vou liberar?

Com repostas para estas perguntas, podemos começar a pensar sobre como elaborar o nosso script.

Vamos ver mais alguns tópicos que vão nos ajudar:
  • Tenha sempre em mente que o ataque pode vir de todos os lados, inclusive da sua rede interna.
  • Faça uma relação de tudo o que você precisa para manter sua rede segura e funcional, por exemplo, quais as portas que você deve liberar, para quais hosts, para quais aplicações, etc.

Próxima página >>




Páginas do artigo
   1. Introdução
   2. Políticas do iptables
   3. Exemplo de script

Outros artigos deste autor

Leitura recomendada

Comentários
[1] Comentário enviado por eldermarco em 17/01/2012 - 17:22h:

Legal o seu artigo. Não trate o assunto de maneira mais detalhada, mas de forma bastante didática. Acho que já passei da hora de estudar esse assunto e o seu artigo me motivou a fazê-lo.

[2] Comentário enviado por phrich em 17/01/2012 - 18:08h:

Fico feliz em saber que pude ajudar.

Estudar é sempre bom, seja em qual assunto for, eu por exemplo, sempre releio alguns livros, tutoriais, dicas, etc, assim posso me lembrar sempre de algo que eu tenha esquecido.

[3] Comentário enviado por danniel-lara em 17/01/2012 - 18:52h:

Parabens pelo artigo
ficou muito bom mesmo


[4] Comentário enviado por phrich em 17/01/2012 - 19:31h:

Obrigado, espero que tenha lhe ajudado em algo.

[5] Comentário enviado por arc em 17/01/2012 - 22:17h:

Ótimo artigo

Mas tem um erro na linha que libera o squid para rede interna, da forma que esta libera para qualquer origem.

Mas ressaltando ficou ótimo e será de grande ajuda para muitos aqui do site.

[6] Comentário enviado por darcanjo em 17/01/2012 - 23:30h:

O artigo ficou ótimo, mas existem dois erros nas regras da chain NAT:

#####ORIGINAL:

# COMPARTILHA A INTERNET #
iptables -t nat -A PREROUTING -s $REDE_INTERNA -o $IFACE_WEB -j MASQUERADE

# REDIRECIONA O ACESSO RDP PARA OUTRO SERVIDOR DENTRO DA REDE INTERNA#
iptables -t nat -A POSTROUTING -p tcp --dport 3389 -j REDIRECT --to 10.0.0.2:33

#####CORRETO:

# COMPARTILHA A INTERNET #
iptables -t nat -A POSTROUTING -s $REDE_INTERNA -o $IFACE_WEB -j MASQUERADE

# REDIRECIONA O ACESSO RDP PARA OUTRO SERVIDOR DENTRO DA REDE INTERNA#
iptables -t nat -A PREROUTING -p tcp --dport 3389 -j REDIRECT --to 10.0.0.2:33


[7] Comentário enviado por phrich em 17/01/2012 - 23:53h:

Pessoal, se houver correções a fazer, por favor fiquem a vontade.

Isto não é um livro e sim um artigo para compartilhar os meus conhecimentos com todos os usuários do vivaolinux.com.br

darcanjo sua colocação está certíssima!

arc vc está certo, eu deveria ter colocado o acesso apenas para a rede interna (falha no erro kkk), mas tudo bem, sinta-se a vontade para corrigir.

Abraços!

[8] Comentário enviado por ecbr em 18/01/2012 - 08:01h:

Tem certeza que isso esta correto?

##############
# REGRAS DE NAT #
#############

# COMPARTILHA A INTERNET #
iptables -t nat -A PREROUTING -s $REDE_INTERNA -o $IFACE_WEB -j MASQUERADE

# REDIRECIONA O ACESSO RDP PARA OUTRO SERVIDOR DENTRO DA REDE INTERNA#
iptables -t nat -A POSTROUTING -p tcp --dport 3389 -j REDIRECT --to 10.0.0.2:3389

[9] Comentário enviado por phrich em 18/01/2012 - 08:40h:

Caro ecbr, o correto seria:

iptables -t nat -A PREROUTING -i $IFACE_WEB -p tcp --dport 3389 -j DNAT --to 192.168.0.2:3389

iptables -t nat -A PREROUTING -o $REDE_INTERNA -o $IFACE_WEB -j MASQUERADE

Obrigado por ter visto o erro.

Eu estava escrevendo o artigo e ao mesmo tempo trabalhando e escrevendo um outro artigo, talvez eu tenha me embolado nas regras ;-)

Mais tarde, postarei novamente o script com as devidas correções ok?

Mais uma vez obrigado a todos!

[10] Comentário enviado por levi linux em 18/01/2012 - 09:55h:

Parabéns phrich, excelente artigo, bastante didático. Assim como o eldermarco fiquei motivado a estudar o iptables. 10, favoritado!

[11] Comentário enviado por izaias em 18/01/2012 - 12:06h:

Phillip,

Assim que preparar todas as modificações, descreva a página, o trecho sobre como está e como quer deixar. OK?
Envie tudo para este e-mail: izac.cf@gmail.com

É bem melhor efetuarmos as correções no próprio artigo do que postá-las nos comentários.
Os trabalhos devem estar corretos para quem faz a leitura, e fora que tem pessoas que nem leem os comentários.

Agradecemos também ao pessoal que está colaborando com as correções.

Esta é a melhor comunidade que existe!

Um abraço a todos.


[12] Comentário enviado por phrich em 18/01/2012 - 12:24h:

Perfeito izaias, vou realizar as correções e lhe enviar.

[13] Comentário enviado por phrich em 21/01/2012 - 11:06h:

Prezados, já foi enviado ao moderador as correções do script, agora ele está certinho ok?

Mais uma vez obrigado a todos!

[14] Comentário enviado por dalveson em 02/02/2012 - 15:29h:

Otimo artigo, para mim ja esta sendo bastante util a tempos que queria organizar um script aqui e nao tinha muito noção de como fazer, este artigo clareu bastante!
tenho algumas duvidas:
1-em outros artigos aqui do viva o linux mesmo, os autores nos orientam a colocar os parametos iptables - F, iptables - Z e iptables - X vc coloca apenas o F para limpar, na sua opniao os demais nao seriam muito uteis ou depende de cada um?
2-Na variavel das Portas UDP e TCP eu posso colocar quantas portas que quiser sem dar problema na regras, ou tenho um limite sei lá tipo 30 portas?


abraços

[15] Comentário enviado por [gregory] em 03/02/2012 - 15:50h:

Boa tarde amigos... gostei muito do post só queria deixar uma dica caso vocês estejam tendo muitas dificuldades com iptables que nem eu.. Uso como regra de firewall o ipfw no freebsd. Ele é muito bom e muito, mas absurdamente simples... Fica a dica pra quem quizer pesquisar sobre o assunto.

[16] Comentário enviado por phrich em 03/02/2012 - 19:29h:

Caro dalveson vamos a suas dúvidas:

O parâmetro -Z é para zerar os contadores.

O parâmetro -X é para deletar uma chain.

O parâmetro -F é para limpar as regras que estão atualmente carregadas.

O módulo multiport suporta até 15 portas em sequência, ou vc pode especificar um intervalo de portas, por exemplo:


A linha abaixo libera as portas especificadas:
iptables -A INPUT -p tcp -m multiport --dports "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15" -j ACCEPT

A linha abaixo substitui a linha acima:
iptables -A INPUT -p tcp -m multiport --dports "1:15" -j ACCEPT

Qualquer dúvida basta consultar o manual, ele é bem detalhado.

#man iptables

Até a próxima!

[17] Comentário enviado por phrich em 03/02/2012 - 19:31h:

Gregory, eu já tive a oportunidade de trabalhar com o ipfw, acho que a maior diferença está na sintaxe mesmo, acho mais uma questão de costume.

Eu particularmente, acostumei com o iptables, qdo usei o ipfw, fiquei meio perdido, mas é muito bom também. :-)

Obrigado por compartilhar com esta dica, afinal somos livres!

[18] Comentário enviado por dalveson em 04/02/2012 - 17:21h:

Boa tarde phrich, obrigado pela atenção dada a minha duvida.
Estou aplicando o exemplo em um ambiente virtual, afinal não tenho muito conhecimento sobre iptables.
Porem estou com uma duvida, quando eu dou um start no firewall não consigo acessar nada na estação, qdo eu dou um stop tudo funciona de boa porem com tudo ACCEPT conforme descrito no script, então fui ate a parte "# CRIA A IDA E VOLTA DO ACESSO NAS CHAINS INPUT, OUTPUT E FORWARD, ASSIM NÃO PRECISAMOS CRIAR A IDA E VOLTA NAS REGRAS" , e adicione NEW ao state ficando assim:

iptables -A INPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

Funcionou de boa porem ta permitindo toda nova conexão sem restrição de portas, por mais que as politicas estejam DROP, se eu retirar o NEW as estação não acessam, vc tem ideia do que estaria acontecendo?

[19] Comentário enviado por phrich em 15/02/2012 - 08:59h:

Caro dalveson teriamos que ver seu script de firewall....

Depois me envie por email ok?

[20] Comentário enviado por beyraq em 16/02/2012 - 14:52h:

Olá, me ajude aqui http://www.vivaolinux.com.br/topico/Redes/iptables-bloqueia-tudo

Obrigado desde já.

[21] Comentário enviado por dalveson em 23/03/2012 - 19:54h:

Boa noite phrich,
Acabei de enviar um e-mail para vc com o script, obrigado pela atenção dedicada.
att

[22] Comentário enviado por xanddydf em 08/05/2012 - 22:32h:

Boa Noite phrich

Estou com o mesmo problema que o dalveson está passando.
Qual foi a solução? você pode me ajudar?
Meu e-mail é carlosalexandre@crtisolutions.com.br
Estou usando Debian Squeeze

Obrigado pela atenção

[23] Comentário enviado por phrich em 08/05/2012 - 22:58h:

Caro xanddydf, já enviei ao seu email, pedi no email que vc abrisse um tópico na comunidade http://www.vivaolinux.com.br/comunidade/Squid-Iptables pois assim teriamos até mais pessoas para lhe ajudar ok?

Assim se eu estiver sem tempo, outras pessoas lhe ajudarão. ;-)


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.