+ Responder ao Tópico



  1. #1

    Padrão Como impedir que um squid transparente seja configurado como proxy normal?

    Salve galera!

    Aki estou novamente para pedir os vossos conselhos.
    Como sempre eu só quero coisas dificeis e estranhas hehehe.

    O caso é que configurei um squid 2.6 como proxy transparente, está tudo funcionando normalmente, porém eu gostaria de impedir que esse fosse usado de maneira comum, ou seja que ele não aceite ser configurado no navegador.

    Isso é porque esse servidor funciona como proxy reverso, ou seja, ele fica em um gateway e fornece os sites de sua rede interna(esses sites usam a porta 8080) para a internet, dessa forma não quero que pessoas na internet possam conectra-se a ele, mas sim apenas mandar as requisições para os sites internos. Hoje como está é possivel conectar-se a ele mas ele só deixa navegar nos ips que eu libero pelas acls(10.20.0.0/16), porém se eu impedir a conexão será uma vulnerabilidade a menos.

    A configuração dele é a que se segue:

    http_port 8080 transparent
    hierarchy_stoplist cgi-bin ?
    acl QUERY urlpath_regex cgi-bin \?
    cache deny QUERY
    acl apache rep_header Server ^Apache
    broken_vary_encoding allow apache
    access_log /var/log/squid/access.log squid
    refresh_pattern ^ftp: 1440 20% 10080
    refresh_pattern ^gopher: 1440 0% 1440
    refresh_pattern . 0 20% 4320
    acl all src 0.0.0.0/0.0.0.0
    acl dstvpn dst 10.20.0.0/16
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl to_localhost dst 127.0.0.0/8
    acl Safe_ports port 8080 # multiling http
    acl CONNECT method CONNECT
    http_access allow manager localhost
    http_access deny manager
    http_access deny !Safe_ports
    http_access allow localhost
    http_access deny !dstvpn
    http_access allow all
    http_reply_access allow all
    icp_access allow all
    coredump_dir /var/spool/squid



    Alguém ai sabe como fazer isso?
    Valew galera, abraços!
    Última edição por landrower; 05-05-2009 às 18:36.

  2. #2

    Padrão

    Citação Postado originalmente por landrower Ver Post
    Salve galera!

    Aki estou novamente para pedir os vossos conselhos.
    Como sempre eu só quero coisas dificeis e estranhas hehehe.

    O caso é que configurei um squid 2.6 como proxy transparente, está tudo funcionando normalmente, porém eu gostaria de impedir que esse fosse usado de maneira comum, ou seja que ele não aceite ser configurado no navegador.

    Isso é porque esse servidor funciona como proxy reverso, ou seja, ele fica em um gateway e fornece os sites de sua rede interna(esses sites usam a porta 8080) para a internet, dessa forma não quero que pessoas na internet possam conectra-se a ele, mas sim apenas mandar as requisições para os sites internos. Hoje como está é possivel conectar-se a ele mas ele só deixa navegar nos ips que eu libero pelas acls(10.20.0.0/16), porém se eu impedir a conexão será uma vulnerabilidade a menos.

    A configuração dele é a que se segue:

    http_port 8080 transparent
    hierarchy_stoplist cgi-bin ?
    acl QUERY urlpath_regex cgi-bin \?
    cache deny QUERY
    acl apache rep_header Server ^Apache
    broken_vary_encoding allow apache
    access_log /var/log/squid/access.log squid
    refresh_pattern ^ftp: 1440 20% 10080
    refresh_pattern ^gopher: 1440 0% 1440
    refresh_pattern . 0 20% 4320
    acl all src 0.0.0.0/0.0.0.0
    acl dstvpn dst 10.20.0.0/16
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl to_localhost dst 127.0.0.0/8
    acl Safe_ports port 8080 # multiling http
    acl CONNECT method CONNECT
    http_access allow manager localhost
    http_access deny manager
    http_access deny !Safe_ports
    http_access allow localhost
    http_access deny !dstvpn
    http_access allow all
    http_reply_access allow all
    icp_access allow all
    coredump_dir /var/spool/squid



    Alguém ai sabe como fazer isso?
    Valew galera, abraços!

    bloqueando a porta no firewall!

  3. #3

    Padrão

    Citação Postado originalmente por JHONNE Ver Post
    bloqueando a porta no firewall!
    Antes de mais nada obrigado pela resposta.

    Porém eu já tentei isso sem sucesso pois ao bloquear a porta 8080 ai não funciona ele como transparente tbm.

    Como eu disse ele funciona como proxy reverso e publica para internet sites que estão na rede interna (10.20.0.0/16) ouvindo na porta 8080, ou seja, quando alguém vai acessar na internet vai digitar:
    "http://site1.meudominio.com.br:8080"
    O endereço "site1.meudominio.com.br" publicamente aponta para o ip externo da maquina onde está rodando o squid.
    Então o squid aceita a requisição, consulta o bind local que ira dizer que o "site1.meudominio.com.br" fica no ip 10.20.40.10 e vai entregar esse site a quem o requisitou.
    Perceba que esses pacotes eram destinados originalmente ao proprio ip do squid, por isso que ele não é um proxy transparente comum.

    Nesse caso se eu bloquear a porta 8080 vai impedir a conexão, mas vai impedir tbm que o endereço ""http://site1.meudominio.com.br:8080"" seja acessado.

    Por isso que disse que só preciso de coisas estranhas e comlicadas heheh

    Abraços!
    Última edição por landrower; 05-05-2009 às 19:14.

  4. #4

    Padrão

    Citação Postado originalmente por landrower Ver Post
    Antes de mais nada obrigado pela resposta.

    Porém eu já tentei isso sem sucesso pois ao bloquear a porta 8080 ai não funciona ele como transparente tbm.

    Como eu disse ele funciona como proxy reverso e publica para internet sites que estão na rede interna (10.20.0.0/16) ouvindo na porta 8080, ou seja, quando alguém vai acessar na internet vai digitar:
    "http://site1.meudominio.com.br:8080"
    O endereço "site1.meudominio.com.br" publicamente aponta para o ip externo da maquina onde está rodando o squid.
    Então o squid aceita a requisição, consulta o bind local que ira dizer que o "site1.meudominio.com.br" fica no ip 10.20.40.10 e vai entregar esse site a quem o requisitou.
    Perceba que esses pacotes eram destinados originalmente ao proprio ip do squid, por isso que ele não é um proxy transparente comum.

    Nesse caso se eu bloquear a porta 8080 vai impedir a conexão, mas vai impedir tbm que o endereço ""http://site1.meudominio.com.br:8080"" seja acessado.

    Por isso que disse que só preciso de coisas estranhas e comlicadas heheh

    Abraços!

    amigo, basta vc implentar direito a regra no firewall colocando qual a range de ips que vc não deseja que acesse diretamente a porta 8080

  5. #5

    Padrão

    Citação Postado originalmente por JHONNE Ver Post
    amigo, basta vc implentar direito a regra no firewall colocando qual a range de ips que vc não deseja que acesse diretamente a porta 8080
    Eu desejo que toda a internet os acesse a porta 8080. E nessa configuração do squid implementei uma regra para impedir que outros sites sejam acessados fora de rede (10.20.0.0/16) na porta 8080.

    Preciso acredito que a solução para o que eu quero seja alguma configuração do rpoprio squid, mas não consegui achar?

    COnhece algum bom tutorial de squid?

    Abraços

  6. #6

    Padrão

    No meu caso eu uso a regra do squid assim:
    http_port 192.168.xxx.1:8080 transparent
    Desta forma, só aceita as requisições do próprio server.
    Não resolve o teu problema?

  7. #7

    Padrão

    Citação Postado originalmente por jadirorza Ver Post
    No meu caso eu uso a regra do squid assim:
    http_port 192.168.xxx.1:8080 transparent
    Desta forma, só aceita as requisições do próprio server.
    Não resolve o teu problema?


    Bom dia!

    Infelizmente não resolve não amigo, essa regra que você citou faz com que o squid ouça apenas no ip 192.168.xxx.1 .
    Na verdade eu uso dessa maneira tbm, só suprimi isso no arquivo de configuração para não mostrar o ip real aki no forum.

    Obrigado pela atenção!

  8. #8

    Padrão

    Voce pode usar iptables com modulo string e rejeitar conexões que venham com x-cache ipexterno 3128.
    A regra fica mais ou menos assim:
    iptables -t filter -A INPUT -d alal -p 8080 -m string --string "X-cache seuip suaporta" -j DROP

    Use live headers para verificar como a sessão é feita no seu navegador com e sem proxy assim vc consegue ajustar direitinho.

    Abraço

  9. #9

    Padrão

    Citação Postado originalmente por wps Ver Post
    Voce pode usar iptables com modulo string e rejeitar conexões que venham com x-cache ipexterno 3128.
    A regra fica mais ou menos assim:
    iptables -t filter -A INPUT -d alal -p 8080 -m string --string "X-cache seuip suaporta" -j DROP

    Use live headers para verificar como a sessão é feita no seu navegador com e sem proxy assim vc consegue ajustar direitinho.

    Abraço

    Boa ideia amigo!

    Farei os testes ainda hoje o postarei aki os resultados!

    Muito obrigado.

  10. #10

    Padrão

    Citação Postado originalmente por wps Ver Post
    Voce pode usar iptables com modulo string e rejeitar conexões que venham com x-cache ipexterno 3128.
    A regra fica mais ou menos assim:
    iptables -t filter -A INPUT -d alal -p 8080 -m string --string "X-cache seuip suaporta" -j DROP

    Use live headers para verificar como a sessão é feita no seu navegador com e sem proxy assim vc consegue ajustar direitinho.

    Abraço
    Perfeito WPS!
    Funcionou direitinho, usei um plugin do proprio firefox e identifiquei a string de pedido de conexão com o proxy, e essa não está presente quando o proxy aceita o pedido como transparente.

    A regra ficou assim:
    iptables -I INPUT -i eth0 -p tcp --dport 8080 -m string --string 'Proxy-Connection:' --algo kmp -j DROP

    Muito obrigado!

  11. #11

    Padrão

    Quando eu for para a October Fest em Outubro voce me paga uma cerveja na Proerb !


    Abraço .