SQUID 3.4.8 +HTTPS +SSL +INTERCEPT - NONE error:invalid-request

1. SQUID 3.4.8 +HTTPS +SSL +INTERCEPT - NONE error:invalid-request

Joao Israel Costa Viana
wakeup

(usa Debian)

Enviado em 12/10/2015 - 23:23h

Olá a todos da comunidade:

Estou a 3 semanas recortando artigos sobre como fazer funcionar o squid com filtro de HTTPS com ssl e o certificado, cheguei a conclusão que isso não funciona. Baseado no site Oficial do Squid, mesmo assim gostaria de saber se alguém tem isso funcionando?

Lembrando que o Squid sobe, porém nao abre paginas HTTPS, apenas se configurar manualmente no Navegador, as outras paginas abrem normalmente, tanto em proxy transparente ou pelo navegador também, o que prova que meu IPTABLES está, por isso nao vou posta-lo aqui.

#############################
# Seguem meus passos:
#############################

apt-get install build-essential fakeroot devscripts gawk gcc-multilib dpatch

apt-get build-dep squid3

apt-get build-dep openssl*

apt-get source squid3

apt-get install openssl* (acrescentado por mim)

~vi squid3-3.1.19/debian/rules
...

DEB_CONFIGURE_EXTRA_FLAGS := --datadir=/usr/share/squid3 \
--sysconfdir=/etc/squid3 \
--mandir=/usr/share/man \
--with-cppunit-basedir=/usr \
--enable-inline \
--enable-ssl \
--enable-ssl-crtd \
...

cd squid3-3.1.19/
debuild -us -uc -b
[email protected]:~# apt-get install squid-langpack

[email protected]:~# dpkg -i squid3_3.4.8-6+deb8u1_amd64.deb squid3-common_3.4.8-6+deb8u1_all.deb

/usr/lib/squid3/ssl_crtd -c -s /etc/squid/certs/ssl_db -M 4 MB
chown proxy:proxy /etc/squid/certs/ssl_db

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout squid.pem -out squid.pem
openssl x509 -in squid.pem -outform DER -out squid.der



E também já instalei o squid.der no navegador na parte de autoridades.



##########################
# Segue meu squid3 -v:
##########################

[email protected]:~# squid3 -v
Squid Cache: Version 3.4.8
Debian linux
configure options: '--build=x86_64-linux-gnu' '--prefix=/usr' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--libexecdir=${prefix}/lib/squid3' '--srcdir=.' '--disable-maintainer-mode' '--disable-dependency-tracking' '--disable-silent-rules' '--datadir=/usr/share/squid3' '--sysconfdir=/etc/squid3' '--mandir=/usr/share/man' '--enable-inline' '--enable-ssl' '--enable-ssl-crtd' '--disable-arch-native' '--enable-async-io=8' '--enable-storeio=ufs,aufs,diskd,rock' '--enable-removal-policies=lru,heap' '--enable-delay-pools' '--enable-cache-digests' '--enable-icap-client' '--enable-follow-x-forwarded-for' '--enable-auth-basic=DB,fake,getpwnam,LDAP,MSNT,MSNT-multi-domain,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB' '--enable-auth-digest=file,LDAP' '--enable-auth-negotiate=kerberos,wrapper' '--enable-auth-ntlm=fake,smb_lm' '--enable-external-acl-helpers=file_userip,kerberos_ldap_group,LDAP_group,session,SQL_session,unix_group,wbinfo_group' '--enable-url-rewrite-helpers=fake' '--enable-eui' '--enable-esi' '--enable-icmp' '--enable-zph-qos' '--enable-ecap' '--disable-translation' '--with-swapdir=/var/spool/squid3' '--with-logdir=/var/log/squid3' '--with-pidfile=/var/run/squid3.pid' '--with-filedescriptors=65536' '--with-large-files' '--with-default-user=proxy' '--enable-build-info=Debian linux' '--enable-linux-netfilter' 'build_alias=x86_64-linux-gnu' 'CFLAGS=-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wall' 'LDFLAGS=-fPIE -pie -Wl,-z,relro -Wl,-z,now' 'CPPFLAGS=-D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security'

###########################
# Squid.conf:
###########################

#Access Lists

acl home_network src 172.18.4.0/24

#Ports allowed through Squid

acl Safe_ports port 80 #http
acl Safe_ports port 443 #https
acl Safe_ports port 8443 #https
acl SSL_ports port 443
acl SSL_ports port 8443
acl SSL method CONNECT
acl CONNECT method CONNECT

#allow/deny

http_access allow localhost
http_access allow home_network
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow all

#proxy ports

http_port 172.18.4.2:3128
http_port 172.18.4.2:8080 intercept
http_port 172.18.4.2:8443 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid3/certs/squid.pem

ssl_bump none localhost
sslcrtd_program /usr/lib/squid3/ssl_crtd -s /etc/squid3/certs/ssl_db -M 4MB
ssl_bump server-first all
sslcrtd_children 5

#caching directory

cache_dir ufs /var/cache/squidcache/ 2048 16 128
cache_mem 1024 MB

#refresh patterns for caching static files
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 10080 90% 43200 override-expire ignore-no-cache ignore-no-store ignore-private
refresh_pattern -i \.(iso|avi|wav|mp3|mp4|mpeg|swf|flv|x-flv)$ 43200 90% 432000 override-expire ignore-no-cache ignore-no-store ignore-private
refresh_pattern -i \.(deb|rpm|exe|zip|tar|tgz|ram|rar|bin|ppt|doc|tiff)$ 10080 90% 43200 override-expire ignore-no-cache ignore-no-store ignore-private
refresh_pattern -i \.index.(html|htm)$ 0 40% 10080
refresh_pattern -i \.(html|htm|css|js)$ 1440 40% 40320
refresh_pattern . 0 40% 40320

#nameservers

dns_nameservers 8.8.8.8

#############################
# Meu netstat
#############################

[email protected]:~# netstat -na | grep 0.0.0
tcp 0 0 0.0.0.0:111 0.0.0.0:* OUÇA
tcp 0 0 172.18.4.2:8080 0.0.0.0:* OUÇA
tcp 0 0 127.0.0.1:80 0.0.0.0:* OUÇA
tcp 0 0 0.0.0.0:22 0.0.0.0:* OUÇA
tcp 0 0 172.18.4.2:3128 0.0.0.0:* OUÇA
tcp 0 0 127.0.0.1:25 0.0.0.0:* OUÇA
tcp 0 0 172.18.4.2:8443 0.0.0.0:* OUÇA
tcp 0 0 0.0.0.0:56733 0.0.0.0:* OUÇA







  


2. Re: SQUID 3.4.8 +HTTPS +SSL +INTERCEPT - NONE error:invalid-request

Eduardo Oliveira Soares
stremenx

(usa Debian)

Enviado em 13/12/2015 - 18:15h

Boa tarde, estou no Debian 8 e ele vem com squid 3.4.8 no seu repositório gostaria de saber se você conseguiu colocar o seu no modo intercept, pois não estou conseguindo.


3. Re: SQUID 3.4.8 +HTTPS +SSL +INTERCEPT - NONE error:invalid-request

Joao Israel Costa Viana
wakeup

(usa Debian)

Enviado em 16/12/2015 - 10:38h

Não consegui resolver, e parece que ninguém conseguiu fazer esse balaio de gato funcionar.


4. Re: SQUID 3.4.8 +HTTPS +SSL +INTERCEPT - NONE error:invalid-request

Eduardo Oliveira Soares
stremenx

(usa Debian)

Enviado em 16/12/2015 - 18:50h

Esqueci desta postagem. segui a seguinte dica de um usuário aqui para porta 80 e usando wpad.dat para jogar automático (80,443), e bloqueando manualmente para terminais não alterarem as opções de rede com ou sem proxy ou radiodetectar para notebook acharem wpad.dat.

https://meocloud.pt/link/114db57d-c770-407a-93f1-91f9234906dc/squid.conf.txt/


5. Re: SQUID 3.4.8 +HTTPS +SSL +INTERCEPT - NONE error:invalid-request

Riccelli Reis de Oliveira
riccelli_reis

(usa Debian)

Enviado em 16/12/2015 - 20:15h

Estou trabalhando nisso, quase pronto. Me perdoem por não dar a solução agora, ainda preciso testar por mais alguns dias e fazer alguns ajustes. Talvez saia um Tutorial com instruções melhores do que encontramos até agora. Algumas considerações para continuarmos o assunto:

1-A partir da versão 3 o Squid usa a palavra Intercept, ao inves de Transparent (wakeup fez certo);

2-Também cheguei a achar que não, mas é sim possível fazer Proxy "Transparente", gerenciando páginas com SSL (que usam protocolo HTTPS);

3-É necessário especificar os sites com SSL que passarão, o restante vai dar erro e não abre, acredito que essa é a idéia principal, bloquear alguns e liberar outros;

4-Indico que mude um pouco as seguintes linhas do seu conf, nessas já posso indicar o que fazer:
http_port 172.18.4.2:3128 > http_port 3128 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB
http_port 172.18.4.2:8080 intercept > http_port 3180 intercept
http_port 172.18.4.2:8443 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid3/certs/squid.pem > http_port 31443 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid3/certs/squid.pem

5-Se houver um script de firewall que você construiu e seguiu as instruções acima, deixe as seguintes linhas para o firewall direcionar o tráfego pelo proxy:
iptables -t nat -A PREROUTING -s 172.18.4.0/24 -p tcp --dport 3128 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -s 172.18.4.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3180
iptables -t nat -A PREROUTING -s 172.18.4.0/24 -p tcp --dport 443 -j REDIRECT --to-port 31443

6-A questão de especificar os sites que passarão, usando youtube como exemplo, precisa de 4 linhas no conf:
acl bump_sites dstdomain .youtube.com .youtube.com.mx
ssl_bump none localhost
ssl_bump server-first bump_sites
ssl_bump none all

7-Os melhores tutoriais que encontrei, mas usei principalmente o primeiro:
http://debian-base.blogspot.com.br/2015/05/install-squid-34-with-ssl-bump-on.html
http://thejimmahknows.com/squid-3-1-caching-proxy-with-ssl/?doing_wp_cron=1450302327.447380065917968...
http://docs.diladele.com/administrator_guide_4_3/index.html (desse o importante que usei foi: apt-mark hold squid3 squid3-common, nesta página: http://docs.diladele.com/administrator_guide_4_3/install/debian8/install.html)

Espero ter ajudado. Grande abraço.




6. Re: SQUID 3.4.8 +HTTPS +SSL +INTERCEPT - NONE error:invalid-request

Eduardo Oliveira Soares
stremenx

(usa Debian)

Enviado em 16/12/2015 - 21:05h

Irei testar se for postar um Tópico se possível me deixar informado, muito obrigado.


7. Re: SQUID 3.4.8 +HTTPS +SSL +INTERCEPT - NONE error:invalid-request

Eduardo Oliveira Soares
stremenx

(usa Debian)

Enviado em 19/12/2015 - 18:07h

r2oweb escreveu:

Estou trabalhando nisso, quase pronto. Me perdoem por não dar a solução agora, ainda preciso testar por mais alguns dias e fazer alguns ajustes. Talvez saia um Tutorial com instruções melhores do que encontramos até agora. Algumas considerações para continuarmos o assunto:

1-A partir da versão 3 o Squid usa a palavra Intercept, ao inves de Transparent (wakeup fez certo);

2-Também cheguei a achar que não, mas é sim possível fazer Proxy "Transparente", gerenciando páginas com SSL (que usam protocolo HTTPS);

3-É necessário especificar os sites com SSL que passarão, o restante vai dar erro e não abre, acredito que essa é a idéia principal, bloquear alguns e liberar outros;

4-Indico que mude um pouco as seguintes linhas do seu conf, nessas já posso indicar o que fazer:
http_port 172.18.4.2:3128 > http_port 3128 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB
http_port 172.18.4.2:8080 intercept > http_port 3180 intercept
http_port 172.18.4.2:8443 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid3/certs/squid.pem > http_port 31443 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid3/certs/squid.pem

5-Se houver um script de firewall que você construiu e seguiu as instruções acima, deixe as seguintes linhas para o firewall direcionar o tráfego pelo proxy:
iptables -t nat -A PREROUTING -s 172.18.4.0/24 -p tcp --dport 3128 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -s 172.18.4.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3180
iptables -t nat -A PREROUTING -s 172.18.4.0/24 -p tcp --dport 443 -j REDIRECT --to-port 31443

6-A questão de especificar os sites que passarão, usando youtube como exemplo, precisa de 4 linhas no conf:
acl bump_sites dstdomain .youtube.com .youtube.com.mx
ssl_bump none localhost
ssl_bump server-first bump_sites
ssl_bump none all

7-Os melhores tutoriais que encontrei, mas usei principalmente o primeiro:
http://debian-base.blogspot.com.br/2015/05/install-squid-34-with-ssl-bump-on.html
http://thejimmahknows.com/squid-3-1-caching-proxy-with-ssl/?doing_wp_cron=1450302327.447380065917968...
http://docs.diladele.com/administrator_guide_4_3/index.html (desse o importante que usei foi: apt-mark hold squid3 squid3-common, nesta página: http://docs.diladele.com/administrator_guide_4_3/install/debian8/install.html)

Espero ter ajudado. Grande abraço.



Boa tarde, gostaria de saber se deu certo? Pois estava precisando achar uma solução para porta 443, obrigado pela atenção.


8. Testes

Riccelli Reis de Oliveira
riccelli_reis

(usa Debian)

Enviado em 21/12/2015 - 13:26h

Desculpa pela demora. Ainda não saiu o tutorial, mas já adianto algumas coisas:
Antes de começar os testes na rede, peguei uma máquina e direcionei o tráfego só dela pelo Squid. Abaixo, as linhas inseridas no início do script de firewall, logo depois do MASQUERADE. Observe que no lugar do X será o ip:
iptables -t nat -A PREROUTING -s X.X.X.X -p tcp --dport 80 -j REDIRECT --to-port 3180
iptables -t nat -A PREROUTING -s X.X.X.X -p tcp --dport 443 -j REDIRECT --to-port 31443

Criar o certificado em /etc/squid3/cert:
# mkdir /etc/squid3/cert
# cd /etc/squid3/cert
# openssl genrsa -des3 -out squid-server.key 2048 (coloque uma senha forte e salve-a em segurança)
# openssl req -new -key squid-server.key -out squid-server.csr (Muito importante: depois deste comando, no quinto passo - Common Name (e.g. server FQDN or YOUR name) []: - coloque o ip do seu servidor, acredito que seja 172.18.4.2)
# openssl rsa -in squid-server.key -out certificado.key
# openssl x509 -req -days 3650 -in squid-server.csr -signkey certificado.key -out certificado.crt

Iniciar o cache de certificados:
# /usr/lib/squid3/ssl_crtd -c -s /var/lib/ssl_db/
# chown -R proxy /var/lib/ssl_db

Provavelmente você precisará copiar o arquivo certificado.crt para todas as máquinas e inserir em todos os navegadores como Autoridade Confiável. Trabalho nada confortável, mas aqui aproveitei para fazer atualizações e verificação no sistema operacional de todas as máquinas.

