Configurare il filtro delle richieste in IIS
di Keith Newman e Robert McMurray
Questo documento illustra come usare le impostazioni comuni di filtro richieste per migliorare la sicurezza del server Web IIS 8.
I filtri delle richieste limitano i tipi di richieste HTTP elaborate da IIS 8. Bloccando richieste HTTP specifiche, i filtri delle richieste consentono di evitare che le richieste potenzialmente dannose raggiungano il server. Il modulo filtro richieste analizza le richieste in ingresso e rifiuta le richieste indesiderate in base alle regole configurate.
Per impostazione predefinita, IIS rifiuta le richieste di esplorazione dei segmenti di codice critici. Rifiuta inoltre le richieste per alcune estensioni di file.
È possibile configurare un filtro di richiesta a livello di server e quindi eseguire l'override della configurazione a livello di sito Web.
Prerequisiti
Per ottenere il massimo da questa esercitazione, è necessario avere accesso a un computer che esegue uno dei sistemi operativi seguenti:
- Windows Server® 2012
- Windows® 8
Impostazioni di filtro richieste generali
Le impostazioni generali includono impostazioni come le seguenti:
- Indica se consentire l'accesso a un file con un'estensione non elencata per il filtro delle richieste.
- Indica se consentire le richieste che usano verbi HTTP non elencati.
- Indica se consentire le richieste che contengono caratteri a bit elevato (non ASCII).
- Indica se consentire le richieste con doppia codifica.
- Lunghezza massima del contenuto richiesto.
- Lunghezza massima dell'URL.
- Dimensione massima di una stringa di query.
Per configurare le opzioni generali di filtro richieste tramite l'interfaccia utente
- Aprire Gestione IIS e selezionare il livello per il quale si vuole configurare il filtro delle richieste.
- In Visualizzazione funzionalità fare doppio clic su Filtro richieste.
- Nel riquadro Azioni fare clic su Modifica impostazioni funzionalità.
- Nella finestra di dialogo Modifica filtro richieste Impostazioni modificare le impostazioni in base alle esigenze e quindi fare clic su OK.
Per configurare le opzioni generali di filtro richieste tramite la riga di comando
Configurare caratteri a bit elevato
Per configurare caratteri a bit elevato, usare la sintassi seguente:
appcmd set config /section:requestfiltering /allowhighbitcharacters:
true|
false
Ad esempio, per consentire caratteri a bit elevato, digitare quanto segue al prompt dei comandi e quindi premere INVIO:
appcmd set config /section:requestfiltering /allowhighbitcharacters:true
Configurare l'escape doppio
Per configurare l'escape doppio, usare la sintassi seguente:
appcmd set config /section:requestfiltering /allowdoubleescaping:
true|
false
Ad esempio, per abilitare l'escape doppio, digitare quanto segue al prompt dei comandi e quindi premere INVIO:
appcmd set config /section:requestfiltering /allowdoubleescaping:true
Configurare la lunghezza massima consentita del contenuto
Per configurare un valore per la lunghezza massima consentita del contenuto, usare la sintassi seguente:
appcmd set config /section:requestfiltering /requestlimits.maxallowedcontentlength:
unitàà
L'unità variabile requestlimits.maxallowedcontentlength:
specifica la lunghezza massima del contenuto.
Ad esempio, per specificare 30000000 come lunghezza massima del contenuto, digitare quanto segue al prompt dei comandi e quindi premere INVIO:
appcmd set config /section:requestfiltering /requestlimits.maxallowedcontentlength:30000000
Configurare la lunghezza massima consentita dell'URL
Per configurare un valore per la lunghezza massima consentita di un URL in ingresso, usare la sintassi seguente:
appcmd set config /section:requestfiltering /requestlimits.maxurl:
unitàà
L'unità variabile requestlimits.maxurl:
specifica la lunghezza massima di un URL in ingresso.
Ad esempio, per specificare 4096 come lunghezza massima dell'URL in ingresso, digitare quanto segue al prompt dei comandi e quindi premere INVIO:
appcmd set config /section:requestfiltering /requestlimits.maxurl:4096
Configurare la lunghezza massima consentita della stringa di query
Per configurare un valore per la lunghezza massima consentita di una stringa di query in ingresso, usare la sintassi seguente:
appcmd set config /section:requestfiltering /requestlimits.maxquerystring:
unitàà
L'unità variabile requestlimits.maxquertystring:
specifica la lunghezza massima di una stringa di query in ingresso.
Ad esempio, per specificare 2048 come stringa di query in ingresso massima, digitare quanto segue al prompt dei comandi e quindi premere INVIO:
appcmd set config /section:requestfiltering /requestlimits.maxquerystring:2048
Configurare le dimensioni massime per un'intestazione HTTP
Per configurare un limite di dimensioni per un'intestazione HTTP specifica, usare la sintassi seguente:
appcmd set config /section:requestfiltering /+requestlimits.headerLimits.[header='
unità stringa',sizelimit='
']
La stringa della variabile specifica l'intestazione header=
a cui si applica questa restrizione. L'unità variabile sizelimit=
specifica le dimensioni massime di questa intestazione.
Ad esempio, per specificare una dimensione massima di 2048 per le intestazioni che includono un valore di contoso.com, digitare quanto segue al prompt dei comandi e quindi premere INVIO:
appcmd set config /section:requestfiltering /+requestlimits.headerLimits.[header='contoso.com',sizelimit='2048']
Estensioni di file
Per ogni estensione di file aggiunta, è possibile indicare se consentire o rifiutare le richieste per quel tipo di file.
Per configurare le estensioni di file tramite l'interfaccia utente
- Aprire Gestione IIS e selezionare il livello per il quale si vuole configurare il filtro delle richieste.
- In Visualizzazione funzionalità fare doppio clic su Filtro richieste.
- Selezionare la scheda Estensioni nome file.
- Nel riquadro Azioni fare clic su Consenti estensione nome file o Nega estensione file.
- Digitare l'estensione del nome file nella casella e quindi fare clic su OK.
Per configurare le estensioni di file tramite la riga di comando
Configurare le estensioni di file non elencate
Per configurare il modo in cui IIS gestisce le estensioni di file non elencate, usare la sintassi seguente:
appcmd set config /section:requestfiltering /fileExtensions.allowunlisted:
true|
false
Ad esempio, per negare le estensioni di file non elencate, digitare quanto segue al prompt dei comandi e quindi premere INVIO:
appcmd set config /section:requestfiltering /fileExtensions.allowunlisted:false
Configurare per le richieste WebDAV
Per configurare se le estensioni di file si applicano alle richieste WebDAV, usare la sintassi seguente:
appcmd set config /section:requestfiltering /fileExtensions.applyToWebDAV:
true|
false
Ad esempio, per configurare IIS in modo che le estensioni di file non si applichino alle richieste WebDAV, digitare quanto segue al prompt dei comandi e quindi premere INVIO:
appcmd set config /section:requestfiltering /fileExtensions.applyToWebDAV:false
Aggiungere o rimuovere un'estensione del nome file
Per aggiungere un'estensione di file, usare la sintassi seguente:
appcmd set config /section:requestfiltering /+fileExtensions.[fileextension='
string',allowed='true | false']
La stringa della variabile è l'estensionefileextension
= del nome file che si vuole consentire o negare.
Ad esempio, per aggiungere una regola consenti per l'estensione del nome file .xxx, digitare quanto segue al prompt dei comandi e quindi premere INVIO:
appcmd set config /section:requestfiltering /+fileExtensions.[fileextension='.xxx',allowed='true']
Per rimuovere una regola per l'estensione del nome file .xxx, digitare quanto segue al prompt dei comandi e quindi premere INVIO:
appcmd set config /section:requestfiltering /-fileExtensions.[fileextension='.xxx']
Regole di filtro
IIS 8 consente di definire regole di filtro personalizzate applicabili alle richieste in ingresso. Usando questa funzionalità, è possibile definire filtri che possono eseguire le operazioni seguenti:
- Analizzare l'URL della richiesta.
- Cercare le stringhe di query contenute nell'URL.
- Cercare campi di intestazione specifici.
- Definire le estensioni di file a cui si applica il filtro.
- Definire le stringhe da negare.
Per configurare una regola di filtro tramite l'interfaccia utente
- Aprire Gestione IIS e selezionare il livello per il quale si vuole configurare il filtro delle richieste.
- In Visualizzazione funzionalità fare doppio clic su Filtro richieste.
- Selezionare la scheda Regole .
- Nel riquadro Azioni fare doppio clic su Aggiungi regola di filtro.
- Nella casella Nome digitare un nome per la regola di filtro.
- Se si vuole analizzare l'URL, selezionare la casella di controllo Scan URL (Url analisi).
- Se si vuole analizzare la stringa di query, selezionare la casella di controllo Analizza stringa di query.
- In Intestazioni analisi digitare una o più intestazioni da analizzare.
- In Si applica a digitare una o più estensioni di file a cui si applica la regola.
- In Nega stringhe digitare una o più stringhe da negare.
- Fare clic su OK.
Segmenti nascosti
Questa funzionalità consente di rifiutare le richieste che contengono un segmento di URL, ad esempio un nome di cartella.
Per configurare segmenti nascosti tramite l'interfaccia utente
- Aprire Gestione IIS e selezionare il livello per il quale si vuole configurare il filtro delle richieste.
- In Visualizzazione funzionalità fare doppio clic su Filtro richieste.
- Selezionare la scheda Segmenti nascosti.
- Nel riquadro Azioni fare clic su Aggiungi segmento nascosto.
- Digitare il segmento URL nella casella e quindi fare clic su OK.
Per configurare segmenti nascosti tramite la riga di comando
Configurare per le richieste WebDAV
Per configurare se i segmenti nascosti si applicano alle richieste WebDAV, usare la sintassi seguente:
appcmd set config /section:requestfiltering /hiddensegments.applyToWebDAV:
true|
false
Ad esempio, per configurare IIS in modo che i segmenti nascosti non si applichino alle richieste WebDAV, digitare quanto segue al prompt dei comandi e quindi premere INVIO:
appcmd set config /section:requestfiltering /hiddensegments.applyToWebDAV:false
Aggiungere un segmento nascosto
Per configurare un segmento nascosto, usare la sintassi seguente:
appcmd set config /section:requestfiltering /+hiddensegments.[segment='
string']
La stringa della variabile segment=
specifica un segmento URL nascosto.
Ad esempio, per specificare che /bin è un segmento nascosto, digitare quanto segue al prompt dei comandi e quindi premere INVIO:
appcmd set config /section:requestfiltering /+hiddensegments.[segment='/bin']
Filtro URL
È possibile configurare IIS per accettare un URL specificato. Inoltre, è possibile configurarlo per negare una sequenza di URL specificata.
Per configurare il filtro URL tramite l'interfaccia utente
- Aprire Gestione IIS e selezionare il livello per il quale si vuole configurare il filtro delle richieste.
- In Visualizzazione funzionalità fare doppio clic su Filtro richieste.
- Selezionare la scheda URL .
- Nel riquadro Azioni selezionare Consenti URL o Nega sequenza.
- Digitare l'URL o la sequenza url nella casella e fare clic su OK.
Per configurare il filtro URL tramite la riga di comando
Per negare una sequenza url, usare la sintassi seguente:
appcmd set config /section:requestfiltering /+denyurlsequences.[sequence='
string']
La stringa di variabile sequence=
specifica una sequenza di caratteri in un URL che IIS non può mai analizzare.
Ad esempio, per specificare che IIS non analizza mai gli URL contenenti due punti, digitare quanto segue al prompt dei comandi e quindi premere INVIO:
appcmd set config /section:requestfiltering /+denyurlsequences.[sequence='..']
Verbi HTTP
È possibile definire un elenco di verbi accettati da IIS 8 come parte di una richiesta. Quando IIS rifiuta una richiesta basata su questa funzionalità, il codice di errore registrato è 404.6.
Per configurare verbi HTTP non elencati tramite l'interfaccia utente
- Aprire Gestione IIS e selezionare il livello per il quale si vuole configurare il filtro delle richieste.
- In Visualizzazione funzionalità fare doppio clic su Filtro richieste.
- Selezionare la scheda Verbi HTTP.
- Nel riquadro Azioni fare clic su Consenti verbo o nega verbo.
- Immettere il verbo nella casella e quindi fare clic su OK.
Per configurare verbi HTTP non elencati tramite la riga di comando
Configurare verbi HTTP non elencati
Per configurare la gestione di IIS con verbi non elencati, usare la sintassi seguente:
appcmd set config /section:requestfiltering /verbs.allowunlisted:
true|
false
Ad esempio, per negare verbi non elencati, digitare quanto segue al prompt dei comandi e quindi premere INVIO:
appcmd set config /section:requestfiltering /verbs.allowunlisted:false
Configurare per le richieste WebDAV
Per configurare se il filtro verbo si applica alle richieste WebDAV, usare la sintassi seguente:
appcmd set config /section:requestfiltering /verbs.applyToWebDAV:
true|
false
Ad esempio, per configurare IIS in modo che il filtro verbo non si applichi alle richieste WebDAV, digitare quanto segue al prompt dei comandi e quindi premere INVIO:
appcmd set config /section:requestfiltering /verbs.applyToWebDAV:false
Aggiungere un verbo HTTP
Per configurare un verbo da filtrare, usare la sintassi seguente:
appcmd set config /section:requestfiltering /+verbs.[verb='
stringa',allowed='
true|
false']
La stringa della variabile verb=
specifica il verbo a cui si applica questa restrizione.
Ad esempio, per specificare GET è consentito, digitare quanto segue al prompt dei comandi e quindi premere INVIO:
appcmd set config /section:requestfiltering /+verbs.[verb='GET',allowed='true']
Limiti delle dimensioni dell'intestazione
È possibile limitare le dimensioni delle intestazioni delle richieste HTTP per migliorare le prestazioni e la sicurezza. Le intestazioni sono coppie nome/valore che definiscono i parametri operativi di una transazione HTTP.
Per configurare i limiti delle dimensioni dell'intestazione tramite l'interfaccia utente
- Aprire Gestione IIS e selezionare il livello per il quale si vuole configurare il filtro delle richieste.
- In Visualizzazione funzionalità fare doppio clic su Filtro richieste.
- Selezionare la scheda Intestazioni e fare clic su Aggiungi intestazione.
- Nella casella Intestazione digitare il nome del campo di intestazione.
- Nella casella Limite dimensioni digitare un numero intero positivo che rappresenta il limite di dimensioni dell'intestazione in byte.
- Fare clic su OK.
Stringhe di query
È possibile configurare IIS 8 per consentire o negare stringhe di query specifiche contenute nell'URL richiesto. Ad esempio, se viene trovata una stringa di query negata in un URL di richiesta, la richiesta viene negata.
Per configurare le stringhe di query tramite l'interfaccia utente
- Aprire Gestione IIS e selezionare il livello in cui si vuole configurare il filtro delle richieste.
- In Visualizzazione funzionalità fare doppio clic su Filtro richieste.
- Selezionare la scheda Stringhe di query e fare clic su Consenti stringa di query o Nega stringa di query.
- Nella casella Stringa di query digitare la stringa di query.
- Fare clic su OK.
Registrazione filtro richieste
È possibile usare la registrazione IIS per valutare e ottimizzare la configurazione del filtro delle richieste.
La tabella seguente mostra i codici di errore del filtro delle richieste visualizzati nel log:
Descrizione dell'errore | Codice di stato |
---|---|
Filtro richieste: sequenza URL negata | 404.5 |
Filtro richieste: verbo negato | 404.6 |
Filtro richieste: estensione del nome file negata | 404.7 |
Filtro richieste: negato dal segmento nascosto | 404.8 |
Filtro richieste: negato perché l'URL ha doppio escape | 404.11 |
Filtro richieste: negato a causa di caratteri di bit elevati | 404.12 |
Filtro richieste: negato perché l'URL è troppo lungo | 404.14 |
Filtro richieste: negato perché la stringa di query è troppo lunga | 404.15 |
Filtro richieste: negato perché la lunghezza del contenuto è troppo grande | 413.1 |
Filtro richieste: negato perché l'intestazione della richiesta è troppo lunga. | 431 |
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per