Share via


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:

  1. Indica se consentire l'accesso a un file con un'estensione non elencata per il filtro delle richieste.
  2. Indica se consentire le richieste che usano verbi HTTP non elencati.
  3. Indica se consentire le richieste che contengono caratteri a bit elevato (non ASCII).
  4. Indica se consentire le richieste con doppia codifica.
  5. Lunghezza massima del contenuto richiesto.
  6. Lunghezza massima dell'URL.
  7. Dimensione massima di una stringa di query.

Per configurare le opzioni generali di filtro richieste tramite l'interfaccia utente

  1. Aprire Gestione IIS e selezionare il livello per il quale si vuole configurare il filtro delle richieste.
  2. In Visualizzazione funzionalità fare doppio clic su Filtro richieste.
  3. Nel riquadro Azioni fare clic su Modifica impostazioni funzionalità.
  4. 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

  1. Aprire Gestione IIS e selezionare il livello per il quale si vuole configurare il filtro delle richieste.
  2. In Visualizzazione funzionalità fare doppio clic su Filtro richieste.
  3. Selezionare la scheda Estensioni nome file.
  4. Nel riquadro Azioni fare clic su Consenti estensione nome file o Nega estensione file.
  5. 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:

  1. Analizzare l'URL della richiesta.
  2. Cercare le stringhe di query contenute nell'URL.
  3. Cercare campi di intestazione specifici.
  4. Definire le estensioni di file a cui si applica il filtro.
  5. Definire le stringhe da negare.

Per configurare una regola di filtro tramite l'interfaccia utente

  1. Aprire Gestione IIS e selezionare il livello per il quale si vuole configurare il filtro delle richieste.
  2. In Visualizzazione funzionalità fare doppio clic su Filtro richieste.
  3. Selezionare la scheda Regole .
  4. Nel riquadro Azioni fare doppio clic su Aggiungi regola di filtro.
  5. Nella casella Nome digitare un nome per la regola di filtro.
  6. Se si vuole analizzare l'URL, selezionare la casella di controllo Scan URL (Url analisi).
  7. Se si vuole analizzare la stringa di query, selezionare la casella di controllo Analizza stringa di query.
  8. In Intestazioni analisi digitare una o più intestazioni da analizzare.
  9. In Si applica a digitare una o più estensioni di file a cui si applica la regola.
  10. In Nega stringhe digitare una o più stringhe da negare.
  11. 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

  1. Aprire Gestione IIS e selezionare il livello per il quale si vuole configurare il filtro delle richieste.
  2. In Visualizzazione funzionalità fare doppio clic su Filtro richieste.
  3. Selezionare la scheda Segmenti nascosti.
  4. Nel riquadro Azioni fare clic su Aggiungi segmento nascosto.
  5. 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

  1. Aprire Gestione IIS e selezionare il livello per il quale si vuole configurare il filtro delle richieste.
  2. In Visualizzazione funzionalità fare doppio clic su Filtro richieste.
  3. Selezionare la scheda URL .
  4. Nel riquadro Azioni selezionare Consenti URL o Nega sequenza.
  5. 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

  1. Aprire Gestione IIS e selezionare il livello per il quale si vuole configurare il filtro delle richieste.
  2. In Visualizzazione funzionalità fare doppio clic su Filtro richieste.
  3. Selezionare la scheda Verbi HTTP.
  4. Nel riquadro Azioni fare clic su Consenti verbo o nega verbo.
  5. 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

  1. Aprire Gestione IIS e selezionare il livello per il quale si vuole configurare il filtro delle richieste.
  2. In Visualizzazione funzionalità fare doppio clic su Filtro richieste.
  3. Selezionare la scheda Intestazioni e fare clic su Aggiungi intestazione.
  4. Nella casella Intestazione digitare il nome del campo di intestazione.
  5. Nella casella Limite dimensioni digitare un numero intero positivo che rappresenta il limite di dimensioni dell'intestazione in byte.
  6. 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

  1. Aprire Gestione IIS e selezionare il livello in cui si vuole configurare il filtro delle richieste.
  2. In Visualizzazione funzionalità fare doppio clic su Filtro richieste.
  3. Selezionare la scheda Stringhe di query e fare clic su Consenti stringa di query o Nega stringa di query.
  4. Nella casella Stringa di query digitare la stringa di query.
  5. 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