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
- Klicken Sie auf der Taskleiste auf Server-Manager.
- Klicken Sie im Server-Manager auf Verwalten und dann auf Rollen und Features hinzufügen.
- 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.
- 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.
. - Klicken Sie auf der Seite Features auswählen auf Weiter.
- Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
- Klicken Sie auf der Seite Ergebnisse auf Schließen.
Windows 8 oder Windows 8.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.
- Klicken Sie in der Systemsteuerungauf Programme und dann auf „Windows-Features aktivieren oder deaktivieren“.
- Erweitern Sie Internetinformationsdienste, erweitern Sie World Wide Web Services, erweitern Sie Sicherheit, und wählen Sie dann IP-Sicherheit aus.
- Klicken Sie auf OK.
- 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
Ö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.
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.
Doppelklicken Sie im Bereich Start auf das Feature IP-Adresse und Domäneneinschränkungen.
Klicken Sie im Bereich Aktionen auf Dynamische Einschränkungseinstellungen bearbeiten....
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.
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 .
|
||||||||||
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