Agora uma configuração bem básica, que funcionou para uma máquina, mas você pode adaptar para sua rede. Percebi que a ordem influencia, precisa colocar ssl_bump por último mesmo. Neste caso criamos o arquivo chamado teste, em /etc/squid3/list, com uma lista de sites que serão liberados. O que não estiver nessa lista será bloqueado automaticamente, graças a linha ssl_bump server-first all:

## Ports
http_port 3180 intercept
https_port 31443 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=8MB cert=/etc/squid3/cert/certificado.crt key=/etc/squid3/cert/certificado.key

## DNS
dns_nameservers X.X.X.X 8.8.4.4

## Identify
visible_hostname servidor.dom

## Cache & Log
cache_mem 1024 MB
maximum_object_size_in_memory 100 MB
maximum_object_size 500 MB
cache_dir ufs /var/spool/squid3 102400 16 256
cache_access_log /var/log/squid3/cache_access.log

## SSL
shutdown_lifetime 2 seconds
always_direct allow all
sslproxy_capath /etc/squid3/cert
sslcrtd_program /usr/lib/squid3/ssl_crtd -s /var/lib/ssl_db -M 8MB

## ACLs
acl Tudo src all
acl manager url_regex -i ^cache_object:// /squid-internal-mgr/
acl localhost src 127.0.0.1/32
acl SSL_ports port 443
acl Safe_ports port 80 8080
acl purge method PURGE
acl CONNECT method CONNECT

acl RedeT src X.X.X.X/32
acl SiteSeguroLiberado dstdomain "/etc/squid3/list/teste"

## HTTP Access
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny CONNECT !SSL_ports
http_access deny !Safe_ports
http_access allow localhost

http_access allow RedeT
http_access deny all

## SSL Access
ssl_bump none localhost
ssl_bump none SiteSeguroLiberado
ssl_bump server-first all

sslproxy_cert_error deny all



9. Re: SQUID 3.4.8 +HTTPS +SSL +INTERCEPT - NONE error:invalid-request

Eduardo Oliveira Soares
stremenx

(usa Debian)

Enviado em 01/01/2016 - 13:22h

Boa tarde, segui sua orientação e deu certo mais surgiu um erro quando fui testar no firefox ele ate abriu google e outros mais quando tento gmail.com ou facebook da erro no certificado você sabe como resolver? Sendo que google chrome e internet explore deu 100%.
Obrigado pela atenção.


10. Funciona, falta apenas um certificado ssl validado!!!!

cleidson caldas
cleidsoncaldas

(usa Ubuntu)

Enviado em 02/01/2016 - 17:30h

Amigo, tenho um funcionando, criei um certificado e disponibilizei para a minha rede, possuo controle de banda e tamanho de download de arquivo, tenho problema em relação a certificado de bancos, pretendo resolver isso adquirindo um certificado ssl valido, enquanto isso, faço os sites de bancos não passarem pelo proxy.


11. Re: SQUID 3.4.8 +HTTPS +SSL +INTERCEPT - NONE error:invalid-request

Eduardo Oliveira Soares
stremenx

(usa Debian)

Enviado em 04/01/2016 - 19:24h

Boa noite, muito obrigado consegui resolver cometi um pequeno erro depois relendo meu squid pude corrigir erro.


12. Re: SQUID 3.4.8 +HTTPS +SSL +INTERCEPT - NONE error:invalid-request

Bruno Thomaz
SarusKant

(usa CentOS)

Enviado em 05/01/2016 - 17:42h

Boa tarde,
cleidsoncaldas, li sua resposta e vi que citou sobre adquirir um certificado SSL válido, mas acredito que isso não resolverá seu problema devido ao certificado informado ser um CA não um CRT normal, mas se obtiver sucesso, por favor informe, tenho muito interesse nesta solução.

Aguardo.



01 02