Condividi tramite


Configurazione del passaggio 4: Configurare la sicurezza delle applicazioni

di Keith Newman e Robert McMurray

In questa fase della creazione del sito Web ASP.NET occorre configurare le impostazioni di sicurezza disponibili in IIS. Le sezioni seguenti illustrano le impostazioni di sicurezza più comuni per le applicazioni ASP.NET:

4.1. Isolare le applicazioni Web

Implementare i seguenti requisiti consigliati per isolare i siti e le applicazioni Web nel proprio server.

  • Usare un pool di applicazioni per sito o applicazione Web.
  • Limitare l'accesso alle cartelle e ai file dei siti all'identità del pool di applicazioni.
  • Impostare per ogni sito una cartella temporanea ASP.NET e consentire l'accesso solo all'identità del pool di applicazioni.
  • Verificare di aver impostato un elenco di controllo di accesso (ACL) per ogni radice del sito per consentire l'accesso soltanto all'identità del pool di applicazioni.

Se è presente più di un'applicazione per pool di applicazioni, valutare l'opportunità di creare altri pool di applicazioni e di spostare alcune delle applicazioni nei nuovi pool.

Per creare un pool di applicazioni

  1. Aprire Gestione IIS.
  2. Nel riquadro Connessioni fare clic su Pool di applicazioni.
  3. Nel riquadro Azioni fare clic su Aggiungi pool di applicazioni.
  4. Nella casella Nome digitare un nome univoco per il pool di applicazioni.
  5. Selezionare il valore appropriato in Versione di .NET Framework e Modalità pipeline gestita.
  6. Fare clic su OK.

Per spostare un'applicazione in un altro pool di applicazioni

  1. Aprire Gestione IIS.
  2. Nella pagina Connessioni selezionare il sito o l'applicazione Web da spostare.
  3. Nel riquadro Azioni fare clic su Impostazioni di base.
  4. Nella finestra di dialogo Modifica sito fare clic su Seleziona per aprire la finestra di dialogo Seleziona pool di applicazioni e quindi selezionare il pool di applicazioni dal menu Pool di applicazioni.
  5. Fare clic su OK per chiudere la finestra di dialogo Seleziona pool di applicazioni e quindi di nuovo su OK per chiudere il menu Modifica sito.

Per aggiungere un'identità del pool di applicazioni a una cartella o un file

  1. Aprire Esplora risorse e passare alla cartella o al file.
  2. Fare clic con il pulsante destro del mouse sulla cartella o il file e scegliere Proprietà.
  3. Selezionare la scheda Sicurezza e quindi fare clic su Modifica.
  4. Fare clic su Aggiungi, quindi su Percorsi e selezionare il server come percorso in cui effettuare la ricerca.
  5. Nella casella Immettere i nomi degli oggetti da selezionare digitare IIS APPPOOL\nomePoolApplicazioni, dovenomePoolApplicazioni è l'identità del pool di applicazioni.
  6. Fare clic su OK, quindi di nuovo su OKe infine ancora su OK per chiudere le finestre di dialogo.

4.2. Livelli di attendibilità .NET

Questa sezione illustra come impostare il livello di attendibilità dell'applicazione tramite l'interfaccia utente Gestione IIS o la riga di comando.

Per impostare un livello di attendibilità tramite l'interfaccia utente

  1. Aprire Gestione IIS e passare al livello da gestire.
  2. In Visualizzazione funzionalità fare doppio clic su Livelli di trust .NET.
  3. Nella pagina Livelli di trust .NET selezionare un livello di attendibilità nell'elenco a discesa Livello di trust e quindi fare clic su Applica nel riquadro Azioni.

Per impostare un livello di attendibilità tramite la riga di comando

Per impostare un livello di attendibilità, usare la sintassi seguente:

appcmd set config /commit:WEBROOT /section:trust /level:Full|High|Medium|Low|Minimal

Per l'attributo level viene usato uno dei cinque valori che corrispondono ai file dei criteri di sicurezza dall'accesso di codice preconfigurati. Ad esempio, per impostare un livello di attendibilità di Full, digitare quanto segue al prompt dei comandi e quindi premere INVIO:

appcmd set config /commit:WEBROOT /section:trust /level:Full

Nota

