Squid Transparent

Iniciado por defabio, 14 de Dezembro de 2010, 07:59

tópico anterior - próximo tópico

defabio

Bom Dia.

Estou usando na minha VM o Ubuntu 10.10 e estou fazendo testes com o Squid, Fiz a configuração do squid para ir no Browser e inserir o proxy manualmente, apenas para bloquear sites e faz o bloqueio normalmente, mas quando altero o squid.conf para http_port 3128 transparent e altero o Browser sem proxy acesso tbm, vou postar o squid.conf e tbm o redirecionamento
obs.: tenho modem ADSL roteado, o ip é fixo.


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






http_port 3128 transparent
visible_hostname Fwlinux
error_directory /usr/share/squid/errors/pt-br/


cache_mem 64 MB
maximum_object_size_in_memory 64 KB
maximum_object_size 512 MB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /var/spool/squid 2048 16 256
cache_access_log /var/log/squid/access.log
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 901 # swat
acl Safe_ports port 1025-65535 # portas altas
acl purge method PURGE
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

acl bloqueados dstdom_regex "/etc/squid/sites/bloqueados.txt"
http_access deny bloqueados

acl redelocal src 172.17.2.0/24
http_access allow localhost
http_access allow redelocal

http_access deny all




jeflui

Seu proxy está na porta 3128 e você está redirecionando o que chegar na porta 80 para 8080.
Correto:

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

defabio

Desculpe erro na digitação o correto é 3128

legista

deixa eu ver se entendi vc quer bloquear sites? se for sim tenta mudar como deixei abaixo

Tenta substituir isso;

acl bloqueados dstdom_regex "/etc/squid/sites/bloqueados.txt"

por isso

acl bloqueados url_regex -i  "/etc/squid/sites/bloqueados"

legista

só completando, q eu me esqueci vc colocou o redirecionamento para eth0.

veja se a sua net esta entrando pela eth0 o direcionamento tem q ser eth1.

seria assim

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

defabio

legista, fiz a alteração na acl e a interface é eth0, mas minha dúvida é que com o redirecionamento da porta e sem o proxy no browser não tinha que bloquear o site que está em bloqueados.txt?

legista

Sim teria sim. qdo vc criou o arquivo com os sites bloqueados, vc criou com a extensao .txt? nao precisava.

aqui na minha loja esta assim.

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

para direcionar

aqui vc estará bloqueando o acesso a porta 80 obrigando que passe pela porta 3128

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

defabio

legista, desde já agradeço pela ajuda!

fiz o procedimento:

sudo iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DROP
e ocorreu o erro abaixo.

iptables v1.4.4:
The "nat" table is not intended for filtering, the use of DROP is therefore inhibited.

zekkerj

Olá defabio,

Sim, não é possível usar a ação DROP na tabela nat. Se vc quiser mesmo fazer isso, basta tirar o "-t nat" do início da linha. Mas eu não acho uma boa idéia...

Outra coisa, se vc está rodando o Squid na mesma máquina do navegador, vc tem que usar a cadeia OUTPUT pra redirecionar os pacotes:

iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 3128


Se o navegador está em outra máquina, o redirecionamento só vai funcionar se sua VM for o gateway dessa outra máquina.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

defabio

Muito obrigado zekkerj deu certo, na estão fora da VM eu estava colocando o Gw o endereço do modem fiz a alteração e ocorreu blzera, obrigado!!

defabio

Citação de: defabio online 14 de Dezembro de 2010, 21:56
Muito obrigado zekkerj deu certo, na estação fora da VM eu estava colocando o Gw o endereço do modem fiz a alteração e ocorreu blzera, obrigado!!

mas vi outro problema, no browser está sem proxy e está bloqueando o site especificado no squid, agora fiz outra acl para liberar os sites específicos e bloquear o restante, mas só está bloqueando e o restante acessa normalmente vou postar meu squid.conf:
# Configuração Squid
# Configurado por: Equipe de Informática

# Mensagens de erro em Português
error_directory /usr/share/squid/errors/Portuguese

# Porta do Squid
http_port 3128 transparent

# Nome do servidor
visible_hostname Servsquid

# Cache
cache_mem 700 MB
maximum_object_size_in_memory 32 KB
maximum_object_size 1024 MB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /etc/squid/cache 30000 16 256

# Logs de acesso
access_log /var/log/squid/access.log squid

# Regras acl padrão
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563 873
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 873 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 901 # swat
acl Safe_ports port 1025-65535 # portas altas
acl purge method PURGE
acl CONNECT method CONNECT

# Permissões e bloqueios padrão
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

# Bloqueio de sites por URL
acl proibidos url_regex -i "/etc/squid/sites/proibidos.txt"
http_access deny proibidos

#Liberar Sites
acl liberados dstdomain "/etc/squid/sites/liberados.txt"
http_access allow liberados


#IP Bloqueados
#acl bloqueados src "/etc/squid/estacoes/bloqueados.txt"
#http_access deny bloqueados


# Bloqueio de downloads por extensão
acl downloads_proibidos url_regex -i \.exe \.torrent \.avi \.mp3
http_access deny downloads_proibidos

# Permissão rede local e servidor
acl redelocal src 10.1.1.0/24
http_access allow localhost
http_access allow redelocal

# Bloqueio de usuários fora da rede
http_access deny all

zekkerj

O Squid trabalha em esquema de "short circuit", ou seja, assim que uma regra é executada, ele não executa nenhuma outra.

Quando vc faz o "http_acess deny proibidos", se um site cai na regra proibidos ele é bloqueado, mesmo que outra regra mais adiante a libere.

Se a sua intenção é fazer dos arquivos listados em "liberados.txt" uma espécie de "lista branca", vc tem que mover essas regras pra antes do bloqueio.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

defabio

zekkerj vou te dar trabalho novamente!!

Fiz a alteração q vc solicitou

O Squid trabalha em esquema de "short circuit", ou seja, assim que uma regra é executada, ele não executa nenhuma outra.

Quando vc faz o "http_acess deny proibidos", se um site cai na regra proibidos ele é bloqueado, mesmo que outra regra mais adiante a libere.

Se a sua intenção é fazer dos arquivos listados em "liberados.txt" uma espécie de "lista branca", vc tem que mover essas regras pra antes do bloqueio.


agora estou fazendo teste no próprio browser da VM e fiz a seguinte regra:

iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 3128

o Squid.conf está como transparent, quando acesso o site q está em bloqueados está bloqueando mas os outros sites está com o seguinte erro:

ERROR
The requested URL could not be retrieved

O seguinte erro foi encontrado ao tentar recuperar a URL: http://www.vivaolinux.com.br/

    Impossível encaminhar esta requisição nesse momento.

This request could not be forwarded to the origin server or to any parent caches. The most likely cause for this error is that the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.

Seu administrador do cache é webmaster.

Gerado Thu, 16 Dec 2010 11:48:29 GMT por Fwlinux (squid/2.7.STABLE9)

este erro acontece com todos os sites mesmo os q estão na lista branca

zekkerj

#13
É o resultado da regra que vc colocou:

Citariptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 3128

Você está redirecionando o tráfego do SQUID de volta pra ele. Retire essa regra, coloque no lugar esta:

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

Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

defabio

Ok, estou no trampo agora vou fazer um teste em casa e te falo ok!

Desde já agradeço!!