Firewall iptables com NAT

Este artigo traz e explica um exemplo de script de firewall com NAT totalmente funcional.

[ Hits: 95.029 ]

Por: Cristyan Giovane de Souza Santos em 27/02/2007


EXT-INT.sh, INT-EXT.sh E INPUT.sh



EXT-INT.sh

No arquivo EXT-INT.sh devemos inserir as regras que liberarão as entradas externas nas portas desejadas.

O exemplo abaixo cria o EXT2INT e libera o ip especificado para acesso a porta do VNC e do VPN.

Adicione as regras de acordo com a sua necessidade, sempre informando o ip de origem e a porta que irá acessar.

#################################################
# Liberar acessos Externos

iptables -N EXT2INT

#ACESSO VNC

iptables -A EXT2INT -p tcp -s 200.xxx.xxx.xxx --dport 5800 -j ACCEPT
iptables -A EXT2INT -p tcp -s 200.xxx.xxx.xxx --dport 5900 -j ACCEPT


#ACESSO VPN
iptables -A EXT2INT -p tcp -s 200.xxx.xxx.xxx --dport 1723 -j ACCEPT
iptables -A EXT2INT -p 47 -s 200.xxx.xxx.xxx -j ACCEPT
#################################################

INT-EXT.sh

No arquivo INT-EXT.sh devemos inserir as regras que autorizam a saída interna para a internet.

O exemplo abaixo cria o INT2EXT e as regras para acesso total a internet e a saída em porta de serviços específicos como email (pop e smtp), vnc, ftp, dns.

#######################################
#Liberar Saída Interna

iptables -N INT2EXT


#***************************************************#
#LIBERA ACESSO TOTAL PARA MAQUINAS INTERNAS
#***************************************************#

iptables -A INT2EXT -p tcp -s 192.168.0.10 -j ACCEPT
iptables -A INT2EXT -p udp -s 192.168.0.10 -j ACCEPT


#***************************************************#
# LIBERA ENVIO E RECEBIMENTO DE E-MAIL
#***************************************************#

iptables -A INT2EXT -p tcp -m multiport --dports 25,110 -j ACCEPT


#***************************************************#
#LIBERA SAÍDA NAS PORTAS
#***************************************************#

#VNC
iptables -A INT2EXT -p tcp --dport 5900 -j ACCEPT
iptables -A INT2EXT -p tcp --dport 5800 -j ACCEPT

#FTP
iptables -A INT2EXT -p tcp --dport 21  -j ACCEPT
iptables -A INT2EXT -p udp --dport 21  -j ACCEPT

#DNS
iptables -A INT2EXT -p udp --dport 53  -j ACCEPT
iptables -A INT2EXT -p tcp --dport 53  -j ACCEPT

iptables -A INT2EXT -p icmp -j ACCEPT
#############################################

INPUT.sh

No INPUT.sh devemos colocar as portas que poderão ser acessadas por qualquer IP ou limitadas a rede interna.

##############################################
#Regras de INPUT

#Libera entrada definida no arquivo EXT-INT.sh
iptables -A INPUT -i eth0 -j EXT2INT

#REJEITA PACOTES INVÁLIDOS
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

#ACEITA PACOTES SINCRONIZADOS
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#ACEITA PACOTES LOCAL
iptables -A INPUT -i lo -j ACCEPT

#Bloqueia Broadcast
iptables -A INPUT -p tcp -d 192.168.0.255 -j DROP
iptables -A INPUT -p tcp -d 255.255.255.255 -j DROP

# reset auth packets
iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset

# Libera Webmin para rede
iptables -A INPUT -p tcp -i eth1 --dport 10000 -j ACCEPT

# Libera SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Libera SQUID para rede
iptables -A INPUT -p tcp -i eth1 --dport 3128 -j ACCEPT

# Libera ftp para rede
#iptables -A INPUT -p tcp -i eth1 --dport 21 -j ACCEPT

# Libera HTTP
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

#Libera ping
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

#Libera Traceroute
iptables -A INPUT -p udp --dport 33434 -j ACCEPT
Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. EXT-INT.sh, INT-EXT.sh E INPUT.sh
   3. FORWARD.sh, OUTPUT.sh e NAT-IN.sh
   4. FIREWALL.sh
Outros artigos deste autor

Montando regras iptables

Squid autenticando em Windows 2003 com msnt_auth

Leitura recomendada

Addon URL Filter - Filtrando URLs no seu firewall

Incremente o iptables com patch-o-matic

Squid + iptables (método ninja)

