Konfigurieren von WebDAV mit Anforderungsfilterung

von Robert McMurray

Einführung

Microsoft hat ein neues WebDAV-Erweiterungsmodul veröffentlicht, das für Internetinformationsdienste 7.0 (IIS 7.0) unter Windows Server® 2008 vollständig umgeschrieben wurde. Dieses neue WebDAV-Erweiterungsmodul enthält viele neue Features, mit denen Webautoren Inhalte besser veröffentlichen können als zuvor, und bietet Webadministratoren mehr Sicherheits- und Konfigurationsoptionen. Microsoft hat ein Update für das WebDAV-Erweiterungsmodul für Windows Server® 2008 veröffentlicht, das geteilte und exklusive Sperren unterstützt, um verlorene Updates aufgrund von Überschreibungen zu verhindern.

IIS 7.0 bietet mehrere großartige neue Sicherheitsfeatures, einschließlich der neuen IIS 7.0-Anforderungsfilterung. Für IIS-Benutzer, die mit UrlScan aus früheren Versionen von IIS vertraut sind, ist das Feature "Anforderungsfilterung" in IIS 7.0 wie das integrierte URLScan-Feature.

Das neue WebDAV-Modul und die Anforderungsfilterung wurden für die Zusammenarbeit entwickelt, und dieses Dokument führt Sie durch die Konfiguration von WebDAV-bezogenen Anforderungsfilterungseinstellungen zusammen mit WebDAV-Einstellungen, um eine sichere Veröffentlichungsumgebung einzurichten. Wenn Sie die IIS-Manager-Benutzeroberfläche zum Konfigurieren von WebDAV verwenden, werden die Anforderungsfiltereinstellungen automatisch aktualisiert, und Sie müssen die Schritte in diesem Artikel nicht ausführen.

Voraussetzungen

Die folgenden Elemente sind erforderlich, um die Verfahren in diesem Artikel abzuschließen:

  • IIS 7.0 muss auf Ihrem Server installiert sein, und es muss Folgendes konfiguriert werden:

    • Die Standardwebsite, die von der IIS 7.0-Installation erstellt wird, muss weiterhin vorhanden sein.
    • Das Feature "Anforderungsfilterung" muss installiert sein.
  • Das neue WebDAV-Erweiterungsmodul muss installiert werden. Informationen zur Installation des neuen WebDAV-Moduls finden Sie im folgenden Dokument:

  • Kenntnisse zur Verwendung von AppCmd sind hilfreich. Weitere Informationen zur Verwendung der Anforderungsfilterung finden Sie im folgenden Dokument:

Hinweis

Sie müssen sicherstellen, dass Sie die Schritte in diesem Dokument mit vollständigen Administratorberechtigungen ausführen. Dies wird am besten mit einer von zwei Methoden erreicht:

  • Melden Sie sich mit dem lokalen "Administrator"-Konto bei Ihrem Computer an.
  • Wenn Sie mit einem Konto mit Administratorberechtigungen angemeldet sind, das nicht das lokale "Administrator"-Konto ist, öffnen Sie DEN IIS-Manager und alle Eingabeaufforderungssitzungen mit der Option "Als Administrator ausführen".

Die oben genannte Bedingung ist erforderlich, da die Sicherheitskomponente für die Benutzerkontensteuerung (User Account Control, UAC) in Windows Server 2008 den Administratorzugriff auf die Konfigurationseinstellungen von IIS 7.0 verhindert. Weitere Informationen zu UAC finden Sie in der folgenden Dokumentation:

Grundlegende Konzepte für die Anforderungsfilterung

Die Anforderungsfilterung in IIS 7.0 besteht aus Filteranforderungen basierend auf den folgenden Parametern:

  • Dateierweiterungen
  • Ausgeblendete Segmente
  • HTTP-Verben
  • Anforderungsgrenzwerte
  • URL-Sequenzen

Alle diese Anforderungsfilterfunktionen können sich auf Inhalte auswirken, die über WebDAV hochgeladen oder heruntergeladen werden, aber einige Features können so konfiguriert werden, dass sie in Zusammenarbeit mit WebDAV funktionieren.

In der folgenden Liste wird beschrieben, welche Features für die Arbeit mit WebDAV konfiguriert werden können:

  • Die folgenden Features wirken sich immer auf WebDAV-Anforderungen aus:

    • Anforderungsgrenzwerte
    • URL-Sequenzen
  • Die folgenden Features wirken sich standardmäßig auf WebDAV-Anforderungen aus, können jedoch so konfiguriert werden, dass WebDAV-Anforderungen umgangen werden:

    • Dateierweiterungen
    • Ausgeblendete Segmente
    • HTTP-Verben

Sie können ihren Server beispielsweise so konfigurieren, dass nicht-WebDAV-Anforderungen für Dateien ".htm" und ".php" zugelassen werden, während der Zugriff auf ".mdb" und ".config" Dateien blockiert wird, während WebDAV-Anforderungen weiterhin auf diesen blockierten Inhalt zugreifen können.

Hinweis

