quarta-feira, 25 de janeiro de 2017

Squid3 - com bloqueio HTTPS [que realmente funciona] - Versão 3.5.22




Instalação, compilação e configuração



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.


---- outra contribuição:



O script a seguir BLOQUEIA tudo que for HTTPS:

#!/bin/sh
iptables -A FORWARD -p tcp --dport 443 -j DROP
for URL in `grep -v "^#" /home/temp/acl/listabranca`; do
iptables -I FORWARD -d $URL -p tcp --dport 443 -j ACCEPT
done

Caso deseje LIBERAR todo acesso HTTPs e apenas bloquear o que interessa faça o inverso:

#!/bin/sh
iptables -A FORWARD -p tcp --dport 443 -j ACCEPT
for URL in `grep -v "^#" /home/temp/acl/listabranca`; do
iptables -I FORWARD -d $URL -p tcp --dport 443 -j DROP
done



fonte: https://www.vivaolinux.com.br/artigo/Squid3-com-bloqueio-HTTPS-que-realmente-funciona-Versao-3522
Reações:

1 comentários:

Glauco disse...

Parabéns pelo tutorial. Funcionou perfeitamente para o navegador IE, porém no Google Chrome fica mostrando certificado inválido e não permite seguir adiante. Se alguém souber o que pode ser feito, agradeço antecipadamente!