fragen stichworte

Transparenter HTTP / HTTPS-Domänenfilter-Proxy

Ich möchte einen transparenten HTTP/HTTPS-Proxy einrichten, um ausgehende Anforderungen basierend auf dem Zielhostnamen (Domäne) zu filtern. Der Proxy selbst sollte nicht aufdringlich sein und nur den Verkehr weiterleiten, nicht entschlüsseln/modifizieren. Im Falle von HTTPS sollte die TLS SNI-Erweiterung verwendet werden, um den Hostnamen ohne Entschlüsselung zu extrahieren.

Mehrere Clients verwenden den Proxy für den Zugriff auf mehrere Hosts. Daher sollte der Proxy prüfen, ob ein bestimmter Zielhostname für den Client zulässig ist, der die Anforderung gestellt hat.

Ist dies mit Squid möglich (vorzugsweise Version 3.3.8)? Wenn ja, könnten Sie eine einfache Beispielkonfiguration für die Realisierung angeben? Wenn nicht, können Sie Alternativen empfehlen, die dazu in der Lage sind?

Zusätzliche Informationen:

  • Server, auf dem der Proxy laufen soll, ist Ubuntu 14.04
  • Die Verkehrsumleitung wird von einem anderen Router zu einem festen Port dieses Servers
  • abgedeckt
  • Der Proxy sollte wie üblich DNS verwenden, um den Zielhostnamen bei der Weiterleitung von Anforderungen aufzulösen.

Vielen Dank!

antworten

Was Sie brauchen, ist mit Squid ab Version 3.5 möglich, da in dieser Version das Feature "Peek-and-Splice" erforderlich ist. Ihre Aktion namens "peek": http://wiki.squid-cache.org/Features/SslPeekAndSplice.

Verwenden Sie etwas wie:

https_port 3130 intercept ssl-bump
ssl_bump peek all
ssl_bump splice all

intercept macht den Proxy transparent.

Ich bin mir nicht sicher, ob eine dritte Anforderung (Verwendung von DNS-Namen) erforderlich ist. Squid scheint in diesem Modus wirklich transparent zu sein. Es sollte jedoch SNI-Informationen extrahieren, wenn es vorhanden ist.

Sie können diese Informationen in ACL verwenden:

acl aclname ssl::server_name .foo.com ...