Quando si usa Appcmd.exe per configurare l'elemento trust a livello globale in IIS 8, specificare /commit:WEBROOT nel comando in modo che le modifiche di configurazione vengano apportate al file radice Web.config anziché ApplicationHost.config.

4.3. Autenticazione .NET

In Pianificare un sito Web ASP.NET in IIS, si sono prese decisioni di progettazione sulla modalità di autenticazione corretta per l'applicazione.

Autenticazione basata su form ASP.NET

Questa sezione illustra come configurare l'autenticazione basata su form ASP.NET tramite l'interfaccia utente Gestione IIS o la riga di comando.

Per configurare l'autenticazione basata su form tramite l'interfaccia utente

  1. Aprire Gestione IIS e passare al livello da gestire.
  2. In Visualizzazione funzionalità fare doppio clic su Autenticazione.
  3. Nella pagina Autenticazione selezionare Autenticazione basata su form.
  4. Nel riquadro Azioni fare clic su Abilita per usare l'autenticazione basata su form con le impostazioni predefinite.
  5. Nel riquadro Azioni fare clic su Modifica.
  6. Nella finestra di dialogo Modifica impostazioni autenticazione basata su form digitare il nome della pagina a cui accedono i client nella casella di testo URL di accesso.
  7. Nella casella di testo Timeout del cookie di autenticazione (in minuti) digitare il numero di minuti da usare per il valore di timeout.
  8. Nell'elenco Modalità selezionare la modalità cookie da usare.
  9. Nella casella di testo Nome digitare il nome del cookie.
  10. Nell'elenco Modalità di protezione selezionare la modalità di protezione da usare.
  11. Selezionare la casella di controllo Richiede SSL.
  12. Selezionare la casella di controllo Estendi scadenza cookie a ogni richiesta e quindi fare clic su OK.

Per configurare l'autenticazione basata su form tramite la riga di comando

Per abilitare l'autenticazione basata su form, usare la sintassi seguente:

appcmd set config /commit:WEBROOT /section:system.web/authentication /mode:None|Windows|Passport|Forms

Per impostazione predefinita, IIS 8 imposta l'attributo su Windows, che disabilita l'autenticazione mode di Forms. Se si imposta l'attributo su Forms, abilitare l'autenticazione di Forms. Ad esempio, per abilitare l'autenticazione basata su form, digitare quanto segue al prompt dei comandi, quindi premere INVIO:

appcmd set config /commit:WEBROOT /section:system.web/authentication /mode:Forms

Nota

Quando si usa Appcmd.exe per configurare l'elemento di autenticazione a livello globale in IIS 8, specificare /commit:WEBROOT nel comando in modo che le modifiche di configurazione vengano apportate al file radice Web.config anziché ApplicationHost.config.

Per specificare l'URL di accesso per l'autenticazione basata su form, usare la sintassi seguente:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.loginURL:string

La variabile forms.loginURL:string è il nome della pagina in cui i client accedono. Il valore predefinito è Login.aspx. Ad esempio, per specificare l'URL di accesso usato per l'autenticazione basata su form, digitare quanto segue al prompt dei comandi, quindi premere INVIO:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.loginURL:login.aspx

Nota

Quando si usa Appcmd.exe per configurare l'elemento di autenticazione a livello globale in IIS 8, specificare /commit:WEBROOT nel comando in modo che le modifiche di configurazione vengano apportate al file radice Web.config anziché ApplicationHost.config.

Per specificare il timeout di autenticazione per l'autenticazione basata su form, usare la sintassi seguente:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.timeout:TimeSpan

La variabile forms.timeout:TimeSpan è il tempo in minuti in cui il cookie usato per l'autenticazione scade. Il valore predefinito è 30 minuti. Ad esempio, per impostare il valore di timeout di autenticazione per l'autenticazione basata su form, digitare quanto segue al prompt dei comandi, quindi premere INVIO:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.timeout:30

Nota

Quando si usa Appcmd.exe per configurare l'elemento di autenticazione a livello globale in IIS 8, è necessario specificare /commit:WEBROOT nel comando in modo che le modifiche di configurazione vengano apportate al file radice Web.config anziché ApplicationHost.config.

Per configurare il nome del cookie per l'autenticazione basata su form, usare la sintassi seguente:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.name:string

