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:
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:
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.
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
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
1 comentários:
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!
Postar um comentário