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
- Aprire Gestione IIS.
- Nel riquadro Connessioni fare clic su Pool di applicazioni.
- Nel riquadro Azioni fare clic su Aggiungi pool di applicazioni.
- Nella casella Nome digitare un nome univoco per il pool di applicazioni.
- Selezionare il valore appropriato in Versione di .NET Framework e Modalità pipeline gestita.
- Fare clic su OK.
Per spostare un'applicazione in un altro pool di applicazioni
- Aprire Gestione IIS.
- Nella pagina Connessioni selezionare il sito o l'applicazione Web da spostare.
- Nel riquadro Azioni fare clic su Impostazioni di base.
- 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.
- 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
- Aprire Esplora risorse e passare alla cartella o al file.
- Fare clic con il pulsante destro del mouse sulla cartella o il file e scegliere Proprietà.
- Selezionare la scheda Sicurezza e quindi fare clic su Modifica.
- Fare clic su Aggiungi, quindi su Percorsi e selezionare il server come percorso in cui effettuare la ricerca.
- Nella casella Immettere i nomi degli oggetti da selezionare digitare IIS APPPOOL\nomePoolApplicazioni, dovenomePoolApplicazioni è l'identità del pool di applicazioni.
- 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
- Aprire Gestione IIS e passare al livello da gestire.
- In Visualizzazione funzionalità fare doppio clic su Livelli di trust .NET.
- 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
- Aprire Gestione IIS e passare al livello da gestire.
- In Visualizzazione funzionalità fare doppio clic su Autenticazione.
- Nella pagina Autenticazione selezionare Autenticazione basata su form.
- Nel riquadro Azioni fare clic su Abilita per usare l'autenticazione basata su form con le impostazioni predefinite.
- Nel riquadro Azioni fare clic su Modifica.
- 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.
- Nella casella di testo Timeout del cookie di autenticazione (in minuti) digitare il numero di minuti da usare per il valore di timeout.
- Nell'elenco Modalità selezionare la modalità cookie da usare.
- Nella casella di testo Nome digitare il nome del cookie.
- Nell'elenco Modalità di protezione selezionare la modalità di protezione da usare.
- Selezionare la casella di controllo Richiede SSL.
- 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
- Aprire Gestione IIS e passare al livello da gestire.
- In Visualizzazione funzionalità fare doppio clic su Autenticazione.
- Nella pagina Autenticazione selezionare Rappresentazione ASP.NET.
- Nel riquadro Azioni fare clic su Abilita per usare l'autenticazione basata sulla rappresentazione ASP.NET con le impostazioni predefinite.
- Facoltativamente, nel riquadro Azioni fare clic su Modifica per impostare l'entità di sicurezza.
- 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.
- Fare clic su OK per completare la procedura o passare ai successivi passaggi facoltativi per modificare l'identità da rappresentare.
- Facoltativamente, fare clic su Imposta per modificare l'identità Utente specifico.
- 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.
- Fare clic su OK per chiudere la finestra di dialogo Imposta credenziali.
- 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:string
password: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
- Aprire Gestione IIS e passare al livello da gestire.
- In Visualizzazione funzionalità fare doppio clic su Chiave computer.
- Nella pagina Chiave computer selezionare un metodo di convalida nell'elenco Metodo di convalida. Il metodo di convalida predefinito è SHA1.
- Scegliere un metodo di crittografia nell'elenco Metodo di crittografia. Il metodo di crittografia predefinito è Automatico.
- Facoltativamente, configurare le impostazioni per le chiavi di convalida e di decrittografia.
- 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:
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
- Aprire Gestione IIS.
- Nel riquadro Connessioni espandere il nodo Siti nell'albero e quindi fare clic per selezionare il sito per cui si vuole aggiungere un binding.
- Nel riquadro Azioni fare clic su Binding.
- Nella finestra di dialogo Binding sito fare clic su Aggiungi.
- Nella finestra di dialogo Aggiungi binding sito selezionare https nell'elenco Tipo.
- Nell'elenco Indirizzo IP selezionare Tutti non assegnati (a meno che non vi sia un indirizzo IP specifico che si vuole usare).
- Nella casella Porta digitare il numero della porta (l'impostazione predefinita è 443).
- Nella casella Nome host digitare il nome del computer host.
- Se si desidera che vengano serviti più siti Web mediante lo stesso indirizzo IP, selezionare la casella di controllo Richiedi indicazione nome server.
- 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 .
- 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
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.
In Visualizzazione funzionalità fare doppio clic su Impostazioni SSL.
Nella pagina Impostazioni SSL selezionare Richiedi SSL.
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
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.
In Visualizzazione funzionalità fare doppio clic su Impostazioni SSL.
Facoltativamente, nella pagina Impostazioni SSL selezionare Richiedi SSL. Per ignorare (tramite Ignora) o accettare (tramite Accetta) i certificati client, non è necessario SSL.
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.
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