Dynamische IP-Sicherheit <dynamicIpSecurity>

Übersicht

Das Element <dynamicIpSecurity> stellt ein dynamisches Mittel zum Blockieren bösartiger Webanforderungen bereit. Die Verwendung dynamischer IP-Einschränkungen bedeutet, dass der Administrator nicht die IP-Adressen identifizieren muss, die blockiert werden müssen. Stattdessen kann der Administrator das System so konfigurieren, dass es jede IP-Adresse blockiert, die den festgelegten Kriterien entspricht. Dies kann das Blockieren eines Remoteclients umfassen, wenn die Anzahl gleichzeitiger HTTP-Verbindungsanforderungen von diesem Client eine bestimmte Zahl überschreitet oder das Blockieren eines Clients, wenn die Anzahl der über einen bestimmten Zeitraum empfangenen Anforderungen eine bestimmte Zahl überschreitet. Die dynamischen IP-Einschränkungen können entweder auf Server- oder Site-Ebene konfiguriert werden.

Der Administrator kann angeben, welcher HTTP-Antwortstatuscode zurückgegeben wird, wenn ein Client blockiert wird: Nicht autorisiert (401); Verboten (403); oder nicht gefunden (404). Sie können auch den Verweigerungsaktionstyp auf Abbrechen festlegen, um die Verbindung ohne Angabe von Gründen zu unterbrechen.

Wenn Sie den Proxymodus aktivieren, kann eine Anforderung blockiert werden, indem die ursprüngliche IP-Adresse eines Clients identifiziert wird, die eine Verbindung mit einem Webserver über einen HTTP-Proxy oder einen Lastenausgleich herstellt. Dies erfolgt durch Untersuchen des x-forwarded-for-HTTP-Headers.

Kompatibilität

Version Hinweise
IIS 10.0 Das <dynamicIpSecurity> Element wurde in IIS 10.0 nicht geändert.
IIS 8.5 Das Element <dynamicIpSecurity> wurde in IIS 8.5 nicht geändert.
IIS 8.0 Das Element <dynamicIpSecurity> wurde in IIS 8.0 eingeführt.
IIS 7.5 N/V
IIS 7.0 N/V
IIS 6.0 N/V

Setup

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 IP- und Domäneneinschränkungen. Klicken Sie auf Weiter.
    Screenshot that shows the I P and Domain Restrictions 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 dieStarttaste und klicken Sie dann auf Systemsteuerung.
  2. Klicken Sie in der Systemsteuerungauf Programme und dann auf „Windows-Features aktivieren oder deaktivieren“.
  3. Erweitern Sie Internetinformationsdienste, erweitern Sie World Wide Web Services, erweitern Sie Sicherheit, und wählen Sie dann IP-Sicherheit aus.
    Screenshot that shows the I P Security selected for Windows 8.
  4. Klicken Sie auf OK.
  5. Klicken Sie auf Schließen.

Gewusst wie

So fügen Sie dynamische IP-Einschränkungen hinzu, um den Zugriff für eine Website zu verweigern

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

    • Wenn Sie Windows Server 2012 oder höher verwenden:

      • Klicken Sie in der Taskleiste auf Server-Managerdann auf Toolsund dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows 8 oder höher 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.
  2. Wählen Sie im Bereich Verbindungen den Servernamen aus, um dynamische IP-Einschränkungen für den Server hinzuzufügen, oder erweitern Sie Websites, und wählen Sie dann eine Site aus, um dynamische IP-Einschränkungen für die Site hinzuzufügen.

  3. Doppelklicken Sie im Bereich Start auf das Feature IP-Adresse und Domäneneinschränkungen.

  4. Klicken Sie im Bereich Aktionen auf Dynamische Einschränkungseinstellungen bearbeiten....

  5. Geben Sie im Dialogfeld Einstellungen für dynamische IP-Einschränkung an, ob eine IP-Adresse basierend auf der Anzahl der gleichzeitigen Stichproben und/oder der Anforderungsrate verweigert werden soll, ob der Modus Nur Protokollierung aktiviert werden soll, und klicken Sie dann auf OK.

    Screenshot that shows the Dynamic I P Restrictions Settings dialog box. All variables are selected.

Konfiguration

Das Element <dynamicIpSecurity> wird auf Server- oder Site-Ebene konfiguriert.

Attribute

Attribut Beschreibung
denyAction Optionales Enumerationsattribut.

Gibt die standardmäßige Ablehnungsmodusantwort an, die IIS an Clients zurücksenden soll.

Der Standardwert ist Forbidden.
Wert Beschreibung
AbortRequest Gibt an, dass IIS standardmäßig eine Ablehnungsmodusantwort von Abort zurück an Clients senden soll.

Der numerische Wert ist 0.

Unauthorized Gibt an, dass IIS standardmäßig eine Ablehnungsmodusantwort von Unauthorized zurück an Clients senden soll. Wenn ein browserbasierter Client am Remoteende verwendet wird, kann die Rückgabe Nicht autorisiert dazu führen, dass ein Authentifizierungsdialogfeld auf dem Remoteclient angezeigt wird, was zu fehlerhaften Authentifizierungsversuchen bei IIS führt.

Der numerische Wert ist 401.

Forbidden Gibt an, dass IIS standardmäßig eine Ablehnungsmodusantwort von Forbidden zurück an Clients senden soll.

Der numerische Wert ist 403.

NotFound Gibt an, dass IIS standardmäßig eine Ablehnungsmodusantwort von Not Found zurück an Clients senden soll.

Der numerische Wert ist 404.

enableLoggingOnlyMode Optionales boolesches Attribut.

Gibt an, dass IIS Anforderungen vom Client protokolliert, die abgelehnt werden, ohne sie tatsächlich abzulehnen.

Der Standardwert ist false.
enableProxyMode Optionales boolesches Attribut.

Ermöglicht IIS nicht nur das Blockieren von Anforderungen von einer Client-IP, die von IIS angezeigt wird, sondern auch zum Blockieren von Anforderungen von IP-Adressen, die im x-forwarded-for-HTTP-Header empfangen werden. Mit diesem Header können Sie die ursprüngliche IP-Adresse eines Clients identifizieren, die eine Verbindung über einen HTTP-Proxy oder einen Lastenausgleich herstellt. Dies wird als Proxymodus bezeichnet.

Der Standardwert ist false.

Untergeordnete Elemente

Element Beschreibung
denyByConcurrentRequests Optionales Element.

Gibt an, dass bestimmte Remoteclients basierend auf der Anzahl der im Laufe der Zeit empfangenen Anforderungen blockiert werden.
denyByRequestRate Optionales Element.

Gibt an, dass bestimmte Remoteclients basierend auf der Anzahl der gleichzeitigen HTTP-Verbindungsanforderungen von Clients blockiert werden.

Konfigurationsbeispiel

Im folgenden Konfigurationsbeispiel wird veranschaulicht, wie dynamische IP-Adresseinschränkungen festgelegt werden.

<system.webServer>
   <security>
      <dynamicIpSecurity enableLoggingOnlyMode="true">
         <denyByConcurrentRequests enabled="true" maxConcurrentRequests="10" />
         <denyByRequestRate enabled="true" maxRequests="30" 
            requestIntervalInMilliseconds="300" />
      </dynamicIpSecurity>
   </security>
</system.webServer>

Beispielcode

Die folgenden Beispiele konfigurieren <dynamicIpSecurity> für eine Site.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/security/dynamicIpSecurity /denyAction:"Unauthorized" /enableProxyMode:"True" /enableLoggingOnlyMode:"True"  /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/security/dynamicIpSecurity /denyByConcurrentRequests.enabled:"True" /denyByConcurrentRequests.maxConcurrentRequests:"10" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/security/dynamicIpSecurity /denyByRequestRate.enabled:"True" /denyByRequestRate.maxRequests:"25" /denyByRequestRate.requestIntervalInMilliseconds:"210"  /commit:apphost

Hinweis

Sie müssen unbedingt den Parameter Commit auf apphost festlegen, wenn Sie AppCmd.exe verwenden, um diese Einstellungen zu konfigurieren. Dadurch werden die Konfigurationseinstellungen auf den entsprechenden Speicherortabschnitt in der Datei ApplicationHost.config festgelegt.

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.GetApplicationHostConfiguration();
            
            ConfigurationSection dynamicIpSecuritySection = config.GetSection("system.webServer/security/dynamicIpSecurity", "Default Web Site");
            dynamicIpSecuritySection["denyAction"] = @"Forbidden";
            dynamicIpSecuritySection["enableProxyMode"] = true;
            dynamicIpSecuritySection["enableLoggingOnlyMode"] = true;
            
            ConfigurationElement denyByConcurrentRequestsElement = dynamicIpSecuritySection.GetChildElement("denyByConcurrentRequests");
            denyByConcurrentRequestsElement["enabled"] = true;
            denyByConcurrentRequestsElement["maxConcurrentRequests"] = 10;
            
            ConfigurationElement denyByRequestRateElement = dynamicIpSecuritySection.GetChildElement("denyByRequestRate");
            denyByRequestRateElement["enabled"] = true;
            denyByRequestRateElement["maxRequests"] = 10;
            denyByRequestRateElement["requestIntervalInMilliseconds"] = 10;
            
            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.GetApplicationHostConfiguration
      Dim dynamicIpSecuritySection As ConfigurationSection = config.GetSection("system.webServer/security/dynamicIpSecurity", "Default Web Site")
      dynamicIpSecuritySection("denyAction") = "Forbidden"
      dynamicIpSecuritySection("enableProxyMode") = true
      dynamicIpSecuritySection("enableLoggingOnlyMode") = true
      Dim denyByConcurrentRequestsElement As ConfigurationElement = dynamicIpSecuritySection.GetChildElement("denyByConcurrentRequests")
      denyByConcurrentRequestsElement("enabled") = true
      denyByConcurrentRequestsElement("maxConcurrentRequests") = 10
      Dim denyByRequestRateElement As ConfigurationElement = dynamicIpSecuritySection.GetChildElement("denyByRequestRate")
      denyByRequestRateElement("enabled") = true
      denyByRequestRateElement("maxRequests") = 10
      denyByRequestRateElement("requestIntervalInMilliseconds") = 10
      serverManager.CommitChanges
   End Sub
End Module

JavaScript

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

var dynamicIpSecuritySection = adminManager.GetAdminSection ("system.webServer/security/dynamicIpSecurity", "MACHINE/WEBROOT/APPHOST/Default Web Site");
dynamicIpSecuritySection.Properties.Item("denyAction").Value = "Unauthorized";
dynamicIpSecuritySection.Properties.Item("enableProxyMode").Value = true;
dynamicIpSecuritySection.Properties.Item("enableLoggingOnlyMode").Value = true;
var denyByConcurrentRequestsElement = dynamicIpSecuritySection.ChildElements.Item("denyByConcurrentRequests");
denyByConcurrentRequestsElement.Properties.Item("enabled").Value = true;
denyByConcurrentRequestsElement.Properties.Item("maxConcurrentRequests").Value = 10;
var denyByRequestRateElement = dynamicIpSecuritySection.ChildElements.Item("denyByRequestRate");
denyByRequestRateElement.Properties.Item("enabled").Value = true;
denyByRequestRateElement.Properties.Item("maxRequests").Value = 25;
denyByRequestRateElement.Properties.Item("requestIntervalInMilliseconds").Value = 210;

adminManager.CommitChanges();

VBScript

Set adminManager = CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set dynamicIpSecuritySection = adminManager.GetAdminSection ("system.webServer/security/dynamicIpSecurity", "MACHINE/WEBROOT/APPHOST/Default Web Site")
dynamicIpSecuritySection.Properties.Item("denyAction").Value = "Unauthorized"
dynamicIpSecuritySection.Properties.Item("enableProxyMode").Value = true
dynamicIpSecuritySection.Properties.Item("enableLoggingOnlyMode").Value = true
Set denyByConcurrentRequestsElement = dynamicIpSecuritySection.ChildElements.Item ("denyByConcurrentRequests")
denyByConcurrentRequestsElement.Properties.Item("enabled").Value = true
denyByConcurrentRequestsElement.Properties.Item("maxConcurrentRequests").Value = 10
Set denyByRequestRateElement = dynamicIpSecuritySection.ChildElements.Item("denyByRequestRate")
denyByRequestRateElement.Properties.Item("enabled").Value = true
denyByRequestRateElement.Properties.Item("maxRequests").Value = 25
denyByRequestRateElement.Properties.Item("requestIntervalInMilliseconds").Value = 210

adminManager.CommitChanges()

PowerShell

Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/security/dynamicIpSecurity" -name "denyAction" -value "Unauthorized"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/security/dynamicIpSecurity" -name "enableProxyMode" -value "True"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/security/dynamicIpSecurity" -name "enableLoggingOnlyMode" -value "True"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/security/dynamicIpSecurity/denyByConcurrentRequests" -name "enabled" -value "True"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/security/dynamicIpSecurity/denyByConcurrentRequests" -name "maxConcurrentRequests" -value 20
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/security/dynamicIpSecurity/denyByRequestRate" -name "enabled" -value "True"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/security/dynamicIpSecurity/denyByRequestRate" -name "maxRequests" -value 20
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/security/dynamicIpSecurity/denyByRequestRate" -name "requestIntervalInMilliseconds" -value 20