Squid + SSL

Utilizando o Squid para filtrar conteúdo HTTP e HTTPS com certificados self-signed, porém sem o famoso problema de SSL Mismatch.

[ Hits: 54.896 ]

Por: Fabio em 20/09/2012


Introdução



Um grande desafio para os administradores de rede em geral é gerenciar o conteúdo acessado pelos seus usuários, e muitas vezes, são tomadas atitudes mais radicais como, por exemplo, bloquear completamente o acesso à Internet.

Existem muitos documentos disponíveis na Internet relacionados à configuração de servidores de proxy utilizando Squid, mas tenho percebido que todos os documentos estão preparados apenas para tratar do conteúdo HTTP, não tratando dos acessos HTTPS, como por exemplo: sites de bancos, webmail, e-commerce etc.

Pensando nisso, resolvi escrever este tutorial, que apresenta, de uma forma simples e objetiva, como configurar o servidor com suporte à geração dinâmica de certificado SSL.

O grande infortúnio dos acessos HTTPS através de proxy são os erros de certificado SSL apresentados quando você possui um man in the midle, que possui um certificado auto assinado. Como apresentado na figura abaixo:
Linux: Squid + SSL

Proposta e pré-requisito

Para evitar as mensagens de alerta de certificado, utilizamos a característica DynamicSslCert do Squid, que foca na geração dinâmica de certificados que são compatíveis com o nome de domínio do site requisitado.

Entenda que a checagem do nome do site pelo browser não adiciona muita segurança no ambiente onde as máquinas clientes já confiam no seu proxy, esta validação apenas gera problemas na apresentação das páginas, conforme apresentado na figura acima.

Antes de começar, vou apresentar a configuração do ambiente virtual de laboratório que utilizei para elaborar e validar este tutorial:
  • VirtualBox 4.2
  • CentOS 6.3 (Equivalente à versão 6.3 do RHEL):
    • 2x vCPUs
    • 1GB RAM
    • 10GB HD

  • Windows XP Professional SP3:
    • 2x vCPUs
    • 2GB RAM
    • 10GB HD

Neste laboratório o GNU/Linux CentOS foi utilizado como servidor, e o Windows XP foi utilizado como cliente.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Configurações
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

SquidGuard: Bloqueando o acesso a Web

Compilando o Squid com autenticação PAM

Squid - Níveis de bloqueio para usuários

Compilando o Squid3

Recebendo relatório do SARG via e-mail (Gmail)

  
Comentários
[1] Comentário enviado por dalveson em 21/09/2012 - 16:57h

muito interessante o artigo Fabio G. Martins, irei fazer alguns teste por aqui.
mais antes algumas duvidas:
1 - o squid passará a fazer cache do https(443)?
2 - uma duvida que tenho sobre a compilação do squid, não é necessario outros parametros no ./configure:
tipo --enable-linux-nefilter para ativa o proxy transparente dentre outros parametros.
ou quando vc executa ./configure --enable-ssl --enable-ssl-crtd --with-openssl="/root/openssl-1.0.0g" ele ja traz varias opçoes habilitadas por padrao?
att.

[2] Comentário enviado por herloncamargo em 21/09/2012 - 18:52h

Fiquei com a dúvida se qualquer site https, a partir de então, deixará de apresentar mensagem de alerta de "perigo", incluindo os que deveriam apresentá-la. Dessa forma, qualquer site passará a ser "confiável" (sem mensagem de alerta)?

[3] Comentário enviado por magnored em 21/09/2012 - 22:09h

Existe a possibilidade de criar uma regra no squid para que ele bloqueie somente o HTTPS de sites como facebook, youtube,etc...e fique totalmente liberado para sites como Bradesco, Santander, etc...

No iptables eu sei que existe essa possibilidade, mas gostaria de saber se tem alguma coisa no Squid que nao utilize o "man in the middle" para uma lista de sites que eu especificar

[4] Comentário enviado por alexsandro06 em 28/09/2012 - 02:08h

Muito bom o artigo, fiz todo o procedimento, mas ainda não deu certo.

Quando tento acessar um site bloqueado, a coisa funciona e aparece a menssagem de acesso negado, mas no momento em que vou acessar uma pagina que está liberada aparece o seguinte:

Na tentativa de recuperar a URL: https://www.google.com.br/

O seguinte erro foi encontrado:

Falha na conexão

O sistema retornou:

(71) Protocol error

O host remoto (servidor) ou a rede pode estar indisponível. Por favor tente novamente.

Alguem sabe me dizer o que pode ser esse erro?

Alex.

[5] Comentário enviado por emiliocortessf em 07/11/2012 - 18:56h

Fabio, estava seguindo as suas indicações, muito bom seu tuto estou concluindo.
Linux Debian 6.06
ABS Emilio

[6] Comentário enviado por rodrigocontrib em 13/08/2014 - 20:20h

Erro na compilação do Squid :
collect2: ld returned 1 exit status
make[3]: *** [basic_ncsa_auth] Error 1
make[3]: Leaving directory `/opt/squid-3.2.13/helpers/basic_auth/NCSA'
make[2]: *** [install-recursive] Error 1
make[2]: Leaving directory `/opt/squid-3.2.13/helpers/basic_auth'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/opt/squid-3.2.13/helpers'
make: *** [install-recursive] Error 1
root@FW-01:/opt/squid-3.2.13#

[7] Comentário enviado por rodrigocontrib em 14/08/2014 - 17:43h


[3] Comentário enviado por magnored em 21/09/2012 - 22:09h:

Existe a possibilidade de criar uma regra no squid para que ele bloqueie somente o HTTPS de sites como facebook, youtube,etc...e fique totalmente liberado para sites como Bradesco, Santander, etc...

No iptables eu sei que existe essa possibilidade, mas gostaria de saber se tem alguma coisa no Squid que nao utilize o "man in the middle" para uma lista de sites que eu especificar


O iptables, provavelmente deve bloquear o range de ip do facebook, mas isso não da muito certo porque o ip nem sempre atende a farm do facebook.
Um exemplo disso são os serviços distribuidos geograficamente, onde o facebook de hoje, atendido por um ip dos USA pode pode ser um facebook local atendido em um ip da sua area,

O bom mesmo é bloquear pelo nome, ai "não tem erro".


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts