Il server Web si trova sul front-end dell'infrastruttura di hosting. È direttamente connesso a Internet ed è responsabile del ricevimento delle richieste dai client, della creazione di pagine Web dinamiche e della risposta contenente i dati richiesti.
Un server Web protetto rappresenta una solida base per l'ambiente di hosting, dove la sua configurazione svolge un ruolo cruciale per la protezione generale delle applicazioni Web. È opportuno chiedersi però quali sono le caratteristiche di un server Web protetto. Per proteggere il server Web è di fondamentale importanza comprendere con precisione l'obiettivo. Una volta stabilito cosa si intende con server Web protetto, è possibile apprendere come applicare le impostazioni di configurazione richieste per realizzarlo.
In questo modulo viene presentato un metodo sistematico e ripetibile, che è possibile adottare per configurare un server Web protetto. Viene illustrata la metodologia per proteggere il server Web che consiste nel separarne la configurazione in dodici aree di protezione. A ognuna di queste aree viene dedicata una serie di procedure di alto livello. Le procedure sono modulari e spiegano come applicare la metodologia.
Il modulo consente di:
| • | Sapere quali sono le caratteristiche di un server Web protetto. |
| • | Proteggere i server Web utilizzando una metodologia sperimentata. |
| • | Sapere cosa, per impostazione predefinita, viene installato in Windows 2000 Server da un'installazione completa di IIS e .NET Framework. |
| • | Sapere quali servizi possono essere disattivati in sicurezza su un server Web protetto. |
| • | Configurare in modo protetto il server Web, inclusi i protocolli del sistema operativo, gli account, i file, le directory, le condivisioni, le porte, il Registro di sistema, il controllo e la registrazione. |
| • | Configurare in modo protetto i componenti applicativi del server Web (in questo caso IIS), inclusi i siti Web, le directory virtuali, i mapping degli script, i filtri ISAPI, la metabase e i certificati server. |
| • | Configurare in modo protetto le impostazioni di .NET Framework, inclusi Machine.config e la protezione dall'accesso di codice. |
| • | Installare e utilizzare in modo protetto Servizi terminal per l'amministrazione remota. |
| • | Sapere quali contromisure applicare per affrontare i pericoli comuni che interessano i server Web, inclusi profiling, Denial of Service, accesso non autorizzato, esecuzione arbitraria di codice, aumento del livello di privilegi, virus, worm e cavalli di Troia. |
Le informazioni contenute in questo modulo sono valide per i seguenti prodotti e tecnologie:
| • | Microsoft Windows Server 2000 e 2003 |
| • | Microsoft .NET Framework 1.1 e ASP.NET 1.1 |
| • | Microsoft Internet Information Services (IIS) 5.0 e 6.0 |
Per trarre il massimo vantaggio dal modulo:
| • | Leggere il modulo 2 "Pericoli e contromisure". Vengono illustrati più dettagliatamente i potenziali pericoli a cui sono sottoposte le applicazioni Web. | ||||||
| • | Utilizzare la tabella riepilogativa. Nella sezione "Riepilogo delle caratteristiche di un server Web protetto" sono elencati e spiegati gli attributi di un server Web protetto. Questi attributi riflettono le indicazioni giunte da numerose fonti, tra cui i clienti, gli esperti del settore e i team di sviluppo e supporto interni di Microsoft. Utilizzare la tabella come riferimento al momento di configurare il server. | ||||||
| • | Utilizzare l'elenco di controllo."Elenco di controllo: Protezione del server Web" nella sezione "Elenco di controllo" di questa guida è una scheda di supporto alle operazioni, stampabile e di rapida consultazione. L'elenco di controllo basato sulle attività permette di valutare rapidamente l'ambito complessivo delle procedure necessarie e assiste nell'esecuzione delle singole fasi. | ||||||
| • | Utilizzare la sezione "Procedure". La sezione "Procedure" di questa guida include gli articoli seguenti:
|
È opportuno chiedersi quali sono le caratteristiche di un server Web protetto. Per proteggere il server Web è di fondamentale importanza comprendere con precisione l'obiettivo. Una volta stabilito cosa si intende con server Web protetto, è possibile apprendere come applicare le impostazioni di configurazione richieste per realizzarlo. In questo modulo viene presentato un metodo sistematico e ripetibile, che è possibile adottare per configurare un server Web protetto.
All'inizio vengono passati in rassegna i pericoli più comuni che interessano i server Web. Quindi, su questa base viene creata la metodologia. Successivamente, si passa alla messa in pratica della metodologia e a illustrare dettagliatamente come migliorare la protezione del server Web. Anche se la metodologia di base può essere riutilizzata per varie tecnologie, questo modulo è dedicato a illustrare la protezione di un server Web con il sistema operativo Microsoft Windows 2000 e che ospita Microsoft .NET Framework.
Il fatto che un pirata informatico possa colpire da una posizione remota fa di un server Web un bersaglio attraente. Capire quali sono i pericoli per un server Web ed essere in grado di identificare le contromisure appropriate permette di prevenire molti attacchi e sventare le intenzioni del gruppo sempre più numeroso di pirati informatici.
I principali pericoli per un server Web sono:
| • | Profiling |
| • | Denial of Service |
| • | Accesso non autorizzato |
| • | Esecuzione arbitraria di codice |
| • | Incremento dei privilegi |
| • | Virus, worm e cavalli di Troia |
Nella Figura 16.1 sono riassunti gli attacchi principali e le vulnerabilità comuni.

Figura 16.1
Pericoli principali per un server Web e vulnerabilità comuni
Il profiling, o enumerazione host, è un processo esplorativo utilizzato per raccogliere informazioni su un sito Web. Un pirata informatico si serve di queste informazioni per attaccare i punti deboli conosciuti.
Vulnerabilità
Le vulnerabilità comuni che rendono il server soggetto al profiling sono:
| • | Protocolli non necessari |
| • | Porte aperte |
| • | Server Web che forniscono informazioni di configurazione nelle intestazioni |
Attacchi
Gli attacchi comuni utilizzati per il profiling sono:
| • | Scansioni delle porte |
| • | Ping sweep |
| • | Enumerazione SMB (Server Message Block) e NetBIOS |
Contromisure
Le contromisure includono il blocco di tutte le porte non necessarie, il blocco del traffico Internet Control Message Protocol (ICMP) e la disattivazione dei protocolli non necessari quali NetBIOS e SMB.
Gli attacchi Denial of Service si verificano quando il server è sovraccarico di richieste di servizio. Il pericolo è dato dal fatto che, a causa di questo sovraccarico, il server Web non potrà rispondere alle richieste client legittime.
Vulnerabilità
Le vulnerabilità che fanno aumentare il rischio di attacchi DoS sono:
| • | Configurazione inadeguata dello stack TCP/IP |
| • | Server senza patch |
Attacchi
Gli attacchi DoS più comuni sono:
| • | SYN flood a livello di rete |
| • | Overflow del buffer |
| • | Sovraccarico del server Web con richieste da posizioni distribuite |
Contromisure
Le contromisure includono il rafforzamento della protezione dello stack TCP/IP e l'applicazione coerente delle ultime patch software e degli aggiornamenti al software di sistema.
L'accesso non autorizzato si verifica quando un utente senza le autorizzazioni corrette accede a informazioni riservate o effettua un'operazione vietata.
Vulnerabilità
Le vulnerabilità comuni che portano a un accesso non autorizzato sono:
| • | Controlli inadeguati dell'accesso Web di IIS, comprese autorizzazioni Web |
| • | Autorizzazioni NTFS inadeguate |
Contromisure
Le contromisure includono l'utilizzo di autorizzazioni Web protette, autorizzazioni NTFS e meccanismi di controllo dell'accesso .NET Framework compresa l'autorizzazione URL.
Gli attacchi di esecuzione di codice si verificano quando un pirata informatico esegue codice dannoso sul server per comprometterne le risorse o per organizzare ulteriori attacchi contro i sistemi a valle.
Vulnerabilità
Le vulnerabilità che possono portare all'esecuzione di codice dannoso sono:
| • | Configurazione IIS inadeguata |
| • | Server senza patch |
Attacchi
Gli attacchi comuni di esecuzione di codice sono:
| • | Attraversamento del percorso |
| • | Overflow del buffer con conseguente introduzione di codice |
Contromisure
Le contromisure includono la configurazione di IIS in maniera che respinga gli URL con "../" per impedire l'attraversamento del percorso, il blocco dei comandi di sistema e delle utilità con ACL (Access Control List) con restrizioni e l'installazione di nuove patch e di nuovi aggiornamenti.
Gli attacchi che mirano a elevare i privilegi si verificano quando un pirata informatico esegue codice utilizzando un account di processo con privilegi.
Vulnerabilità
Le vulnerabilità comuni che espongono il server Web agli attacchi di aumento del livello dei privilegi sono:
| • | Account di processi con più privilegi del necessario |
| • | Account di servizi con più privilegi del necessario |
Contromisure
Le contromisure includono l'esecuzione di processi tramite account con privilegi minimi e l'utilizzo di account utente e di servizio con privilegi minimi.
Il codice dannoso può essere introdotto in vari modi, tra cui:
| • | Virus. Programmi progettati per eseguire azioni dannose e manomettere un sistema operativo o le applicazioni. |
| • | Worm. Programmi che si autoreplicano e si autosostengono. |
| • | Cavalli di Troia. Programmi che sembrano utili ma che di fatto causano dei danni. |
In molti casi, la presenza di codice dannoso non viene notata finché non consuma le risorse di sistema e non rallenta o interrompe l'esecuzione di altri programmi. Il worm Code Red, ad esempio, è stato uno dei codici più dannosi che abbiano colpito IIS e faceva affidamento su una vulnerabilità relativa all'overflow del buffer in un filtro ISAPI.
Vulnerabilità
Le vulnerabilità comuni che espongono a virus, worm e cavalli di Troia sono:
| • | Server senza patch |
| • | Esecuzione di servizi non necessari |
| • | Estensioni e filtri ISAPI non necessari |
Contromisure
Le contromisure includono la sollecita applicazione delle ultime patch software, la disattivazione delle funzionalità inutilizzate quali i filtri e le estensioni ISAPI e l'esecuzione di processi con account con privilegi minimi per ridurre i danni in caso di attacco.
Per proteggere un server Web, è necessario applicare molte impostazioni di configurazione per ridurre la vulnerabilità del server agli attacchi. Per sapere da dove iniziare e quando il processo di protezione può dirsi concluso, l'approccio migliore consiste nell'organizzare in categorie le precauzioni da prendere e le impostazioni da configurare. L'utilizzo di categorie consente di percorrere sistematicamente l'intero processo di protezione dall'alto in basso o di scegliere una particolare categoria e di completare la procedura specifica.
La metodologia di protezione illustrata in questo modulo è stata suddivisa nelle categorie riportate nella Figura 16.2.

