Squid, Apache und andere Proxy Server mit OWA

Zwar ist der Marktanteil des ISA-Servers schon recht hoch aber sehr viele Firmen setzen andere Proxy Systeme für den Zugriff auf das Internet und die Veröffentlichung von Webseiten ein. Für den Outlook Webzugriff sind auch hier einige "Besonderheiten" zu beachten.

Was tut ein Proxy

Die meisten Personen kennen HTTP nur als Protokoll zwischen dem Browser und einem Webserver und ein Proxy vermittelt zwischen den beiden Welten. Ganz so einfach ist es aber nicht, da mittlerweile Proxy Server an verschiedenen Stellen eingesetzt werden und die Kommunikation kontrollieren, filtern und absichern. Proxy Server können sowohl auf dem Weg vom Client in das Internet in ausgehender Richtung arbeiten als auch einen Webserver vor unerwünschten Zugriffen aus dem Internet sichern. Aber auch in umgekehrter Richtung als "Reverse Proxy" kann ein Proxy Server effektive Arbeit leisten

Die Hauptaufgaben eines Proxy Server sind daher

HTTP-Protokolle und Verben

Nun funktioniert HTTP eigentlich ganz einfach und einem SMTP-Prototokoll sehr ähnlich. Der Client verbindet sich per TCP auf den Port 80 oder 443 und stellt seine Anfrage. z.B.: ein "GET /" und der Webserver antwortet mit den Daten.

Nur allein ein "GET" reicht natürlich nicht für Outlook Webaccess. Um Daten zu senden wird oft der Befehl "POST" verwendet. Aber OWA nutzt noch einiges mehr. All das ist in RFCs und HTTP-Protokollen definiert.

Für einen Proxy und andere Firewalls ist es damit natürlich erforderlich, die von OWA verwendeten Erweiterungen auch zu unterstützen. Ansonsten wird OWA nicht oder nur mit eingeschränktem Funktionsumfang funktionieren

OWA und HTTP 1.x

Was nun genau OWA nutzt beschreibt Microsoft in seinen Dokumentationen sehr ausführlich. Da solche Verben auch im Rahmen einer Sicherung des Webservers mit URLSCAN blockiert werden können, ist der folgende Artikel zielführend:

Demnach gilt für den Zugriff auf OWA

Und genau die Protokolle muss der Proxy auch durchlassen, damit Sie mit den Internet Explorer den "Rich OWA" erreichen können. Ansonsten sieht ihr OWA vielleicht so verstümmelt aus:

Für den Notfall können Sie aber mit OWA Formbased den "Classic-Mode" aktivieren. Dann nutzt Outlook einfach nur Standard HTTP ohne erweiterten Verben. Bei fremden Browsern erkennt OWA anhand des "User-Agent" ob der Client ein Internet Explorer ist und entsprechend auf den "Classic OWA" zurückschaltet.

Squid Proxy Server

SQUID ist quasi ein Standard als Proxy Server und wird sehr breit eingesetzt. Damit ist Squid natürlich auch der häufigste Kandidat für Probleme beim Zugriff auf OWA oder der Veröffentlichung von OWA. Ich bin nun kein SQUID-Experte aber oftmals reicht schon folgende Tabelle über die Leistung von Squid:

Quelle: http://www.squid-cache.org/Doc/FAQ/FAQ.html#toc6.9

6.9 Request methods
Squid recognizes several request methods as defined in RFC 2616.
Newer versions of Squid (2.2.STABLE5 and above) also recognize RFC 2518 ``HTTP Extensions for Distributed Authoring -- WEBDAV'' extensions

 method    defined    cachabil.  meaning
 --------- ---------- ---------- -------------------------------------------
 GET       HTTP/0.9   possibly   object retrieval and simple searches.
 HEAD      HTTP/1.0   possibly   metadata retrieval.
 POST      HTTP/1.0   CC or Exp. submit data (to a program).
 PUT       HTTP/1.1   never      upload data (e.g. to a file).
 DELETE    HTTP/1.1   never      remove resource (e.g. file).
 TRACE     HTTP/1.1   never      appl. layer trace of request route.
 OPTIONS   HTTP/1.1   never      request available comm. options.
 CONNECT   HTTP/1.1r3 never      tunnel SSL connection.

 ICP_QUERY Squid      never      used for ICP based exchanges.
 PURGE     Squid      never      remove object from cache.
 PROPFIND  rfc2518    ?          retrieve properties of an object.
 PROPATCH  rfc2518    ?          change properties of an object.
 MKCOL     rfc2518    never      create a new collection.#
 COPY      rfc2518    never      create a duplicate of src in dst.
 MOVE      rfc2518    never      atomically move src to dst.
 LOCK      rfc2518    never      lock an object against modifications.
 UNLOCK    rfc2518    never      unlock an object.

Also sollten Sie zum einen dafür sorgen, dass Sie einen möglichst aktuellen SQUID einsetzen und natürlich die für Exchange relevante Verben auch frei schalten. Eine Gute Quelle nach Fehlern zu suchen ist die "cache.log" von Squid.

2005/03/11 09:28:21| parseHttpRequest: Unsupported method 'SEARCH'
2005/03/11 09:28:21| clientReadRequest: FD 12 Invalid Request
2005/03/11 09:28:21| parseHttpRequest: Unsupported method '<searchrequest'
2005/03/11 09:28:21| clientReadRequest: FD 12 Invalid Request
2005/03/11 09:28:21| clientSendMoreData: Deferring

Hier sehen Sie auf jeden Fall die geblockten Befehle, die SQUID noch nicht erlaubt. Die Konfiguration sollten Sie dann in der "squid.conf" entsprechend unter "extension_methods directive" anpassen.

extension_methods SEARCH SUBSCRIBE

Angeblich können Sie hier nur bis zu 20 Verben angeben. Zudem enthalten neuere Squid-Versionen oftmals schon weitere Verben als Voreinstellung. Mein Ratschlag ist daher in der CACHE.LOG die Fehler anzuschauen und entsprechend die erforderlichen Verben zu addieren.

SSL oder alternativer Port

Sehr viele Proxy Server lassen sich oft dadurch überlisten, dass der Webserver auf einem anderen Port betrieben oder SSL eingeführt wird. Entsprechend lassen einige Proxy Server dann alle Befehle transparent durch, da es sich anscheinend nicht um echten HTTP-Verkehr für den Abruf von Webseiten handelt.

Die Umschaltung auf SSL beruht darauf, dass der Proxy dann nicht die eigentlichen Daten sieht, sondern diese mit einem "CONNECT"-Befehl am Proxy verschlüsselt durchgegeben werden. Dies funktioniert aber dann nicht mehr, wenn der Proxy die SSL-Verbindung aufbricht und als SSL-Gateway arbeitet.

Links

Keywords: Squid Proxy ISA Reverse OWA