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
:
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?
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 anhttps_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.