Figure 16.2
Categorie di configurazione di un server Web
Questa categorizzazione si basa sui seguenti presupposti:
| • | Patch e aggiornamenti |
| • | Servizi |
| • | Protocolli |
| • | Account |
| • | File e directory |
| • | Condivisioni |
| • | Porte |
| • | Registro di sistema |
| • | Controllo e registrazione |
| • | Siti e directory virtuali |
| • | Mapping degli script |
| • | Filtri ISAPI |
| • | Metabase IIS |
| • | Machine.config |
| • | Protezione dall'accesso di codice |
Prima di poter proteggere il server Web, è necessario conoscere quali sono i componenti presenti in un server Windows 2000 dopo l'installazione di IIS e .NET Framework. In questa sezione viene spiegato quali sono i componenti installati.
IIS installa diversi servizi, account, cartelle e siti Web. Alcuni potrebbero non essere utilizzati dalle proprie applicazioni Web e, se sono presenti nel server, potrebbero renderlo vulnerabile agli attacchi. Nella Tabella 16.1 sono elencati i servizi, gli account e le cartelle creati da un'installazione completa di IIS in Windows 2000 Server con tutti i componenti selezionati.
Tabella 16.1 Installazioni predefinite di IIS
| Voce | Dettagli | Impostazione predefinita |
Servizi | Servizio amministrazione di IIS (per l'amministrazione di servizi Web e FTP) | Installato |
Account e gruppi | IUSR_MACHINE (utenti Internet anonimi) | Aggiunto al gruppo Guest |
Cartelle | %windir%\system32\inetsrv (file di programma di IIS) |
|
Siti Web | Sito Web predefinito – porta 80: %SystemDrive%\inetpub\wwwroot | Accesso anonimo consentito |
Quando si installa .NET Framework in un server che ospita IIS, .NET Framework registra ASP.NET. Come parte del processo, viene creato un account locale con privilegi minimi chiamato ASPNET. Questo account esegue il processo di lavoro di ASP.NET (aspnet_wp.exe) e il servizio sullo stato sessione (aspnet_state.exe), che possono essere utilizzati per gestire lo stato della sessione utente.
Nota: su computer server con Windows 2000 e IIS 5.0, tutte le applicazioni Web ASP.NET vengono eseguite in un'istanza singola del processo di lavoro di ASP.NET e l'isolamento è offerto dai domini di applicazioni. Su Windows Server 2003, IIS 6.0 offre l'isolamento a livello di processo tramite l'utilizzo di pool di applicazioni.
Nella Tabella 16.2 sono riportati i servizi, gli account e le cartelle creati da un'installazione predefinita della versione 1.1 di .NET Framework.
Tabella 16.2 Installazioni predefinite di .NET Framework
| Voce | Dettagli | Impostazione predefinita |
Servizi | ASP.NET State Service: Fornisce il supporto per lo stato sessione out-of-process per ASP.NET. | Avvio manuale |
Account e gruppi | ASPNET: Account utilizzato per l'esecuzione del processo di lavoro di ASP.NET (Aspnet_wp.exe) e il servizio sullo stato sessione (Aspnet_state.exe). | Aggiunto al gruppo Users |
Cartelle | %windir%\Microsoft.NET\Framework\{versione} |
|
Estensioni ISAPI | Aspnet_isapi.dll: Gestisce le richieste per i tipi di file ASP.NET. Inoltra le richieste al processo di lavoro di ASP.NET (Aspnet_wp.exe). |
|
Filtri ISAPI | Aspnet_filter.dll: Utilizzato solo per supportare lo stato sessione senza cookie. Viene eseguito all'interno del processo Inetinfo.exe (IIS). |
|
Mapping delle applicazioni | ASAX, ASCX, ASHX, ASPX, AXD, VDISCO, REM, SOAP, CONFIG, CS, CSPROJ, VB, VBPROJ, WEBINFO, LICX, RESX, RESOURCES | \WINNT\Microsoft.NET\Framework\{versione} Aspnet_isapi.dll |
Per impostazione predefinita, il programma di installazione di Windows 2000 Server installa IIS. Si consiglia tuttavia di non installare IIS come parte dell'installazione del sistema operativo ma in un secondo momento, dopo aver aggiornato e installato le patch del sistema operativo di base. Una volta installato IIS, è necessario riapplicare le sue patch e rafforzare la sua configurazione per accertasi che sia totalmente protetta. Solo a questo punto la connessione del server alla rete sarà protetta.
Se si installa e si configura un nuovo server Web, attenersi alla procedura riportata qui di seguito.
| • | Per creare un nuovo server Web
|
Non installare il Software Development Kit (SDK) di .NET Framework in un server di produzione. L'SDK contiene utilità che non sono richieste dal server. Se un pirata informatico ottiene l'accesso a un server, può utilizzare alcuni di questi strumenti come supporto per altri tipi di attacchi.
Installare invece il pacchetto ridistribuibile, che può essere scaricato dal collegamento "Downloads" del sito .NET Framework di Microsoft.com all'indirizzo http://www.microsoft.com/net/ (in inglese).
Se è necessario creare più server, è possibile incorporare i service pack direttamente nelle installazioni di Windows. I service pack includono un programma chiamato Update.exe per combinare un service pack con i file di installazione di Windows.
| • | Per combinare un service pack con un'installazione di Windows
|
Per ulteriori informazioni, vedere l'articolo di MSDN, "Customizing Unattended Win2K Installations" all'indirizzo http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnw2kmag01/html/custominstall.asp (in inglese).
Nelle prossime sezioni viene illustrato dettagliatamente il processo di protezione di un server Web, tramite le categorie di configurazione introdotte nella sezione "Metodologia per proteggere un server Web" di questo modulo. Ogni procedura di livello elevato contiene una o più azioni per proteggere una particolare area o funzionalità.
Passaggio 1 | Passaggio 10 | ||
Passaggio 2 | Passaggio 11 | ||
Passaggio 3 | Passaggio 12 | ||
Passaggio 4 | Passaggio 13 | ||
Passaggio 5 | Passaggio 14 | ||
Passaggio 6 | Passaggio 15 | ||
Passaggio 7 | Passaggio 16 | ||
Passaggio 8 | Passaggio 17 | ||
Passaggio 9 |
|
|
Aggiornare il server con i service pack e le patch più recenti. È necessario aggiornare e implementare le patch per tutti i componenti del server Web, compresi Windows 2000 (e IIS), .NET Framework e Microsoft Data Access Components (MDAC).
In questo passaggio verrà descritto come:
| • | Individuare e installare le patch e gli aggiornamenti richiesti. |
| • | Aggiornare .NET Framework. |
Utilizzare Microsoft Baseline Security Analyzer (MBSA) per individuare le patch e gli aggiornamenti che potrebbero non essere presenti nell'installazione corrente. MBSA confronta l'installazione con un elenco degli aggiornamenti correntemente disponibili mantenuto in un file XML. MBSA può scaricare il file XML quando effettua la scansione del server, oppure il file può essere scaricato manualmente nel server o essere reso disponibile in un server di rete.
| • | Per individuare e installare patch e aggiornamenti
|
Al momento della stesura del presente modulo (maggio 2003), MBSA non è in grado di rilevare gli aggiornamenti e le patch di .NET Framework. Pertanto è necessario individuarli manualmente.
| • | Per aggiornare manualmente .NET Framework versione 1.0
|
Lo strumento IISLockdown aiuta ad automatizzare determinati passaggi relativi alla protezione. IISLockdown riduce moltissimo la vulnerabilità di un server Web Windows 2000. Consente di selezionare uno specifico tipo di ruolo server e di utilizzare quindi modelli personalizzati per migliorare la protezione per quel particolare server. I modelli disattivano o proteggono varie funzionalità. Inoltre, IISLockdown installa il filtro ISAPI URLScan. URLScan consente agli amministratori dei siti Web di limitare il tipo di richieste HTTP che il server può elaborare, in base a una serie di regole controllate dagli amministratori. Bloccando specifiche richieste HTTP, il filtro URLScan impedisce che richieste potenzialmente dannose raggiungano il server e provochino problemi.
In questo passaggio verrà descritto come:
| • | Installare ed eseguire IISLockdown. |
| • | Installare e configurare URLScan. |
IISLockdown è disponibile come download Internet dal sito Web Microsoft all'indirizzo http://download.microsoft.com/download/iis50/Utility/2.1/NT45XP/EN-US/iislockd.exe (in inglese).
Salvare IISlockd.exe in una cartella locale. IISlockd.exe è la procedura guidata di IISLockdown e non un programma di installazione. È possibile annullare qualsiasi modifica effettuata da IISLockdown eseguendo IISlockd.exe una seconda volta.
Se si blocca un computer basato su Windows 2000 che ospita pagine ASP.NET, selezionare il modello Dynamic Web Server quando richiesto dallo strumento IISLockdown. Se si seleziona Dynamic Web Server, IISLockdown effettua le azioni seguenti:
| • | Disattiva i seguenti servizi Internet non protetti:
| ||||||||||
| • | Disattiva i mapping degli script mappando le seguenti estensioni di file a 404.dll:
| ||||||||||
| • | Vengono eliminate le directory virtuali seguenti: IIS Samples, MSADC, IISHelp, Scripts e IISAdmin. | ||||||||||
| • | Limita l'accesso anonimo all'utilità di sistema e la capacità di scrivere in directory con contenuto Web utilizzando autorizzazioni Web. | ||||||||||
| • | Viene disabilitato WebDAV (Web Distributed Authoring and Versioning). | ||||||||||
| • | Viene installato il filtro ISAPI URLScan. |
Nota: se non si utilizza ASP classico, non utilizzare il modello di server Web statico. Questo modello rimuove le funzionalità di base di cui hanno bisogno le pagine ASP.NET, quale il supporto per il comando POST.
IISLockdown crea due report in cui sono elencate le modifiche che ha applicato:
| • | %windir%\system32\inetsrv\oblt-rep.log. Contiene informazioni generali. |
| • | %windir%\system32\inetsrv\oblt-log.log. Contiene informazioni più dettagliate, ad esempio quali file di programma sono configurati con una voce di controllo di accesso (ACE) di tipo Nega accesso per impedire l'accesso da parte di account utente Internet anonimi. Questo file registro viene utilizzato anche per supportare la funzionalità Undo Changes di IISLockdown. |
IISLockdown crea il gruppo Web Anonymous Users e il gruppo Web Application. Il gruppo Web Anonymous Users contiene l'account IUSR_MACHINE. Il gruppo Web Application contiene l'account IWAM_MACHINE. Le autorizzazioni vengono assegnate alle utilità di sistema e alle directory contenuto sulla base di questi gruppi, non direttamente agli account IUSR e IWAM. Per esaminare le autorizzazioni specifiche visualizzare il registro IISLockdown, %windir%\system32\inetsrv\oblt-log.log.
IISLockdown installa 404.dll, alla quale è possibile mappare le estensioni dei file che non devono essere eseguiti dal client. Per ulteriori informazioni, vedere "Passaggio 12: Mapping degli script".
Se si installa il filtro ISAPI URLScan come parte di IISLockdown, le impostazioni di URLScan sono integrate con il ruolo server selezionato al momento dell'esecuzione di IISLockdown. Se si seleziona ad esempio un server Web statico, URLScan blocca il comando POST.
Per annullare le modifiche effettuate da IISLockdown, eseguire IISLockd.exe una seconda volta. Questa azione non comporta la rimozione del filtro ISAPI URLScan. Per ulteriori informazioni, vedere "Rimozione di URLScan" nel prossimo argomento.
Per ulteriori informazioni su IISLockdown, vedere gli articoli seguenti:
| • | Per ulteriori informazioni sull'esecuzione di IISLockdown, vedere "Procedura: Utilizzo di IISLockdown" nella sezione "Procedure" di questa guida. |
| • | Per ulteriori informazioni sull'individuazione e risoluzione dei problemi di IISLockdown, vedere l'articolo della Microsoft Knowledge Base 325864, "How To: Install and Use the IIS Lockdown Wizard" (in inglese). (Il problema più comune è quello della ricezione di messaggi di errore "404 File Not Found" imprevisti dopo l'esecuzione di IISLockdown.) |
| • | Per ulteriori informazioni sull'automatizzazione di IISLockdown, vedere l'articolo della Microsoft Knowledge Base 310725, "How To: Run the IIS Lockdown Wizard Unattended in IIS" (in inglese). |
URLScan viene installato quando si esegue IISLockdown, sebbene possa essere scaricato e installato separatamente.
| • | Per installare URLScan senza eseguire IISLockdown
|
URLScan blocca le richieste che contengono caratteri non sicuri (ad esempio quelli che sono stati utilizzati per sfruttare le vulnerabilità, quale ".." utilizzato per l'attraversamento delle directory). URLScan registra le richieste che contengono questi caratteri nella directory %windir%\system32\inetsrv\urlscan.
Configurare URLScan utilizzando le impostazioni nel file ini %windir%\system32\inetsrv\urlscan\urlscan.ini.
Oltre a bloccare le richieste dannose, è possibile utilizzare URLScan per difendere il server da attacchi di tipo Denial of Service prima che le richieste raggiungano ASP.NET. A questo fine, impostare il limite negli argomenti MaxAllowedContentLength, MaxUrl e MaxQueryString nel file URLScan.ini. Per ulteriori informazioni, vedere "Procedura: Utilizzo di URLScan" nella sezione "Procedure" di questa guida.
Non esiste alcuna operazione automatica per rimuovere URLScan. Se si hanno problemi con URLScan, è possibile rimuoverlo da IIS o analizzare il problema registrando le richieste che vengono respinte. A questo fine, utilizzare l'opzione RejectResponseUrl=/~* nel file ini di URLScan.
Per ulteriori informazioni sulla rimozione dei filtri ISAPi, vedere "Passaggio 13: Filtri ISAPI" più avanti in questo modulo.
Per ulteriori informazioni sullo strumento URLScan, vedere gli articoli seguenti:
| • | Per informazioni sull'esecuzione di URLScan, vedere "Procedura: Utilizzo di URLScan" nella sezione "Procedure" di questa guida. |
| • | Per informazioni sulla configurazione di URLScan e le impostazioni del file URLScan.ini, vedere l'articolo della Microsoft Knowledge Base 326444, "How To: Configure the URLScan Tool" (in inglese). |
I servizi che non autenticano i client, i servizi che utilizzano protocolli non protetti o i servizi che vengono eseguiti con un numero eccessivo di privilegi, comportano dei rischi. Evitare di eseguire i servizi che non sono necessari. Disattivando i servizi non necessari si riduce rapidamente e facilmente la superficie di attacco. Si riduce inoltre il sovraccarico in termini di manutenzione (patch, account di servizio e così via).
Se si esegue un servizio, controllare che sia protetto e gestito. A questo fine, eseguirlo tramite un account con privilegi minimi e tenerlo aggiornato applicando le patch.
In questo passaggio verrà descritto come:
| • | Disattivare i servizi non necessari. |
| • | Disattivare FTP, SMTP e NNTP, a meno che non siano necessari. |
| • | Disattivare ASP.NET State Service, a meno che non sia necessario. |
I servizi di Windows sono vulnerabili agli attacchi dei pirati informatici che possono sfruttare i loro privilegi e le loro capacità e ottenere l'accesso alle risorse di sistema remote e locali. Come misura difensiva, disattivare i servizi di Windows che non sono richiesti dai propri sistemi e dalle proprie applicazioni. Per disattivare i servizi di Windows, utilizzare lo snap-in MMC Servizi che si trova nel gruppo di programmi Strumenti di amministrazione.
Nota: prima di disattivare un servizio, testare l'impatto in un ambiente di test o temporaneo.
Nella maggior parte dei casi, in un server Web i seguenti servizi predefiniti di Windows non sono necessari: Avvisi, Browser del computer, Messenger, Accesso rete (richiesto solo per i controller di dominio), Servizi TCP/IP semplificati e Spooler di stampa.
Il servizio Telnet è installato con Windows, ma per impostazione predefinita non è attivato. Gli amministratori di IIS spesso attivano Telnet. Si tratta tuttavia di un protocollo non protetto e quindi esposto agli attacchi. Servizi terminal offre un'opzione di amministrazione remota più protetta. Per ulteriori informazioni sull'amministrazione remota, vedere "Amministrazione remota" più avanti in questo modulo.
FTP, SMTP e NNTP sono esempi di protocolli non protetti e quindi esposti a un utilizzo improprio. Evitare di eseguire i servizi che non sono necessari. Se sono utilizzati, cercare un'alternativa sicura. Se è necessario eseguirli, proteggerli.
Nota: IISLockdown fornisce opzioni per disattivare FTP, SMTP e NNTP.
Per eliminare la possibilità che FTP venga sfruttato, disattivare il servizio FTP se non è utilizzato. Se FTP è attivato ed è disponibile per le connessioni in uscita, un pirata informatico può utilizzarlo per caricare i file e gli strumenti del suo sistema remoto in un server Web. Una volta che file e strumenti si trovano nel server Web, il pirata informatico può attaccare il server Web o altri sistemi connessi.
Se si utilizza il protocollo FTP, né il nome utente e la password utilizzati per accedere al sito FTP né i dati che vengono trasferiti sono codificati o crittografati. IIS non supporta SSL per FTP. Se le comunicazioni protette sono importanti e si utilizza FTP come protocollo di trasferimento, invece del protocollo WebDAV (World Wide Web Distributed Authoring and Versioning) su SSL, considerare la possibilità di utilizzare FTP su un canale crittografato quale una rete privata virtuale (VPN, Virtual Private Network) che sia protetta con PPTP (Point-to-Point Tunneling Protocol) o IPSec (Internet Protocol Security).
.NET Framework installa ASP.NET State Service (aspnet_state.exe) per gestire lo stato sessione utente out-of-process per applicazioni Web ASP.NET e servizi Web. Per impostazione predefinita, questo servizio è configurato per l'avvio manuale e viene eseguito come account ASPNET locale con privilegi minimi. Se nessuna delle applicazioni archivia lo stato utilizzando questo servizio, disattivarlo. Per ulteriori informazioni sulla protezione dello stato sessione ASP.NET, vedere la sezione "Stato sessione" nel modulo 19 "Protezione dell'applicazione ASP.NET e dei servizi Web".
Impedendo l'utilizzo dei protocolli non necessari si riducono i potenziali attacchi. .NET Framework fornisce un controllo granulare dei protocolli tramite le impostazioni nel file Machine.config. È ad esempio possibile controllare se i servizi Web possono utilizzare HTTP GET, POST o SOAP. Per ulteriori informazioni sulla configurazione dei protocolli in Machine.config, vedere "Passaggio 16: Machine.config".
In questo passaggio verrà descritto come:
| • | Disattivare o proteggere WebDav. |
| • | Rafforzare la protezione dello stack TCP/IP. |
| • | Disattivare NetBIOS e SMB. |
IIS supporta il protocollo WebDAV, un'estensione standard a HTTP 1.1 per la pubblicazione collaborativa del contenuto. Disattivare questo protocollo sui server di produzione, se non è utilizzato.
Nota: IISLockdown fornisce un'opzione per rimuovere il supporto per WebDAV.
WebDAV è preferibile a FTP dal punto di vista della protezione, ma deve essere protetto. Per ulteriori informazioni, vedere l'articolo della Microsoft Knowledge Base 323470, "How To: Create a Secure WebDAV Publishing Directory" (in inglese).
Se non si ha necessità di WebDAV, vedere l'articolo della Microsoft Knowledge Base 241520, "How To: Disable WebDAV for IIS 5.0" (in inglese).
Windows 2000 supporta il controllo granulare di molti parametri che configurano la sua implementazione TCP/IP. Alcune impostazioni predefinite sono configurate per fornire la disponibilità server e altre funzionalità specifiche.
Per informazioni su come rafforzare la protezione dello stack TCP/IP vedere "Procedura: Rafforzamento delle protezioni dello stack TCP/IP" nella sezione "Procedure" di questa guida.
Disattivare tutti i protocolli non necessari, inclusi NetBIOS e SMB. I server Web non richiedono NetBIOS o SMB nelle loro schede di interfaccia di rete (NIC) connesse a Internet. Disattivare questi protocolli per contrastare il pericolo dell'enumerazione host.
Nota: il protocollo SMB può restituire moltissime informazioni su un computer a utenti non autenticati su una sessione Null. Per bloccare le sessioni Null, impostare la chiave del Registro di sistema RestrictAnonymous come descritto nel "Passaggio 9: Registro di sistema".
NetBIOS utilizza le porte seguenti:
| • | Porta TCP e UDP (User Datagram Protocol) 137 (servizio nomi NetBIOS) |
| • | Porta TCP e UDP 138 (servizio datagrammi NetBIOS) |
| • | Porta TCP e UDP 139 (servizio sessioni NetBIOS) |
La sola disattivazione di NetBIOS non è sufficiente a impedire le comunicazioni SMB perché se non è disponibile una porta NetBIOS standard, SMB utilizza la porta TCP 445, nota come SMB Direct Host. Di conseguenza, è necessario intraprendere le azioni di disattivazione di NetBIOS e SMB separatamente.
| • | Per disattivare NetBIOS su TCP/IP |
Nota: questa procedura disattiva il driver Nbt.sys e richiede il riavvio del sistema.
1. | Nel desktop, fare clic con il pulsante destro del mouse su Risorse del computer, quindi scegliere Gestisci. |
2. | Espandere Utilità di sistema, quindi selezionare Gestione periferiche. |
3. | Fare clic con il pulsante destro del mouse su Gestione periferiche, scegliere Visualizza, quindi Mostra periferiche nascoste. |
4. | Espandere Driver non Plug and Play. |
5. | Fare clic con il pulsante destro del mouse su NetBios su Tcpip, quindi fare clic su Disattiva. Questa procedura determinerà la disattivazione del listener dell'host diretto NetBIOS su TCP 445 e UDP 445. |
SMB utilizza le porte seguenti:
| • | Porta TCP 139 |
| • | Porta TCP 445 |
Per disattivare SMB, utilizzare la finestra di dialogo delle proprietà TCP/IP nelle proprietàConnessione alla rete locale per disattivare SMB dalla porta connessa a Internet.
| • | Per disattivare SMB dalla porta connessa a Internet
|
Nota: la scheda WINS della finestra di dialogo Impostazioni avanzate TCP/IP contiene l'opzione Disabilita NetBIOS su TCP/IP. La selezione di questa opzione consente di disattivare il servizio sessione NetBIOS che utilizza la porta TCP 139. Non consente di disattivare completamente SMB. A tal fine, utilizzare la procedura illustrata in precedenza.
Gli account inutilizzati dovrebbero essere rimossi, perché un pirata informatico potrebbe individuarli e utilizzarli. Richiedono password complesse. Password vulnerabili aumentano la probabilità di un attacco di tipo "brute force" o del dizionario. Utilizzare privilegi minimi. Questa precauzione consente di evitare che un pirata informatico possa utilizzare un account dotato di privilegi elevati per accedere a risorse non autorizzate.
In questo passaggio verrà descritto come:
| • | Eliminare o disattivare gli account non utilizzati. |
| • | Disattivare l'account Guest. |
| • | Rinominare l'account Administrator. |
| • | Disattivare l'account IUSR. |
| • | Creare un account Web anonimo personalizzato. |
| • | Applicare criteri per password complesse. |
| • | Limitare gli accessi remoti. |
| • | Disattivare le sessioni Null (accessi anonimi). |
Gli account inutilizzati e i relativi privilegi possono essere utilizzati da un pirata informatico per ottenere l'accesso a un server. Controllare gli account locali sul server e disattivare quelli inutilizzati. Se la disattivazione dell'account non causa problemi, eliminarlo. (Gli account eliminati non possono essere ripristinati.) Disattivare gli account in un server di test prima di disattivarli in un server di produzione. Controllare che la disattivazione di un account non pregiudichi il funzionamento dell'applicazione.
Nota: l'account Administrator e l'account Guest non possono essere eliminati.
L'account Guest viene utilizzato per le connessioni anonime al computer. Disattivandolo, è possibile limitare le connessioni anonime al computer. L'account Guest è disattivato per impostazione predefinita in Windows 2000. Per controllare se è attivato o disattivato, visualizzare la cartella Users nello strumento Gestione computer. L'account Guest deve essere visualizzato con un'icona barrata da una croce. Se non è disattivato, visualizzare la relativa finestra di dialogo Proprietà e selezionare Account disabilitato.
L'account locale predefinito Administrator è un bersaglio per i malintenzionati a causa dei privilegi elevati di cui dispone. Per migliorare la protezione, rinominare l'account Administrator predefinito e assegnargli una password complessa.
Se si ha intenzione di effettuare operazioni di amministrazione locale, configurare l'account in maniera che neghi i diritti di accesso in rete e chieda all'amministratore di accedere interattivamente. Questa configurazione impedisce agli utenti (sia ben intenzionati che non) di utilizzare l'account Administrator per accedere al server da una postazione remota. Se un criterio di amministrazione locale è troppo rigido, implementare una soluzione di amministrazione remota protetta. Per ulteriori informazioni, vedere "Amministrazione remota" più avanti in questo modulo.
Disattivare l'account utente Internet anonimo, IUSR_MACHINE. Questo account viene creato durante l'installazione di IIS. MACHINE è il nome NetBIOS del server al momento dell'installazione di IIS.
Se l'applicazione supporta l'accesso anonimo (ad esempio perché utilizza un meccanismo di autenticazione personalizzato quale l'autenticazione Form), creare un account anonimo personalizzato con privilegi minimi. Se si esegue IISLockdown, aggiungere l'utente personalizzato al gruppo Web Anonymous Users che viene creato. IISLockdown nega al gruppo Web Anonymous Users l'accesso alle utilità di sistema e la capacità di scrivere nelle directory con contenuto Web.
Se il server Web ospita più applicazioni Web, potrebbe essere utile utilizzare più account anonimi, uno per ogni applicazione, per proteggerle e controllarne il funzionamento in maniera indipendente l'una dall'altra.
Per ulteriori informazioni sull'hosting di più applicazioni Web, vedere il modulo 20 "Hosting di più applicazioni ASP.NET".
Per contrastare gli attacchi di tipo "brute force" e di violazione delle password sull'applicazione, applicare criteri per password complesse. Per applicare un criterio per password complesse:
| • | Impostare la lunghezza e la complessità delle password. Richiedere password complesse per ridurre il pericolo di attacchi di violazione delle password o al dizionario. Le password complesse sono lunghe otto caratteri o più e devono includere caratteri sia alfabetici che numerici. |
| • | Impostare la scadenza delle password. Le password che scadono regolarmente riducono le probabilità che una vecchia password possa essere utilizzata per un accesso non autorizzato. La frequenza della scadenza in genere dipende dalla politica di protezione di un'azienda. |
Nella Tabella 16.4 sono riportate le impostazioni predefinite e consigliate per i criteri per le password.
Tabella 16.4. Impostazioni predefinite e consigliate per i criteri per le password
| Criterio password | Impostazione predefinita | Impostazione minima consigliata |
Imponi cronologia delle password | 1 password memorizzata. | 24 password memorizzate. |
Validità massima password | 42 giorni | 42 giorni |
Validità minima password | 0 giorni | 2 giorni |
Lunghezza minima password | 0 caratteri | 8 caratteri |
Le password devono essere conformi ai requisiti di complessità. | Disattivato | Attivato |
Consenti archiviazione password con crittografia reversibile per tutti gli utenti del dominio. | Disattivato | Disattivato |
Registrare inoltre i tentativi di accesso non riusciti in maniera da poter rilevare e tener traccia di situazioni pericolose. Per ulteriori informazioni, vedere "Passaggio 10: Controllo e registrazione".
Rimuovere il privilegio Accedi al computer dalla rete dal gruppo Everyone per limitare il numero di coloro che possono accedere al server in modalità remota.
Per impedire gli accessi anonimi è necessario disattivare le sessioni Null. Si tratta di sessioni non autenticate o anonime stabilite tra due computer. Se le sessioni Null non sono disattivate, un pirata informatico può connettersi al server in forma anonima senza essere autenticato.
Stabilendo una sessione Null un pirata informatico ha a disposizione una serie di possibili attacchi, comprese le tecniche di enumerazione utilizzate per raccogliere dal computer aggredito informazioni relative al sistema e che potranno agevolare successivi attacchi. Le informazioni che possono essere restituite in una sessione Null includono dettagli su domini e attendibilità, condivisioni, informazioni sugli utenti, compresi diritti utente e gruppi e chiavi del Registro di sistema.
Limitare le sessioni Null impostando RestrictAnonymous su 1 nel Registro di sistema nella sottochiave seguente:
HKLM\System\CurrentControlSet\Control\LSA\RestrictAnonymous=1
Per ulteriori informazioni, vedere l'articolo della Microsoft Knowledge Base 246261 "How To: Use the RestrictAnonymous Registry Value in Windows 2000" (in inglese).
Qui di seguito è riportato un elenco di altri passaggi da applicare per migliorare ulteriormente la protezione del server Web:
| • | Richiedere l'approvazione per la delega degli account. |
| • | Non utilizzare account condivisi. |
| • | Limitare il numero degli appartenenti al gruppo amministratori locali. |
| • | Chiedere all'amministratore di accedere in modalità interattiva. |
Installare Windows 2000 in partizioni formattate con il file system NTFS in maniera da beneficiare delle autorizzazioni NTFS per limitare l'accesso. Per proteggere file e directory riservati è necessario utilizzare controlli di accesso avanzati. Nella maggior parte delle situazioni, l'approccio più efficace non consiste nel negare l'accesso a specifici account, ma nel consentirlo solo a specifici account. Se possibile, impostare l'accesso a livello di directory. Poiché i file aggiunti alla cartella ne erediteranno le autorizzazioni, non saranno necessarie ulteriori impostazioni.
In questo passaggio verrà descritto come:
| • | Imporre restrizioni al gruppo Everyone. |
| • | Imporre restrizioni agli account Web anonimi. |
| • | Proteggere o rimuovere strumenti, utilità e SDK. |
| • | Rimuovere i file di esempio. |
Le autorizzazioni NTFS predefinite per Windows 2000 concedono ai membri del gruppo Everyone l'accesso con controllo completo a numerosi percorsi chiave, inclusa la directory principale, \inetpub e \inetpub\scripts.
Concedere innanzitutto il CONTROLLO COMPLETO all'account Administrator sulla directory principale (\), quindi rimuovere i diritti di accesso per il gruppo Everyone dalle directory seguenti.
| • | Directory principale (\) |
| • | Directory di sistema (\WINNT\system32) |
| • | Directory degli strumenti di .NET Framework (\WINNT\Microsoft.NET\Framework\{versione}) |
| • | Directory principale del sito Web e tutte le directory contenuto (l'impostazione predefinita è \inetpub\*) |
L'account anonimo è molto noto. I pirati informatici attaccano questo account per effettuare azioni dannose. Per proteggere l'account anonimo:
| • | Negare l'accesso in scrittura alle directory con contenuto Web. |
| • | Limitare l'accesso agli strumenti di sistema. Limitare in particolare l'accesso agli strumenti della riga di comando che si trovano in \WINNT\System32. |
| • | Assegnare autorizzazioni ai gruppi invece che a singoli account. Nota: IISLockdown nega l'accesso in scrittura alle directory contenuto per l'account anonimo applicando una voce di controllo di accesso (ACE) di tipo Nega accesso in scrittura per i gruppi Web Anonymous Users e Web Applications. Aggiunge inoltre un ACL di tipo Nega esecuzione negli strumenti della riga di comando. |
| • | Utilizzare account separati per applicazioni separate. Per ulteriori informazioni sull'utilizzo di più account anonimi e sull'host di più applicazioni, vedere il modulo 20 "Hosting di più applicazioni ASP.NET". |
SDK e Resource Kit non devono essere installati in un server Web di produzione. Se presenti, rimuoverli.
| • | Controllare che nel server sia installato solo il pacchetto .NET Framework Redistributable e che non siano installate utilità SDK. Non installare Visual Studio .NET nei server di produzione. |
| • | Verificare che l'accesso a strumenti e utilità di sistema potenti, quali quelli presenti nella directory \Programmi, sia limitato. Questa verifica viene effettuata da IISLockdown. |
| • | Nel server Web non devono essere disponibili strumenti di debug. Se è necessario effettuare il debug della produzione, creare un CD che contenga gli strumenti di debug appropriati. |
Le applicazioni di esempio in genere non sono configurate con livelli di protezione elevati. Un pirata informatico potrebbe sfruttare una debolezza intrinseca dell'applicazione di esempio o della sua configurazione per attaccare un sito Web. Rimuovere le applicazioni di esempio per ridurre le aree in cui il server Web può essere attaccato.
Valutare inoltre la rimozione dei nomi origine dati (DSN, Data Source Names) non necessari. Questi nomi contengono dettagli sulle connessioni non crittografate utilizzate dalle applicazioni per connettersi alle origini dati OLE DB. Nel server Web devono essere installati solo i DSN richiesti dalle applicazioni Web.
Rimuovere le condivisioni inutilizzate e proteggere ulteriormente le autorizzazioni NTFS su qualsiasi condivisione essenziale. Per impostazione predefinita, tutti gli utenti hanno il controllo totale sulle condivisioni di file appena create. Rafforzare la protezione di queste autorizzazioni predefinite in maniera che solo gli utenti autorizzati possano accedere ai file esposti dalla condivisione. Oltre alle autorizzazioni di condivisione esplicite, utilizzare ACL NTFS per i file e le cartelle esposti dalla condivisione.
In questo passaggio verrà descritto come:
| • | Rimuovere le condivisioni non necessarie. |
| • | Limitare l'accesso alle condivisioni necessarie. |
Rimuovere tutte le condivisioni non necessarie. Per visualizzare le condivisioni e le autorizzazioni associate, eseguire lo snap-in MMC Gestione computer e selezionare Condivisioni sotto Cartelle condivise come illustrato nella Figura 16.3.

Figura 16.3
Condivisioni dello snap-in MMC Gestione computer
Rimuovere il gruppo Everyone e concedere autorizzazioni specifiche. Il gruppo Everyone è utilizzato quando non vi sono restrizioni su chi può accedere alla condivisione.
Se non è necessario consentire l'amministrazione remota del server, rimuovere le condivisioni amministrative inutilizzate, ad esempio C$ e Admin$.
Nota: per alcune applicazioni potrebbero essere necessarie condivisioni amministrative, ad esempio per Microsoft Systems Management Server (SMS) e Microsoft Operations Manager (MOM). Per ulteriori informazioni, vedere l'articolo della Microsoft Knowledge Base 318751 "How To: Remove Administrative Shares in Windows 2000 or Windows NT 4.0" (in inglese).
I servizi che vengono eseguiti nel server utilizzano porte specifiche in maniera da poter servire le richieste in ingresso. Chiudere tutte le porte non necessarie ed effettuare controlli regolari per individuare lo stato delle nuove porte in ascolto, al fine di scoprire gli eventuali accessi non autorizzati e i pericoli per la protezione.
In questo passaggio verrà descritto come:
| • | Limitare le porte connesse a Internet a TCP 80 e 443. |
| • | Crittografare o limitare il traffico Intranet. |
Limitare il traffico in ingresso alla porta 80 per HTTP e alla porta 443 per HTTPS (SSL).
Per le NIC in uscita (connesse a Internet), utilizzare IPSec o i filtri TCP. Per ulteriori informazioni, vedere "Procedura: Utilizzo di IPSec per filtrare le porte e l'autenticazione" nella sezione "Procedure" di questa guida.
Nel caso di NIC in ingresso (connesse alle reti Intranet), se non si dispone di un centro dati protetto e tra i computer vengono passate informazioni riservate, valutare la possibilità di crittografare il traffico o di limitare le comunicazioni tra il server Web e i server a valle (ad esempio un server per applicazioni o un server di database). La crittografia del traffico di rete permette di eliminare il pericolo rappresentato dall'ascolto e intercettazione di rete non autorizzati. Se il rischio viene giudicato sufficientemente basso, è possibile scegliere di non crittografare il traffico.
Dal tipo di crittografia utilizzata dipendono anche i tipi di pericoli contrastati. SSL, ad esempio, è una crittografia a livello di applicazione, mentre IPSec è una crittografia a livello di trasporto. Di conseguenza, oltre al pericolo dell'ascolto e intercettazione di rete non autorizzati, SSL contrasta anche quello della manomissione dei dati o della divulgazione di informazioni da un altro processo sullo stesso computer, specie se in esecuzione sotto un account diverso.
Il Registro di sistema è l'archivio in cui vengono memorizzate molte impostazioni di configurazione importanti. Di conseguenza, è indispensabile assicurarsi che possano accedervi solo gli amministratori autorizzati. Se un pirata informatico è in grado di modificare il Registro di sistema, può riconfigurare e compromettere la protezione del server.
In questo passaggio verrà descritto come:
| • | Limitare l'amministrazione remota del Registro di sistema. |
| • | Proteggere il database di Gestione account di protezione (solo server autonomi). |
Dalla chiave Winreg dipende la disponibilità delle chiavi del Registro di sistema per l'accesso remoto. Per impostazione predefinita, questa chiave è configurata per impedire agli utenti di vedere in modalità remota la maggior parte delle chiavi presenti nel Registro di sistema e permettere solo agli utenti con privilegi elevati di modificarle. In Windows 2000, l'accesso remoto al Registro di sistema è limitato per impostazione predefinita ai membri dei gruppi Administrators e Backup operators. Gli amministratori hanno il controllo completo, mentre gli operatori di backup hanno solo l'accesso in lettura.
Il tipo di utenti che possono accedere in modalità remota al Registro di sistema dipende dalle autorizzazioni associate nel seguente percorso del Registro di sistema.
HKLM\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg
Per visualizzare le autorizzazioni per questa chiave del Registro di sistema, eseguire Regedt32.exe, portarsi sulla chiave e scegliere Autorizzazioni dal menu Protezione.
Nota: alcuni servizi necessitano dell'accesso remoto al Registro di sistema. Fare riferimento all'articolo della Microsoft Knowledge Base 153183, "How to Restrict Access to the Registry from a Remote Computer" (in inglese), per vedere se la situazione corrente richiede un accesso remoto limitato al Registro di sistema.
Nei server autonomi sono archiviati i nomi account e hash delle password unilaterali (non reversibili) (LMHash) nel database di Gestione account di protezione (SAM, Security Account Manager)locale. SAM fa parte del Registro di sistema. In genere, solo i membri del gruppo Administrators hanno accesso alle informazioni dell'account.
Anche se le password non sono di fatto archiviate in SAM e gli hash delle password non sono reversibili, se un pirata informatico riesce a ottenere una copia del database SAM può utilizzare le tecniche di tipo "brute force" sulla password per ottenere nomi utente e password validi.
Limitare l'archiviazione LMHash in SAM creando la chiave (non il valore) NoLMHash nel Registro di sistema come indicato qui di seguito:
HKLM\System\CurrentControlSet\Control\LSA\NoLMHash
Per ulteriori informazioni, vedere l'articolo della Microsoft Knowledge Base 299656 "How to Prevent Windows from Storing a LAN Manager Hash of Your Password in Active Directory and Local SAM Databases" (in inglese).
Il controllo non impedisce gli attacchi al sistema, anche se è una precauzione importante per identificare gli intrusi e gli attacchi in corso e per agevolare la diagnosi delle tracce degli attacchi. Attivare un livello minimo di controllo sul server Web e utilizzare le autorizzazioni NTFS per proteggere i file registro in maniera che un pirata informatico non possa coprire le sue tracce eliminando o aggiornando questi file. Utilizzare il controllo del formato di file registro W3C esteso di IIS.
In questo passaggio verrà descritto come:
| • | Registrare tutti i tentativi di accesso non riusciti. |
| • | Registrare tutte le azioni non riuscite nel file system. |
| • | Spostare e proteggere i file registro di IIS. |
| • | Archiviare i file registro per l'analisi non in linea. |
| • | Controllare l'accesso al file MetaBase.bin. |
Per poter individuare e tenere traccia di un comportamento sospetto, è necessario registrare i tentativi di accesso non riusciti.
| • | Per controllare i tentativi di accesso non riusciti
|
I tentativi di accesso vengono registrati come eventi nel registro eventi di protezione di Windows. Gli ID evento riportati di seguito sono sospetti:
| • | 531. È stato eseguito un tentativo di accesso con un account disattivato. |
| • | 529. È stato eseguito un tentativo di accesso utilizzando un account utente sconosciuto oppure un account utente valido con una password non valida. L'aumento anomalo del numero degli eventi di controllo potrebbe indicare il tentativo di scoprire le password in vigore. |
Utilizzare le funzioni di controllo NTFS nel file system per individuare tentativi potenzialmente dannosi. Questo è un processo in due passaggi.
| • | Per attivare la registrazione
|
| • | Per controllare le azioni non riuscite nel file system
|
Lo spostamento e l'assegnazione di un nuovo nome ai file registro di IIS rendono più difficile per un pirata informatico coprire le proprie tracce. Prima di poter alterare i file registro, il pirata informatico deve individuarli. Per contrastare ulteriormente le intenzioni di un pirata informatico, utilizzare autorizzazioni NTFS per proteggere i file registro.
Rinominare la directory dei file registro di IIS e spostarla in un volume che non sia il proprio sito Web. Non utilizzare il volume di sistema. Applicare quindi le seguenti autorizzazioni NTFS alla cartella dei file registro e alle sottocartelle.
| • | Administrators: Controllo completo |
| • | System: Controllo completo |
| • | Backup Operators: Lettura |
Per facilitare l'analisi non in linea dei file registro di IIS, è possibile utilizzare uno script per automatizzarne la rimozione protetta da un server IIS. I file registro devono essere rimossi almeno ogni 24 ore. Uno script automatizzato può utilizzare FTP, SMTP, HTTP o SMB per trasferire i file registro da un computer server. Se però si attiva uno di questi protocolli, farlo in maniera protetta per evitare di aprire altre opportunità di attacco. Utilizzare un criterio IPSec per proteggere porte e canali.
Controllare tutti i tentativi non riusciti, da parte del gruppo Everyone, di accedere al file metabase.bin di IIS posto in \WINNT\System32\inetsrv\. Ripetere il controllo sulla cartella di backup \Metabase per le copie di backup della metabase.
È inoltre possibile configurare il controllo del formato di file registro W3C esteso di IIS. Selezionare Formato di file registro esteso W3C nella scheda Sito Web della finestra di dialogo delle proprietà del sito Web. Quindi scegliere Proprietà estese quali Origine URI e Query URI.
Spostare le directory Web principali e virtuali in una partizione non di sistema per proteggersi dagli attacchi di attraversamento delle directory che consentono a un pirata informatico di eseguire programmi e utilità del sistema operativo. Non è possibile attraversare le unità. Questo approccio provoca il fallimento di qualsiasi futuro worm canonicalization che permette a un pirata informatico di accedere ai file di sistema. Se il pirata informatico formula, ad esempio, un URL che contiene il seguente percorso, la richiesta non riesce:
/scripts/..%5c../winnt/system32/cmd.exe
In questo passaggio verrà descritto come:
| • | Spostare il sito Web in un volume non di sistema. |
| • | Disattivare l'impostazione dei percorsi principali. |
| • | Rimuovere le directory virtuali potenzialmente pericolose. |
| • | Rimuovere o proteggere RDS. |
| • | Impostare autorizzazioni Web. |
| • | Rimuovere o proteggere Estensioni server FrontPage. |
Non utilizzare la directory predefinita \inetpub\wwwroot. Se ad esempio il sistema è installato nell'unità C:, è possibile spostare il sito e la directory con il relativo contenuto nell'unità D:. Si riducono così i rischi associati a problemi imprevisti di canonicalization e attacchi di attraversamento delle directory.
Questa impostazione della metabase di IIS impedisce di utilizzare ".." nello script e impedisce alle chiamate di applicazioni di fungere da MapPath. Contribuisce quindi a proteggere da attacchi di attraversamento delle directory.
| • | Per disattivare i percorsi principali
|
Nota: se si utilizza Application Center 2002 Administration Site, vedere l'articolo della Microsoft Knowledge Base 288309, "PRB: Disabling Parent Paths Breaks User Interface" (in inglese).
Le applicazioni di esempio non sono installate per impostazione predefinita e non devono essere installate nei server Web di produzione. Rimuovere tutte le applicazioni di esempio, comprese quelle alle quali è possibile accedere solo dal computer locale con http://localhost o http://127.0.0.1.
Rimuovere le seguenti directory virtuali dai server di produzione: IISSamples, IISAdmin, IISHelp e Scripts.
Nota: IISLockdown fornisce un'opzione per rimuovere le directory virtuali Scripts, IISSamples, IISAdmin e IISHelp.
Remote Data Services (RDS) è un componente che permette l'accesso Internet controllato alle risorse dei dati remoti tramite IIS. L'interfaccia RDS viene fornita da Msadcs.dll, che si trova nella directory seguente: Programmi\File comuni\System\msadc.
Se l'applicazione non utilizza RDS, rimuoverlo.
| • | Per rimuovere il supporto RDS
|
Nota: IISLockdown fornisce un'opzione per rimuovere la directory virtuale MSADC. Tenere presente che IISLockdown rimuove solo la directory virtuale, non i file o la chiave del Registro di sistema.
Se l'applicazione richiede RDS, proteggerlo.
| • | Per proteggere RDS
|
Nota: è possibile utilizzare il file script del Registro di sistema Handsafe.reg per cambiare la chiave del Registro di sistema. Il file script si trova nella directory msadc:
\Programmi\File comuni\System\msadc
Per ulteriori informazioni sulla protezione di RDS, vedere quanto segue:
| • | MS99-025 Microsoft Security Program: Unauthorized Access to IIS Servers through ODBC Data Access with RDS, all'indirizzo http://www.microsoft.com/technet/security/bulletin/ms99-025.asp (in inglese). |
| • | MS99-025 Microsoft Security Program: Microsoft Security Bulletin: Unauthorized ODBC Data Access with RDS and IIS, all'indirizzo http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/bulletin/MS98-004.asp (in inglese). |
| • | Articolo della Microsoft Knowledge Base 184375, "PRB: Security Implications of RDS 1.5, IIS 3.0 or 4.0, and ODBC" (in inglese). |
Le autorizzazioni Web sono configurate tramite lo snap-in IIS e sono conservate nella metabase IIS. Non si tratta di autorizzazioni NTFS.
Utilizzare le autorizzazioni Web seguenti:
| • | Autorizzazioni di lettura. Limitare le autorizzazioni di lettura sulle directory di inclusione. |
| • | Autorizzazioni di scrittura ed esecuzione. Limitare le autorizzazioni di scrittura ed esecuzione sulle directory virtuali che permettono l'accesso anonimo. |
| • | Accesso origine script. Configurare le autorizzazioni di accesso origine script solo sulle cartelle che permettono la creazione di contenuti. |
| • | Scrittura. Configurare le autorizzazioni di scrittura solo sulle cartelle che permettono la creazione di contenuti. Concedere l'accesso in scrittura solo agli autori del contenuto. Nota: le cartelle che supportano la creazione di contenuti devono essere configurate in maniera da richiedere l'autenticazione e SSL per la crittografia. |
Se non si utilizza Estensioni server FrontPage (FPSE, FrontPage Server Extensions), disattivarlo. Se si utilizza FPSE, prendere le seguenti precauzioni per migliorare la protezione:
| • | Aggiornare le estensioni server. Esaminare i problemi relativi alla protezione trattati nell'articolo di MSDN, "Microsoft FrontPage Server Extensions 2002 for Windows" all'indirizzo http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnservext/html/fpse02win.asp (in inglese). |
| • | Limitare l'accesso utilizzando la protezione di FrontPage. FPSE installa gruppi ai quali vengono concesse autorizzazioni sui siti Web per i quali sono configurate le estensioni server. Questi gruppi sono utilizzati per limitare l'accesso disponibile in base al ruolo dell'utente. Per ulteriori informazioni, visitare l'Assistance Center all'indirizzo http://office.microsoft.com/assistance/2002/articles/fp_colmanagesecurity.aspx (in inglese). |
I mapping degli script associano una particolare estensione file, ad esempio asp, all'estensione ISAPI che la gestisce, ad esempio Asp.dll. IIS è configurato per supportare un intervallo di estensioni incluse asp, shtm, hdc e altre ancora. I gestori HTTP di ASP.NET equivalgono approssimativamente alle estensioni ISAPI. In IIS, estensioni file quali aspx, vengono prima di tutto mappate in IIS a Aspnet_isapi.dll, che inoltra la richiesta al processo di lavoro di ASP.NET. Il gestore HTTP effettivo che elabora l'estensione file viene quindi stabilito dal mapping <HttpHandler> in Machine.config o Web.config.
Qui di seguito sono riportati i principali problemi relativi alla protezione associati ai mapping degli script:
| • | Un pirata informatico potrebbe sfruttare una vulnerabilità riscontrata in un'estensione,
|
| • | Le risorse lato server potrebbero essere scaricate dal client,
|
In questo passaggio verrà descritto come:
| • | Mappare le estensioni file di IIS. |
| • | Mappare le estensioni file di .NET Framework. |
In Windows 2000, le estensioni file di IIS da prendere in considerazione sono: asp, asa, cer, cdx, htr, idc, shtm, shtml, stm e printer.
Se non si utilizza una qualsiasi di queste estensioni, mapparla a 404.dll, fornito da IISLockdown. Se, ad esempio, non si desidera fornire le pagine ASP ai client, mappare asp a 404.dll.
I mapping modificati da IISLockdown dipendono dal modello server scelto:
| • | Static Web Server. Se si esegue IISLockdown e si sceglie l'opzione Static Web Server, tutte le estensioni riportate in precedenza vengono mappate a 404.dll. |
| • | Dynamic Web Server. Se si sceglie l'opzione Dynamic Web Server, che è l'opzione preferita quando si forniscono pagine ASP.NET, le estensioni htr, idc, shtm, shtml, stm e printer vengono mappate a 404.dll, mentre le estensioni asp, cer, cdx e asa no. In questo caso, è necessario mappare manualmente le estensioni cer, cdx e asa a 404.dll. Se non si fornisce asp, è possibile mappare anche questa estensione. |
Il mapping delle estensioni file a 404.dll impedisce ai file di essere restituiti e scaricati su HTTP. Se si richiede un file con un'estensione mappata a 404.dll, viene visualizzata una pagina Web con il messaggio "HTTP 404 - File not found". Si consiglia di mappare le estensioni non utilizzate a 404.dll, invece di eliminare il mapping. Se si elimina un mapping e per errore nel server viene lasciato o messo un file, il file può essere visualizzato non crittografato quando viene richiesto perché IIS non sa come elaborarlo.
| • | Per mappare un'estensione file a 404.dll
|
Le seguenti estensioni file di .NET Framework vengono mappate ad aspnet_isapi.dll: asax, ascx, ashx, asmx, aspx, axd, vsdisco, jsl, java, vjsproj, rem, soap, config, cs, csproj, .vb, vbproj, webinfo, licx, resx e resources.
.NET Framework protegge le estensioni file che non devono essere chiamate direttamente dai client associandole con System.Web.HttpForbiddenHandler in Machine.config. Le seguenti estensioni file vengono mappate a System.Web.HttpForbiddenHandler, per impostazione predefinita: asax, ascx, config, cs, csproj, vb, vbproj, webinfo, asp, licx, resx e resources.
Per ulteriori informazioni sui gestori HTTP, vedere "Passaggio 16: Machine.config".
Dato che IIS elabora per prima una richiesta Web, le estensioni file di .NET Framework che non si desidera vengano chiamate dai client potrebbero essere mappate direttamente a 404.dll. In questo caso avvengono due operazioni:
| • | 404.dll gestisce e respinge le richieste prima che vengano passate ad ASP.NET e prima che vengano elaborate dal processo di lavoro di ASP.NET. Così facendo si eliminano le operazioni di elaborazione non necessarie da parte del processo di lavoro di ASP.NET. Inoltre, bloccare quanto prima le richieste rappresenta una buona pratica di protezione. |
| • | 404.dll restituisce il messaggio "HTTP 404 - File not found" e System.Web.HttpForbiddenHandler restituisce il messaggio "This type of page is not served". Verosimilmente, il messaggio "File not found" rivela un numero minore di informazioni e pertanto potrebbe essere considerato più sicuro. |
In passato, le vulnerabilità nei filtri ISAPI erano fonte di grave sfruttamento di IIS. Non vi sono filtri ISAPI non necessari dopo una normale installazione di IIS, sebbene .NET Framework installi il filtro ISAPI di ASP.NET (Aspnet_filter.dll), che viene caricato nello spazio dell'indirizzo di processo di IIS (Inetinfo.exe) ed è utilizzato per supportare la gestione dello stato sessione senza cookie.
Se le applicazioni non devono supportare lo stato sessione senza cookie e non impostano l'attributo cookieless su true nell'elemento <sessionState>, questo filtro può essere rimosso.
Durante questo passaggio si rimuovono i filtri ISAPI non utilizzati.
Rimuovere tutti i filtri ISAPI non utilizzati come spiegato nella sezione seguente.
| • | Per visualizzare i filtri ISAPI
Figura 16.5 |
Le impostazioni di protezione e altre impostazioni di configurazione di IIS vengono mantenute nel file metabase IIS. Rafforzare le protezioni delle autorizzazioni NTFS sulla metabase IIS (e sul file metabase di backup) per evitare che i pirati informatici possano modificare in qualche modo la configurazione di IIS, ad esempio per disattivare l'autenticazione per una particolare directory virtuale.
In questo passaggio verrà descritto come:
| • | Limitare l'accesso alla metabase utilizzando le autorizzazioni NTFS. |
| • | Limitare le informazioni di intestazione restituite da IIS. |
Impostare le seguenti autorizzazioni NTFS sul file metabase IIS (Metabase.bin) nella directory \WINNT\system32\inetsrv.
| • | Local System: Controllo completo |
| • | Administrators: Controllo completo |
Le informazioni di intestazione possono rivelare le versioni software e altri dati che possono agevolare gli attacchi da parte di utenti malintenzionati. Possono rivelare ad esempio il software in esecuzione, permettendo a un pirata informatico di sfruttarne le vulnerabilità conosciute.
Quando si recupera una pagina statica, ad esempio un file htm o gif, alla risposta viene aggiunta un'intestazione con il percorso del contenuto. Per impostazione predefinita, questa intestazione con il contenuto fa riferimento all'indirizzo IP e non al nome di dominio completo (FQDN, Fully Qualified Domain Name). Questo significa che l'indirizzo IP interno viene involontariamente esposto. La seguente intestazione di risposta HTTP, ad esempio, mostra l'indirizzo IP in grassetto:
HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 Content-Location: http://10.1.1.1/Default.htm Date: Thu, 18 Feb 1999 14:03:52 GMT Content-Type: text/html Accept-Ranges: bytes Last-Modified: Wed, 06 Jan 1999 18:56:06 GMT ETag: "067d136a639be1:15b6" Content-Length: 4325
Per nascondere il percorso del contenuto restituito nelle intestazioni di risposta HTTP, modificare un valore nella metabase IIS per cambiare il funzionamento predefinito e far sì che invece dell'esposizione degli indirizzi IP venga inviato l'FQDN.
Per ulteriori informazioni sull'occultamento del percorso del contenuto nelle risposte HTTP, vedere l'articolo della Microsoft Knowledge Base 218180, "Internet Information Server Returns IP Address in HTTP Header (Content-Location)" (in inglese).
Se l'applicazione Web supporta HTTPS (SSL) sulla porta 443, è necessario installare un certificato server. Questa installazione è richiesta come parte del processo di negoziazione della sessione che ha luogo quando un client stabilisce una sessione HTTPS protetta.
Un certificato valido fornisce un'autenticazione protetta, per cui un client può dare attendibilità al server con cui comunica, e protegge le comunicazioni in maniera che i dati riservati rimangano tali e non possano essere manomessi in rete.
Durante questo passaggio, viene convalidato il certificato server.
Controllare i quattro punti seguenti per verificare la validità del certificato server Web:
| • | Controllare che le date "valido da" e "valido fino a" siano comprese nell'intervallo corretto. |
| • | Controllare che il certificato venga utilizzato in maniera corretta. Se è stato emesso come certificato server, non deve essere utilizzato per la posta elettronica. |
| • | Controllare che le chiavi pubbliche nella catena dei certificati siano tutte valide fino a una directory principale attendibile. |
| • | Controllare che non sia stato revocato. Non deve trovarsi in un elenco di revoche di certificati (CRL, Certificate Revocation List) del server che ha emesso il certificato. |
In questa sezione vengono date informazioni su come rafforzare la protezione delle impostazioni a livello di computer valide per tutte le applicazioni. Per impostazioni specifiche di protezione avanzata per le applicazioni, vedere il modulo 19 "Protezione dell'applicazione ASP.NET e dei servizi Web".
Il file Machine.config mantiene numerose impostazioni a livello di computer per .NET Framework, molte delle quali influiscono sulla protezione. Machine.config si trova nella directory seguente:
%windir%\Microsoft.NET\Framework\{versione}\CONFIG
Nota: per modificare i file di configurazione XML è possibile utilizzare qualsiasi editor di testo o XML (Blocco note, ad esempio). I tag XML distinguono tra maiuscole e minuscole, pertanto è necessario controllare che questa distinzione venga rispettata.
In questo passaggio verrà descritto come:
| • | Mappare le risorse protette a HttpForbiddenHandler. |
| • | Controllare che le funzionalità di analisisiano disattivate. |
| • | Controllare che le compilazioni di debug siano disattivate. |
| • | Controllare che al client non vengano restituiti errori ASP.NET. |
| • | Controllare le impostazioni dello stato sessione. |
I gestori HTTP si trovano in Machine.config sotto l'elemento <httpHandlers>. I gestori HTTP consentono l'elaborazione delle richieste Web relative a estensioni file specifiche. Il Remoting non deve essere attivato sui server Web front-end. Attivarlo solo sui server per applicazioni che sono isolati da Internet.
In Machine.config le seguenti estensioni file sono mappate ai gestori HTTP:
| • | aspx viene utilizzata per le pagine ASP.NET |
| • | rem e soap vengono utilizzate per il Remoting. |
| • | asmx viene utilizzata per i servizi Web. |
| • | asax, ascx, config, cs, csproj, vb, vbproj, webinfo, asp, licx, resx e resources rappresentano risorse protette e sono mappate a System.Web.HttpForbiddenHandler. |
Per le risorse di .NET Framework, se non si utilizza un'estensione file mapparla a System.Web.HttpForbiddenHandler in Machine.config, come mostrato nell'esempio seguente:
<add verb="*" path="*.vbproj" type="System.Web.HttpForbiddenHandler" />
In questo caso l'estensione file vbproj è mappata a System.Web.HttpForbiddenHandler. Se un client richiede un percorso che termina con vbproj, ASP.NET restituisce il messaggio "This type of page is not served".
Per la gestione delle estensioni file di .NET Framework vengono applicate le linee guida seguenti:
| • | Mappare le estensioni inutilizzate a HttpForbiddenHandler. Se non vengono fornite pagine ASP.NET, mappare l'estensione aspx a HttpForbiddenHandler. Se non si utilizzano i Servizi Web, mappare l'estensione asmx a HttpForbiddenHandler. |
| • | Disattivare il Remoting sui server Web connessi a Internet. Mappare le estensioni di Remoting (soap e rem) nei server Web connessi a Internet a HttpForbiddenHandler. |
Disattivare .NET Remoting
Per disattivare .NET Remoting, disattivare le richieste di estensioni rem e soap utilizzando i seguenti elementi sotto <httpHandlers>:
<add verb="*" path="*.rem" type="System.Web.HttpForbiddenHandler"/> <add verb="*" path="*.soap" type="System.Web.HttpForbiddenHandler"/>
Nota: ciò non impedisce il collegamento di un'applicazione Web residente su un server Web a un oggetto a valle mediante l'infrastruttura di Remoting. Impedisce però ai client di connettersi agli oggetti nel server Web.
Per configurare le funzionalità di analisi in Machine.config, utilizzare l'elemento <trace>. Anche se la funzionalità di analisi è utile sui server di sviluppo e di test, non attivarla sui server di produzione, perché le informazioni di analisi a livello di sistema possono essere di grande aiuto a un pirata informatico per il profiling di un'applicazione e per sondarne i punti deboli.
Sui server di produzione, utilizzare la configurazione seguente:
<trace enabled="false" localOnly="true" pageOutput="false" requestLimit="10" traceMode="SortByTime"/>
Impostare enabled="false" sui server di produzione. Se è indispensabile analizzare i problemi delle applicazioni installate, simulare il problema in un ambiente di test oppure, se necessario, attivare la funzionalità di analisi e impostare localOnly="true" per evitare che i dettagli dell'analisi vengano restituiti ai client remoti.
È possibile controllare se il compilatore produce build di debug che includono i simboli di debug utilizzando l'elemento <compilation>. Per disattivare le compilazioni di debug, impostare debug="false" come indicato qui di seguito:
<compilation debug="false" explicit="true" defaultLanguage="vb" />
È possibile utilizzare l'elemento <customErrors> per configurare messaggi di errore generici personalizzati che devono essere restituiti al client qualora si verifichi una condizione di eccezione dell'applicazione.
Controllare che l'attributo di tipo mode sia impostato su "RemoteOnly" come indicato nell'esempio seguente:
<customErrors mode="RemoteOnly" />
Dopo aver installato un'applicazione ASP.NET, è possibile configurare l'impostazione in modo che indirizzi alla pagina di errori personalizzata, come illustrato nell'esempio seguente:
<customErrors mode="On" defaultRedirect="YourErrorPage.htm" />
Se non si utilizza lo stato sessione, controllare che sia disattivato in Machine.config come illustrato nell'esempio seguente:
<sessionState mode="Off" . . . />
Controllare inoltre che ASP.NET State Service sia disattivato. La modalità dello stato sessione predefinita è "InProc" e ASP.NET State Service è impostato su manuale. Per ulteriori informazioni sulla protezione dello stato sessione se si installa un'applicazione ASP.NET che la richiede, vedere "Stato sessione" nel modulo 19 "Protezione dell'applicazione ASP.NET e dei servizi Web".
Il criterio di protezione dall'accesso di codice a livello di computer è determinato dalle impostazioni nel file Security.config che si trova nella directory seguente:
%windir%\Microsoft.NET\Framework\{versione}\CONFIG
Eseguire il comando seguente per essere certi che nel server sia attivata la protezione dall'accesso di codice:
caspol -s On
Per ulteriori informazioni sulla configurazione della protezione dall'accesso di codice per le applicazioni Web ASP.NET, vedere il modulo 9 "Utilizzo della protezione dall'accesso di codice con ASP.NET".
In questo passaggio verrà descritto come:
| • | Rimuovere tutte le autorizzazioni per l'area Intranet locale. |
| • | Rimuovere tutte le autorizzazioni per l'area Internet. |
L'area Intranet locale applica le autorizzazioni al codice eseguito da condivisioni UNC o siti Web interni. Riconfigurare quest'area per non concedere autorizzazioni associandola all'autorizzazione Nothing impostata.
| • | Per rimuovere tutte le autorizzazioni per l'area Intranet locale
|
Figura 16.6
Impostazione delle autorizzazioni del codice LocalIntranet_Zone su Nothing
L'area Internet applica le autorizzazioni di accesso al codice, al codice scaricato via Internet. Sui server Web, riconfigurare quest'area per non concedere autorizzazioni associandola al set di autorizzazioni Nothing.
Ripetere i passaggi illustrati nella sezione precedente, "Rimuovere tutte le autorizzazioni per l'area Intranet locale" ma impostare Internet_Zone sul set di autorizzazioni Nothing.
Il riepilogo degli attributi di un server Web protetto permette di confrontare rapidamente e facilmente le impostazioni con quelle del proprio server Web. Le impostazioni riportate nella Tabella 16.5 sono basate su server Web che ospitano siti Web che si sono rivelati molto resistenti agli attacchi e dimostrano pratiche di protezione efficaci. Seguendo i passaggi precedenti è possibile generare un server configurato in maniera identica, rispetto alla protezione.
Tabella 16.5: Riepilogo delle caratteristiche di un server Web protetto
| Componente | Caratteristiche | |
Patch e aggiornamenti | Vengono applicati i service pack e le patch più aggiornate per Windows, IIS e .NET Framework. |
|
Servizi | I servizi non necessari vengono disattivati. |
|
Protocolli | I protocolli NetBIOS e SMB non sono attivati sul server. |
|
Account | Gli account inutilizzati vengono rimossi. |
|
File e directory |
Il gruppo Everyone non dispone di diritti sul sistema, sul Web o sulle directory degli strumenti. L'account anonimo non ha accesso alle directory contenuto del sito Web e alle utilità di sistema. |
|
Condivisioni | Le condivisioni inutilizzate vengono rimosse dal server. |
|
Porte | Tutte le porte, tranne la 80 e la 443 (SSL) vengono bloccate, specie le 135 – 139 e 445 che sono particolarmente vulnerabili. |
|
Registro di sistema | L'amministrazione remota del Registro di sistema viene impedita. |
|
Controllo e registrazione | I tentativi di accesso non riusciti vengono registrati. |
|
IIS |
|
|
Siti e directory virtuali | Le directory principali Web e le directory virtuali vengono messe in volumi separati dal volume di sistema. |
|
Mapping script | I mapping degli script inutilizzati vengono mappati a 404.dll: idq, htw, ida, shtml, shtm, stm, idc, htr, printer. |
|
Filtri ISAPI | I filtri ISAPI inutilizzati vengono rimossi. |
|
Metabase IIS | L'accesso alla metabase IIS è limitato con le autorizzazioni NTFS. |
|
Machine.config |
|
|
HttpForbiddenHandler | Le risorse protette vengono mappate a System.Web.HttpForbiddenHandler |
|
Remoting | .NET Remoting viene disattivato. <httpHandlers> <add verb="*" path="*.rem" type="System.Web.HttpForbiddenHandler"/> <add verb="*" path="*.soap" type="System.Web.HttpForbiddenHandler"/> </httpHandlers> |
|
analisi | Le informazioni di analisi e le informazioni dettagliate sugli errori non vengono restituite al client: <trace enabled="false"> |
|
compilazione | Le compilazioni di debug vengono disattivate <compilation debug="false"/> |
|
customErrors | I dettagli sugli errori non vengono restituiti al client: <customErrors mode="On" /> Una pagina di errori generici scrive gli errori nel registro eventi. |
|
sessionState | Stato sessione viene disattivato, se non è necessario: <sessionState mode="Off" /> |
|
Protezione dall'accesso di codice |
|
|
Protezione dall'accesso di codice | La protezione dall'accesso di codice viene attivata per il computer. |
|
LocalIntranet_Zone | L'area Intranet locale non dispone di autorizzazioni: |
|
Internet_Zone | L'area Internet non dispone di autorizzazioni: |
|
È necessario controllare lo stato di protezione del server e aggiornarlo regolarmente per impedire che vengano sfruttate le vulnerabilità scoperte di recente. Per proteggere il server:
| • | Controllare l'appartenenza ai gruppi. |
| • | Monitorare i registri di controllo. |
| • | Disporre di service pack e di patch aggiornati. |
| • | Eseguire verifiche della protezione. |
| • | Utilizzare il servizio Security Notification Service. |
Tenere traccia dell'appartenenza ai gruppi utenti, in particolar modo per gruppi privilegiati quale Administrators. Nel comando seguente sono elencati i membri del gruppo Administrators:
net localgroup administrators
Monitorare regolarmente i registri di controllo e analizzare i file registro visualizzandoli manualmente oppure utilizzare la tecnica descritta nell'articolo della Microsoft Knowledge Base 296085, "How To: Use SQL Server to Analyze Web Logs" (in inglese).
Impostare un programma per analizzare il software per i server e iscriversi agli avvisi per la protezione. Utilizzare MBSA per eseguire periodicamente la scansione del server alla ricerca di patch mancanti. Gli ultimi aggiornamenti sono disponibili tramite i collegamenti seguenti:
| • | Service Pack Windows 2000. I service pack più recenti sono elencati a questo indirizzo: http://www.microsoft.com/windows2000/downloads/servicepacks/default.asp (in inglese) |
| • | .NET Framework Service Pack. Per informazioni su come ottenere gli ultimi aggiornamenti .NET Framework, vedere l'articolo di MSDN, "How to Get the Microsoft .NET Framework" all'indirizzo http://msdn.microsoft.com/netframework/downloads/howtoget.asp (in inglese). |
| • | Aggiornamenti critici. Tali aggiornamenti contribuiscono alla soluzione di problemi noti e alla protezione del computer da vulnerabilità di protezione accertate. Per gli ultimi aggiornamenti importanti, vedere "Aggiornamenti critici" all'indirizzo http://www.microsoft.com/windows2000/downloads/critical/default.asp (in inglese). |
| • | Aggiornamenti sulla protezione avanzata. Per ulteriori aggiornamenti sulla protezione, vedere "Advanced Security Updates" all'indirizzo http://www.microsoft.com/windows2000/downloads/security/default.asp (in inglese). Questi aggiornamenti aiutano anche a proteggere il computer dalle vulnerabilità note della protezione. |
MBSA può essere utilizzato per verificare periodicamente la presenza di vulnerabilità di protezione e per identificare le patch e gli aggiornamenti mancanti. È consigliabile pianificarne l'esecuzione quotidiana e analizzare i risultati in modo da poter adottare le misure necessarie. Per ulteriori informazioni sull'automazione di MBSA, vedere "Procedura: Utilizzo di Microsoft Baseline Security Analyzer" nella sezione "Procedure" di questa Guida.
Utilizzare i servizi Microsoft elencati nella Tabella 16.3 per ottenere i bollettini sulla sicurezza con la notifica delle possibili vulnerabilità del sistema.
Tabella 16.3 Security Notification Services
| Servizio | Percorso |
Sito Web TechNet Security | http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/current.asp (in inglese)
|
Microsoft Security Notification Service | http://register.microsoft.com/subscription/subscribeme.asp?ID=135 (in inglese)
|
Inoltre, iscriversi ai servizi di gestione degli avvisi per la protezione industriale mostrati nella Tabella 16.4. Ciò consente di valutare il pericolo di una vulnerabilità per la quale non è ancora disponibile una patch.
Tabella 16.4 Industry Security Notification Services
| Servizio | Percorso |
CERT Advisory Mailing List | http://www.cert.org/contact_cert/certmaillist.html (in inglese)
|
Windows e .NET Magazine Security UPDATE | http://email.winnetmag.com/winnetmag/winnetmag_prefctr.asp (in inglese)
|
NTBugtraq | http://www.ntbugtraq.com/default.asp?pid=31&sid=1#020 (in inglese)
|
Spesso gli amministratori devono essere in grado di amministrare più server. Accertarsi che i requisiti della soluzione di amministrazione remota adottata non compromettano la protezione. Se sono richieste capacità di amministrazione remota, ai fini di una migliore protezione possono risultare utili le raccomandazioni seguenti:
| • | Limitare il numero degli account di amministrazione. Limitare sia il numero degli account di amministrazione sia gli account che possono connettersi in modalità remota. |
| • | Limitare il numero di strumenti disponibili. Le opzioni principali sono Gestione servizi Internet e Servizi terminal. Un'altra opzione è costituita dall'amministrazione Web (tramite la directory virtuale IISAdmin) ma non è consigliata, per cui viene rimossa da IISLockdown.exe. Sia Gestione servizi Internet che Servizi terminal utilizzano la protezione di Windows. In questo caso, le considerazioni principali riguardano la limitazione degli account di Windows e le porte utilizzate. |
| • | Limitare il numero di computer da cui è possibile amministrare il server. IPSec può essere utilizzato per limitare il numero di computer che possono connettersi al sito Web. |
È possibile utilizzare Servizi terminal di Microsoft in maniera protetta per amministrare in modalità remota il proprio server Web.
Servizi terminal è basato sul protocollo proprietario RDP (Remote Desktop Protocol, Protocollo desktop remoto) Microsoft. Il protocollo RDP utilizza la porta 3389 TCP e supporta due utenti simultanei. Nelle sezioni seguenti vengono descritte le procedure di installazione e configurazione di Servizi terminal per usufruire di funzioni di amministrazione protette:
| • | Installare Servizi terminal. |
| • | Configurare Servizi terminal. |
Per installare Servizi terminal:
1. | Installare Servizi terminal scegliendo Installazione applicazioni nel Pannello di controllo. Utilizzare l'opzione Installazione componenti di Windows. Per l'amministrazione remota non è necessario installare il servizio Licenze Servizi terminal. |
2. | Configurare Servizi terminal per la modalità di amministrazione remota. |
3. | Rimuovere l'account TsInternetUser che viene creato durante l'installazione di Servizi terminal. Questo account viene utilizzato per il supporto dell'accesso Internet anonimo a Servizi terminal, che non dovrebbe essere attivato sul server. |
Utilizzare lo snap-in MMC Configurazione di Servizi terminal disponibile nel gruppo di programmi Strumenti di amministrazione per configurare quanto segue:
1. | Per le connessioni a Servizi terminal sono disponibili tre livelli di crittografia (Bassa, Media e Alta). Impostare la crittografia sulla chiave a 128 bit. Tenere presente che sia il server che il client devono disporre del pack Windows con livello di crittografia più elevato. |
2. | Configurare la sessione di Servizi terminal per la disconnessione automatica una volta trascorso il limite di tempo di connessione inattiva. Selezionare l'impostazione di conclusione di una sessione disconnessa. Una sessione viene considerata disconnessa se l'utente chiude l'applicazione client Servizi terminal senza disconnettersi entro dieci minuti. |
3. | Limitare infine le autorizzazioni di accesso a Servizi terminal. Utilizzare la scheda RDP permissions nella finestra di dialogo RDP. Per impostazione predefinita tutti i membri del gruppo Administrators possono accedere a Servizi terminal. Se non si desidera che tutti i membri del gruppo Administrators possano accedere a Servizi terminal, rimuovere il gruppo e aggiungere i singoli account che hanno bisogno dell'accesso. Tenere presente che l'account SYSTEM deve essere incluso nell'elenco. |
Per usufruire di funzioni di protezione avanzate, utilizzare una connessione VPN protetta tra il client e il server oppure le funzioni di tunneling IPSec. Questo approccio fornisce un'autenticazione reciproca e il payload RDP viene crittografato.
In Servizi terminal non sono disponibili funzioni incorporate per il trasferimento dei file. È tuttavia possibile installare l'utilità File Copy dal Resource Kit di Windows 2000 Server per aggiungere le funzionalità di trasferimento alla funzione di reindirizzamento clipboard di Servizi terminal. Per ulteriori informazioni sull'utilità e sulle istruzioni di installazione, vedere l'articolo della Microsoft Knowledge Base 244732, "How To: Install the File Copy Tool Included with the Windows 2000 Resource Kit" (in inglese).
In questo modulo è stato illustrato come configurare manualmente le impostazioni di protezione per un server Web ASP.NET. Il processo manuale aiuta a capire la configurazione ma può richiedere molto tempo. Per meglio automatizzare i passaggi presentati in questo modulo, utilizzare le risorse seguenti:
| • | Per informazioni sull'automatizzazione di IISLockdown, vedere l'articolo della Microsoft Knowledge Base 310725, "How To: Run the IIS Lockdown Wizard Unattended in IIS" (in inglese). | ||||||
| • | È possibile creare e distribuire criteri di protezione utilizzando i modelli di protezione. Per ulteriori informazioni, consultare i seguenti articoli della Microsoft Knowledge Base:
| ||||||
| • | Per indicazioni dettagliate sulla personalizzazione e automatizzazione dei modelli di protezione, vedere patterns & practices, Microsoft Solution for Securing Windows 2000 Server di Microsoft all'indirizzo http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/prodtech/windows/secwin2k/default.asp (in inglese). In Microsoft Solution for Securing Windows 2000 Server vengono spiegati i ruoli server più comuni, compresi i controller di dominio, i server DNS, i server DHCP, i server Web IIS e i file server e server di stampa. L'approccio adottato in questa guida permette di prendere un'installazione predefinita di Windows 2000 e di creare poi un server protetto, la cui configurazione esatta varia a seconda del suo ruolo. Gli amministratori potranno poi ridurre consapevolmente la protezione per soddisfare le esigenze del loro particolare ambiente. In questa guida vengono fornite le raccomandazioni fondamentali per una protezione di base che abbraccia servizi, account, criteri di gruppo e altro ancora. Queste raccomandazioni possono servire da punto di partenza per i tipi comuni di ruoli server. |
Un server Web protetto rappresenta una base sicura per ospitare le applicazioni Web. In questo modulo sono stati illustrati i pericoli principali che possono avere ripercussioni sul server Web ASP.NET e sono stati indicati i passaggi di protezione richiesti per ridurre questi pericoli. Seguendo queste indicazioni è possibile creare una piattaforma protetta e ospitare un'infrastruttura per supportare applicazioni Web ASP.NET e servizi Web.
La metodologia utilizzata in questo modulo consente di creare un server Web protetto partendo da zero e di rafforzare la configurazione di protezione di un server Web esistente. Il passaggio successivo consiste nel controllare che tutte le applicazioni distribuite siano configurate in maniera corretta.
Per ulteriori informazioni, consultare le risorse seguenti:
| • | Per informazioni sulla protezione della workstation di sviluppo, vedere "Procedura: Protezione delle workstation degli sviluppatori" nella sezione "Procedure" di questa guida. |
| • | Per ulteriori informazioni su come proteggere le applicazioni Web ASP.NET e i servizi Web, vedere il modulo 19 "Protezione dell'applicazione ASP.NET e dei servizi Web". |
| • | Per informazioni sulla configurazione dell'applicazione Open Hack, vedere l'articolo di MSDN "Building and Configuring More Secure Web Sites" all'indirizzo http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/openhack.asp (in inglese). |
| • | Per le risorse legate alla protezione disponibili in TechNet, vedere la pagina TechNet Security, http://www.microsoft.com/technet/security/default.asp (in inglese). |
| • | Per un elenco di controllo stampabile, vedere "Elenco di controllo: Protezione del server Web" nella sezione "Elenchi di controllo" di questa guida. |