Fusion Firewall - Uma alternativa para Firewall-Proxy gerenciado via web

NAT com firewall - simples, rápido e funcional

  
Comentários
[1] Comentário enviado por tenchi em 27/02/2007 - 23:42h

Opa, boa dica.
Sei que não é o lugar apropriado, mas gostaria de saber sse alguém aí saberia resolver o meu problema:
Possuo um computador que está atrás de um roteador. E eu preciso mesmo acessar esse computador, mas o roteador "não deixa".
É assim:
O meu modem 'e um siemens 4200, e está roteado, como disse.
Acontece que eu preciso acessar a máquina sob o roteador (na verdade é só uma porta dela). Essa porta é a do ssh.
Normalme nte o ssh usa a 22, mas eu o configurei pra usar uma bem alta (9999), por causa dessa frescura da BrasilTelecom.
Bem, esse não é o problema.
É assim: O modem não atribui IPs por dhcp ,pois eu configurei um IP fixo pra minha máquina. Isso pra usar redirecionamento de portas. Mas mesmo redirecionando, não deu em nada (depois eu comento o problema).
Então eu pesquisei um pouco sobre esse negócio de nat, e pensei eu usar isso pra fazer com que o meu pc ficasse visível na rede externa, mas não conseguir configurar esse nat para o meu modem.
O que eu quero é o seguinte: Alguém aí sabe se existe uma solução para este problema? pode ser usando NAT, redirecionamento de portas, atualizar o firmware desse modem, sei lá.
Como foi possível verificar, eu sou um completo leigo nesse assunto de redes, então espero que compreendam meus prováveis erros conceituais.

Falow.

[2] Comentário enviado por prgs.linux em 29/08/2007 - 12:52h

cara moldei seu firewall para minha realidade... aki uso conexao ppp0...minha dulvida e a seguinte
consigo liberar vnc para entar na maquina que ta habilatda o servico e onde eu redirecionei,

meu probl e que eu consigo entrar pela porta 5900 de fora pra dentro......mais se eu quizer sair o firewall nao deixa.........sair pela mesma maquina que ta habilitada o servico e que tem as regras apontada pra ela


se puder ajudar agradeco

[3] Comentário enviado por cristyangiovane em 03/09/2007 - 13:26h

Libera o ip da maquina que vai sair na porta 5900 dentro do arquivo INT-EXT.sh
A regra fika assim
iptables -A INT2EXT -p tcp -s <ip que sai no vnc> --dport 5900 -j ACEPT

Ou se quiser liberar todas as maquina para sair no vnc

iptables -A INT2EXT -p tcp --dport 5900 -j ACCEPT

[4] Comentário enviado por calaff2 em 06/03/2009 - 21:48h

Velho otimo Firewall! Gostei fica melhor para vc encontrar uma regra. abraços.

[5] Comentário enviado por ederflopes em 27/05/2009 - 16:20h

Amigo onde insiro a regra e qual é a regra para eu redicionar as conexões pro meu proxy?

sei q tem tb uma linha q adiciono que "obrigo" a todos da rede acessarem a internet pelo proxy ... se não por proxy não funciona, vc sabe quias são essas linhas?

Grato

Eder Lopes

[6] Comentário enviado por cristyangiovane em 27/05/2009 - 16:33h

Coloca no arquivo Firewall.sh

Após a regra
iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE

adiciona a regra.
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
(Caso sua rede interna não esteja em eth1, altere para a correta)

[7] Comentário enviado por ederflopes em 27/05/2009 - 16:37h

Obrigado pela resposta...
e com isso já torna Obrigatório a saida somente pelo proxy?

não permitindo o cara tirar o proxy do navegador e ainda ter acesso a internet?

[8] Comentário enviado por cristyangiovane em 27/05/2009 - 18:48h

Com essa regra tudo que chegar na porta 80 sera direcionado para o proxy.

[9] Comentário enviado por erikogp em 01/04/2011 - 07:38h

Como faço para criar um redirecionamento para terminal server de qualquer lugar da internet através deste script?
Dentro do arquivo NAT-IN.sh adicionei a seguinte linha:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 3389 -j DNAT --to-dest 192.168.147.12:3389

Só que não está funcionando. Internamente funciona, mas de fora pra dentro não funciona.

[10] Comentário enviado por mwiezbicki em 16/07/2012 - 17:00h

Opa
Blz parceiro, me fale uma coisa como posso fazer que o so acesse pela porta 3128, sendo que o meu squid esta em outra maquina no ip 192.168.1.10 e o ip do firewall eh 192.168.1.1
Obrigado


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts