Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
von Keith Newman und Robert McMurray
In diesem Dokument wird gezeigt, wie Sie allgemeine Anforderungsfiltereinstellungen verwenden, um die Sicherheit Ihres IIS 8-Webservers zu verbessern.
Anforderungsfilter beschränken die Typen von HTTP-Anforderungen, die IIS 8 verarbeitet. Durch Das Blockieren bestimmter HTTP-Anforderungen helfen Anforderungsfilter, potenziell schädliche Anforderungen daran zu hindern, den Server zu erreichen. Das Anforderungsfiltermodul überprüft eingehende Anforderungen und lehnt Anforderungen ab, die basierend auf den von Ihnen eingerichteten Regeln unerwünschte Anforderungen sind.
Standardmäßig lehnt IIS Anforderungen zum Durchsuchen kritischer Codesegmente ab. Außerdem werden Anforderungen für einige Dateinamenerweiterungen abgelehnt.
Sie können einen Anforderungsfilter auf serverweiter Ebene konfigurieren und dann die Konfiguration auf Websiteebene außer Kraft setzen.
Voraussetzungen
Um das Beste aus diesem Lernprogramm zu erhalten, benötigen Sie Zugriff auf einen Computer, auf dem eines der folgenden Betriebssysteme ausgeführt wird:
- Windows Server® 2012
- Windows® 8
Allgemeine Anforderungsfiltereinstellungen
Zu den allgemeinen Einstellungen gehören z. B. die folgenden Einstellungen:
- Gibt an, ob der Zugriff auf eine Datei mit einer Erweiterung zulässig ist, die für den Anforderungsfilter nicht aufgeführt ist.
- Gibt an, ob Anforderungen zugelassen werden sollen, die HTTP-Verben verwenden, die nicht aufgelistet sind.
- Gibt an, ob Anforderungen zulässig sind, die High-Bit-Zeichen enthalten (nicht-ASCII).
- Gibt an, ob Anforderungen, die doppelcodiert sind, zugelassen werden sollen.
- Maximale Länge des angeforderten Inhalts.
- Maximale Länge der URL.
- Maximale Größe einer Abfragezeichenfolge.
So konfigurieren Sie allgemeine Anforderungsfilteroptionen mithilfe der Benutzeroberfläche
- Öffnen Sie den IIS-Manager, und wählen Sie die Ebene aus, für die Sie den 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 Filterung von Anforderungen bearbeiten" die Einstellungen nach Bedarf, und klicken Sie dann auf "OK".
So konfigurieren Sie allgemeine Anforderungsfilteroptionen mithilfe der Befehlszeile
Konfigurieren von High-Bit-Zeichen
Verwenden Sie die folgende Syntax, um High-Bit-Zeichen zu konfigurieren:
appcmd set config /section:requestfiltering /allowhighbitcharacters:
STIMMT|FALSE
Um beispielsweise High-Bit-Zeichen zuzulassen, geben Sie folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE:
appcmd set config /section:requestfiltering /allowhighbitcharacters:true
Doppelte Maskierung konfigurieren
Verwenden Sie die folgende Syntax, um doppelte Maskierung zu konfigurieren:
appcmd set config /section:requestfiltering /allowdoubleescaping:
STIMMT|FALSE
Geben Sie beispielsweise folgendes an der Eingabeaufforderung ein, um doppelte Escapezeichen zu aktivieren, und drücken Sie dann die EINGABETASTE:
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 Inhaltslänge zu konfigurieren:
appcmd set config /section:requestfiltering /requestlimits.maxallowedcontentlength:
Einheit
Die Variable requestlimits.maxallowedcontentlength:einheit gibt die maximale Länge des Inhalts an.
Wenn Sie beispielsweise 3000000000 als maximale Inhaltslänge angeben möchten, geben Sie Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE:
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 maximale zulässige Länge einer eingehenden URL zu konfigurieren:
appcmd set config /section:requestfiltering /requestlimits.maxurl:
Einheit
Die Variable requestlimits.maxurl:einheit gibt die maximale Länge einer eingehenden URL an.
Wenn Sie z. B. 4096 als maximale Länge der eingehenden URL angeben möchten, geben Sie Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE:
appcmd set config /section:requestfiltering /requestlimits.maxurl:4096
Konfigurieren der maximal zulässigen Länge der Abfragezeichenfolge
Verwenden Sie die folgende Syntax, um einen Wert für die maximale zulässige Länge einer eingehenden Abfragezeichenfolge zu konfigurieren:
appcmd set config /section:requestfiltering /requestlimits.maxquerystring:
Einheit
Die Variable requestlimits.maxquertystring:einheit gibt die maximale Länge einer eingehenden Abfragezeichenfolge an.
Wenn Sie beispielsweise 2048 als maximale eingehende Abfragezeichenfolge angeben möchten, geben Sie Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE:
appcmd set config /section:requestfiltering /requestlimits.maxquerystring:2048
Konfigurieren der maximalen Größe für einen HTTP-Header
Verwenden Sie die folgende Syntax, um einen Größengrenzwert für einen bestimmten HTTP-Header zu konfigurieren:
appcmd set config /section:requestfiltering /+requestlimits.headerLimits.[header='
Schnur',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.
Wenn Sie beispielsweise eine maximale Größe von 2048 für Kopfzeilen angeben möchten, die einen Wert von contoso.com enthalten, geben Sie Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE:
appcmd set config /section:requestfiltering /+requestlimits.headerLimits.[header='contoso.com',sizelimit='2048']
Dateinamenerweiterungen
Für jede hinzugefügte Dateinamenerweiterung können Sie angeben, ob Anforderungen für diesen Dateityp zugelassen oder abgelehnt werden sollen.
So konfigurieren Sie Dateinamenerweiterungen mithilfe der Benutzeroberfläche
- Öffnen Sie den IIS-Manager, und wählen Sie die Ebene aus, für die Sie den Anforderungsfilter konfigurieren möchten.
- Doppelklicken Sie in der Featureansicht auf "Anforderungsfilterung".
- Wählen Sie die Registerkarte "Dateinamenerweiterungen" aus .
- Klicken Sie im Bereich "Aktionen " entweder auf " Dateinamenerweiterung zulassen " oder auf " Dateinamenerweiterung verweigern".
- Geben Sie die Dateinamenerweiterung in das Feld ein, und klicken Sie dann auf "OK".
So konfigurieren Sie Dateinamenerweiterungen mithilfe der Befehlszeile
Konfigurieren nicht aufgelisteter Dateinamenerweiterungen
Verwenden Sie die folgende Syntax, um zu konfigurieren, wie IIS mit nicht aufgelisteten Dateinamenerweiterungen umgeht:
appcmd set config /section:requestfiltering /fileExtensions.allowunlisted:
STIMMT|FALSE
Wenn Sie beispielsweise nicht aufgelistete Dateinamenerweiterungen verweigern möchten, geben Sie Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE:
appcmd set config /section:requestfiltering /fileExtensions.allowunlisted:false
Konfigurieren für WebDAV-Anforderungen
Verwenden Sie die folgende Syntax, um zu konfigurieren, ob Dateinamenerweiterungen für WebDAV-Anforderungen gelten:
appcmd set config /section:requestfiltering /fileExtensions.applyToWebDAV:
STIMMT|FALSE
Um z. B. IIS so zu konfigurieren, dass Dateinamenerweiterungen nicht auf WebDAV-Anforderungen angewendet werden, geben Sie Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE:
appcmd set config /section:requestfiltering /fileExtensions.applyToWebDAV:false
Hinzufügen oder Entfernen einer Dateinamenerweiterung
Verwenden Sie die folgende Syntax, um eine Dateinamenerweiterung hinzuzufügen:
appcmd set config /section:requestfiltering /+fileExtensions.[fileextension='
Schnur',allowed='true | false']
Die Variable fileextension=Zeichenfolge ist die Dateinamenerweiterung, die Sie zulassen oder verweigern möchten.
Wenn Sie beispielsweise eine Zulassungsregel für die Dateinamenerweiterung XXX hinzufügen möchten, geben Sie Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE:
appcmd set config /section:requestfiltering /+fileExtensions.[fileextension='.xxx',allowed='true']
Um eine Regel für die Dateinamenerweiterung XXX zu entfernen, geben Sie Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE:
appcmd set config /section:requestfiltering /-fileExtensions.[fileextension='.xxx']
Filterregeln
MIT IIS 8 können Sie benutzerdefinierte Filterregeln definieren, die für eingehende Anforderungen gelten. Mithilfe dieses Features können Sie Filter definieren, die folgende Aktionen ausführen können:
- Überprüfen Sie die Anforderungs-URL.
- Suchen Sie nach Abfragezeichenfolgen, die in der URL enthalten sind.
- Suchen Sie nach bestimmten Kopfzeilenfeldern.
- Definieren Sie, auf welche Dateinamenerweiterungen der Filter angewendet wird.
- Definieren Sie Zeichenfolgen, die Sie ablehnen möchten.
So konfigurieren Sie eine Filterregel mithilfe der Benutzeroberfläche
- Öffnen Sie den IIS-Manager, und wählen Sie die Ebene aus, für die Sie den 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 gescannt werden soll, aktivieren Sie das Kontrollkästchen "URL überprüfen ".
- Wenn die Abfragezeichenfolge gescannt werden soll, aktivieren Sie das Kontrollkästchen "Abfragezeichenfolge überprüfen".
- Geben Sie unter Kopfzeilen scannen einen oder mehrere Header ein, nach denen gesucht werden soll.
- Geben Sie unter "Gilt für" eine oder mehrere Dateinamenerweiterungen ein, für die die Regel gilt.
- Geben Sie unter Deny Strings eine oder mehrere Zeichenfolgen ein, die Sie ablehnen möchten.
- Klicke auf OK.
Ausgeblendete Segmente
Mit diesem Feature können Sie Anforderungen ablehnen, die ein URL-Segment enthalten (z. B. einen Ordnernamen).
So konfigurieren Sie ausgeblendete Segmente mithilfe der Benutzeroberfläche
- Öffnen Sie den IIS-Manager, und wählen Sie die Ebene aus, für die Sie den 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 mithilfe der Befehlszeile
Konfigurieren für WebDAV-Anforderungen
Verwenden Sie die folgende Syntax, um zu konfigurieren, ob ausgeblendete Segmente auf WebDAV-Anforderungen angewendet werden:
appcmd set config /section:requestfiltering /hiddensegments.applyToWebDAV:
STIMMT|FALSE
Um z. B. IIS so zu konfigurieren, dass ausgeblendete Segmente nicht auf WebDAV-Anforderungen angewendet werden, geben Sie Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE:
appcmd set config /section:requestfiltering /hiddensegments.applyToWebDAV:false
Hinzufügen eines ausgeblendeten Abschnitts
Verwenden Sie die folgende Syntax, um ein ausgeblendetes Segment zu konfigurieren:
appcmd set config /section:requestfiltering /+hiddensegments.[segment='
Schnur']
Die variable segment=Zeichenfolge gibt ein URL-Segment an, das ausgeblendet ist.
Um beispielsweise anzugeben, dass /bin ein ausgeblendetes Segment ist, geben Sie Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE:
appcmd set config /section:requestfiltering /+hiddensegments.[segment='/bin']
URL-Filterung
Sie können IIS so konfigurieren, dass eine angegebene URL akzeptiert wird. Darüber hinaus können Sie sie so konfigurieren, dass eine angegebene URL-Sequenz verweigert wird.
So konfigurieren Sie die URL-Filterung mithilfe der Benutzeroberfläche
- Öffnen Sie den IIS-Manager, und wählen Sie die Ebene aus, für die Sie den 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 verweigern" aus.
- Geben Sie die URL oder die URL-Sequenz in das Feld ein, und klicken Sie auf "OK".
So konfigurieren Sie die URL-Filterung mithilfe der Befehlszeile
Verwenden Sie die folgende Syntax, um eine URL-Sequenz zu verweigern:
appcmd set config /section:requestfiltering /+denyurlsequences.[sequence='
Schnur']
Die Variable sequence=Zeichenfolge gibt eine Abfolge von Zeichen in einer URL an, die IIS niemals analysieren darf.
Um beispielsweise anzugeben, dass IIS nie URLs analysiert, die zwei Punkte enthalten, geben Sie Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE:
appcmd set config /section:requestfiltering /+denyurlsequences.[sequence='..']
HTTP-Verben
Sie können eine Liste von Verben definieren, die IIS 8 als Teil einer Anforderung akzeptiert. Wenn IIS eine Anforderung basierend auf diesem Feature ablehnt, lautet der protokollierte Fehlercode 404.6.
So konfigurieren Sie nicht aufgelistete HTTP-Verben mithilfe der Benutzeroberfläche
- Öffnen Sie den IIS-Manager, und wählen Sie die Ebene aus, für die Sie den 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 verweigern".
- Geben Sie das Verb in das Feld ein, und klicken Sie dann auf "OK".
So konfigurieren Sie nicht aufgelistete HTTP-Verben mithilfe der Befehlszeile
Konfigurieren nicht aufgelisteter HTTP-Verben
Verwenden Sie die folgende Syntax, um zu konfigurieren, wie IIS mit nicht aufgelisteten Verben umgeht:
appcmd set config /section:requestfiltering /verbs.allowunlisted:
STIMMT|FALSE
Wenn Sie beispielsweise nicht aufgelistete Verben verweigern möchten, geben Sie Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE:
appcmd set config /section:requestfiltering /verbs.allowunlisted:false
Konfigurieren für WebDAV-Anforderungen
Verwenden Sie die folgende Syntax, um zu konfigurieren, ob die Verbfilterung auf WebDAV-Anforderungen angewendet wird:
appcmd set config /section:requestfiltering /verbs.applyToWebDAV:
STIMMT|FALSE
Um z. B. IIS so zu konfigurieren, dass die Verbfilterung nicht auf WebDAV-Anforderungen angewendet wird, geben Sie Folgendes an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE:
appcmd set config /section:requestfiltering /verbs.applyToWebDAV:false
Hinzufügen eines HTTP-Verbs
Verwenden Sie die folgende Syntax, um ein Verb zum Filtern zu konfigurieren:
appcmd set config /section:requestfiltering /+verbs.[verb='
string',allowed='wahr|falsch']
Die variable verb=Zeichenfolge gibt das Verb an, für das diese Einschränkung gilt.
Geben Sie beispielsweise das Folgende in die Eingabeaufforderung ein, um GET anzugeben, und drücken Sie dann die EINGABETASTE.
appcmd set config /section:requestfiltering /+verbs.[verb='GET',allowed='true']
Größenbeschränkungen für Kopfzeilen
Sie können die Größe von HTTP-Anforderungsheadern einschränken, um die Leistung und Sicherheit zu verbessern. Header sind Name/Wert-Paare, die die Betriebsparameter einer HTTP-Transaktion definieren.
So konfigurieren Sie Größenbeschränkungen für Kopfzeilen mithilfe der Benutzeroberfläche
- Öffnen Sie den IIS-Manager, und wählen Sie die Ebene aus, für die Sie den Anforderungsfilter konfigurieren möchten.
- Doppelklicken Sie in der Featureansicht auf "Anforderungsfilterung".
- Wählen Sie die Registerkarte "Kopfzeilen " aus, und klicken Sie auf "Kopfzeile hinzufügen".
- Geben Sie im Feld "Kopfzeile " den Namen des Kopfzeilenfelds ein.
- Geben Sie im Feld "Größenbeschränkung " eine positive ganze Zahl ein, die den Grenzwert für die Kopfzeilengröße in Byte darstellt.
- Klicke auf OK.
Abfrage-Zeichenfolgen
Sie können IIS 8 so konfigurieren, dass bestimmte Abfragezeichenfolgen, die in der angeforderten URL enthalten sind, zugelassen oder verweigert werden. Wenn beispielsweise eine abgelehnte Abfragezeichenfolge in einer Anforderungs-URL gefunden wird, wird die Anforderung verweigert.
So konfigurieren Sie Abfragezeichenfolgen mithilfe der Benutzeroberfläche
- Öffnen Sie den IIS-Manager, und wählen Sie die Ebene aus, auf der Sie die Anforderungsfilterung konfigurieren möchten.
- Doppelklicken Sie in der Featureansicht auf "Anforderungsfilterung".
- Wählen Sie die Registerkarte "Abfragezeichenfolgen " aus, und klicken Sie entweder auf " Abfragezeichenfolge zulassen " oder auf " Abfragezeichenfolge verweigern".
- Geben Sie im Feld "Abfragezeichenfolge " die Abfragezeichenfolge ein.
- Klicke auf OK.
Anforderungsfilterprotokollierung
Sie können die IIS-Protokollierung verwenden, um Ihre Anforderungsfilterkonfiguration auszuwerten und zu optimieren.
Die folgende Tabelle zeigt die Fehlercodes für den Anforderungsfilter, die im Protokoll angezeigt werden:
| Fehlerbeschreibung | Statuscode |
|---|---|
| Anforderungsfilterung: URL-Sequenz abgelehnt | 404.5 |
| Anforderungsfilterung: Verb verweigert | 404.6 |
| Anforderungsfilterung: Dateinamenerweiterung verweigert | 404.7 |
| Anforderungsfilterung: Abgelehnt durch ausgeblendetes Segment | 404.8 |
| Anforderungsfilterung: Verweigert, weil die URL die Escapefunktion verdoppelt hat | 404.11 |
| Anforderungsfilterung: Aufgrund von Zeichen mit hohem Bitwert verweigert | 404.12 |
| Anforderungsfilterung: Verweigert, weil die URL zu lang ist | 404.14 |
| Anforderungsfilterung: Verweigert, weil die Abfragezeichenfolge zu lang ist | 404.15 |
| Anforderungsfilterung: Verweigert, weil die Inhaltslänge zu groß ist | 413.1 |
| Anforderungsfilterung: Verweigert, weil der Anforderungsheader zu lang ist. | 431 |