Tags: Windows Server 2016, Web-Server
Ein Reverse Proxy ist eine Kernkomponente der Sicherheitsarchitektur in vielen Netzwerken. Er dient dem geschützten Zugriff auf Web- oder Exchange-Server, indem er als Drehscheibe 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 Sicherheitsgründen nicht direkt angesprochen werden dürfen.
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 bietet für seine IIS eine solche Funktion, die man um ein separates Modul ergänzen muss.
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").
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 Kontextmenü des Servers den Befehl Website hinzufügen aus.
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 Betriebssystems 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 Lizenzbedingungen durch.
Im Anschluss daran sollte in der IIS-Management-Konsole das Icon für Application Request Routing Cache erscheinen.
Dieses öffne ich nun und klicke dann in der rechten Leiste auf Server Proxy Settings.
Hier muss man den Haken bei Enable proxy setzen.
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.
Wenn nun in meinem Beispiel ein Client die Adresse proxy.eich.local aufruft, dann sollte er an die Adresse ccu.contoso.local weitergeleitet werden.
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.
Täglich Know-how für IT-Pros mit unserem Newsletter
Roland Eich ist gelernter Fachinformatiker für Systemintegration und in der IT seit über 14 Jahren zu Hause. Roland deckt aufgrund seiner Erfahrungen ein breites Spektrum der Microsoft-Produktpalette ab.
Zudem besitzt er verschiedene Zertifizierungen (MCITP, MCSA und MCSE, ITIL, PRINCE2).
// Kontakt: E-Mail //
Ähnliche Beiträge
- Internet Information Services mit IIS-Manager remote (auf Server Core) verwalten
- Web-Anwendungen über Azure App Services (hochverfügbar) betreiben
- Drucker im Firmennetz für externe Mitarbeiter über Internet Printing freigeben
- Docker Container mit Windows Admin Center erstellen, ausführen und verwalten
- Apache, MySQL und PHP in Subsystem für Linux 2 (WSL2) installieren
8 Kommentare
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
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
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/
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
Danke für die Anleitung. Ich habs so konfiguriert, incl. Letsencrypt Zertifikat (per Certify The Web), aber werde bei Aufruf der SSL-Seite auf http://... (die eingetragene HTTP-Umleitung) redirected statt auf der SSL-Seite zu bleiben...
Habe bei einem Reverse-Proxy für Exchange aktuell ein Problem mit dem senden von E-Mails mit Anhang.
Empfang und Versand von E-Mails funktioniert super - auch der Empfang von E-Mails mit größeren Anhängen. Leider gibt es aber Probleme beim Senden. Sobald der Anhang etwas größer als 100K ist funktioniert es nicht und das iPhone meckert rum.
Muss ich irgendwas noch im IIS anpassen. Ich habe mal von einem Problem beim Apache gelesen, hier musste der SSL Buffer angepasst werden.
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.
Danke - genau das war es!- Leider findet sich dies in den meisten Guides nicht :-)