Olá, este é meu primeiro artigo no VOL e resolvi fazê-lo devido à falta de um tutorial atualizado e que realmente funcione, no que se refere à instalação e configuração do
Squid3 para bloqueio real de páginas HTTPS.
O ambiente usado foi o Debian 7.11.0 instalado a partir da mídia debian-7.11.0-i386-netinst (também funciona na x64), e o Squid3 foi compilado a partir do arquivo squid-3.5.22.tar.gz disponível no site:
Instalando/compilando e configurando o Squid3
Obs.: todos comando foram executados com o usuário root.
Com o SO Debian recém instalado e apenas com SSH rodando, para facilitar a inserção de comandos usando a putty, a primeira coisa é baixar os pacotes necessários para compilar o Squid3 (famosos "Build-Depends") com o seguinte comando:
# apt-get build-dep squid3
Além dos pacotes que serão instalado acima, mais dois devem ser instalados segundo a documentação do Squid:
# apt-get install build-essential libssl-dev
Feito isso, você deve baixar o arquivo fonte do Squid3:
# wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.22.tar.gz
Descompacte o arquivo:
# tar xvzf squid-3.5.22.tar.gz
Entre no diretório:
# cd squid-3.5.22
Execute o seguinte comando para fazer a configuração o
make e o
make install do Squid:
# ./configure --prefix=/usr --localstatedir=/var --libexecdir=${prefix}/lib/squid --datadir=${prefix}/share/squid --sysconfdir=/etc/squid --with-default-user=proxy --with-logdir=/var/log/squid --with-pidfile=/var/run/squid.pid --enable-ssl --enable-ssl-crtd --with-openssl && make && make install
Obs.: o comando acima foi retirado da documentação "Compilando o Squid" acrescido dos parâmetros "--enable-ssl --enable-ssl-crtd --with-openssl" solicitados
Features/DynamicSslCert - Squid Web Proxy Wiki, que são essenciais ao correto funcionamento do Squid3 para bloqueio de HTTPS.
Dependendo da sua configuração de hardware, esse procedimento pode demorar muito, aqui demorou uns 30 minutos.
Abra esse link no navegador e copie o conteúdo:
Depois disso, crie o arquivo
/etc/init.d/squid:
# nano /etc/init.d/squid
Cole o conteúdo copiado acima e salve (se estiver usando o putty e só clicar com o botão direito que ele já cola automaticamente).
De permissão de execução para esse arquivo:
# chmod 755 /etc/init.d/squid
Entre no diretório de configuração:
# cd /etc/squid
Crie a pasta "ssl_cert", onde será criado o certificado:
# mkdir ssl_cert
Altere o dono da pasta:
# chown proxy:proxy ssl_cert
Mude as permissões da pasta:
# chmod 700 ssl_cert
Entre na pasta:
# cd ssl_cert
Crie o arquivo de certificado:
# openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -extensions v3_ca -keyout myCA.pem -out myCA.pem
Cria o arquivo de certificado para ser importado no navegador navegador:
# openssl x509 -in myCA.pem -outform DER -out myCA.der
Esse arquivo deve ser levado para o Windows, pois você vai importa-lo no navegador.
Prepare o diretório para fazer o cache de certificados:
# /lib/squid/ssl_crtd -c -s /etc/squid/ssl_db
Depois de inicializar o diretório, altere o dono para 'nobody':
# chown -R nobody /etc/squid/ssl_db
Altere seu arquivo
/etc/squid.conf e deixe como segue:
http_port 3128 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/ssl_cert/myCA.pem
sslcrtd_program /lib/squid/ssl_crtd -s /etc/squid/ssl_db -M 4MB
sslcrtd_children 5
cache_dir ufs /var/spool/squid 100 16 256
error_directory /share/squid/errors/pt-br
strip_query_terms off
acl bloqueado ssl::server_name .youtube.com
ssl_bump bump all
ssl_bump peek all
ssl_bump splice all
http_access deny bloqueado
http_access allow all
Cheque as configurações com o comando:
# squid -k parse
Pode ocorrer problemas com permissões negadas em alguma pasta, casso ocorra é só alterar o dono da pasta com:
# chown -R proxy:proxy caminho/da/pasta
Crie a pasta onde será salvo o cache e mude o dono:
# mkdir /var/spool/squid
# chown -R proxy:proxy /var/spool/squid
Inicie o cache com o comando:
# squid -z
Reinicie o squid:
# /etc/init.d/squid restart
Até aqui tudo deve funcionar corretamente, menos sites HTTPS, que devem dar a mensagem de erro de certificado.
Para resolver isso, é só importar o certificado para o navegador e após, todos sites HTTPS devem navegar normalmente, menos o youtube.com que nós bloqueamos no arquivo de configuração.