fragen stichworte

Wie kann man squid3 als HTTPS-Proxy richtig einrichten?

Ich versuche, squid3 als HTTPS-Proxy einzurichten, wobei das Tutorial hier verwendet wird. Ich habe die Proxy-Einstellungen in meinem Browser richtig eingerichtet, und wenn ich versuche, die HTTP Websites zu besuchen, kann ich mich erfolgreich verbinden. Ich erhalte jedoch immer eine Fehlermeldung, dass bei der Verbindung eine Zeitüberschreitung aufgetreten ist, wenn ich eine HTTPS -Protokollwebsite und den folgenden Fehler in meinem /var/log/squid3/cache.log:

finde
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

Hier ist meine /etc/squid3/squid.conf -Datei (kommentierte Zeilen aus Gründen der Kürze entfernt):

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

Hier ist die Ausgabe meines 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'

Ich habe viel Zeit damit verbracht, diesen Fehler zu googeln, konnte aber keine Lösung finden, die Squid als HTTP-Proxy konfiguriert. Wie bekomme ich das zum Laufen?

antworten

Möglicherweise müssen Sie die http_port -Direktive mit ssl-bump und nicht https_port verwenden, da Ihre Browser mit einem Proxy konfiguriert sind (CONNECT-Methode).

Der Intercept-Modus eignet sich für transparenten Proxy (keine Browsereinstellungen erforderlich), wenn Pakete mithilfe von iptables automatisch an den Proxy weitergeleitet werden. Die Direktive https_port wird verwendet, um den am Proxy ankommenden Datenverkehr abzufangen und zu verarbeiten.

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

This option is consulted when a CONNECT request is received on an http_port (or a new connection is intercepted at an https_port ), provided that port was configured with an ssl-bump flag. The subsequent data on the connection is either treated as HTTPS and decrypted OR tunneled at TCP level without decryption, depending on the first matching bumping "action".

Für ssl-bump-Beispiel: http://wiki.squid-cache.org/ConfigExamples/Intercept/SslBumpExplicit

Der Fehler "NF getsockopt (SO_ORIGINAL_DST)" ist ein NAT-Fehler. Es hat nichts mit der Verschlüsselung zu tun.

Da Sie Ihren Browser so konfiguriert haben, dass er den Proxy explizit verwendet:

  • Sie fangen nichts ab. Die Verwendung der Option "intercept" ist falsch und führt zum NAT-Fehler.

  • Der Browser verwendet TLS nicht, um eine Verbindung zum Proxy herzustellen. Das ist der wahre Grund, warum https_port falsch zu benutzen ist.

  • Der Browser sendet CONNECT-Nachrichten an Port 3127 des Proxys. Diese sind, was "bestoßen" werden muss.

Was Sie tun müssen, ist einfach verschieben die Einstellungen für ssl-bump in Ihre bestehende http_port-Zeile. Es sollte so werden:

http_port 3127 ssl-bump \\
   generate-host-certificates=on \\
   dynamic_cert_mem_cache_size=4MB \\
   key=/etc/squid3/example.com.private \\
   cert=/etc/squid3/example.com.cert

Andere Dinge, die Sie tun sollten, um SSL-Bump richtig einzurichten, entfernen Sie die folgenden Zeilen:

sslproxy_flags DONT_VERIFY_PEER
 sslproxy_cert_error deny all

 always_direct allow all

Sie tun mehr Schaden als Nutzen und sind nicht einmal zum Debuggen nützlich.

Aktualisieren Sie außerdem Ihren Proxy auf die neueste Upstream-Version. TLS und SSL-Bump sind an einem sich schnell ändernden Wettrüsten beteiligt, um mehr Sicherheit zu bieten und um diese bessere Sicherheit zu entschlüsseln. Wenn Sie ältere Versionen als die neuesten verwenden, treffen Sie garantiert Probleme auf die eine oder andere Weise. Squid-3.3 hat speziell Probleme mit Elliptic Curve und anderen neueren Verschlüsselungen, bricht, wenn die TLS-Sitzungszusammenfassung verwendet wird, kann das Cert-Pinning mit SNI nicht umgehen, generiert SHA-1-Zertifikate usw.