Freigeben über


Ausgeblendete Segmente <hiddenSegments>

Übersicht

Das Element <hiddenSegments> enthält eine Auflistung von <add>-Elementen, die bestimmte URLs identifizieren, auf die IIS 7 nicht auf Clients zugreifen kann.

Beispielsweise blockiert IIS 7 auf Webservern, die ASP.NET Inhalt hosten, mehrere ASP-Dateien. NET-bezogene Pfade für Sie; Web.config, bin, App_Code usw. Das Blockieren dieser URL-Segmente verringert die Wahrscheinlichkeit, dass ein Angreifer diese URLs für Informationen ausnutzen kann.

Hinweis

Wenn die Anforderungsfilterung eine HTTP-Anforderung aufgrund eines ausgeblendeten URL-Segments blockiert, gibt IIS 7 einen HTTP 404-Fehler an den Client zurück und protokolliert den folgenden HTTP-Status mit einem eindeutigen Substatus, der den Grund identifiziert, warum die Anforderung verweigert wurde:

HTTP-Substatus Beschreibung
404.8 Ausgeblendeter Namespace

Mit diesem Substatus können Webadministratoren ihre IIS-Protokolle analysieren und potenzielle Bedrohungen identifizieren.

Kompatibilität

Version Hinweise
IIS 10.0 Das <hiddenSegments>-Element wurde in IIS 10.0 nicht geändert.
IIS 8.5 Das <hiddenSegments>-Element wurde in IIS 8.5 nicht geändert.
IIS 8.0 Das <hiddenSegments>-Element wurde in IIS 8.0 nicht geändert.
IIS 7.5 Das <hiddenSegments>-Element wurde in IIS 7.5 nicht geändert.
IIS 7.0 Das <hiddenSegments>-Element der <requestFiltering>-Sammlung wurde in IIS 7.0 eingeführt.
IIS 6.0 Das <hiddenSegments>-Element ersetzt die IIS 6.0 UrlScan [DenyUrlSequences] -Features.

Setup

Die Standardinstallation von IIS 7 und höher umfasst den Rollendienst oder das Feature Anforderungsfilterung. Wenn der Rollendienst oder das Feature für die Anforderungsfilterung deinstalliert wird, können Sie mit den folgenden Schritten erneut installieren.

Windows Server 2012 oder Windows Server 2012 R2

  1. Klicken Sie auf der Taskleiste auf Server-Manager.
  2. Klicken Sie im Server-Manager auf Verwalten und dann auf Rollen und Features hinzufügen.
  3. Klicken Sie im Assistenten zum Hinzufügen von Rollen und Features auf Weiter. Wählen Sie den Installationstyp aus, und klicken Sie auf Weiter. Wählen Sie den Zielserver aus, und klicken Sie auf Weiter.
  4. Erweitern Sie auf der Seite Serverrollen den Webserver (IIS),erweitern Sie den Webserver, erweitern Sie Sicherheit, und wählen Sie dann Anforderungsfilterung aus. Klicken Sie auf Weiter.
    Screenshot that shows Request Filtering selected for Windows Server 2012. .
  5. Klicken Sie auf der Seite Features auswählen auf Weiter.
  6. Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
  7. Klicken Sie auf der Seite Ergebnisse auf Schließen.

Windows 8 oder Windows 8.1

  1. Bewegen Sie auf dem Startbildschirm den Mauszeiger ganz nach links unten, klicken Sie mit der rechten Maustaste auf die Starttaste und klicken Sie dann auf Systemsteuerung.
  2. Klicken Sie in der Systemsteuerung auf Programme und Features, und klicken Sie dann auf Windows-Features aktivieren oder deaktivieren.
  3. Erweitern Sie unter InternetinformationsdiensteWWW-Dienste, dann Sicherheit und wählen Sie dann Anforderungsfilterung aus.
    Screenshot that shows Request Filtering selected for Windows 8.
  4. Klicken Sie auf OK.
  5. Klicken Sie auf Schließen.

