Proxy Squid Transparente

A utilização de um servidor proxy comum é controlada pelas configurações locais na máquina do usuário. Para forçarmos a utilização do servidor proxy, a melhor alternativa é o uso de proxy transparente. Este artigo nos mostra como fazer isso.

[ Hits: 224.405 ]

Por: Joabes Carlos de Carvalho em 19/09/2003 | Blog: http://www.fwsnet.com.br


Introdução



Quando configuramos um servidor proxy comum, um usuário mais esperto pode remover as configurações de proxy do seu browser e passar a navegar normalmente pela Internet sem a mediação do Squid. Com isso ele estaria burlando as restrições de acesso e todas as demais regras gerenciadas pelo proxy. Além disso, sem proxy transparente você precisa ir de máquina em máquina da rede interna para configurar as preferências de servidor proxy. Imagina se você tem uma rede com mais de 100 desktops?

Para solucionar esses tipos de problema surgiu o recurso de proxy transparente. Enumerando as vantagens do proxy transparente, podemos citar as seguintes:
  • ocultar a utilização do proxy aos usuários que acessam internet;
  • forçar os usuários a utilizarem o proxy, mesmo que eles não queiram;
  • implementar a política real de acesso a sites proibidos, evitando os usuários mais "espertos" de desabilitar a utilização do proxy na navegação.
Com o proxy transparente todas as requisições feitas à porta 80 são automaticamente redirecionadas para a porta do Squid e assim fica virtualmente impossível "bypassar" o Squid com as regras de ACLS.

Nota: autenticação não funciona com Proxy Transparente.

Agora é necessário implementar um linha de IPTABLES para que possamos redirecionar o tráfego da porta 80 para a porta do SQUID. Podemos colocá-la no próprio /etc/rc.local. A Sintaxe é a seguinte:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Onde 3128 é a porta da qual o Squid está sendo executado. Feito isso, vamos aos detalhes finais no SQUID. Abra o arquivo squid.conf e descomente as seguintes linhas:

# # HTTPD-ACCELERATOR OPTIONS
# ---------------------------------------
#
#
#

httpd_accel_port 80
httpd_accel_host virtual

E o Seguinte Grupo:

# # TAG: httpd_accel_with_proxy
# --------------------------------------
#
#

httpd_accel_with_proxy on


# TAG: httpd_accel_uses_host_header on|off
#
#

httpd_accel_uses_host_header on

Feito isto, vamos iniciar o SQUID com a linha de comando:

/usr/squid/./RunCache &

O SQUID está pronto para funcionar no modo proxy transparente.

Nota: Este artigo foi originalmente escrito por William da Rocha Lima.

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Logando o Windows XP no Samba

Leitura recomendada

Filtro de conteúdo autenticado com níveis de privilégio

Bloqueando conteúdo com Squid no RedHat 9

Squid + proxy transparente + autentificação + SSL

Squid no FreeBSD

Squid3 com bloqueio HTTPS [que realmente funciona] - Versão 3.5.22

  
Comentários
[1] Comentário enviado por fabio em 19/09/2003 - 13:47h

Muito bom o artigo, por coincidência estou neste exato momento configurando um proxy transparente e já ia procurar documentação sobre o assunto.

Por falar em William da Rocha Lima, alguém sabe o que aconteceu com ele? Seu site www.linuxit.com.br já está fora do ar a um bom tempo.

[2] Comentário enviado por hyperblade em 19/09/2003 - 15:47h

Salve Fabio ;-)

Velho troquei uma ideia com o 1c3_m4n que e fundador do site linuxit com ele acho que ouve varios problemas. Qualquer coisa mande um e-mail para 1c3_m4n@linuxdicas.com.br que e do linuxit, como o e meu amigo liberei uma conta pra ele :p

Abraços

[3] Comentário enviado por naoexistemais em 19/09/2003 - 21:23h

Caros,

Aqui estou eu vivo, + ou - devido aos problemas profissionais acabei se afastando do meu hobby que e manter o Linuxit (Unico portal que fala de Linux e Tecnologia), e referente ao 1c3_m4n fiquei muito chateado devido sua atitude imatura, o mesmo nao contribui com o site. E apenas queria ganhar dinheiro e retorno imediato. Nao foi um homen suficiente para chegar a conversa comigo e expor os problemas que pode ter ocorrido.

Mais vamos o que interessa o Linuxit vai voltar agora neste final de mes, pq estou com n1nj4 (Rafael) cuidando do site e contribuindo, ao mesmo estou migrando de servidor, nao posso perde minha base de dados que nao tem valor, lembra-se sao 4.500 user em apenas 6 meses.

O Linuxit vai ter mais novidades como artigos que estou estudando em publicar e firewalls desenvolvido por mim.

E uma triste noticia que vou montar um portal sobre Microsoft, Windows 2k, xp e 2003, Isa server, Exchange e etc... (AGUARDEM)

William da Rocha
wrochal@acbr.com.br
wrochal@linuxit.com.br
www.linuxit.com.br

[4] Comentário enviado por gregorye em 01/11/2004 - 17:49h

Uhm fiz tudo isso mas não funcionou! e o local "/usr/squid/./RunCache &
" não têm o arquivo ai substitui por "/usr/sbin/squid ./RunCache &
" teria que funcionar neh ?

[5] Comentário enviado por pcnmota em 18/12/2004 - 10:40h

Amigos fiz tudo mas nao deu certo: vejam o que da:
root@calcadao18:~# /usr/local/squid/bin/RunCache &
[1] 361
Running: squid -sY >> /usr/local/squid/var/squid.out 2>&1
root@calcadao18:~# Running: squid -sY >> /usr/local/squid/var/squid.out 2>&1
Running: squid -sY >> /usr/local/squid/var/squid.out 2>&1
Running: squid -sY >> /usr/local/squid/var/squid.out 2>&1
Running: squid -sY >> /usr/local/squid/var/squid.out 2>&1
Running: squid -sY >> /usr/local/squid/var/squid.out 2>&1
RunCache: EXITING DUE TO REPEATED, FREQUENT FAILURES

O que eu faco, nao consigo colocar o proxy transparente pra funcionar?
Obrigado ,
Paulo Cesar -- pcnmota@tricor.com.br

[6] Comentário enviado por gvcom em 25/04/2005 - 12:12h

Oi pessoal,

O mesmo acontece comigo no FC2.

Reinaldo

[7] Comentário enviado por albertoc em 22/11/2005 - 16:43h

Amigo,

O artigo está muito bom, porém voce esqueceu uma opcao essencial (principalmente em proxy transparente)
httpd_accel_host virtual

:)
Pelo que vi na internet muita gente esqueça dessa opção e acaba não sabendo o que fazer...
tem uma documentação legal em :
http://tldp.org/HOWTO/TransparentProxy-4.html

[]s

[8] Comentário enviado por albertoc em 22/11/2005 - 16:44h

desculpe,,,,falta de atencao minha...vc colcou a opcao...de qq forma valeu pelo link que postei
hehehe
:)

[9] Comentário enviado por jacardoso em 16/02/2006 - 10:57h

No meu da erro ao executar isso aqui em baixo:



Feito isto, vamos iniciar o SQUID com a linha de comando:

/usr/squid/./RunCache &

O SQUID está pronto para funcionar no modo proxy transparente.

[10] Comentário enviado por jacardoso em 16/02/2006 - 10:58h

Proxy:/etc/squid# /usr/squid/./RunCache &
[1] 1126
-bash: /usr/squid/./RunCache: Arquivo ou diretório não encontrado
Proxy:/etc/squid#

[11] Comentário enviado por cleytonscherer em 02/03/2006 - 22:26h

Pessoal,

O programa RunCache pode estar em um diretório ligeiramente diferente, dependendo da sua distribuição. Para encontrar o caminho correto no seu sistema, utilize o comando "which" conforme exemplo abaixo:
# which RunCache
/usr/bin/RunCache

Cleyton

[12] Comentário enviado por gvcom em 03/03/2006 - 22:35h

Ok, valeu pelas dicas, deu certo.

O Willian da Rocha cita em seu livro que devemos compilar o Squid para utilizar restrições por mac adress.
Mas, uma pergunta básica de quem está aprendendo: como compilar o squid instalado durante a instalação do FC4, pois quando digito

./configure --enable-arp-acl...

recebo a mensagem "-bash: ./configure: Arquivo ou Diretório nao encontrado"

Reinaldo

[13] Comentário enviado por mlegidio em 17/04/2006 - 20:18h

como eh um texto bem simples acho q vale a pena citar o parametro da porta do squid

http_port 3128

;-)
T+

[14] Comentário enviado por rayfcrols em 21/07/2006 - 13:24h

Pessoal eu estou com uma duvida .. eu possuia e roteador linux em que a internet funcionava via gateway agora eu instalei e configurei o squid, mais a duvida é o sequinte eu quero bloquear o acesso via gateway e "liberar" somente via proxy ou seja internet somente pelo squid para forçar a configuracao de todas as maquinas. Ps : resposta por e-mail please rayfcrols@gmail.com

[15] Comentário enviado por mariuxac em 31/07/2006 - 19:17h

pô mano valeu a intenção mais só com isso o squid num sobe nem amarrado...

[16] Comentário enviado por removido em 01/08/2006 - 13:51h

iai galera.... o artigo muito bom, simples. Meu proxy funciono, mas eu tenho q habilitar no browser pra funciona, q q pode ser? teoricamente ele naun pode pedir a opçao "usar server proxy".
abraço

[17] Comentário enviado por douglasbgodoy em 18/08/2006 - 22:05h

tenho um squid rodando mas gostaria de ativar o proxy transparente mas o comando do iptables nao esta dando certo
" iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 "

o meu servidor nao vai ser NAT

o SO que eu uso é o conectiva 10

Obrigado

[18] Comentário enviado por joaovitorlinux em 09/11/2006 - 17:43h

Qd digito a linha abaixo no /etc/rc.d/rc.local o meu squid para a navegação.

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

uso o CL 10

Obrigado

[19] Comentário enviado por dmmlopes em 31/01/2007 - 17:45h

Estou com o squid e iptables instalados..
Está tudo funcionando perfeitamente com autenticação....criei uma acl badwords, baddomains e inclui vária palavras e varios dominios e neguei o uso, posteriormente criei uma acl valid domains e inclui os nomes de dominios válidos que eu quero que o usuário tenha acesso, na sequencia criei uma outra acl users com os nomes dos usuários permitindo a navegação ... até ai tudo bem, todo o dominio ou palavra que contiver nas acls criadas ele bloqueará, agora as que não estão listadas nos arquivos badwords e baddomains ele navega normal ai está a chave da questão... como faço para esses usuários usarem somente os sites na qual eu liberei na acl validdomains ????

Ex:

acl badwords url_regex"/etc/squid/badwords"
acl baddomains dstdomain "/etc/squid/baddomains"
acl validdomains dstdomain"/etc/squid/validdomains"
acl users proxy_auth "/etc/squid/users"

http_access deny badwords
http_access deny baddomains
http_access allow validdomains
http_access allow users

Para resolver essa questão pensei em criar grupos de usuários mas não tentei ainda...

[20] Comentário enviado por k4mus em 31/10/2007 - 18:55h

Vlw fera..aki funcionou blz. Tutorial bem simples e eficiente.
abraço

[21] Comentário enviado por vagware em 19/02/2008 - 10:57h

Uma duvida, talvez meio besta, mas que me intrigou
bastante.

Ao compartilhar simplesmente a conexao (via nat), eu
preciso das placas de rede e criar a regra no firewall
para encaminhar os pacotes da placa de rede local para
a outra.

# modprobe iptable_nat
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Mas com compartilhamento feito com o Squid, é preciso
compratilhar a conexão (como mostrado acima), ou só
instalando o squid e configurando o squid.conf já esta
td ok?

Fico no aguardo.

[22] Comentário enviado por maninhx em 28/05/2008 - 16:32h

aqui funcionou. obrigado.
simples e objetivo.

[23] Comentário enviado por edyfiorese em 26/09/2008 - 21:33h

cara fiz o q vc disse porem nada aconteceu

se alguem poder me ajudar

sera q eh problema com meu firewall????
desde jah agradeço

meu firewall:
#!/bin/bash

/sbin/iptables -F
/sbin/iptables -t nat -F

