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:

  1. Auswahl, ob der Zugriff auf eine Datei mit einer Erweiterung zugelassen wird, die für Anforderungsfilter nicht aufgeführt ist
  2. Auswahl, ob Anforderungen zugelassen werden, die nicht aufgeführte HTTP-Verben verwenden
  3. Auswahl, ob Anforderungen zugelassen werden, die höchstwertige Bitzeichen (Nicht-ASCII) enthalten
  4. Auswahl, ob Anforderungen zugelassen werden, die doppelt codiert sind
  5. Maximale Länge des angeforderten Inhalts
  6. Maximale Länge der URL
  7. Maximale Größe einer Abfragezeichenfolge

So konfigurieren Sie allgemeine Anforderungsfilteroptionen über die Benutzeroberfläche

  1. Öffnen Sie IIS-Manager, und wählen Sie die Ebene aus, für die Sie Anforderungsfilter konfigurieren möchten.
  2. Doppelklicken Sie in der Featureansicht auf Anforderungsfilterung.
  3. Klicken Sie im Bereich Aktionen auf Featureeinstellungen bearbeiten.
  4. 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

  1. Öffnen Sie IIS-Manager, und wählen Sie die Ebene aus, für die Sie Anforderungsfilter konfigurieren möchten.
  2. Doppelklicken Sie in der Featureansicht auf Anforderungsfilterung.
  3. Wählen Sie die Registerkarte Dateiendungen aus.
  4. Klicken Sie im Bereich Aktionen entweder auf Dateiendung zulassen oder Dateinamenerweiterung ablehnen.
  5. 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:

  1. Prüfen der Anforderungs-URL
  2. Prüfen auf Abfragezeichenfolgen, die in der URL enthalten sind
  3. Prüfen auf bestimmte Headerfelder
  4. Definieren, für welche Dateiendungen der Filter gilt
  5. Definieren der abzulehnenden Zeichenfolgen

So konfigurieren Sie eine Filterregel über die Benutzeroberfläche

  1. Öffnen Sie IIS-Manager, und wählen Sie die Ebene aus, für die Sie Anforderungsfilter konfigurieren möchten.
  2. Doppelklicken Sie in der Featureansicht auf Anforderungsfilterung.
  3. Wählen Sie die Registerkarte Regeln aus.
  4. Doppelklicken Sie im Bereich Aktionen auf Filterregel hinzufügen.
  5. Geben Sie im Feld Name einen Namen für die Filterregel ein.
  6. Wenn die URL überprüft werden soll, aktivieren Sie das Kontrollkästchen URL überprüfen.
  7. Wenn die Abfragezeichenfolge überprüft werden soll, aktivieren Sie das Kontrollkästchen Abfragezeichenfolge überprüfen.
  8. Geben Sie unter Header überprüfen mindestens einen Header ein, der überprüft werden soll.
  9. Geben Sie unter Gilt für mindestens eine Dateiendung ein, auf die die Regel angewendet wird.
  10. Geben Sie unter Zeichenfolgen ablehnen mindestens eine Zeichenfolge ein, die Sie ablehnen möchten.
  11. 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

  1. Öffnen Sie IIS-Manager, und wählen Sie die Ebene aus, für die Sie Anforderungsfilter konfigurieren möchten.
  2. Doppelklicken Sie in der Featureansicht auf Anforderungsfilterung.
  3. Wählen Sie die Registerkarte Ausgeblendete Segmente aus.
  4. Klicken Sie im Bereich Aktionen auf Ausgeblendetes Segment hinzufügen.
  5. 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

  1. Öffnen Sie IIS-Manager, und wählen Sie die Ebene aus, für die Sie Anforderungsfilter konfigurieren möchten.
  2. Doppelklicken Sie in der Featureansicht auf Anforderungsfilterung.
  3. Wählen Sie die Registerkarte URL aus.
  4. Wählen Sie im Bereich Aktionen entweder URL zulassen oder Sequenz ablehnen aus.
  5. 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

  1. Öffnen Sie IIS-Manager, und wählen Sie die Ebene aus, für die Sie Anforderungsfilter konfigurieren möchten.
  2. Doppelklicken Sie in der Featureansicht auf Anforderungsfilterung.
  3. Wählen Sie die Registerkarte HTTP-Verben aus.
  4. Klicken Sie im Bereich Aktionen entweder auf Verb zulassen oder auf Verb ablehnen.
  5. 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='Zeichenfolge',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

  1. Öffnen Sie IIS-Manager, und wählen Sie die Ebene aus, für die Sie Anforderungsfilter konfigurieren möchten.
  2. Doppelklicken Sie in der Featureansicht auf Anforderungsfilterung.
  3. Wählen Sie die Registerkarte Header aus, und klicken Sie dann auf Header hinzufügen.
  4. Geben Sie in das Feld Header den Headerdateinamen ein.
  5. Geben Sie im Feld Größenbeschränkung eine positive ganze Zahl ein, die die Headergrößenbeschränkung in Bytes darstellt.
  6. 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

  1. Öffnen Sie IIS-Manager, und wählen Sie die Ebene aus, für die Sie Anforderungsfilter konfigurieren möchten.
  2. Doppelklicken Sie in der Featureansicht auf Anforderungsfilterung.
  3. Wählen Sie die Registerkarte Abfragezeichenfolgen aus, und klicken Sie dann entweder auf Abfragezeichenfolge zulassen oder Abfragezeichenfolge ablehnen.
  4. Geben Sie im Feld Abfragezeichenfolge die Abfragezeichenfolge ein.
  5. 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

Weitere Informationen