Windows Server 2008 oder Windows Server 2008 R2

  1. Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltungstools, und klicken Sie dann auf Server-Manager.
  2. Erweitern Sie im Hierarchiebereich des Server-Managers die Rollenund klicken Sie dann auf den Webserver (IIS) .
  3. Scrollen Sie im Bereich Webserver (IIS) zum Abschnitt Rollendienste, und klicken Sie dann auf Rollendienste hinzufügen.
  4. Wählen Sie auf der Seite Rollendienste Auswählen des Assistenten Rollendienste HinzufügenAnforderungsfilterung aus, und klicken Sie dann auf Weiter.
    Screenshot that shows Request Filtering selected for Windows Server 2008.
  5. Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
  6. Klicken Sie auf der Seite Ergebnisse auf Schließen.

Windows Vista oder Windows 7

  1. Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.
  2. Klicken Sie in der Systemsteuerungauf Programmeund dann auf Windows-Features aktivieren oder deaktivieren.
  3. Erweitern Sie Internetinformationsdienste, dann WWW-Dienste und dann Sicherheit.
  4. Wählen Sie Anforderungsfilterung aus, und klicken Sie dann auf OK.
    Screenshot that shows Request Filtering selected for Windows Vista or Windows 7.

Gewusst wie

Hinweis für IIS 7.0-Nutzer: Einige der Schritte in diesem Abschnitt erfordern möglicherweise, dass Sie das Microsoft Administration Pack für IIS 7.0 installieren, das eine Benutzeroberfläche für die Anforderungsfilterung enthält. Informationen zum Installieren des Microsoft Administration Pack für IIS 7.0 finden Sie unter der folgenden URL:

So fügen Sie ein ausgeblendetes Segment hinzu

  1. Öffnen Sie den Internet Information Services (IIS) Manager:

    • Wenn Sie Windows Server 2012 oder Windows Server 2012 R2 verwenden:

      • Klicken Sie der der Taskleiste auf Server-Managerdann auf Toolsund dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows 8 oder Windows 8.1 verwenden:

      • Halten Sie die Windows-Taste gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf "Systemsteuerung".
      • Klicken Sie auf Verwaltungund doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows Server 2008 oder Windows Server 2008 R2 verwenden:

      • Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltungund dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows Vista oder Windows 7 verwenden:

      • Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.
      • Doppelklicken Sie auf Verwaltungund doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
  2. Wechseln Sie im Bereich Verbindungen zu der Verbindung, zum Standort, zur Anwendung oder zum Verzeichnis, für die Sie die Einstellungen für die Anforderungsfilterung ändern möchten.

  3. Doppelklicken Sie im Bereich Startseite auf Anforderungsfilterung.
    Screenshot that shows the Default Web Site Home pane. Request Filtering is selected.

  4. Klicken Sie im Bereich Anforderungsfilterung auf die Registerkarte Ausgeblendete Segmente und dann im Bereich Aktionen auf Ausgeblendetes Segment hinzufügen.
    Screenshot that shows the Request Filtering pane.

  5. Geben Sie im Dialogfeld Ausgeblendetes Segment hinzufügen den relativen Pfad ein, den Sie ausblenden möchten, und klicken Sie dann auf OK.
    Screenshot that shows the Add Hidden Segment dialog box. Underscore private is entered into the Hidden segment text box.

Konfiguration

Attribute

Attribut Beschreibung
applyToWebDAV Optionales boolesches Attribut.

Gibt an, ob diese Einstellungen auch für WebDAV-Anforderungen gelten sollen.

Untergeordnete Elemente

Element Beschreibung
add Optionales Element.

Fügt der Auflistung ausgeblendeter Segmente ein Segment hinzu.
clear Optionales Element.

Entfernt alle Verweise auf Segmente aus der <hiddenSegments>-Auflistung.
remove Optionales Element.

Entfernt einen Verweis auf ein Segment aus der <hiddenSegments>-Auflistung.

Konfigurationsbeispiel

Die folgende Beispieldatei „Web.config“ konfiguriert zwei Optionen: Sie konfiguriert IIS so, dass der Zugriff auf Anforderungen für den Ordner „_private“ verweigert wird, und er konfiguriert die Anforderungsfilterung, um webDAV-Zugriff auf ausgeblendete Segmente zu ermöglichen.

