Reverse Web-Proxy in Windows Server 2016 einrichten

    Kurse zu Amazon Web Services: Technische Grundlagen und Bereitstellung von Cloud-Lösungen. Wunschtermine und Inhouse-Trainings möglich. Mehr Infos »

    (Anzeige)

    Application Request RoutingEin Reverse Proxy ist eine Kern­kompo­nente der Sicher­heits­architektur in vielen Netz­werken. Er dient dem ge­schützten Zugriff auf Web- oder Exchange-Server, indem er als Dreh­scheibe zwischen den externen Clients und den internen Services dient. Microsoft bietet in Windows Server für die IIS ein solches Feature an.

    Grundsätzlich unterscheidet man zwischen einem Forward- und einem Reverse-Proxy. Ersterer nimmt alle Anfragen aus dem internen Netzwerk auf und leitet diese ins Internet weiter. Zudem erreichen Server-Antworten immer zuerst den Proxy. Dies hat den Vorteil, dass der Client nach außen nicht sichtbar ist, da er hinter dem Proxy steht. Ein Forward-Proxy kann auch genutzt werden, um gewisse Web-Seiten zu blockieren.

    Windows-Bordmittel vs. Lösungen von Drittanbieten

    Ein Reverse-Proxy dagegen arbeitet in die andere Richtung, also nicht aus dem internen Netzwerk ins Internet, sondern von außerhalb der Firewall ins Firmennetz. Er dient hier als Absicherung für interne Services, welche vom Internet aus erreichbar sein sollen, aber aus Sicherheits­gründen nicht direkt angesprochen werden dürfen.

    Die Funktionsweise eines Forward-Proxy

    Viele Unternehmen setzen als Proxy eine Linux-Appliance mit Apache oder Ngnix ein. Aber auch von verschiedenen Firewall-Herstellern gibt es dafür eigene Lösungen. Windows Server 2016 bietet für seine IIS eine solche Funktion, die man um ein separates Modul ergänzen muss.

    Funktionsweise eines Reverse Proxy

    IIS auf Server in der DMZ installieren

    In meinem Netzwerk platziere ich eine VM mit Windows Server 2016 in der DMZ (demilitarisierte Zone). Hierauf installiere ich den IIS im Server Manager mit dem Wizard zum Hinzufügen von Rollen und Features (Rolle "Web-Server").

    Hinzufügen von Rollendiensten für den IIS, die der Reverse Proxy benötigt.

    Neben den standardmäßig aktivierten Subfunktionen wählt man hier beim Schritt Rollendienste hinzufügen folgende Komponenten aus:

    • HTTP-Umleitung
    • Komprimieren dynamischer Inhalte
    • IP- und Domäneneinschränkungen
    • Standardauthentifizierung
    • ISAPI-Erweiterungen
    • ISAPI-Filter

    Ordner für die neue Webseite erstellen

    Im Verzeichnis inetpub erstelle ich nun den Ordner

    C:\inetpub\sites\Proxy

    für die neue Website. Weiter geht es im IIS Manager, um die dazugehörige Website zu erstellen. Dazu führt man aus dem Kontext­menü des Servers den Befehl Website hinzufügen aus.

    Neue Website für den Proxy-Server im IIS-Manager hinzufügen

    Im folgenden Dialog gibt man den Namen für die Site und den Pfad zum Verzeichnis an, das man eben gerade angelegt hat. Schließlich ist noch die Eingabe des Hostnamens erforderlich.

    Application Request Routing 3.0 installieren

    Als nächstes wird das Feature Microsoft Application Request Routing 3.0 gebraucht. Es ist nicht Teil des Betriebs­systems und muss daher von Microsofts Website heruntergeladen werden. Es liegt als MSI-Paket vor, dessen Installation man nun startet. Das Setup läuft nach dem Akzeptieren der Lizenz­bedingungen durch.

    Installation von Application Request Routing für die IIS

    Im Anschluss daran sollte in der IIS-Management-Konsole das Icon für Application Request Routing Cache erscheinen.

    Die Installation von Application Request Routing ergänzt den IIS-Manager um ein entsprechendes Icon.

    Dieses öffne ich nun und klicke dann in der rechten Leiste auf Server Proxy Settings.

    Einstellungen für den Proxy-Server bearbeiten

    Hier muss man den Haken bei Enable proxy setzen.

    Proxy in den Einstellungen von Application Request Routing aktivieren

    Anschließend klickt man in der rechten Leiste auf Übernehmen, um den Vorgang abzuschließen. Ohne die Konfiguration dieser Einstellung erhalten wir beim Aufruf einer Seite ohne ersichtlichen Grund einen HTTP-404-Fehler.

    DNS-Einträge erstellen

    Ohne einen DNS-Eintrag kann die Seite natürlich nicht aufgerufen werden. Deshalb lege ich im nächsten Schritt einen A-, AAAA- oder CNAME-Eintrag für die neue Website an. Für das Firmen-LAN muss der Host auf einem internen DNS-Server eingetragen werden, extern dann auf dem DNS-Server, auf dem die jeweilige Domäne gehostet wird.

    Zudem muss man ggf. auch die Firewall oder der Router so konfigurieren, dass der eben erstellte Server von außen erreichbar ist. Schließlich sollte das Port-Forwarding möglichst über Port 443 (also verschlüsselt) laufen.

    Für die Verschlüsselung benötigt man ein entsprechendes Zertifikat, das von einer anerkannten Zertifizierungsstelle ausgestellt sein sollte.

    HTTP-Umleitung

    Damit die interne Seite jetzt auch über den Proxy erreichbar ist, muss eine Umleitung eingerichtet werden. Diese kann man direkt über die Web.config einrichteten oder aber über den IIS-Manager. Dort wählt man in der linken Navigation die betreffende Website aus und öffnet dann im Hauptfenster des Symbol HTTP-Umleitung.

    HTTP-Umleitung für Reverse Proxy einrichten im IIS-Manager

    Wenn nun in meinem Beispiel ein Client die Adresse proxy.eich.local aufruft, dann sollte er an die Adresse ccu.contoso.local weitergeleitet werden.

    Eingehende Anfragen auf eine interne Ressource umleiten

    Neben der Nutzung von HTTPS sollte man seine Websites schützen, indem man grundsätzlich eine Anmeldung mit Benutzernamen und Kennwort erzwingt, um den Zugriff durch Unbefugte zu unterbinden.

    4 Kommentare

    Bild von Benjamin Lubina
    Benjamin Lubina sagt:
    6. März 2018 - 19:59

    Hallo Roland Eich,

    danke für den guten Beitrag. Ich selbst nutze das Ganze mit einem Server 2012 R2 und bin damit sehr zufrieden. Wenn man die HTP Ports 80 für die Webseiten auch konfiguriert, kann man mit dem "Lets Encrypt Simple Windows Client" mittlerweile ganz einfach Zertifikate erstellen. Wie die URL Rewrite Regel dafür aussehen aussehen sollten damit es funktioniert kann ich bei Bedarf gerne zur Verfügung stellen.

    Hat man unter Server 2016 auch noch das "Problem" wenn man darüber auf den Exchange zugreifen möchte? Ich musste bei mir im IIS beim Anforderungsfilter / Header / Featureeinstellungen bearbeiten die maximal zulässge Inhaltslänge (Byte) auf 2147483648 erhöhen sonst funktionierte es nicht.

    Gruß
    Benjamin

    Bild von Heiner Koch
    Heiner Koch sagt:
    7. März 2018 - 11:01

    Hallo zusammen,
    danke für die sehr interessanten Beiträge. Ich suche seit langem eine sichere Methode zum Veröffentlichen von OWA (Exchange) auf Server 2016. Sehr interessant hierzu auch die Erfahrung von Benjamin und der Einsatz von Lets Encrypt. Wenn es hierzu noch vertiefende ToDo's gäbe wäre ich happy.
    Viele Grüße
    Heiner

    Bild von Benjamin Lubina
    Benjamin Lubina sagt:
    7. März 2018 - 11:50

    Hallo Heiner,
    das mit den Zertifikaten und Letsencrypt funktioniert am Besten wenn man eine eigene Domain mit fester IPv4 Adresse hat. Dyndns Accounts werden aber tatsächlich auch teilweise unterstützt, dazu habe ich gerade den Forumeintrag gefunden (siehe unten). Bestimmt hat sich mittlerweile mehr dazu ergeben, da kann man dann noch mal nachlesen.
    https://community.letsencrypt.org/t/ddns-and-lets-encrypt/31870/2

    Der aktuelle letsencrypt Windows Client kann hier geladen werden:
    https://github.com/PKISharp/win-acme/releases

    Man muss die Weiterleitung im IIS für Letsencrypt ein bißchen speziell konfigurieren, da können wir dann aber drüber sprechen wenn es soweit ist.

    Und das mit den Zertifikaten auch eingerichtet ist, kannst du über Microsoft (am Besten mit einem Test-Exchange-Konto) die Funktionen abschließend testen.
    https://testconnectivity.microsoft.com/

    Bild von Heiner Koch
    Heiner Koch sagt:
    7. März 2018 - 11:56

    Hallo Benjamin,
    danke für die Tipps, ich werde mich mal an die Sache ran machen und melde mich wieder wenn in weiteren Input brauche.
    Viele Grüße
    Heiner