WebDAV-Anforderungen erfordern eine Authentifizierung.

Sie können Ihre Einstellungen für die Anforderungsfilterung mit einer der folgenden Methoden bearbeiten:

  • Verwenden der Benutzeroberfläche, die als Teil des Verwaltungspakets für IIS 7.0 bereitgestellt wird
  • Verwenden von AppCmd über eine Befehlszeile
  • Bearbeiten der applicationHost.config Datei
  • Verwenden von Microsoft.Web.Administration aus einer .NET-Anwendung oder Windows PowerShell

Die restlichen Informationen in dieser exemplarischen Vorgehensweise zeigen Ihnen, wie Sie AppCmd über eine Befehlszeile verwenden. Außerdem wird gezeigt, wie die resultierenden Konfigurationseinstellungen in Ihrer applicationHost.config Datei aussehen könnten.

Hinweis

In diesem Dokument werden nicht alle Features behandelt, die mithilfe der Anforderungsfilterung konfiguriert werden können. Informationen zum Konfigurieren zusätzlicher Anforderungsfilteroptionen finden Sie im folgenden Thema:

Konfigurieren von Anforderungsfilterung und WebDAV

Filtern von Dateierweiterungen

Bestimmte Dateierweiterungen wie ".config" und ".asax" sind durch die standardmäßige Datei-Anforderungsfilterungssammlung fileExtensions geschützt. Sie können der Liste der Dateierweiterungen zusätzliche Einträge hinzufügen, um sie für HTTP-Anforderungen zuzulassen oder zu blockieren, und Sie können steuern, ob diese Liste für WebDAV-Anforderungen gilt. In diesem Beispiel verwenden Sie AppCmd, um ".txt"-Dateien daran zu hindern, dass auf sie zugegriffen wird, selbst wenn sie normalerweise zugänglich wären, und Sie werden festlegen, dass WebDAV-Anfragen alle blockierten Dateierweiterungen dennoch zugreifen können.

  1. Öffnen Sie eine Eingabeaufforderung mit vollständigen Administratorrechten und wechseln Sie das Verzeichnis zum InetSrv-Ordner.

    cd "%WinDir%\System32\InetSrv"
    
  2. Verwenden Sie die folgende Syntax, um die vorhandenen Anforderungsfilterregeln anzuzeigen:

    AppCmd list config "Default Web Site/" /section:system.webServer/security/requestFiltering
    
  3. Blockieren Sie den Zugriff auf ".txt"-Dateien, indem Sie der FileExtensions-Auflistung eine bestimmte Dateierweiterung hinzufügen und "false " für das zulässige Attribut mithilfe der folgenden Syntax angeben:

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+fileExtensions.[fileExtension='.txt',allowed='false'] /commit:apphost
    
  4. Zulassen, dass WebDAV auf alle blockierten Dateitypen zugreifen kann, indem Sie das attribut applyToWebDAV für die fileExtensions-Auflistung mithilfe der folgenden Syntax auf "false" festlegen:

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /fileExtensions.applyToWebDAV:false /commit:apphost
    

Nach Abschluss der obigen Schritte sollte der resultierende Code im Abschnitt "fileExtensions " der datei applicationHost.config dem folgenden Beispiel ähneln:

<requestFiltering>
   <fileExtensions applyToWebDAV="false">
      <add fileExtension=".txt" allowed="false" />
   </fileExtensions>
</requestFiltering>

Hinweise:

  • Sie können die oben genannten Schritte verwenden, um den Zugriff auf zusätzliche Dateierweiterungen zu blockieren, indem Sie sie der FileExtensions-Auflistung hinzufügen, oder Sie können die Syntax ändern, um bestimmte Dateien zuzulassen, indem Sie "true " für das zulässige Attribut angeben.

  • Sie können alle unbekannten Dateierweiterungen blockieren, indem Sie das attribut allowUnlisted für die fileExtensions-Auflistung mithilfe der folgenden Syntax auf "false " festlegen:

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /fileExtensions.allowUnlisted:false /commit:apphost
    

    Hinweis

    Wenn Sie diese Option festlegen, müssen Sie jede Dateierweiterung speziell hinzufügen, bevor sie von Nicht-WebDAV-Anforderungen aufgerufen werden kann.

  • Mit den obigen Schritten können Sie den Zugriff für WebDAV-Anforderungen blockieren, indem Sie "true " für das attribut "applyToWebDAV " angeben.

Filtern ausgeblendeter Segmente

