Squidguard exibição do sgerror.php para solicitação HTTPS



  • Pessoal, com a migração da web para o SSL/TLS precisamos encontrar uma solução para exibição da pagina de bloqueio sgerror.php em conjunto com o squidguard.

    Por que o erro ocorre?
    *Se o seu navegador estiver configurado para usar o proxy explicitamente e o usuário acessar um site bloqueado (por exemplo, https://facebook.com ), a seguinte seqüência de eventos ocorrerá:

    O navegador estabelece uma conexão HTTP regular com o servidor proxy e envia a solicitação CONNECT facebook.com:443 para configurar o túnel seguro no Facebook.
    O Squid intercepta essa solicitação e a redireciona para o servidor Squidguard que vê o domínio do Facebook bloqueado e retorna a mensagem HTTPS “403 Blocked” para o Squid.
    O Squid encaminha esta mensagem “403 Blocked” de volta para o navegador.
    O navegador espera obter o handshake SSL do Facebook de volta e, em vez disso, vê algum fluxo de bytes inesperados (a resposta 403 Blocked ) e exibe uma mensagem padrão "Não é possível conectar-se ao site usando HTTPS" ao usuário, em vez da mensagem 403 Blocked esperada .*

    Sei que essa é uma limitação conhecida de todos os navegadores conforme os links a seguir - https://bugzilla.mozilla.org/show_bug.cgi?id=479880 e http://wiki.squid-cache.org/Features/MimicSslServerCert

    Mas muitas empresas proprietárias conseguem contornar isso de alguma forma. Acredito que podemos encontrar uma solução também para essa questão, tem mais alguém interessado na solução?



  • Olá darlan
    O que vc deseja fazer é possível em um ambiente com proxy transparente (via redirecionamento de porta), ou seja, o default gateway da rede filtra a URL listada no seu arquivo de blacklist.
    Usando configurações de proxy convencionais (configurando proxy no navegador), isto não é possível, por conta da própria natureza do SSL. (dê uma lida a respeito)

    O que empresas de grife fazem nada mais é que, filtrar a URL em modo "transparente" e em seguida, capturam o IP de origem do acesso, consultam o Active Diretory (previamente atrelado ao proxy, geralmente via RPC ou WMI) e consultam quem é que está logado na máquina naquele momento e naquele IP, com isso, consegue-se mostrar o usuário que tentou acessar a página bloqueada no relatório de acesso/bloqueio.
    Se você deseja "apenas" bloquear um Site e mostrar uma página customizada em vez do site, é bem simples. Basta usar o proxy em modo transparente.

    Lembrando que, se o proxy não conhece o usuário que está acessando, O SquidGuard também não fará o filtro baseado em "Grupos do AD", por isso algumas pessoas colocam plug-ins customizados (como mencionei acima sobre as empresas de grife) que permitem identificar o usuário, mesmo usando proxy transparente.

    Creio que há algumas opções anunciadas aqui mesmo neste Forum. Dê uma pesquisada.

    Abraço!
    Fabricio



  • @fabricioguzzy said in Squidguard exibição do sgerror.php para solicitação HTTPS:

    Usando configurações de proxy convencionais (configurando proxy no navegador), isto não é possível, por conta da própria natureza do SSL. (dê uma lida a respeito)

    Boa tarde Fabrício!
    Você se engana quando diz que não é possível fazer utilizando as configurações convencionais , eu uso em alguns clientes, veja um exemplo:
    0_1546969138546_Capturar.PNG

    Autenticado com proxy ativo e filtro de grupos ldap. Funciona perfeitamente.
    O que não funciona (Exibição da Pagina de Bloqueio para sites HTTPS ) é quando é integrado com Squidguard o que pra mim é um problema pois considero uma excelente ferramenta.
    Lembrando que não há nenhum problema mais quando usado em conjunto, os bloqueios são realizados corretamente, o que ocorre é apenas a exibição da mensagem de bloqueio que não é exibida quando o acesso negado é um HTTPS conforme imagem acima.



  • Olá darlan,
    Boa Tarde!

    Está faltando detalhes nessa história. (que proxy é esse e como foi configurado o browser, detalhes do certificado carregado na página - Você deve estar usando MITM - Man in the Middle).
    (Sobre HTTPS) Quando o browser inicia o CONNECT, espera uma mensagem de volta, que não deve ser diferente de "200 tunnel ready" - caso seja diferente disso, fará com que o browser apresente mensagem de erro.
    Considere dar uma checada no forum em ítems mais antigos. Muita gente já descreveu o mesmo problema que você está descrevendo.
    Se está familiarizado com Inglês, dê uma olhada aqui: (é do diladele, mas cabe ao Squid) https://docs.diladele.com/faq/squid/cannot_connect_to_site_using_https.html
    Outro aqui com exatamente a mesma pergunta:
    https://serverfault.com/questions/727262/how-to-redirect-https-connect-request-with-squid-explicit-proxy/727533

    Adicionalmente, há um bug report no redmine há mais de 2 anos sobre isso, veja a resposta:
    https://redmine.pfsense.org/issues/6777

    Vou "caçar" artigos sobre novas soluções de proxy para ver se existe algum milagre pra isso, mas por hora desconheço.

    Abraço e Boa Sorte!
    Fabricio.



  • @fabricioguzzy said in Squidguard exibição do sgerror.php para solicitação HTTPS:

    Vou "caçar" artigos sobre novas soluções de proxy para ver se existe algum milagre pra isso, mas por hora desconheço.

    Amigo, não uso nada, apenas o pacote do Squid disponível nos repositórios oficiais. Claro que precisei realizar alguns ajustes personalizados para realizar a autenticação e o filtro de grupos de usuários do domínio via LDAP.
    O resultado é esse que mandei.
    Obviamente estou fazendo uso do SSL Man In the Middle Filtering:
    0_1547050990436_43d7e481-24f6-4bd9-a8aa-57a6ccc87ee3-image.png

    Criei a CA e instalei o certificado na estação:
    0_1547051149040_b04ae069-53c6-4f9b-bfd2-91332d0463d8-image.png

    O proxy no browser é distribuído automaticamente via wpad:
    0_1547050798423_e5ae458f-fb9e-4af5-9a32-1d16fc50c675-image.png

    Como falei, funciona. O que não funciona é que quando usado em conjunto com o SquidGuard a exibição da pagina de bloqueio apenas apresenta erro de SSL e não apresenta a pagina personalizada. Esses links que mandou li todos eles e muito mais antes do post.
    Também estive estudando sobre SSL Bump, acredito que essa seja a direção para esse problema.



  • Ok, Agora entendi seu cenário e a sua reclamação com o Squidguard.
    Inicialmente eu pensei que vc estava querendo mostrar aquela tela em modo proxy sem MITM
    Pois bem, a tela de bloqueio do Squidguard, que no modo Intercept SSL dá erro é, de fato, um problema que ocorre apenas no Pfsense/Freebsd.
    Eu uso Squid+Squidguard num Debian (apenas proxy) e tudo funciona perfeitamente. A Tela de bloqueio é mostrada normalmente, com ou sem Proxy transparente habilitado. Basta habilitar o SSL Intercept/Bump.
    Pode ser algum erro no pacote do squidguard do pfsense, eu não descarto esta hipótese.
    Não creio que alguém irá consertar aquele erro, já que vejo muito gente aqui optando pelo e2Guardian. (Já tentou?)
    Ele parece ter TODAS as opções do squidGuard e mais. Eu ainda estou testando por aqui. Parece muito bom, só fico preocupado com a manutenção/updates, principalmente de segurança dos pacotes e do código PHP.
    Vamos ver...
    Abraço!
    Fabricio.