La variabile forms.name:string è il nome del cookie usato per l'autenticazione di Forms. Il valore predefinito è .ASPXAUTH. Ad esempio, per configurare il nome del cookie usato per l'autenticazione basata su form, digitare quanto segue al prompt dei comandi, quindi premere INVIO:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.name:.ASPXUTH

Per configurare la modalità cookie per l'autenticazione basata su form, usare la sintassi seguente:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.cookieless:UseUri|UseCookies|AutoDetect|UseDeviceProfile

Il valore predefinito per la proprietà forms.cookieless è UseDeviceProfile. Ad esempio, per configurare l'uso dell'impostazione Utilizza profilo del dispositivo come modalità dei cookie per l'autenticazione basata su form, digitare quanto segue al prompt dei comandi, quindi premere INVIO:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.cookieless:UseDeviceProfile

Per configurare la modalità di protezione dei cookie per l'autenticazione basata su form, usare la sintassi seguente:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.protection:All|None|Encryption|Validation

Il valore predefinito per la proprietà forms.protection è All. Ad esempio, per configurare l'uso dell'impostazione Crittografia e convalida come modalità di protezione dei cookie per l'autenticazione basata su form, digitare quanto segue al prompt dei comandi, quindi premere INVIO:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.protection:All

Per richiedere SSL per un cookie di autenticazione, usare la sintassi seguente:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.requireSSL:true|false

Il valore predefinito per la proprietà forms.requireSSL è false. Se si imposta questo attributo su true, è necessario SSL. Ad esempio, per richiedere SSL per un cookie di autenticazione, digitare quanto segue al prompt dei comandi, quindi premere INVIO:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.requireSSL:true

Per memorizzare nella cache il contenuto richiesto di frequente, usare la sintassi seguente:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.slidingExpiration:true|false

Il valore predefinito per la proprietà forms.slidingExpiration è true. Ad esempio, per memorizzare nella cache il contenuto richiesto di frequente, digitare quanto segue al prompt dei comandi, quindi premere INVIO:

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.slidingExpiration:true

Autenticazione basata sulla rappresentazione ASP.NET

Per configurare l'autenticazione basata sulla rappresentazione tramite l'interfaccia utente

  1. Aprire Gestione IIS e passare al livello da gestire.
  2. In Visualizzazione funzionalità fare doppio clic su Autenticazione.
  3. Nella pagina Autenticazione selezionare Rappresentazione ASP.NET.
  4. Nel riquadro Azioni fare clic su Abilita per usare l'autenticazione basata sulla rappresentazione ASP.NET con le impostazioni predefinite.
  5. Facoltativamente, nel riquadro Azioni fare clic su Modifica per impostare l'entità di sicurezza.
  6. Nella finestra di dialogo Modifica impostazioni di rappresentazione ASP.NET selezionare Utente specifico o Utente autenticato. Qualunque sia l'opzione selezionata, IIS usa questa identità per il contesto di sicurezza dell'applicazione ASP.NET. Per impostazione predefinita, IIS 8 è impostato per rappresentare l'utente autenticato.
  7. Fare clic su OK per completare la procedura o passare ai successivi passaggi facoltativi per modificare l'identità da rappresentare.
  8. Facoltativamente, fare clic su Imposta per modificare l'identità Utente specifico.
  9. Nella finestra di dialogo Imposta credenziali immettere il nome di un account utente esistente in Nome utente, la password associata a tale account utente in Password e quindi lo stesso identico valore in Conferma password per un nuovo account usato da IIS per l'accesso anonimo.
  10. Fare clic su OK per chiudere la finestra di dialogo Imposta credenziali.
  11. Fare clic su OK per chiudere la finestra di dialogo Modifica impostazioni di rappresentazione ASP.NET.

Per configurare l'autenticazione basata sulla rappresentazione tramite la riga di comando

Per abilitare o disabilitare la rappresentazione ASP.NET, usare la sintassi seguente:

appcmd set config /commit:WEBROOT /section:identity /impersonate:true|false

Per impostazione predefinita, IIS imposta l'attributo su false, che disabilita l'autenticazione impersonate di rappresentazione ASP.NET. Se si imposta l'attributo su true, si abilita l'autenticazione di rappresentazione ASP.NET. Ad esempio, per abilitare l'autenticazione basata sulla rappresentazione ASP.NET, digitare quanto segue al prompt dei comandi, quindi premere INVIO:

appcmd set config /commit:WEBROOT /section:identity /impersonate:true

Facoltativamente, è possibile impostare l'account utilizzato da IIS per la rappresentazione usando la sintassi seguente:

appcmd set config /commit:WEBROOT /section:identity /userName:string /password:string

La variabile è l'account IIS usa per rappresentare e la variabile userName:stringpassword:string è la password. Ad esempio, per usare un account denominato Moe per la rappresentazione in IIS, digitare quanto segue al prompt dei comandi, quindi premere INVIO:

appcmd set config /commit:WEBROOT /section:identity /userName: Moe /password:pass@word1

Nota

Quando si usa Appcmd.exe per configurare l'elemento identity a livello globale in IIS 8, specificare /commit:WEBROOT nel comando in modo che le modifiche di configurazione vengano apportate al file radice Web.config anziché ApplicationHost.config.

4.4. Impostazioni delle chiavi del computer

Questa sezione illustra come generare le chiavi del computer per l'applicazione ASP.NET tramite l'interfaccia utente Gestione IIS.

Per generare le chiavi del computer tramite l'interfaccia utente

  1. Aprire Gestione IIS e passare al livello da gestire.
  2. In Visualizzazione funzionalità fare doppio clic su Chiave computer.
  3. Nella pagina Chiave computer selezionare un metodo di convalida nell'elenco Metodo di convalida. Il metodo di convalida predefinito è SHA1.
  4. Scegliere un metodo di crittografia nell'elenco Metodo di crittografia. Il metodo di crittografia predefinito è Automatico.
  5. Facoltativamente, configurare le impostazioni per le chiavi di convalida e di decrittografia.
  6. Nel riquadro Azioni fare clic su Genera chiavi e quindi su Applica.

4.5. Comunicazioni TLS/SSL

Questa sezione illustra come configurare la sicurezza TLS/SSL per la propria applicazione.

Dopo avere ottenuto un certificato server da un'autorità di certificazione (CA), seguire le procedure riportate nelle sezioni seguenti:

  1. Binding SSL
  2. Richiedere SSL per il sito
  3. Certificati client

Binding SSL

Questa sezione illustra come aggiungere un binding SSL al proprio sito tramite l'interfaccia utente Gestione IIS o la riga di comando.

Per aggiungere un'associazione SSL a un sito usando l'interfaccia utente

  1. Aprire Gestione IIS.
  2. Nel riquadro Connessioni espandere il nodo Siti nell'albero e quindi fare clic per selezionare il sito per cui si vuole aggiungere un binding.
  3. Nel riquadro Azioni fare clic su Binding.
  4. Nella finestra di dialogo Binding sito fare clic su Aggiungi.
  5. Nella finestra di dialogo Aggiungi binding sito selezionare https nell'elenco Tipo.
  6. Nell'elenco Indirizzo IP selezionare Tutti non assegnati (a meno che non vi sia un indirizzo IP specifico che si vuole usare).
  7. Nella casella Porta digitare il numero della porta (l'impostazione predefinita è 443).
  8. Nella casella Nome host digitare il nome del computer host.
  9. Se si desidera che vengano serviti più siti Web mediante lo stesso indirizzo IP, selezionare la casella di controllo Richiedi indicazione nome server.
  10. Nell'elenco Certificato SSL selezionare il certificato per il sito Web. Se il certificato non viene visualizzato nell'elenco, fare clic su Seleziona e cercare il certificato usando la finestra di dialogo Seleziona certificato .
  11. Fare clic su OK.

Per aggiungere un'associazione SSL a un sito usando la riga di comando

Per aggiungere un binding a un sito, usare la sintassi seguente:

appcmd set site /site.name:string /+bindings.[protocol='string', bindingInformation='string']

La variabile site.name:string è il nome del sito a cui si vuole aggiungere un'associazione. La variabile è il protocollo che si vuole usare e la variabile protocol='string' è la combinazione di indirizzo IP, porta e intestazione bindingInformation='string' host.

Ad esempio, per configurare un sito denominato contoso con un binding HTTPS per tutti gli indirizzi IP, sulla porta 443 e senza intestazione host, digitare quanto segue al prompt dei comandi, quindi premere INVIO:

appcmd set site /site.name:contoso /+bindings.[protocol='https', bindingInformation='*:443:']

Richiedere SSL per il sito

Questa sezione illustra come richiedere SSL per il proprio sito Web tramite l'interfaccia utente Gestione IIS o la riga di comando.

Per richiedere SSL tramite l'interfaccia utente

  1. Aprire Gestione IIS e passare al livello da gestire. Verificare di trovarsi a livello di sito, di applicazione o di directory, in quanto la funzionalità Impostazioni SSL non è disponibile a livello di server.

    Nota

    Se si vuole configurare SSL a livello di file, selezionare il file in Visualizzazione contenuto e quindi fare clic su Passa a visualizzazione funzionalità nel riquadro Azioni.

  2. In Visualizzazione funzionalità fare doppio clic su Impostazioni SSL.

  3. Nella pagina Impostazioni SSL selezionare Richiedi SSL.

  4. Nel riquadro Azioni fare clic su Applica.

Per richiedere SSL tramite la riga di comando

Per richiedere SSL, usare la sintassi seguente:

appcmd set config "site|URL" /section:access /sslFlags:Ssl /commit:APPHOST

La variabile site|URL è il sito, l'applicazione, la directory virtuale o il file in cui si desidera che IIS 8 richieda SSL. Ad esempio, per richiedere SSL per il sito Sito Web predefinito, digitare quanto segue al prompt dei comandi, quindi premere INVIO.

appcmd set config "Default Web Site" /section:access /sslFlags:Ssl /commit:APPHOST

Ad esempio, per richiedere SSL per il file iisstart.htm nel sito Sito Web predefinito, digitare quanto segue al prompt dei comandi, quindi premere INVIO:

appcmd set config "http://localhost/iisstart.htm" /section:access /sslFlags:Ssl /commit:APPHOST

Certificati client

Per specificare i certificati client tramite l'interfaccia utente

  1. Aprire Gestione IIS e passare al livello da gestire. Verificare di trovarsi a livello di sito, di applicazione o di directory, in quanto la funzionalità Impostazioni SSL non è disponibile a livello di server.

    Nota

    Se si vuole configurare SSL a livello di file, selezionare il file in Visualizzazione contenuto e quindi fare clic su Passa a visualizzazione funzionalità nel riquadro Azioni.

  2. In Visualizzazione funzionalità fare doppio clic su Impostazioni SSL.

  3. Facoltativamente, nella pagina Impostazioni SSL selezionare Richiedi SSL. Per ignorare (tramite Ignora) o accettare (tramite Accetta) i certificati client, non è necessario SSL.

  4. Nell'area Certificati client della pagina Impostazioni SSL usare una delle procedure seguenti:

    • Selezionare Ignora se non si vuole accettare un certificato client anche se un client lo presenta.
    • Selezionare Accetta per accettare i certificati client.
    • Selezionare Richiedi per richiedere i certificati client. Per usare l'opzione Richiedi certificati dei client è necessario abilitare Richiedi SSL.
  5. Nel riquadro Azioni fare clic su Applica.

Per specificare i certificati client tramite la riga di comando

Per specificare se usare o meno i certificati client, usare la sintassi seguente:

appcmd set config "site|URL" /section:access /sslFlags:Ssl|SslNegotiateCert|SslRequireCert /commit:APPHOST

La variabile è il sito, l'applicazione, la directory virtuale o il file in cui si desidera abilitare site|URL i certificati client. Ad esempio, per accettare i certificati client per il sito Sito Web predefinito, digitare quanto segue al prompt dei comandi, quindi premere INVIO:

appcmd set config "Default Web Site" /section:access /sslFlags:SslNegotiateCert /commit:APPHOST

Per accettare i certificati client per il file iisstart.htm nel sito Sito Web predefinito, digitare quanto segue al prompt dei comandi, quindi premere INVIO:

appcmd set config "http://localhost/iisstart.htm" /section:access /sslFlags:SslNegotiateCert /commit:APPHOST

È possibile specificare uno o più valori dell'attributo sslFlags. Se si desidera usare più valori, separare ogni valore con una virgola (,). Ad esempio, per specificare un requisito sia per i certificati client che SSL per il sito Sito Web predefinito, digitare quanto segue al prompt dei comandi, quindi premere INVIO:

appcmd set config "Default Web Site" /section:access /sslFlags:Ssl,SslRequireCert /commit:APPHOST