modprobe ip_tables
modprobe iptable_nat

# Habilitar IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

#Compartilhando a conexão
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

REDE="192.168.0.0/24"

# Porta de SSH
#LOG --> /var/log/messages
/sbin/iptables -A INPUT -p tcp --destination-port 22 -j LOG --log-prefix "FIREWALL - Serviço: SSH -> "
# Porta de SSH para fora
/sbin/iptables -A INPUT -p tcp --destination-port 22 -i eth2 -j DROP
# Porta de SSH local
/sbin/iptables -A INPUT -p tcp --destination-port 22 -i eth1 -j ACCEPT
#printf "."

# Abrindo algumas portinhas !

iptables -A INPUT -p tcp --destination-port 1021 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 1080 -j ACCEPT

# Compartilha a conexão com squid
iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 80 -j REDIRECT --to-port 3128

#>Bloqueia PING
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

#>Ping da morte:
/sbin/iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

#>Proteção contra Syn-Flood
/sbin/iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

#>Port scanner suspeito:
/sbin/iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

#>Protege contra pacotes danificados (usados em ataques DoS)
/sbin/iptables -A INPUT -m unclean -j DROP
/sbin/iptables -A FORWARD -m unclean -j DROP

# Abre para a rede local
/sbin/iptables -A INPUT -p tcp --syn -s 192.168.0.0/255.255.255.0 -j ACCEPT

# Fecha o resto
/sbin/iptables -A INPUT -p tcp --syn -j DROP

#Bloqueando Tracertroute
/sbin/iptables -A INPUT -p udp -s 0/0 -i eth2 --dport 33435:33525 -j DROP

# Salvando as regras
/sbin/iptables-save > /etc/firewall

echo "Firewall Ativo!"

[24] Comentário enviado por marcelodon20 em 15/04/2009 - 14:24h

Boa tarde estou querendo imigra para sistema Linux com o debian ou ubutu, Atualmente uso o Windows 2003 Server
para gerencia minha rede, e nessa minha rede tenho duas conexão diferentes, estou precisando de um script para rodar no debian ou
no ubutu que possa unir a duas conexão e sair uma única conexão
para todos os usuarios da mesma rede.

[25] Comentário enviado por jonatanpasso em 12/04/2010 - 11:28h

Bom dia, estou procurando ajuda.

Estou estudando Linux, e preciso aprender a configurar um Proxy transparente, achei vários artigos aqui mesmo como fazer isso, já aprendi a configurar um sem ser transparente mais como alguns autores relata, eu não gostei, pois tem que configurar cliente por cliente, por tanto partindo deste principio decidi aprender o transparente, mais veio uma dúvida, todos falam que para configurar o Proxy transparente já é preciso ter uma configuração da internet compartilhada com o servidor por meio de NAT, é ai que mora minha dúvida, como fazer essa configuração de compartilhamento, se algum puder me ajudar onde achar alguma coisa sobre isso ou que ensine a compartilhar agradeço muito.

Minha configuração esta assim no ambiente de teste que estou fazendo.

Tenho 8 Maquinas em rede onde minha internet esta ligada ao switch

Não entendi essa forma de compartilhar via nat.

Se alguém puder ma ajudar.

Obrigado.

[26] Comentário enviado por joabes em 12/04/2010 - 11:38h

Bom dia.

Primeiro - Crie um Firewall ( Iptables )

Nesse você criara sua regras e fara o nat nele liberando internet paraoas computadores, uma vez que isso está feito, redirecione tudo para seu proxy, com isso vai amarrar a navegação ao proxy.

Se bem que sendo transparente não vejo muita vantagem.

Cordialmente
Joabes

Acesse já www.bookmail.com.br
E-mail Grátis | Disco Virtual | Blogs |

[27] Comentário enviado por dogui_bnu em 09/02/2011 - 18:24h

Olá amigos!

sobre: Podemos colocá-la no próprio /etc/rc.local. A Sintaxe é a seguinte:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Como colocar isso para o opensuse, já que o mesmo não tem /etc/rc.local. Tanto colocando ele transparente na config do squid como a regra não fica transparente. Alguém pode dar uma luz?

Muito obrigado!

Douglas



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts