Konfigurieren der Anforderungsfilterung in IIS
von Keith Newman und Robert McMurray
In diesem Dokument wird gezeigt, wie allgemeine Anforderungfiltereinstellungen verwendet werden, um die Sicherheit auf dem IIS 8-Webserver zu verbessern.
Anforderungsfilter schränken die Arten von HTTP-Anforderungen ein, die von IIS 8 verarbeitet werden. Durch das Blockieren bestimmter HTTP-Anforderungen helfen Anforderungsfilter dabei zu verhindern, dass potenziell gefährliche Anforderungen den Server erreichen. Das Anforderungfiltermodul überprüft eingehende Anforderungen und lehnt die Anforderungen ab, die basierend auf den von Ihnen eingerichteten Regeln unerwünscht sind.
Standardmäßig lehnt IIS Anforderungen zum Durchsuchen kritischer Codesegmente ab. Zudem werden Anforderungen für einige Dateiendungen abgelehnt.
Sie können einen Anforderungsfilter auf Serverebene konfigurieren und die Konfiguration dann auf Websiteebene außer Kraft setzen.
Voraussetzungen
Um dieses Tutorial optimal nutzen zu können, benötigen Sie Zugriff auf einen Computer mit einem der folgenden Betriebssysteme:
- Windows Server® 2012
- Windows® 8
Allgemeine Einstellungen für Anforderungsfilter
Zu den allgemeinen Einstellungen zählen u. a. folgende Einstellungen:
- Auswahl, ob der Zugriff auf eine Datei mit einer Erweiterung zugelassen wird, die für Anforderungsfilter nicht aufgeführt ist
- Auswahl, ob Anforderungen zugelassen werden, die nicht aufgeführte HTTP-Verben verwenden
- Auswahl, ob Anforderungen zugelassen werden, die höchstwertige Bitzeichen (Nicht-ASCII) enthalten
- Auswahl, ob Anforderungen zugelassen werden, die doppelt codiert sind
- Maximale Länge des angeforderten Inhalts
- Maximale Länge der URL
- Maximale Größe einer Abfragezeichenfolge
So konfigurieren Sie allgemeine Anforderungsfilteroptionen über die Benutzeroberfläche
- Öffnen Sie IIS-Manager, und wählen Sie die Ebene aus, für die Sie Anforderungsfilter konfigurieren möchten.
- Doppelklicken Sie in der Featureansicht auf Anforderungsfilterung.
- Klicken Sie im Bereich Aktionen auf Featureeinstellungen bearbeiten.
- Bearbeiten Sie im Dialogfeld Einstellungen für die Anforderungsfilterung bearbeiten die gewünschten Einstellungen, und klicken Sie dann auf OK.
So konfigurieren Sie allgemeine Anforderungsfilteroptionen über die Befehlszeile
Konfigurieren von höchstwertigen Bitzeichen
Verwenden Sie zum Konfigurieren von höchstwertigen Bitzeichen die folgende Syntax:
appcmd set config /section:requestfiltering /allowhighbitcharacters:
true false |
Geben Sie z. B. Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE, um höchstwertige Bitzeichen zuzulassen:
appcmd set config /section:requestfiltering /allowhighbitcharacters:true
Konfigurieren doppelter Escapezeichen
Verwenden Sie die folgende Syntax, um doppelte Escapezeichen zu konfigurieren:
appcmd set config /section:requestfiltering /allowdoubleescaping:
true false |
Geben Sie z. B. Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE, um doppelte Escapezeichen zu aktivieren:
appcmd set config /section:requestfiltering /allowdoubleescaping:true
Konfigurieren der maximal zulässigen Inhaltslänge
Verwenden Sie die folgende Syntax, um einen Wert für die maximal zulässige Länge von Inhalten zu konfigurieren:
appcmd set config /section:requestfiltering /requestlimits.maxallowedcontentlength:
unit
Die Variable requestlimits.maxallowedcontentlength:
Einheit gibt die maximale Länge des Inhalts an.
Geben Sie z. B. Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE, um 30.000.000 als maximale Länge von Inhalten anzugeben:
appcmd set config /section:requestfiltering /requestlimits.maxallowedcontentlength:30000000
Konfigurieren der maximal zulässigen URL-Länge
Verwenden Sie die folgende Syntax, um einen Wert für die maximal zulässige Länge einer eingehenden URL zu konfigurieren:
appcmd set config /section:requestfiltering /requestlimits.maxurl:
unit
Die Variable requestlimits.maxurl:
Einheit gibt die maximale Länge einer eingehenden URL an.
Geben Sie z. B. Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE, um 4096 als maximale Länge einer eingehenden URL anzugeben:
appcmd set config /section:requestfiltering /requestlimits.maxurl:4096
Konfigurieren der maximal zulässigen Zeichenfolgenlänge
Verwenden Sie die folgende Syntax, um einen Wert für die maximal zulässige Länge einer eingehenden Abfragezeichenfolge zu konfigurieren:
appcmd set config /section:requestfiltering /requestlimits.maxquerystring:
unit
Die Variable requestlimits.maxquertystring:
Einheit gibt die maximale Länge einer eingehenden Abfragezeichenfolge an.
Geben Sie z. B. Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE, um 2048 als maximale Länge einer eingehenden Abfragezeichenfolge anzugeben:
appcmd set config /section:requestfiltering /requestlimits.maxquerystring:2048
Konfigurieren der maximalen Größe für einen HTTP-Header
Verwenden Sie die folgende Syntax, um eine Größenbeschränkung für einen bestimmten HTTP-Header zu konfigurieren:
appcmd set config /section:requestfiltering /+requestlimits.headerLimits.[header='
Zeichenfolge',sizelimit='
Einheit']
Die Variable header=
Zeichenfolge gibt den Header an, für den diese Einschränkung gilt. Die Variable sizelimit=
Einheit gibt die maximale Größe dieses Headers an.
Geben Sie z. B. Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE, um 2048 als maximale Größe für Header anzugeben, die den Wert „contoso.com“ enthalten:
appcmd set config /section:requestfiltering /+requestlimits.headerLimits.[header='contoso.com',sizelimit='2048']
Dateinamenerweiterungen
Für jede Dateiendung, die Sie hinzufügen, können Sie angeben, ob Anforderungen für diesen Dateityp zugelassen sind oder abgelehnt werden.
So konfigurieren Sie Dateiendungen über die Benutzeroberfläche
- Öffnen Sie IIS-Manager, und wählen Sie die Ebene aus, für die Sie Anforderungsfilter konfigurieren möchten.
- Doppelklicken Sie in der Featureansicht auf Anforderungsfilterung.
- Wählen Sie die Registerkarte Dateiendungen aus.
- Klicken Sie im Bereich Aktionen entweder auf Dateiendung zulassen oder Dateinamenerweiterung ablehnen.
- Geben Sie die Dateiendung in das Feld ein, und klicken Sie dann auf OK.
So konfigurieren Sie Dateiendungen über die Befehlszeile
Konfigurieren nicht aufgelisteter Dateiendungen
Verwenden Sie die folgende Syntax zum Konfigurieren, wie nicht aufgeführte Dateiendungen von IIS behandelt werden:
appcmd set config /section:requestfiltering /fileExtensions.allowunlisted:
true false |
Geben Sie z. B. Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE, um nicht aufgeführte Dateiendungen abzulehnen:
appcmd set config /section:requestfiltering /fileExtensions.allowunlisted:false
Konfigurieren für WebDAV-Anforderungen
Verwenden Sie die folgende Syntax zum Konfigurieren, ob Dateiendungen für WebDAV-Anforderungen gelten:
appcmd set config /section:requestfiltering /fileExtensions.applyToWebDAV:
true false |
Geben Sie z. B. Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE, um IIS so zu konfigurieren, dass Dateiendungen nicht für WebDAV-Anforderungen gelten:
appcmd set config /section:requestfiltering /fileExtensions.applyToWebDAV:false
Hinzufügen oder Entfernen einer Dateiendung
Verwenden Sie die folgende Syntax, um eine Dateiendung hinzuzufügen:
appcmd set config /section:requestfiltering /+fileExtensions.[fileextension='
string',allowed='true | false']
Die Variable fileextension
=Zeichenfolge ist die Dateiendung, die Sie zulassen oder ablehnen möchten.
Geben Sie z. B. Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE, um eine Zulassungsregel für die Dateiendung „.xxx“ hinzuzufügen:
appcmd set config /section:requestfiltering /+fileExtensions.[fileextension='.xxx',allowed='true']
Geben Sie z. B. Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE, um eine Regel für die Dateiendung „.xxx“ zu entfernen:
appcmd set config /section:requestfiltering /-fileExtensions.[fileextension='.xxx']
Filterregeln
IIS 8 gestattet es Ihnen, benutzerdefinierte Filterregeln zu definieren, die auf eingehende Anforderungen angewendet werden. Mithilfe dieses Features können Sie Filter definieren, die Folgendes ausführen können:
- Prüfen der Anforderungs-URL
- Prüfen auf Abfragezeichenfolgen, die in der URL enthalten sind
- Prüfen auf bestimmte Headerfelder
- Definieren, für welche Dateiendungen der Filter gilt
- Definieren der abzulehnenden Zeichenfolgen
So konfigurieren Sie eine Filterregel über die Benutzeroberfläche
- Öffnen Sie IIS-Manager, und wählen Sie die Ebene aus, für die Sie Anforderungsfilter konfigurieren möchten.
- Doppelklicken Sie in der Featureansicht auf Anforderungsfilterung.
- Wählen Sie die Registerkarte Regeln aus.
- Doppelklicken Sie im Bereich Aktionen auf Filterregel hinzufügen.
- Geben Sie im Feld Name einen Namen für die Filterregel ein.
- Wenn die URL überprüft werden soll, aktivieren Sie das Kontrollkästchen URL überprüfen.
- Wenn die Abfragezeichenfolge überprüft werden soll, aktivieren Sie das Kontrollkästchen Abfragezeichenfolge überprüfen.
- Geben Sie unter Header überprüfen mindestens einen Header ein, der überprüft werden soll.
- Geben Sie unter Gilt für mindestens eine Dateiendung ein, auf die die Regel angewendet wird.
- Geben Sie unter Zeichenfolgen ablehnen mindestens eine Zeichenfolge ein, die Sie ablehnen möchten.
- Klicken Sie auf OK.
Ausgeblendete Segmente
Dieses Feature ermöglicht es Ihnen, Anforderungen abzulehnen, die ein URL-Segment (z. B. einen Ordnernamen) enthalten.
So konfigurieren Sie ausgeblendete Segmente über die Benutzeroberfläche
- Öffnen Sie IIS-Manager, und wählen Sie die Ebene aus, für die Sie Anforderungsfilter konfigurieren möchten.
- Doppelklicken Sie in der Featureansicht auf Anforderungsfilterung.
- Wählen Sie die Registerkarte Ausgeblendete Segmente aus.
- Klicken Sie im Bereich Aktionen auf Ausgeblendetes Segment hinzufügen.
- Geben Sie das URL-Segment in das Feld ein, und klicken Sie dann auf OK.
So konfigurieren Sie ausgeblendete Segmente über die Befehlszeile
Konfigurieren für WebDAV-Anforderungen
Verwenden Sie die folgende Syntax zum Konfigurieren, ob ausgeblendete Segmente für WebDAV-Anforderungen gelten:
appcmd set config /section:requestfiltering /hiddensegments.applyToWebDAV:
true false |
Geben Sie z. B. Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE, um IIS so zu konfigurieren, dass ausgeblendete Segmente nicht für WebDAV-Anforderungen gelten:
appcmd set config /section:requestfiltering /hiddensegments.applyToWebDAV:false
Hinzufügen eines ausgeblendeten Segments
Verwenden Sie die folgende Syntax, um ein ausgeblendetes Segment zu konfigurieren:
appcmd set config /section:requestfiltering /+hiddensegments.[segment='
string']
Die Variable segment=
Zeichenfolge gibt ein ausgeblendetes URL-Segment an.
Geben Sie z. B. Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE, um anzugeben, dass „/bin“ ein ausgeblendetes Segment ist:
appcmd set config /section:requestfiltering /+hiddensegments.[segment='/bin']
URL-Filterung
Sie können IIS so konfigurieren, dass eine angegebene URL akzeptiert wird. Außerdem können Sie die Software so konfigurieren, dass eine angegebene URL-Sequenz abgelehnt wird.
So konfigurieren Sie die URL-Filterung über die Benutzeroberfläche
- Öffnen Sie IIS-Manager, und wählen Sie die Ebene aus, für die Sie Anforderungsfilter konfigurieren möchten.
- Doppelklicken Sie in der Featureansicht auf Anforderungsfilterung.
- Wählen Sie die Registerkarte URL aus.
- Wählen Sie im Bereich Aktionen entweder URL zulassen oder Sequenz ablehnen aus.
- Geben Sie die URL oder die URL-Sequenz in das Feld ein, und klicken Sie auf OK.
So konfigurieren Sie die URL-Filterung über die Befehlszeile
Verwenden Sie die folgende Syntax, um eine URL-Sequenz abzulehnen:
appcmd set config /section:requestfiltering /+denyurlsequences.[sequence='
string']
Die Variable sequence=
Zeichenfolge gibt eine Sequenz von Zeichen in einer URL an, die IIS nicht analysieren darf.
Geben Sie z. B. Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE, um anzugeben, dass IIS keine URLs analysiert, die zwei Punkte enthalten:
appcmd set config /section:requestfiltering /+denyurlsequences.[sequence='..']
HTTP-Verben
Sie können eine Liste von Verben definieren, die von IIS 8 als Teil einer Anforderung akzeptiert werden. Wenn IIS eine Anforderung auf dieser Basis ablehnt, wird als Fehlercode 404.6 protokolliert.
So konfigurieren Sie nicht aufgeführte HTTP-Verben über die Benutzeroberfläche
- Öffnen Sie IIS-Manager, und wählen Sie die Ebene aus, für die Sie Anforderungsfilter konfigurieren möchten.
- Doppelklicken Sie in der Featureansicht auf Anforderungsfilterung.
- Wählen Sie die Registerkarte HTTP-Verben aus.
- Klicken Sie im Bereich Aktionen entweder auf Verb zulassen oder auf Verb ablehnen.
- Geben Sie das Verb in das Feld ein, und klicken Sie dann auf OK.
So konfigurieren Sie nicht aufgeführte HTTP-Verben über die Befehlszeile
Konfigurieren nicht aufgeführter HTTP-Verben
Verwenden Sie die folgende Syntax zum Konfigurieren, wie nicht aufgeführte Verben von IIS behandelt werden:
appcmd set config /section:requestfiltering /verbs.allowunlisted:
true false |
Geben Sie z. B. Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE, um nicht aufgeführte Verben abzulehnen:
appcmd set config /section:requestfiltering /verbs.allowunlisted:false
Konfigurieren für WebDAV-Anforderungen
Verwenden Sie die folgende Syntax zum Konfigurieren, ob die Verbenfilterung für WebDAV-Anforderungen gilt:
appcmd set config /section:requestfiltering /verbs.applyToWebDAV:
true false |
Geben Sie z. B. Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE, um IIS so zu konfigurieren, dass die Verbenfilterung nicht für WebDAV-Anforderungen gilt:
appcmd set config /section:requestfiltering /verbs.applyToWebDAV:false
Hinzufügen eines HTTP-Verbs
Verwenden Sie die folgende Syntax, um ein zu filterndes Verb zu konfigurieren:
appcmd set config /section:requestfiltering /+verbs.[verb='
string',allowed='
true false |
']
Die Variable verb=
Zeichenfolge gibt das Verb an, für das diese Einschränkung gilt.
Geben Sie z. B. Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE, um anzugeben, dass GET zulässig ist:
appcmd set config /section:requestfiltering /+verbs.[verb='GET',allowed='true']
Headergrößenbeschränkungen
Sie können die Größe des HTTP-Anforderungsheader zur Verbesserung der Leistung und Sicherheit einschränken. Header sind Name-Wert-Paare, die die Betriebsparameter einer HTTP-Transaktion definieren.
So konfigurieren Sie Headergrößenbeschränkungen über die Benutzeroberfläche
- Öffnen Sie IIS-Manager, und wählen Sie die Ebene aus, für die Sie Anforderungsfilter konfigurieren möchten.
- Doppelklicken Sie in der Featureansicht auf Anforderungsfilterung.
- Wählen Sie die Registerkarte Header aus, und klicken Sie dann auf Header hinzufügen.
- Geben Sie in das Feld Header den Headerdateinamen ein.
- Geben Sie im Feld Größenbeschränkung eine positive ganze Zahl ein, die die Headergrößenbeschränkung in Bytes darstellt.
- Klicken Sie auf OK.
Abfragezeichenfolgen
Sie können IIS 8 so konfigurieren, dass bestimmte Abfragezeichenfolgen zugelassen oder abgelehnt werden, die in der angeforderten URL enthalten sind. Wenn eine abgelehnte Abfragezeichenfolge z. B. in einer angeforderten URL gefunden wird, wird die Anforderung abgelehnt.
So konfigurieren Sie Abfragezeichenfolgen über die Benutzeroberfläche
- Öffnen Sie IIS-Manager, und wählen Sie die Ebene aus, für die Sie Anforderungsfilter konfigurieren möchten.
- Doppelklicken Sie in der Featureansicht auf Anforderungsfilterung.
- Wählen Sie die Registerkarte Abfragezeichenfolgen aus, und klicken Sie dann entweder auf Abfragezeichenfolge zulassen oder Abfragezeichenfolge ablehnen.
- Geben Sie im Feld Abfragezeichenfolge die Abfragezeichenfolge ein.
- Klicken Sie auf OK.
Anforderungsfilterprotokollierung
Sie können die IIS-Protokollierung verwenden, um Ihre Konfiguration für Anforderungsfilter zu bewerten und zu optimieren.
In der folgenden Tabelle sind die Fehlercodes für Anforderungsfilter aufgeführt, die im Protokoll angezeigt werden:
Fehlerbeschreibung | Statuscode |
---|---|
Anforderungsfilterung: URL-Sequenz abgelehnt | 404,5 |
Anforderungsfilterung: Verb abgelehnt | 404,6 |
Anforderungsfilterung: Dateiendung abgelehnt | 404,7 |
Anforderungsfilterung: Aufgrund von ausgeblendeten Segmenten abgelehnt | 404,8 |
Anforderungsfilterung: Abgelehnt, da die URL doppelte Escapezeichen verwendet | 404,11 |
Anforderungsfilterung: Aufgrund von höchstwertigen Bitzeichen abgelehnt | 404,12 |
Anforderungsfilterung: Abgelehnt, da die URL zu lang ist | 404,14 |
Anforderungsfilterung: Abgelehnt, da die Abfragezeichenfolge zu lang ist | 404,15 |
Anforderungsfilterung: Abgelehnt, da die Länge des Inhalts zu groß ist | 413.1 |
Anforderungsfilterung: Abgelehnt, da der Anforderungsheader zu lang ist | 431 |