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

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

[ Hits: 15.979 ]

 


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

Baixando conteúdo de alguns sites usando wget

Sites hospedados pela UOL (BOL, FOLHA, ...) não abrem. Como resolver?

Firewall com modem do Velox roteado

Kppp - Erro de autenticação (pppd exit 1)

Instalando o Firefox e Thunderbird em português (br)

  

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 HostGator.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Viva o Android

Tópicos

Top 10 do mês

Scripts