Freigeben über


IIS 7.0-Anforderungsfilterung und URL-Umschreibung

von Ruslan Yakushev

IIS enthält ab Version 7.0 ein Modul zur Anforderungsfilterung, das auf dem URLScan-ISAPI-Filter für IIS 6.0 basiert. Das Modul hilft Ihnen, die Sicherheit Ihrer Webserver zu erhöhen.

Das IIS-Team hat auch das URL-Rewrite-Modul als Add-On für IIS veröffentlicht, das Funktionen für die regelbasierte URL-Bearbeitung bereitstellt. Obwohl der Hauptzweck des URL-Rewrite-Moduls darin besteht, URL-Pfade für Anforderungen umzuschreiben, kann es auch als Tool zum Erzwingen von Sicherheitsmaßnahmen verwendet werden, das den Zugriff auf Websiteinhalte verhindert.

In diesem Artikel werden die Unterschiede zwischen diesen beiden Modulen erläutert und Leitfäden zur Auswahl von Maßnahmen zur Verbesserung der Sicherheit Ihres Webservers bereitgestellt.

Anforderungsfilterung und URL-Umschreibung in der IIS-Anforderungsverarbeitungspipeline

Zunächst ist es wichtig zu verstehen, wie das Anforderungsfiltermodul und das URL-Rewrite-Modul in die IIS-Pipeline eingebunden werden. Das folgende Diagramm zeigt die relative Reihenfolge dieser beiden Module:

Diagram of the worker process to get from H T T P Request and H T T P Response.

Das Anforderungsfiltermodul wird am Anfang der Anforderungsverarbeitungspipeline ausgeführt, indem das BeginRequest-Ereignis behandelt wird. Das Modul wertet die Anforderungsmetadaten aus, z. B. Header, Abfragezeichenfolge, Inhaltslänge usw., um zu bestimmen, ob die Anforderungsmetadaten mit einem vorhandenen Filter übereinstimmen. Wenn eine Übereinstimmung besteht, generiert das Modul eine Antwort mit dem Code „404 (Datei nicht gefunden)“ und leitet direkt zum Rest der IIS-Pipeline weiter.

Wenn das Anforderungsfiltermodul die Anforderung nicht gefiltert hat, wird diese an das nächste Modul in der IIS-Pipeline übergeben, was möglicherweise das URL-Rewrite-Modul ist. Das URL-Rewrite-Modul wertet die Anforderung anhand von Umschreibungsregeln aus. Wenn eine Regel zu einer Umleitung, einer benutzerdefinierten Antwort oder einem Abbruch der Anforderung führt, generiert das URL-Rewrite-Modul eine entsprechende Antwort und leitet dann zum Rest der IIS-Pipeline weiter.

Beachten Sie, dass das Anforderungsfiltermodul vor dem URL-Rewrite-Modul platziert werden muss. Dies liegt daran, dass das Anforderungsfiltermodul in der IIS-Architektur als Gatekeeper betrachtet wird, der den Webserver vor böswilligen Anforderungen schützt. Das URL-Rewrite-Modul gilt hingegen als serverbasierte Komponente zur Bearbeitung von URLs, die bereits vom Anforderungsfiltermodul gefiltert wurden. Sie können sich die URL-Umschreibung als serverbasierte Anwendungslogik vorstellen – ähnlich wie ASP.NET-Anwendungen, die auch umschreiben oder umleiten können. Die Anforderungsfilterung ist eine erste Verteidigungslinie, während die URL-Umschreibung eine zweite Sicherheitsbarriere sein kann, die anwendungsspezifischer ist. Weitere Informationen finden Sie im Blogbeitrag Interaktion zwischen URL-Rewrite-Modul und Anforderungsfiltermodul für IIS 7 auf der IIS-Website.

Unterschiede zwischen Anforderungsfilterung und URL-Umschreibung

Anforderungsfilterung und URL-Umschreibung weisen die folgenden konzeptionellen Unterschiede auf:

  • Die Anforderungsfilterung wurde ausschließlich für Sicherheitsszenarien entwickelt und optimiert.
  • Die URL-Umschreibung kann für eine breite Palette von Szenarien angewandt werden. Sicherheitsszenarien sind nur ein Teilbereich.

Vor diesem Hintergrund können die Features der beiden Module verglichen werden, die in Sicherheitsszenarien verwendet werden können. Berücksichtigen Sie die folgenden Kategorien:

  1. Filterkriterien. Welcher Eingabetyp kann verwendet werden, um eine Entscheidung über das Sperren einer Anforderung zu treffen? Welche Bedingungen können ebenfalls verwendet werden, um Logik für Anforderungssperren auszudrücken?
  2. Sperraktionen für Anforderungen. Welche Aktionen können ausgeführt werden, wenn eine Anforderung die Filterkriterien erfüllt?
  3. Auswirkungen auf die Leistung. Wie wirkt sich die Anforderungsfilterung und die URL-Umschreibung auf die Leistung Ihres Webservers aus?

Filterkriterien

In der folgenden Tabelle sind mögliche Filterkriterien mit einer Erläuterung aufgeführt, wie sie von beiden Modulen unterstützt werden.

Kriterium Vom Anforderungsfiltermodul unterstützt? Vom URL-Rewrite-Modul unterstützt?
Überprüfen des angeforderten URL-Pfads Ja, mithilfe der Teilzeichenfolgensuche Ja, mit RegEx- und Platzhaltermustern
Überprüfen der URL-Länge Ja No
Abfragezeichenfolge überprüfen No Ja, mit RegEx- und Platzhaltermustern
Überprüfen der Länge der Abfragezeichenfolge Ja No
Überprüfen von HTTP-Verben Ja Ja
Überprüfen der Länge des Anforderungsinhalts Ja No
Überprüfen von HTTP-Headern No Ja, mit RegEx- und Platzhaltermustern
Überprüfen der Länge von HTTP-Headern Ja No
Überprüfen der Servervariablen No Ja
Überprüfen der IP-Adresse oder des Hostnamens des Absenders Nein* Ja

* Das IP-Einschränkungsmodul in IIS kann zum Blockieren von Anforderungen von bestimmten IP-Adressen und Hostnamen verwendet werden.

Sperraktionen für Anforderungen

Das Anforderungsfiltermodul verfügt nur über eine Aktion, die ausgeführt wird, wenn eine Anforderung mit einem Filterkriterium übereinstimmt. Die Aktion besteht darin, den Statuscode „404 (Datei nicht gefunden)“ zurückzugeben.

Das URL-Rewrite-Modul bietet viel mehr Optionen für das Blockieren von Anforderungen, einschließlich der folgenden:

  1. Die angeforderte URL kann in eine andere URL umgeschrieben werden. Um beispielsweise das Hot-Linking in Bildern zu verhindern, können Sie eine URL für alle Anforderungen von einer Drittanbieterdomäne in eine Platzhalterbilddatei umschreiben.
  2. Der Webclient kann zu einer anderen URL umgeleitet werden.
  3. Sie können einen HTTP-Statuscode Ihrer Wahl an den Webclient senden. Sie können z. B. den Statuscode „401 (Nicht autorisiert)“ für Anforderungen senden, die bestimmten Filterkriterien entsprechen.
  4. Die HTTP-Anforderung kann abgebrochen werden, indem die Socketverbindung aufgehoben wird. Auf diese Weise erhält der Webclient überhaupt keine Informationen zum Webserver.

Leistungsauswirkungen

Beide Module wurden implementiert, um so wenig Auswirkungen wie möglich auf die Leistung des IIS-Webservers zu haben. Es gibt jedoch die folgenden wichtigen Leistungsunterschiede zwischen diesen Modulen:

  • Das URL-Rewrite-Modul basiert stark auf Mustern für reguläre Ausdrücke. Die Auswertung regulärer Ausdrücke ist ein aufwendiger Vorgang. Wenn Sie viele komplexe Umschreibungsregeln definieren, bemerken Sie möglicherweise Auswirkungen auf den Durchsatz Ihres Webservers.
  • Das Anforderungsfiltermodul verwendet keine regulären Ausdrücke und auch keinen anderen Musterabgleich. Es führt einfach eine Suche nach Teilzeichenfolgen durch, die erhebliche geringere Auswirkungen auf den Webserverdurchsatz haben kann.

Auswählen zwischen Anforderungsfilterung und URL-Umschreibung

Wenn Sie mit Blick auf die Sicherheit Ihres Webservers zwischen Anforderungsfilterung und URL-Umschreibung wählen müssen, sollten Sie im Allgemeinen mit der Anforderungsfilterung beginnen. Die Anforderungsfilterung ist für Sicherheitsszenarien optimiert, und ihr Featuresatz reicht wahrscheinlich für die Implementierung Ihrer Sicherheitsanforderungen aus. Wenn Ihre Anforderungen nicht vom Anforderungsfiltermodul abgedeckt werden, verwenden Sie das URL-Rewrite-Modul, um sie zu implementieren, und überlassen Sie die restlichen Sicherheitsaufgaben dem Anforderungsfiltermodul. Auf diese Weise verringern Sie die Leistungseinbußen durch das URL-Rewrite-Modul, da Sie nur die minimale Menge an Umschreibungsregeln verwenden, die vom Server verarbeitet werden müssen.