Ablehnen nach Anforderungsrate <denyByRequestRate>
Übersicht
Das <denyByRequestRate>
-Element gibt an, dass ein Remoteclient blockiert wird, wenn die Anzahl der über einen bestimmten Zeitraum empfangenen Anforderungen eine bestimmte Zahl überschreitet.
Kompatibilität
Version | Hinweise |
---|---|
IIS 10.0 | Das <denyByRequestRate> -Element wurde in IIS 10.0 nicht geändert. |
IIS 8.5 | Das <denyByRequestRate> -Element wurde in IIS 8.5 nicht geändert. |
IIS 8.0 | Das <denyByRequestRate> -Element wurde in IIS 8.0 eingeführt. |
IIS 7.5 | N/V |
IIS 7.0 | N/V |
IIS 6.0 | N/V |
Setup
Um das Blockieren eines Clients auf Ihrem Webserver basierend auf die Anzahl der empfangenen Anforderungen zu unterstützen, müssen Sie den Rollendienst für IP- und Domäneneinschränkungen installieren.
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 aus. 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 die Schaltfläche „Start“ 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
Wie man eine IP-Adresse nach Anforderungsrate verweigert
Öffnen Sie den Internet Information Services (IIS) Manager:
Vorgehensweise unter Windows Server 2012 oder einer höheren Version:
- Klicken Sie auf der Taskleiste auf Server-Manager, dann auf Tools und danach auf Internetinformationsdienste-Manager (IIS).
Vorgehensweise unter Windows 8 oder einer höheren Version:
- Halten Sie die Windows-Taste gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf Systemsteuerung.
- Klicken Sie auf Verwaltung und doppelklicken Sie dann auf den Internetinformationsdienste (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 Sites, 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-Adressen und Domäneneinschränkungen.
Klicken Sie im Bereich Aktionen auf Dynamische Einschränkungseinstellungen bearbeiten....
Wählen Sie im Dialogfeld Einstellungen für dynamische IP-Einschränkung die Option IP-Adresse basierend auf der Anzahl der Anforderungen über einen bestimmten Zeitraum verweigern aus, geben Sie die maximale Anzahl von Anforderungen ein, geben Sie den Zeitraum (in Millisekunden) ein, der zum Ermitteln der Anforderungsrate verwendet werden soll und klicken Sie dann auf OK.
Konfiguration
Das Element <denyByRequestRate>
wird auf Server- oder Site-Ebene konfiguriert.
Attribute
Attribut | Beschreibung |
---|---|
enabled |
Optionales boolesches Attribut. Ermöglicht es einem Remoteclient, basierend auf der Anzahl der Anforderungen zu blockieren, die über einen bestimmten Zeitraum empfangen wurden. Der Standardwert ist false . |
maxRequests |
Optionales Uint-Attribut. Die Anzahl der Anforderungen, die von einem bestimmten Client über einen bestimmten Zeitraum empfangen wurden, ab welcher der Client blockiert wird (wenn die Überprüfung aktiviert ist). Der Standardwert ist 20 . |
requestIntervalInMilliseconds |
Optionales Uint-Attribut. Der Zeitraum (in Millisekunden), der verwendet wird, um die Anforderungsrate für einen bestimmten Client zu bestimmen. Diese Rate wird verwendet, um zu bestimmen, ob die Empfangsrate das angegebene Maximum überschreitet, was dazu führt, dass der Client blockiert wird (wenn die Überprüfung aktiviert ist). Der Standardwert ist 200 . |
Untergeordnete Elemente
Keine.
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 den commit-Parameter 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