<configuration>
   <system.webServer>
      <security>
         <requestFiltering>
            <hiddenSegments applyToWebDAV="false">
               <add segment="_private" />
            </hiddenSegments>
         </requestFiltering>
      </security>
   </system.webServer>
</configuration>

Beispielcode

Die folgenden Codebeispiele konfigurieren zwei Optionen: Sie konfigurieren IIS so, dass der Zugriff auf Anforderungen für den Ordner „_private“ in der „Standardwebsite“ verweigert wird, und sie konfigurieren die Anforderungsfilterung, um den WebDAV-Zugriff auf ausgeblendete Segmente zu ermöglichen.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/security/requestFiltering /hiddenSegments.applyToWebDAV:"False"

appcmd.exe set config "Default Web Site" -section:system.webServer/security/requestFiltering /+"hiddenSegments.[segment='_private']"

PowerShell

$hiddenSegments = Get-IISConfigSection -CommitPath 'Default Web Site' -SectionPath 'system.webServer/security/requestFiltering' | Get-IISConfigElement -ChildElementName 'hiddenSegments'
Set-IISConfigAttributeValue -ConfigElement $hiddenSegments -AttributeName 'applyToWebDAV' -AttributeValue $false

$hiddenSegments = Get-IISConfigSection -CommitPath 'Default Web Site' -SectionPath 'system.webServer/security/requestFiltering' | Get-IISConfigCollection -CollectionName 'hiddenSegments'
New-IISConfigCollectionElement -ConfigCollection $hiddenSegments -ConfigAttribute @{ 'segment' = '_private' }

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetWebConfiguration("Default Web Site");
         ConfigurationSection requestFilteringSection = config.GetSection("system.webServer/security/requestFiltering");

         ConfigurationElement hiddenSegmentsElement = requestFilteringSection.GetChildElement("hiddenSegments");
         hiddenSegmentsElement["applyToWebDAV"] = false;
         ConfigurationElementCollection hiddenSegmentsCollection = hiddenSegmentsElement.GetCollection();

         ConfigurationElement addElement = hiddenSegmentsCollection.CreateElement("add");
         addElement["segment"] = @"_private";
         hiddenSegmentsCollection.Add(addElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetWebConfiguration("Default Web Site")
      Dim requestFilteringSection As ConfigurationSection = config.GetSection("system.webServer/security/requestFiltering")

      Dim hiddenSegmentsElement As ConfigurationElement = requestFilteringSection.GetChildElement("hiddenSegments")
      hiddenSegmentsElement("applyToWebDAV") = False
      Dim hiddenSegmentsCollection As ConfigurationElementCollection = hiddenSegmentsElement.GetCollection

      Dim addElement As ConfigurationElement = hiddenSegmentsCollection.CreateElement("add")
      addElement("segment") = "_private"
      hiddenSegmentsCollection.Add(addElement)

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site";

var requestFilteringSection = adminManager.GetAdminSection("system.webServer/security/requestFiltering", "MACHINE/WEBROOT/APPHOST/Default Web Site");
var hiddenSegmentsElement = requestFilteringSection.ChildElements.Item("hiddenSegments");
hiddenSegmentsElement.Properties.Item("applyToWebDAV").Value = false;

var hiddenSegmentsCollection = hiddenSegmentsElement.Collection;

var addElement = hiddenSegmentsCollection.CreateNewElement("add");
addElement.Properties.Item("segment").Value = "_private";
hiddenSegmentsCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site"
Set requestFilteringSection = adminManager.GetAdminSection("system.webServer/security/requestFiltering", "MACHINE/WEBROOT/APPHOST/Default Web Site")
Set hiddenSegmentsElement = requestFilteringSection.ChildElements.Item("hiddenSegments")
hiddenSegmentsElement.Properties.Item("applyToWebDAV").Value = False

Set hiddenSegmentsCollection = hiddenSegmentsElement.Collection

Set addElement = hiddenSegmentsCollection.CreateNewElement("add")
addElement.Properties.Item("segment").Value = "_private"
hiddenSegmentsCollection.AddElement(addElement)

adminManager.CommitChanges()