Bestimmte Dateisegmente wie "web.config" und "App_code" werden durch die standardmäßige Filterung von hiddenSegments ausgeblendet. Sie können der Liste der Dateisegmente zusätzliche Einträge hinzufügen, um sie für HTTP-Anforderungen auszublenden, und Sie können steuern, ob diese Liste für WebDAV-Anforderungen gilt. In diesem Beispiel verwenden Sie AppCmd, um das Segment "include" aus HTTP-Anforderungen auszublenden, obwohl es normalerweise sichtbar wäre, und Sie geben an, dass WebDAV-Anforderungen auf alle ausgeblendeten Dateisegmente zugreifen können.

  1. Öffnen Sie eine Eingabeaufforderung mit vollständigen Administratorrechten, und wechseln Sie ins Verzeichnis Ihres InetSrv-Ordners:

    cd "%WinDir%\System32\InetSrv"
    
  2. Blockieren Sie den Zugriff auf das Segment "include", indem Sie mithilfe der folgenden Syntax einen bestimmten Eintrag zur hiddenSegments-Auflistung hinzufügen:

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+hiddenSegments.[segment='include'] /commit:apphost
    
  3. WebDAV den Zugriff auf alle blockierten Dateitypen erlauben, indem Sie das applyToWebDAV-Attribut für die hiddenSegments-Auflistung mithilfe der folgenden Syntax auf "false " festlegen:

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /hiddenSegments.applyToWebDAV:false /commit:apphost
    

Nach Abschluss der obigen Schritte sollte der resultierende Code im Abschnitt "hiddenSegments" ihrer applicationHost.config Datei dem folgenden Beispiel ähneln:

<requestFiltering>
   <hiddenSegments applyToWebDAV="false">
      <add segment="include" />
   </hiddenSegments>
</requestFiltering>

Hinweise:

  • Mit den obigen Schritten können Sie zusätzliche Dateisegmente ausblenden, indem Sie sie der hiddenSegments-Auflistung hinzufügen.
  • Mit den obigen Schritten können Sie den Zugriff für WebDAV-Anforderungen blockieren, indem Sie "true " für das attribut "applyToWebDAV " angeben.

Filtern von HTTP-Verben

Die Standardmäßige Auflistung der Anforderungsfilterungsverben ermöglicht alle nicht aufgelisteten HTTP-Verben, obwohl einige Verben möglicherweise nicht bestimmten HTTP-Handlern zugeordnet werden. Sie können angeben, welche HTTP-Verben zulässig oder blockiert werden sollen, indem Sie Dieser Liste Einträge hinzufügen, und Sie können steuern, ob diese Liste für WebDAV-Anforderungen gilt. In diesem Beispiel verwenden Sie AppCmd, um das Verb "DELETE" und "PUT" aus HTTP-Anforderungen zu blockieren, und Sie geben an, dass WebDAV-Anforderungen diese Verben verwenden können.

  1. Öffnen Sie eine Eingabeaufforderung mit vollständigen Administratorrechten und wechseln Sie in das Verzeichnis Ihres InetSrv-Ordners.

    cd "%WinDir%\System32\InetSrv"
    
  2. Blockieren Sie den Zugriff auf das Verb "DELETE", indem Sie der Verben-Auflistung einen bestimmten Eintrag hinzufügen und "false " für das zulässige Attribut angeben, indem Sie die folgende Syntax verwenden:

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+verbs.[verb='DELETE',allowed='false'] /commit:appHost
    
  3. Blockieren Sie den Zugriff auf das Verb "PUT", indem Sie der Verben-Auflistung einen weiteren spezifischen Eintrag hinzufügen und "false " für das zulässige Attribut mithilfe der folgenden Syntax angeben:

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+verbs.[verb='PUT',allowed='false'] /commit:appHost
    
  4. Zulassen, dass WebDAV auf alle HTTP-Verben zugreifen kann, indem Sie das applyToWebDAV-Attribut für die Verben-Auflistung mithilfe der folgenden Syntax auf "false " festlegen:

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /verbs.applyToWebDAV:false /commit:appHost
    

Nach Abschluss der obigen Schritte sollte der resultierende Code im Verbenabschnitt ihrer applicationHost.config Datei dem folgenden Beispiel ähneln:

<requestFiltering>
   <verbs applyToWebDAV="false">
      <add verb="DELETE" allowed="false" />
      <add verb="PUT" allowed="false" />
   </verbs>
</requestFiltering>

Hinweise:

  • Sie können die obigen Schritte verwenden, um zusätzliche HTTP-Verben zu blockieren, indem Sie sie der Verbenauflistung hinzufügen, oder Sie können die Syntax ändern, um bestimmte Verben zuzulassen, indem Sie "true " für das zulässige Attribut angeben.

  • Sie können alle unbekannten HTTP-Verben blockieren, indem Sie das attribut allowUnlisted für die Verbenauflistung mithilfe der folgenden Syntax auf "false " festlegen:

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /verbs.allowUnlisted:false /commit:appHost
    

    Hinweis

    Wenn Sie diese Option festlegen, müssen Sie jedes HTTP-Verb speziell hinzufügen, bevor sie von Nicht-WebDAV-Anforderungen aufgerufen werden kann.

  • Mit den obigen Schritten können Sie den Zugriff für WebDAV-Anforderungen blockieren, indem Sie "true " für das attribut "applyToWebDAV " angeben.

Zusammenfassung

In diesem Dokument wurden die folgenden Konzepte gezeigt:

Weitere Informationen

Weitere Informationen zur Verwendung von WebDAV finden Sie in den folgenden Artikeln: