bloqueio de ip com iptables não funciona junto com squid

Iniciado por joserley, 11 de Agosto de 2012, 16:25

tópico anterior - próximo tópico

joserley

Ola pessoal !
Estou tentando bloquear o acesso de um site na internet para algumas maquinas com ip fixo com a seguinte regra:
- iptables -A FORWARD -s login.live.com -d 192.168.0.120 -j REJECT
Esta regra funciona perfeitamente desde que o squid esteja desabilitado. Não uso proxy transparente.
Uma outra regra do iptables direciona a porta 80 para a 3128. ( o padrão que todo mundo usa ).
O problema é que com o squid ativo esta regra simplesmente não funciona. O site é acessado normalmente.
Já tentei a mesma regra com input, forward, output e nada. Não posso bloquear pelo squid pois o site precisa estar
numa acl que passa por fora do squid senão não funciona. O site é o login.live.com. Se ele passar pelo squid o MSN não funciona. Mas nem todo mundo pode ter acesso ao MSN.

Alguem saberia me dizer porque esta regra do iptables não funciona com o squid ativo ?
Alguma sugestão de como resolver o problema ?

Agradeço muitissimo por uma ajuda !
Joserley !

???

lucascatani

O MSN 2011 usa a porta 443.

Se você colocar o proxy no navegador, vai passar pelo squid, se não colocar não vai passar.

Está com proxy fixo no navegador? Caso sim, libere a "rede" do msn para os ips que desejar e bloqueie o resto (iptables -A FORWARD -p tcp --dport 443 -j DROP), pois se está passando pelo proxy não precisa passar direto (só passa direto a rede do msn e para os ips que você quiser).

a regra:

iptables -A FORWARD -p tcp --dport 443 -s $IP_LIBERADO -d 65.54.00/16 -j ACCEPT

zekkerj

Citação de: joserley online 11 de Agosto de 2012, 16:25
Ola pessoal !
Estou tentando bloquear o acesso de um site na internet para algumas maquinas com ip fixo com a seguinte regra:
- iptables -A FORWARD -s login.live.com -d 192.168.0.120 -j REJECT
Esta regra funciona perfeitamente desde que o squid esteja desabilitado. Não uso proxy transparente.
Uma outra regra do iptables direciona a porta 80 para a 3128. ( o padrão que todo mundo usa ).
Então você usa proxy transparente. O que faz o proxy ser transparente é essa regra do iptables.

CitarO problema é que com o squid ativo esta regra simplesmente não funciona. O site é acessado normalmente.
E é o que tinha que acontecer. Quando o squid está ativo, o MSN usa o serviço do squid, fazendo a solicitação via protocolo de proxy.

CitarJá tentei a mesma regra com input, forward, output e nada. Não posso bloquear pelo squid pois o site precisa estar
numa acl que passa por fora do squid senão não funciona. O site é o login.live.com. Se ele passar pelo squid o MSN não funciona. Mas nem todo mundo pode ter acesso ao MSN.
Mas é no squid mesmo que vc tem que fazer o bloqueio.

CitarAlguem saberia me dizer porque esta regra do iptables não funciona com o squid ativo ?
Pq com o squid ativo o MSN redireciona o login diretamente ao squid, e com isso não há requisição direta nessa porta.

CitarAlguma sugestão de como resolver o problema ?
Fazer o bloqueio dentro do squid.
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

joserley

Ola pessoal !

Grato pela atenção de vocês...

lucascatani - > Sua orientação não funcionou. Na verdade o iptables para de direcionar qualquer site com o squid ativo mesmo na porta 80. Eu fiz o seguinte teste com um iptables bem simples:

iptables -A INPUT    -s uol.com.br -d 192.168.1.125    -j DROP
iptables -A OUTPUT -s uol.com.br -d 192.168.1.125    -j DROP
iptables -A FORWARD -s uol.com.br -d 192.168.1.125 -j DROP
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth1 -p tcp -m multiport --dport 80,443 -j REDIRECT --to-port 3128

Fiz este teste com vários sites bem simples além da uol e não funcionou. A estação com o ip 192.168.1.125 entrou no site normalmente. As regras do bloqueio só funcionam com o squid desativado. Faço o controle de acesso com o squid autenticado e que funciona muito bem. O problema está principalmente no controle do "bendito" MSN 2011 que precisa ter o site "live.com" com liberação total no squid para funcionar. Mas dessa forma todo mundo tem acessa e não consigo fazer bloqueios.
Se as regras do iptables acima funcionassem resolveria tudo. Tem mais alguma idéia ???

zekkerj - > Você disse que eu estou usando o proxy transparente devido a regra de redirecionamento. Mas para usar proxy transparente não é necessário a regra: http_port transparent no squid conf ?
Eu uso a regra: http_port: 3128. Também habilito o proxy nos navegadores com o ip do servidor e a porta.

algué já conseguiu fazer controle do windows live 2011 (msn 2011) por usuário autenticado pelo squid ?

Grato !!
Joserley.



zekkerj

CitarVocê disse que eu estou usando o proxy transparente devido a regra de redirecionamento. Mas para usar proxy transparente não é necessário a regra: http_port transparent no squid conf ?
Eu vejo muita confusão sobre isso.

O que faz o proxy transparente é a junção de 2 fatores: primeiro, a regra do iptables redirecionando o tráfego da porta 80 pra porta 3128 local. Segundo, a falta de configuração do navegador. Se faltar um desses dois fatores, o proxy não é transparente.

A regra do squid é apenas pra ajustar o funcionamento dele ao fato do proxy já estar funcionando em modo transparente; mas ela, sozinha, não coloca seu squid em modo transparente.

Citaralgué já conseguiu fazer controle do windows live 2011 (msn 2011) por usuário autenticado pelo squid ?
Se vc quer usuário autenticado, vai ter que abrir mão do proxy transparente. Ou uma coisa, ou outra.
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

lucascatani

Citação de: joserley online 13 de Agosto de 2012, 15:22
Ola pessoal !

Grato pela atenção de vocês...

lucascatani - > Sua orientação não funcionou. Na verdade o iptables para de direcionar qualquer site com o squid ativo mesmo na porta 80. Eu fiz o seguinte teste com um iptables bem simples:

iptables -A INPUT    -s uol.com.br -d 192.168.1.125    -j DROP
iptables -A OUTPUT -s uol.com.br -d 192.168.1.125    -j DROP
iptables -A FORWARD -s uol.com.br -d 192.168.1.125 -j DROP
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth1 -p tcp -m multiport --dport 80,443 -j REDIRECT --to-port 3128

Fiz este teste com vários sites bem simples além da uol e não funcionou. A estação com o ip 192.168.1.125 entrou no site normalmente. As regras do bloqueio só funcionam com o squid desativado. Faço o controle de acesso com o squid autenticado e que funciona muito bem. O problema está principalmente no controle do "bendito" MSN 2011 que precisa ter o site "live.com" com liberação total no squid para funcionar. Mas dessa forma todo mundo tem acessa e não consigo fazer bloqueios.
Se as regras do iptables acima funcionassem resolveria tudo. Tem mais alguma idéia ???

zekkerj - > Você disse que eu estou usando o proxy transparente devido a regra de redirecionamento. Mas para usar proxy transparente não é necessário a regra: http_port transparent no squid conf ?
Eu uso a regra: http_port: 3128. Também habilito o proxy nos navegadores com o ip do servidor e a porta.

algué já conseguiu fazer controle do windows live 2011 (msn 2011) por usuário autenticado pelo squid ?

Grato !!
Joserley.




Reforçando sobre as portas, o MSN usa a 1863 e a 443 tcp.

Com proxy transparente não vai passar pelo squid. Com proxy no navegador aí vai passar.

Se for o msn:

Crie uma acl que libera a rede do msn (65.54.00/16) somente para os usuários que você quiser.

Confere se o msn está sendo bloqueado pelo squid mesmo com: tail -f /var/log/squid3/access.log e tenta acessar o msn o site em uma estação.

Se for o site live.com

acl bloqueados dstdomain -i "/etc/squid3/sites_bloqueados"

http_access deny bloqueados redeinterna

no sites_bloqueados coloca

.live.com


Só que provavelmente não seja só esse site que usam para logar no hotmail ou afins, então o mais viável é bloquear a REDE do msn.

Espero ter ajudado.

zekkerj

CitarReforçando sobre as portas, o MSN usa a 1863 e a 443 tcp.
Com proxy transparente não vai passar pelo squid. Com proxy no navegador aí vai passar.
Bem lembrado: a regra de redirecionamento que ativa o proxy transparente só redireciona o tráfego da porta 80.
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

joserley

Ola "lucascatani" e "zekkerj"

Obrigado pela ajuda de vocês. As informações foram muito valiosas.
Descobri que o problema não estava no fato de usar iptables com squid e sim no fato de
usar "squid autenticado". Como o zekkerj disse, eu teria que escolher entre uma coisa e outra.
Então fiz novas regras desta vez controlando o acesso pelo ip da estação, e com ip "fixo" através
do servidor dhcp com o "mac" das estações.
Infelizmente, mesmo liberando toda a rede do MSN conforme orientação do lucascatani, não funcionou.
O squid autenticado impede o funcionamento do MSN "mesmo". Só liberando o site "live.com" passando por
fora do squid que funciona.
A dúvida que ficou agora é outra... será que o squid com autenticação tem algum bug ainda não resolvido ?

Mas com o controle pelo ip pelo menos agora está resolvido.
Se alguem um dia descobrir uma solução, deixa ai !!!

Um forte abraço a todos !!!
Joserley!

zekkerj

O problema pode ser específico com o aplicativo do MSN.
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