web-dev-qa-db-fra.com

Comment configurer correctement Squid en tant que proxy HTTPS?

J'essaie de configurer squid3 en tant que proxy HTTPS en utilisant le tutoriel donné ici . J'ai correctement configuré les paramètres du proxy dans mon navigateur et lorsque j'essaie de visiter [~ # ~] http [~ # ~] les sites Web, je suis capable de se connecter avec succès. Cependant, je continue à recevoir une "erreur de délai d'expiration de connexion" chaque fois que je frappe un site Web de protocole [~ # ~] https [~ # ~] et le erreur suivante dans mon /var/log/squid3/cache.log:

2016/06/20 19:12:47|  NF getsockopt(SO_ORIGINAL_DST) failed on local=<local_ip_address>:3129 remote=<remote_ip_address>:55209 FD 8 flags=33: (92) Protocol not available

Voici mon /etc/squid3/squid.conf fichier (lignes commentées supprimées par souci de concision):

auth_param basic program /usr/lib/squid3/basic_ncsa_auth /usr/etc/passwd
auth_param basic casesensitive off
auth_param basic credentialsttl 2 hours

acl user_auth proxy_auth REQUIRED

http_access allow user_auth

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # Gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT

http_access allow localhost
http_access allow all
http_port 3127

https_port 3129 intercept ssl-bump generate-Host-certificates=on dynamic_cert_mem_cache_size=4MB key=/etc/squid3/example.com.private cert=/etc/squid3/example.com.cert

ssl_bump server-first all
sslproxy_flags DONT_VERIFY_PEER
sslproxy_cert_error deny all
sslcrtd_program /usr/lib/squid3/ssl_crtd -s /var/lib/ssl_db -M 4MB sslcrtd_children 8 startup=1 idle=1
coredump_dir /var/spool/squid3

refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^Gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern (Release|Packages(.gz)*)$      0       20%     2880
refresh_pattern .               0       20%     4320

always_direct allow all

Voici la sortie de mon squid3 -v:

Squid Cache: Version 3.3.8
 (Ubuntu)
configure options:  '--build=i686-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-async-io=8' '--enable-ssl' '--enable-ssl-crtd' '--enable-storeio=ufs,aufs,diskd,rock' '--enable-removal-policies=lru,heap' '--enable-delay-pools' '--enable-cache-digests' '--enable-underscores' '--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-linux-netfilter' 'build_alias=i686-linux-gnu' 'CFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall' 'LDFLAGS=-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' 'CPPFLAGS=-D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security'

J'ai passé beaucoup de temps à rechercher cette erreur sur Google, mais je n'ai pas réussi à trouver une solution qui configurerait Squid en tant que proxy HTTP. Comment puis-je faire fonctionner cela?

4
jobin

Vous devrez peut-être envisager d'utiliserhttp_port directive avec ssl-bump et pas https_port, puisque vos navigateurs sont configurés avec proxy (méthode CONNECT).

Le mode d'interception est approprié pour un proxy transparent (aucun paramètre de navigateur requis), lorsque les paquets sont automatiquement transmis au proxy à l'aide d'iptables. https_port La directive est utilisée pour intercepter et gérer ce trafic arrivant au proxy.

ssl-bump: http://www.squid-cache.org/Doc/config/ssl_bump/

Cette option est consultée lorsqu'une demande CONNECT est reçue sur un http_port (ou une nouvelle connexion est interceptée à un https_port), à condition que le port soit configuré avec un indicateur ssl-bump. Les données suivantes sur la connexion sont soit traitées comme HTTPS et décryptées OR tunnelées à TCP sans décryptage, en fonction de la première "action" de bump correspondante).

Pour l'exemple ssl-bump: http://wiki.squid-cache.org/ConfigExamples/Intercept/SslBumpExplicit

3
Diamond

L'erreur "NF getsockopt (SO_ORIGINAL_DST)" est une erreur NAT. Elle n'a rien à voir avec le chiffrement.

Puisque vous avez configuré votre navigateur pour utiliser explicitement le proxy:

  • vous n'interceptez rien. L'utilisation de l'option "intercepter" est incorrecte et conduit à l'erreur NAT.

  • le navigateur n'utiliserait pas TLS pour se connecter au proxy. C'est la vraie raison pour laquelle https_port est mal utilisé.

  • le navigateur enverra des messages CONNECT au port 3127 du proxy. Ce sont ce qui doit être "heurté".

Donc, ce que vous devez faire est simplement de déplacer les paramètres ssl-bump vers votre ligne http_port existante. Cela devrait devenir comme ceci:

 http_port 3127 ssl-bump\
 generate-Host-certificats = on\
 dynamic_cert_mem_cache_size = 4 Mo\
 clé =/etc/squid3/example.com.private\
 cert =/etc/squid3/example.com.cert 

Vous devez également configurer correctement SSL-Bump en supprimant les lignes suivantes:

 sslproxy_flags DONT_VERIFY_PEER 
 sslproxy_cert_error refuser tout 
 
 toujours_direct autoriser tout 

Ils font plus de mal que de bien et ne sont même pas utiles pour le débogage.

De plus, mettez à niveau votre proxy vers la dernière version en amont. TLS et SSL-Bump sont impliqués dans une course aux armements en évolution rapide pour améliorer la sécurité et décrypter cette meilleure sécurité. L'utilisation de versions plus anciennes que la plus récente garantit des problèmes d'une manière ou d'une autre. Squid-3.3 a spécifiquement des problèmes avec Elliptic Curve et d'autres chiffrements récents, s'arrête lorsque la reprise de session TLS est utilisée, ne peut pas contourner l'épinglage de certificats à l'aide de SNI, génère des certificats SHA-1, etc.

2
Amos Jeffries