Filtragem de páginas SSL (443) no Squid transparente

Post original em Viva o Linux Autor: Edivaldo Cavalcante de ALbuquerque Junior <edivaldocaj at hotmail.com> Data: 31/08/2012

Introdução e Configurações

Motivação

Há pouco tempo, precisei realizar a implantação de um proxy Squid transparente, que realizasse a filtragem da navegação em HTTP (80) e navegação segura – SSL (443).

Ao procurar literatura especializada, verifiquei um grande quantitativo de documentação para esta implementação do Squid, mas também observei que para a navegação segura (SSL- 443), os artigos e fontes de pesquisa, praticamente não existiam.

Depois de muito garimpar e estudar o assunto, resolvi trazer minha experiência no formato de contribuição, para a comunidade GNU/Linux do VOL.

Neste artigo, demonstro o passo a passo para a criação de certificados e chaves que serão utilizados no Squid, recompilação do Squid com suporte a SSL (em um Debian Squeeze) e implementação do redirecionamento de portas para direcionar o tráfego de HTPS e HTTP, para o Squid.

OpenSSL – criando certificados e chaves para o Squid

Para a criação do certificado e geração da chave pública e chave privada, utilizaremos os comandos abaixo:

# openssl genrsa -des3 -out empresa. Key 1024
# openssl req -new –key -out empresa.csr
# openssl req -new -key server. Key -out server.csr

Após a criação das chaves, temos que remover a senha da chave:

# cp empresa. Key empresa. Key.old
# openssl rsa -in empresa. Key.old -out empresa. Key

Criar certificado da empresa:

# openssl x509 -req -days 365 -in empresa.csr -sign.key -out empresa.crt

Ao fim, copiaremos a chave e o certificado para pasta onde o Squid realizará a leitura:

# cp empresa. Key /etc/squid/certificados/
# cp empresa. csr /etc/squid/certificados/

Obs.: A pasta “certificados” é opcional, e a criação foi meramente para efeito de organização.

Recompilando o Squid com suporte a conexões SSL

Primeiro, devemos adicionar os repositórios abaixo na sources.list do seu Debian Squeeze, editando o arquivo: /etc/apt/sources.list:

deb-src http://ftp.de.debian.org/debian/ squeeze main contrib non-free
deb-src http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free

Depois, execute o comando:

# apt-get update

Para atualizar a base de dados do APT, com base nos novos repositórios.

Processo de recompilação do Squid

Entre no diretório /usr/src:

# cd /usr/src

Baixe os fontes do Squid:

# apt-get source squid

Baixe as dependências de compilação do Squid:

# apt-get build-dep squid

Baixe as dependências de compilação do OpenSSL:

# apt-get build-dep openssl

Baixe e instale dependências necessárias para o recompilação:

# apt-get install devscripts build-essential fakeroot

Entre no diretório dos fontes:

# cd squid-<versão>
# cd debian/

Acesse o arquivo “rules”, e adicione a linha de opção:

–enable-ssl

…No arquivo, para recompilarmos o Squid com suporte a SSL:

# vim rules

Configure a nova opção (não execute o make, ou make install):

# ./configure

Compile e gere os pacotes para instalação:

# debuild -us -uc -b

Instale os dois pacotes gerados:

# dpkg –i squid-(versão).deb squid-comon-(versão).deb

Configuração do squid.conf para suporte à SSL + proxy transparente

O intuito do arquivo é adicionar a funcionalidade de SSL proxy ao Squid, e neste, já pressuponho que seu Squid esteja funcional, sendo que adicionaremos apenas as novas funcionalidades.

No “squid.conf”, adicione as linhas para ativar o funcionamento da filtragem do HTTP e HTTPS no proxy:

http_port 3128 transparent
https_port 3129 transparent cert=/etc/squid/certificados/empresa.crt Key=/etc/squid/certificados/empresa.key

Obs.: Verifique que a adição da linha que faz referência à “HTTPS_PORT”, é o momento que incorporamos a funcionalidade de suporte a SSL ao Squid. Assim, para o funcionamento pleno como argumentos, indicamos onde está localizado o certificado e a chave da empresa.

Iptables – Redirecionando os pacotes HTTP e HTTPS para o Squid

Adicione ao seu firewall, o redirecionamento de portas de acesso 80 (http – navegação) e 443 (https- navegação segura):

Obs.: eth0 – Interface de LAN

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

Conclusão

A utilização de filtragem da navegação segura é muito importante, e por desconhecimento, ou até mesmo por falta de literatura que indique os meios para esta implementação, muitos administradores de rede continuam a utilizar o NAT para estes acessos, de forma a não aproveitarem toda a potencialidade do seu proxy.

Espero que este artigo contribua para toda comunidade do VOL, na busca por uma literatura mais coesa e direta sobre este assunto.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: