OWA (Outlook Web App) ohne Forefront absichern mit nginx

- 08.09.2012
von Thomas Windscheif / Microlinc



Man kann das OWA ohne die teuere Forefront-Solution von Microsoft absichern. Dazu eignen sich hervorragend Reverse-Proxys. Für RPC, MAPI over HTTPS u. Ä. Protokolle bietet nginx leider keine Unterstützung.

Eine hervorragend konfigurierbare Lösung bietet KEMP mit der Loadmaster-Produktreihe an. KEMP Loadmaster verfügen über "echte" Loadbalancing-Methoden, darüberhinaus über sehr einfach konfigurierbare Clusterkonfigurationen und damit HA und sind im Vergleich zu anderen Anbietern im Verhältnis wesentlich günstiger. Es gibt sowohl Hardware-Lösungen die insbesondere für "große" SSL-(Offloading)-Szenarien - Dank der integrierten ASIC-Prozessoren - perfekt abgestimmt sind und VM-Lösungen für alle großen Virtualisierungsplattformen (mit Ausnahme von Citrix). Über ESP steht auch die Möglichkeit eines u. A. Kerberos-basierten SSO für das Backend zur Verfügung. KEMP bietet auch kostenfreie VM-Testversionen mit einer Laufzeit von 30 Tagen an um sich das ganze mal praktisch anzuschauen. Dank des sehr engen Kontakts der Consultants zu den Entwicklern kommen regelmäßig neue Features mit dazu. Ich persönlich bin von dem Produkt schwer begeistert, auch wenn man nicht der gebohrene Loadbalancer-Experte ist, kann man einfache Testumgebungsszenarien binnen kürzester Zeit aufsetzen und nachvollziehbar simulieren.

UPDATE 16.07.2015
nginx kann nun wohl auch Outlook Anywhere "loadbalancen". Zumindest hat nginx eine entsprechende Anleitung hierfür veröffentlicht https://www.nginx.com/wp-content/uploads/2015/05/microsoft-exchange-deployment-guide-20150520.pdf. Hier wird zwar nginx plus als Produkt explizit beschrieben, dass wird aber auch für die allgemeine Version gültig sein. Seit der 1.9.x-Version ist ein stream-Modul (http://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#hash) integriert welches die Pakete einfach nur durchreicht. Fragt sich, ob man eine vorgelagerte Clientzertifikatsabfrage einbauen kann, bevor die Verbindung zum Exchange durchgereicht wird. Ich habe dies bisher noch nicht testen können.

UPDATE 04.01.2014: Mit dem Windows Server 2012 R2 steht eine neue Rolle zur sicheren Veröffentlichung von Webanwendungen nach außen zur Verfügung: "Webanwendungsproxy". Hier lassen sich interne Anwendungen nach außen hin veröffentlichen mit bspw. einer Vorauthentifizierung.

Hier ein Blogeintrag von Hrn. Sichel in der recht anschaulich die Umsetzung in der Praxis dargestellt wird.:
http://blog.asichel.de/server-2012-r2-webanwendungsproxy-mit-exchange-2013/

Ich bin persönlich mit nginx als Reverse-Proxy in Kombination mit SSL-Offload mehr als zufrieden, es verbraucht kaum Speicher und belastet die CPU kaum. Zudem lässt es sich als low-privileged Dienst betreiben, generell bin ich der Meinung das die Kombination aus verschiedenen Hersteller-Tools Netzwerke sicherer machen (bei korrekter Konfiguration) als All-in-One Lösungen eines Herstellers, zudem lässt sich mit nginx die Last auf verschiedene Server verteilen und ist daher auch für wachsende Strukturen (mit wenig Aufwand) hervorragend anzuwenden.

UPDATE: Einige Forefront-Komponenten (wie z.B. TMG vorher ISA) wurden Dezember 2012 von Microsoft abgekündigt, bestehende Systeme werden wohl weiterhin gepflegt aber um sich in Zukunft nach außen hin zu schützen muss man sich wohl mit Produkten anderer Anbieter schützen. Grund dafür sollen die neuen integrierten Security-Solutions in den Produkten wie SharePoint oder Exchange 2013 sein.
(weitere Informationen: http://www.zdnet.de/88123260/microsoft-stellt-funf-sicherheitsprodukte-der-reihe-forefront-ein/)

Eine effiziente und zugleich kostenfreie Variante wäre der Reverse-Proxy nginx (http://nginx.org/). Eine sehr kleine und relativ einfach zu konfigurierende Software inkl. SSL-Offload wodurch die Belastung des OWA-ausführenden IIS-Servers reduziert wird. Außerdem kann man zur Missbrauchsvermeidung eine Basic-Benutzerauthentifizierung auch über eine SSL-Verbindung integrieren. Das mindert auch den Ressourcenverbrauch durch gut- oder bösartige Bots und verhindert Anwendung von Exploits bei der normalen OWA-Authentifizierung. nginx verfügt über ein hervorragendes wiki (http://wiki.nginx.org/Main; offizielle Dokumentation: http://nginx.org/en/docs/) auf dem alle Funktionen beispielhaft erläutert werden (englisch-sprachig).

Außerdem ist es möglich z.B. bei Active-Sync die Benutzer über Clientzertifikate bzw. kombiniert (Clientzertifikat & Benutzername und Passwort; getestet mit Windows Mobile und Android; mit WP 7 ist dies leider nicht möglich, mit WP 8/8.1 konnte ich es leider noch nicht testen) über nginx anzumelden. D. h. durch den vorgelagerten Reverse-Proxy wird durch aktivierte Client-Zertifikat-Prüfung erstmal geprüft, ob das Gerät überhaupt zum Backend geleitet werden darf und dann muss sich das Gerät noch mit der klassischen Benutzername/Kennwort-Anmeldung authentifzieren.

Für die Verwendung der Zertifikate benötigt man openssl zur Konvertierung und um die Zertifikateverteilung an eine zentrale Stelle zu binden bietet sich die AD-Zertifizierungsstellle (in Windows-Domänen an). nginx prüft die Client-Zertifikate gegen das in der nginx-config hinterlegte root-cert. Eine einfache Verwaltung (z. B. Sperrung der Benutzerzertifikate) habe ich noch nicht gefunden, wünschenswert wäre ein Abgleich gegen die AD-Zertifizierungstelle. Da meines Wissens nach in der Spezifikation von Active-Sync eigentlich nur eine Authentifizierungsmethode verwendet werden kann, "zicken" die Endgeräte zu Beginn etwas aber es funktioniert.

nginx prüft das user-cert und übergibt dann an den Active-Sync Ordner des IIS. Dieser ist in Exchange so konfiguriert, dass er nur Benutzerauthentifizierung prüft.
Das User-Zertifikat erstellt man ganz normal über das certmgr-Snap-in und importiert es als pfx in den Speicher des Smartphones.

Eine beispielhafte Standard-Konfiguration findet man hier (OWA & Active-Sync):
http://forum.nginx.org/read.php?2,92239,92239




Für Anbindung von IPhone u.Ä. Peripherien sollte man folgenden Artikel beachten:
http://www.zero1design.com/2011/12/08/nginx-reverse-proxy-exchange-activesync-for-ios/
MICROL!NC - URL zum Artikel: http://microlinc.homeip.net/index.php?lev1=3%E2%89%A4v2=4%E2%89%A4v3=11&id=101 - Ausdruck vom 29.03.2024