Dynamic IP Security <dynamicIpSecurity>
Panoramica
L'elemento <dynamicIpSecurity>
fornisce un mezzo dinamico per bloccare le richieste Web dannose. L'uso di restrizioni IP dinamiche indica che l'amministratore non deve identificare gli indirizzi IP che devono essere bloccati. L'amministratore può invece configurare il sistema in modo che blocchi qualsiasi indirizzo IP che soddisfi i criteri impostati. Ciò può includere il blocco di un client remoto se il numero di richieste di connessione HTTP simultanee da tale client supera un numero specifico o blocca un client se il numero di richieste ricevute in un periodo di tempo supera un numero specifico. Le restrizioni IP dinamiche possono essere configurate a livello di server o sito.
L'amministratore può specificare quale codice di stato della risposta HTTP verrà restituito se un client è bloccato: Non autorizzato (401); Accesso negato (403); o Non trovato (404). È anche possibile impostare Il tipo di azione Nega su Interrompi per eliminare la connessione senza restituire alcuna indicazione del motivo.
Se si abilita la modalità proxy, una richiesta può essere bloccata identificando l'indirizzo IP di origine di un client che si connette a un server Web tramite un proxy HTTP o un servizio di bilanciamento del carico. A tale scopo, esaminare l'intestazione x-forwarded-for-HTTP.
Compatibilità
Versione | Note |
---|---|
IIS 10.0 | L'elemento <dynamicIpSecurity> non è stato modificato in IIS 10.0. |
IIS 8,5 | L'elemento <dynamicIpSecurity> non è stato modificato in IIS 8.5. |
IIS 8,0 | L'elemento <dynamicIpSecurity> è stato introdotto in IIS 8.0. |
IIS 7,5 | N/D |
IIS 7.0 | N/D |
IIS 6.0 | N/D |
Installazione
Windows Server 2012 o Windows Server 2012 R2
- Sulla barra delle applicazioni fare clic su Server Manager.
- In Server Manager fare clic sul menu Gestisci e quindi su Aggiungi ruoli e funzionalità.
- Nella procedura guidata Aggiungi ruoli e funzionalità fare clic su Avanti. Selezionare il tipo di installazione e fare clic su Avanti. Selezionare il server di destinazione e fare clic su Avanti.
- Nella pagina Ruoli server espandere Server Web (IIS), server Web, sicurezzae quindi selezionare IP e restrizioni di dominio. Fare clic su Avanti.
. - Nella pagina Selezione funzionalità fare clic su Avanti.
- Nella pagina Conferma selezioni per l'installazione fare clic su Installa.
- Nella pagina Risultati fare clic su Chiudi.
Windows 8 o Windows 8.1
- Nella schermata Start spostare il puntatore fino all'angolo inferiore sinistro, fare clic con il pulsante destro del mouse sul pulsante Start e quindi scegliere Pannello di controllo.
- In Pannello di controllo fare clic su Programmi e funzionalità e quindi su Attiva o disattiva funzionalità di Windows.
- Espandere Internet Information Services, servizi Web a livello mondiale, sicurezza, quindi selezionare Sicurezza IP.
- Fare clic su OK.
- Fare clic su Close.
Procedure
Come aggiungere restrizioni IP dinamiche per negare l'accesso per un sito Web
Aprire Gestione Internet Information Services (IIS):
Se si usa Windows Server 2012 o versione successiva:
- Sulla barra delle applicazioni fare clic su Server Manager, scegliere Strumenti, quindi fare clic su Gestione Internet Information Services (IIS).
Se si usa Windows 8 o versione successiva:
- Tenere premuto il tasto Windows, premere la lettera X e quindi fare clic su Pannello di controllo.
- Fare clic su Strumenti di amministrazione, quindi fare doppio clic su Gestione Internet Information Services (IIS).
Nel riquadro Connessioni selezionare il nome del server per aggiungere restrizioni IP dinamiche per il server oppure espandere Siti e quindi selezionare un sito per aggiungere restrizioni IP dinamiche per il sito.
Nel riquadro Home fare doppio clic sulla funzionalità Indirizzo IP e Restrizioni dominio .
Nel riquadro Azioni fare clic su Modifica impostazioni restrizione dinamica....
Nella finestra di dialogo Impostazioni restrizione IP dinamica specificare se negare un indirizzo IP in base al numero di campioni simultanei e/o alla frequenza delle richieste, specificare se abilitare la modalità di sola registrazione e quindi fare clic su OK.
Configurazione
L'elemento <dynamicIpSecurity>
viene configurato a livello di server o sito.
Attributi
Attributo | Descrizione | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
denyAction |
Attributo di enumerazione facoltativo. Specifica la risposta di modalità di negazione predefinita che IIS deve inviare ai client. Il valore predefinito è Forbidden .
|
||||||||||
enableLoggingOnlyMode |
Attributo booleano facoltativo. Specifica che IIS registra le richieste dal client che verrebbero rifiutate senza rifiutarle effettivamente. Il valore predefinito è false . |
||||||||||
enableProxyMode |
Attributo booleano facoltativo. Consente a IIS non solo di bloccare le richieste da un indirizzo IP client visualizzato da IIS, ma anche di bloccare le richieste da indirizzi IP ricevuti nell'intestazione x-forwarded-for HTTP. Questa intestazione consente di identificare l'indirizzo IP di origine di un client che si connette tramite un proxy HTTP o un servizio di bilanciamento del carico. Questa operazione viene definita modalità proxy. Il valore predefinito è false . |
Elementi figlio
Elemento | Descrizione |
---|---|
denyByConcurrentRequests |
Elemento facoltativo. Specifica che determinati client remoti verranno bloccati in base al numero di richieste ricevute nel tempo. |
denyByRequestRate |
Elemento facoltativo. Specifica che determinati client remoti verranno bloccati in base al numero di richieste di connessione HTTP simultanee dai client. |
Esempio di configurazione
Nell'esempio di configurazione seguente viene illustrato come impostare le restrizioni degli indirizzi IP dinamici.
<system.webServer>
<security>
<dynamicIpSecurity enableLoggingOnlyMode="true">
<denyByConcurrentRequests enabled="true" maxConcurrentRequests="10" />
<denyByRequestRate enabled="true" maxRequests="30"
requestIntervalInMilliseconds="300" />
</dynamicIpSecurity>
</security>
</system.webServer>
Codice di esempio
Gli esempi seguenti configurano< dynamicIpSecurity> per un sito.
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
Nota
È necessario assicurarsi di impostare il parametro commit su apphost
quando si usa AppCmd.exe per configurare queste impostazioni. Questa operazione esegue il commit delle impostazioni di configurazione nella sezione percorso appropriata nel file di ApplicationHost.config.
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