Squid + Iptables: Liberando acesso de programas que não funcionam na internet compartilhada

Publicado por Alex A. Felicioni em 01/12/2008

[ Hits: 18.863 ]

 


Squid + Iptables: Liberando acesso de programas que não funcionam na internet compartilhada



Comecei a trabalhar com Linux este ano, e mesmo assim procuro compartilhar minhas descobertas sobre este SO com os colegas.

Ao começar a utilizar o Squid, que diga-se de passagem é um maravilhoso proxy de código aberto, me deparei com vários problemas que estou resolvendo aos poucos, através de pesquisa em fóruns e sites especializados na internet.

Agora me deparo com outro problema, os posts e dicas que venho encontrando não são claros o suficiente para que pessoas, que como eu não estão completamente familiarizados com os detalhes do Linux e pior ainda, do iptables.

Bem, vamos ao que importa, como liberar o acesso à internet de alguns programas que não funcionam através de proxy.

Em primeiro lugar precisamos saber quais e que tipos de portas o programa utiliza, vamos usar como exemplo o email (pop, smtp), normalmente utilizando o outlook. Esses programas não conseguem utilizar o Squid, pois ele não consegue gerenciar os protocolos pop e nem o smtp, por isso o único caminho é o firewall. Usaremos o iptables, que é nativo da maioria das distribuições Linux.

Logue como root. Abra um documento de texto com o seu editor preferido, eu uso o vim, e crie um arquivo com um nome qualquer, o qual eu chamarei de firewall. Digite as seguintes linhas:

#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward

#até aqui você avisa o kernel que quer compartilhar a conexão com a internet

iptables -F
iptables -t nat -F
iptables -t mangle -F

#até aqui você limpou todos as regras existentes no firewall

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# no meu caso, a internet é a conexão ppp0, caso a sua seja outra, basta trocar o ppp0
#pelo nome da sua conexão, por exemplo eth0.
#aqui você ativou o compartilhamento de internet através de mascaramento, ou nat. O
#famoso rotear a internet. neste momento é como se seu servidor Linux fosse apenas um
#roteador, aqueles dlink da vida e qualquer pessoa que colocar o ip do seu servidor
#como gateway vai ter acesso total à net, sem precisar passar pelo Squid, e todos os
#serviços de internet da sua rede estarão funcionando, inclusive os indesejados, por isso
#vamos trancar ó nosso gateway e liberar somente o que queremos.


iptables -P FORWARD DROP

#Aqui, eu disse para o iptables que apesar de a internet estar compartilhada, ele não
#deve deixar passar informação entre a internet e a rede local, isolando-as.
# Agora é só começar a liberar as portas que nos interessam, obrigatoriamente temos
#que liberar o DNS, senão o outlook não vai conseguir encontrar o seu provedor.


iptables -A FORWARD -p udp --sport 53 -j ACCEPT
iptables -A FORWARD -p udp --dport 53 -j ACCEPT

# pronto, o dns já está liberado, se você estiver em um computador que usa seu servidor
#como gateway e de um ping em algum site, o site será encontrado mas não responderá,
#afinal só liberamos a porta 53 do protocolo udp, e o ping usa protocolo ICMP.


iptables -A FORWARD -p tcp --sport 25 -j ACCEPT
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -p tcp --sport 110 -j ACCEPT
iptables -A FORWARD -p tcp --dport 110 -j ACCEPT

# caso você queira que outro programas funcionem, basta criar uma linha destas para
#cada porta usada pelo programa que você quer fazer funcionar.

Salve o arquivo e saia.

Obs: respeite maiúsculas e minúsculas, senão não funciona.

Ainda como root, vamos tornar este arquivo executável com o seguinte comando dentro do diretório em que você criou o arquivo:

# chmod +x firewall

Agora copie o arquivo para o diretório /sbin:

# cp firewall /sbin/

Pronto, agora é só digitar no prompt:

# firewall

E o outlook estará funcionando enquanto o servidor não for reiniciado, depois você terá que digitar firewall novamente para aplicar as regras.

Você pode colocá-lo para executar automaticamente na inicialização, procure aqui no VOL que tem como fazer isso.

Outras dicas deste autor

Conectividade Social e Squid

Squid + SARG: Gerando relatórios pelo nome de usuário autenticado

Leitura recomendada

Como controlar acesso a internet na sua rede?

Youtube - Resolvendo problema dos vídeos que congelam em tela cheia

Mikrotik Training Center - Informações de certificação e agenda de treinamentos

Instalar Flash no Opera, no Ubuntu 7.04

Google Chrome - Falhou ao buscar http://dl.google.com/linux/chrome/deb/dists/stable/Release [Resolvido]

  

Comentários
[1] Comentário enviado por vagnersobrinho em 03/12/2008 - 16:31h

Muito Bom Cara!

[2] Comentário enviado por lyumar em 04/12/2008 - 21:36h

onde vc colocou o nome firewall?

[3] Comentário enviado por alexfelicioni em 06/12/2008 - 00:28h

Logue como root. Abra um documento de texto com o seu editor preferido, eu uso o vim, e crie um arquivo com um nome qualquer, o qual eu chamarei de firewall.

Amigo, eu usei o nome firewall para o arquivo, mas poderia ter colocado qualquer um, como firewall.sh, libera portas, café-com-manteiga,etc.

qualquer nome pode ser usado, desde que voce consiga associar do que se trata depois..

eu uso o editor vim , então fica assim

# vim firewall

pronto, agora é só seguir o restante da dica.

falow

[4] Comentário enviado por paulotrad em 22/10/2009 - 12:30h

ola.. fiz tudo como mostrou no exemplo
deu tudo certo

agora gostaria de liberar a porta 443 apenas para o ip 192.168.1.252

como eu faço ?


obrigado amigo



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts