Introduzione
Scopo della guida è rendere sicuro un Server che esegue i servizi riportati nella tabella 1.


Tabella 1 - Servizi e relativa porta usata

In fase di installazione del nostro server è opportuno tenere in considerazione alcuni fattori:
- Occorre formattare tutti i dischi utilizzando come file system NTFS, in quanto FAT e FAT32 non consentono adeguati standard di sicurezza
- Su di un server è consigliabile installare una versione di Windows in lingua Inglese in quanto sarà più semplice trovare consigli sulla risoluzione dei problemi su internet.

Spiegazione
Subito dopo aver installato il sistema, dovrete fare le seguenti cose:

- Modificare i permessi esistenti per tutte le unità in modo da rimuovere ogni occorrenza del gruppo Everyone
- Rimuovere tutti i permessi per il gruppo Authenticated Users relativi alla directory di sistema ed agli oggetti in essa contenuti dando invece a tale gruppo i permessi elencati nella tabella 2 per le cartelle specificate.


Tabella 2 - Impostazione dei permessi

Account - Utenti
Una volta configurate queste impostazioni sul server faremo delle piccole modifiche agli account del sistema:

- Disabilitiamo gli utenti non necessari: disabilitare tutti gli utenti non necessari (es: Guest, TsInternetUser se non si utilizza il servizio Terminal Server).
- Rinominare l’account di Amministrazione: con qualunque altro nome che non lasci trapelare in alcun modo informazioni sull'importanza dell'account.
- Creare un account chiamato Administrator: senza alcun diritto, da utilizzare come esca.
- Creare account differenti per ciascuno degli utenti amministrativi: ed assegnare ad ognuno di essi soltanto i privilegi strettamente necessari;
- Creare un account per ogni utente: ed assegnare ad ognuno di essi soltanto i privilegi strettamente necessari.
- Raggruppare gli utenti in gruppi in base alle attività: che ciascuno di essi deve compiere ed assegnare al gruppo di appartenenza soltanto i privilegi minimi indispensabili.

Account - Uno sguardo alle password
Le password sono uno tra i punti di maggiore vulnerabilità di un sistema e per tanto dovranno essere complesse e per nulla identificabili da algoritmi che usino dizionari. Eccp alcune buone regole da seguire:

- Lunghezze prefissate: avere una lunghezza compresa tra 6 a 14 caratteri.
- Lettere e numeri: contenere numeri e lettere in alternanza ed utilizzare minuscole e maiuscole insieme.
- Caratteri alfanumerici: contenere anche caratteri non alfanumerici (es: @,._-/ *=\<>;:'"?|`~!#$%^& (){}[]) quanto meno per tutti quegli account in possesso di privilegi di sistema delicati (amministratori, backup operators, power users);
- Non utilizzare parole presenti nei dizionari: non utilizzare i comuni vocaboli presenti nei dizionari, come nomi di persone, posti o date.

Account – Bloccare gli utenti
Una delle funzionalità messe a disposizione dal sistema operativo contro attacchi che tentano di indovinare le password per tentativi )attacchi di forza bruta) è il blocco degli Account utente dopo un certo numero di tentativi di accesso falliti. Le relative impostazioni si trovano nella sezione Account Policies | Account Lockout Policy del Local Security Policy e sono:

- Account lockout duration: indica la durata in minuti del blocco dell'utente. Questo parametro va impostato con un valore uguale a 0 (ovvero infinito) solo se si vuole che sia l’amministratore a sbloccare l’account (valore consigliato 30 minuti).
- Account lockout threshold: indica il numero di tentativi di accesso falliti necessari affinché l’account sia bloccato. Impostando a 0 questo parametro l’Account Lockout Policy viene disabilitato (valore consigliato 5).
- Reset account lockout counter after: indica i minuti che devono trascorrere prima di azzerare il contatore dei tentativi di accesso (valore consigliato 30 minuti).

Policy di sicurezza - Come accedervi
Una buona policy di sicurezza di un sistema operativo Windows è fondamentale per evitare forzature dello stesso. Si può accedere allo snap in della policy accedendo a Pannello di controllo->Administration Tools->Local Security Policy, vedi figura 1.


Figura 1 - Snap in Local Security Settings

Con questo strumento è possibile modificare impostazioni globali del sistema operativo e renderlo più sicuro

Policy di sicurezza - Password Policy
E’ opportuno andare ad effettuare delle modifiche alla policy del sistema tramite lo strumento presente negli strumenti di amministrazione del sistema e modificare i seguenti parametri:

Enforce password history: determina il numero di password immesse dall'utente e ricordate dal sistema. L'utente non potrà utilizzare nuovamente una vecchia password se presente nella lista delle password ricordate (e quindi non permesse) dal sistema. Valori ammessi: da 0 a 24 , consigliato 6.

Maximum password age: determina dopo quanti giorni l’utente viene obbligato dal sistema a cambiare la password (valore di default 42 giorni, consigliato da 30 a 60 giorni).

Minimun password age: determina il numero minimo di giorni prima che il sistema dia la possibilità all’utente di cambiare la password (il valore di default pari a 0 è sufficiente ed indica la possibilità per l’utente di cambiare la password in qualsiasi momento).

Minimum password length: indica il numero minimo di caratteri che la password deve contenere (valore consigliato 6 caratteri).

Password must meet complexity requirements: questo parametro costringe l’utente a scegliere le password in modo che esse rispettino requisiti di complessità variabili a seconda della libreria utilizzata. La Microsoft  stessa mette a disposizione una libreria chiamata passfilt.dll che fornisce un livello di sicurezza di base ma possono comunque essere utilizzate anche altri librerie sviluppate da terze parti (valore di default Disabled, consigliato Enabled).

Store password using reversible encryption for all user in the domain: questo parametro va impostato su Enabled solo quando occorre utilizzare il Challenge Handshake Authentication Protocol (ad es. con Internet Information Server 5.0 allorquando viene scelta come modalità di autenticazione il “Digest Authentication” (il valore di default Disabled).

Policy di sicurezza - Audit Policy
Una buona politica di sicurezza non può prescindere dall'utilizzo dei meccanismi di auditing che implicano la registrazione di determinati tipi di eventi.
L'impostazione di default del sistema operativo non prevede l'utilizzo di tali meccanismi che vanno dunque abilitati dalla sezione Security Settings | Local Policies | Audit Policy del Local Security Policy in modo da riprodurre le impostazioni della tabella 3.


Tabella 3 - Impostazione delle Audit

Policy di sicurezza - Audit Policy log settings 1
Gli eventi monitorati vengono aggiunti al Security Log e per facilitare la loro consultazione può essere utile usare uno dei tanti strumenti sviluppati da terze parti e disponibili in rete. Poiché in base alle impostazioni mostrate il numero degli eventi  registrati può diventare molto numeroso e per evitare di perdere le evidenze di particolari attività sospette è essenziale aumentare sensibilmente le dimensioni del log di sicurezza in modo da portarle ad una dimensione di almeno 10 megabyte (il default è 512 Kbyte) ed abilitare l'opzione Overwrite events older than fissandola ad un valore di 30 giorni così da poter consultare il registro fino ad un mese prima - vedi figura 2.


Figura 2 - Security Logs

Policy di sicurezza - Audit Policy log settings 2
Altrettanto importante è prevedere delle politiche per il backup periodico (infrasettimanale se non giornaliero) dei log su supporti sicuri in modo da poter procedere ad un ripristino delle situazione nel caso di avvenuta compromissione. L'abilitazione di attività di auditing è anche possibile in riferimento al filesystem NTFS purché sia stato preventivamente attivato l'Audit Object Access per gli eventi Success e/o Failure.
A tal fine occorre cliccare con il tasto destro del mouse sul file o la directory desiderata e premere il pulsante Advanced nella scheda Security.


Figura 3 - Advanced Security Settings

I servizi di rete
La rete è un punto nevralgico per quanto riguarda gli attacchi contro il nostro server.In questa sezione ci preoccuperemo ad analizzare le connessioni di rete attive e i servizi che vorremo rendere disponibili sul nostro server, cercando invece di disabilitare tutti i servizi non necessari che potrebbero essere utilizzati per attaccare il nostro server. Vedremo come ridurre considerevolmente il numero di porte TCP/IP aperte dal sistema disabilitando alcuni servizi di rete, rimuovendo programmi o servizi agendo sulle impostazioni delle connessioni di rete.
Utilizzeremo il comando netstat –ano per verificare le connessioni in stato di ascolto (listening), i servizi e le porte attive della nostra macchina.

Terminal Service - Accediamo da remoto
Abbiamo installato sulla macchina un'istanza di Windows Server 2003 con IIS, FTP, SMTP e POP3 e configurato la rete.

Siamo connessi alla macchina tramite Desktop Remoto abilitando la gestione da: Pannello di controllo->Sistema->Accesso remoto, come da figura 3, ed impostato slàutente Administrator per l’utilizzo del servizio. Ovviamente i Servizi Terminal non sono stati installati, pertanto si considerino come non presenti sul server.


Figura 4 - Terminal Services Users

Condivisioni - Creazione
La possibilità di creare delle condivisioni aggiuntive dovrebbe sempre essere vagliata attentamente. In ogni caso quando una risorsa viene condivisa sulla stessa viene assegnato il privilegio di Full Control al gruppo Everyone per impostazione predefinita (in windows 2000) e Read in Windows 2003. Poichè questa impostazione è troppo permissiva in termini di sicurezza è necessario sostituire il gruppo Everyone con Authenticated Users.

La tabella 4 riepiloga le azioni possibili su di una risorsa condivisa sulla base dei permessi assegnati.


Tabella 4 - Permessi su una condivisione di una cartella

Condivisioni - Cose da sapere
In Windows Server 2003 ogni unità è caratterizzata dalla presenza di una condivisione sulla root che assume il nome della lettera dell'unità seguito da un dollaro ($), ovvero $ (es: C$ o D$).  Inoltre in aggiunta a quelle appena menzionate esistono altre condivisioni speciali:
Chiunque fosse in conoscenza di questo metodo di condivisione e essendo in possesso di una user e password appartenente al gruppo di Backup Operators o ad utenze-gruppi con privilegi superiori potrebbe accedervi.

- ADMIN$:  è presente per consentire l’amministrazione del sistema da remoto e corrisponde al path della root di sistema (variabile d'ambiente %SYSTEMROOT%).
- IPC$: è utilizzata dal sistema per le comunicazioni inter-processo.
- PRINT$: è utilizzata per l’amministrazione da remoto delle stampanti e corrisponde al percorso %SYSTEMROOT%\SYSTEM32\SPOOL\DRIVERS.
- NETLOGON: è usata dal servizio di Net Logon (solo per i sistemi facenti parte di un dominio).
- FAX$: è utilizzata dai client come cache durante la spedizione di fax.

Condivisioni - Rimozione
Per rimuovere le condivisioni amministrative (C$, D$ etc) procedere nel seguente modo: le condivisioni amministrative possono essere temporaneamente disabilitate.
A tal fine è sufficiente cliccare con il pulsante destro del mouse in corrispondenza della root della partizione desiderata, selezionare la scheda Sharing e poi la voce Do not share this folder. Una volta riavviata la macchina le condivisioni verranno nuovamente rese disponibili. Nella successiva scheda vedremo come rimuovere completamente la condivisione File e cartelle tramite la rimozione del servizio NetBIOS.


Figura 5 - Rimuovere una condivisione

Per quanto concerne le altre condivisioni, se ne sconsiglia la disabilitazione da parte di amministratori non esperi, in quanto la loro rimozione potrebbe compromettere il corretto funzionamento del sistema.

Protocollo NetBIOS
Netbios over TCP/IP (NBT) è una protocollo utilizzato per trasportare sulle reti TCP/IP i messaggi del protocollo SMB (Server Message Block) usato in rete per la condivisione di file e stampanti. NetBIOS usa a tal scopo le porte TCP 139 e UDP 137 e 138.
In un server Internet non occorre tenere in piedi l’infrastruttura NetBIOS (Almeno nella scheda di rete che punta ad internet) e quindi conviene eliminare il servizio dal sistema
L’immagine mostra  la schermata data dal comando netstat –ano. Prima della chiusura del NetBios. Le porte in ascolto relative al NetBIOS sono UDP 137,138 TCP 139. Tali porte vengono mostrate nella figura 6.


Figura 6 - Output di netstat -ano

NetBIOS - Rimozione
Per disabilitare il NetBIOS dall’interfaccia di rete specifica, accedere alle connessioni di rete e alle sue relative proprietà e deselezionare File and Printer Sharing for Microsoft network, quindi disabilitare il servizio NETBIOS over TCPIP.
Nelle impostazioni avanzate del TCPIP e disabilitare il servizio TCP/IP NetBIOS Helper, vedi figura 7, a questo punto non utilizzabile. Occorrerà ora riavviare il server rendere effettive le modifiche e notare la scomparsa delle porte relative al NETBIOS in ascolto tramite netstat -ano - figura 8.


Figura 7 - Disabilitazione NetBIOS


Figura 8 - NetBIOS disabilitato

IPSec
Il protocollo IPSec è un metodo per proteggere le connessioni IP Crittografate.
Il protocollo IPSec utilizza la porta UDP 500. Tramite IPSec è inoltre possibile definire dei filtri personalizzati per accettare o meno connessioni su determinate porte.

IPSec - Disabilitazione
Per disabilitare IPSec occorre accedere al panello dei servizi Windows alla voce IPSec Service e stoppare il servizio e in seguito disabilitarlo alla voce “Startup Type”. Si consiglia di non disabilitare IPSec.

Protezione della macchina
In questa specifica sezione ci occuperemo di rendere sicura l’infrastruttura di rete analizzando le varie soluzioni di Filtri TCPIP, IPSec e Firewalling.

Come detto in precedenza il punto più nevralgico di un server collegato ad internet è appunto la rete e quindi occorrerà analizzare i servizi per limitare al massimo l’interfacciamento del Server verso il mondo esterno.

TCP Filtering
Questa funzionalità è identica a quella già presente nel sistema operativo Windows NT4 e Windows 2000, ed è possibile accedervi attraverso la finestra delle proprietà delle connessione di rete locale, vedi figura 9, selezionando Internet Protocol TCP/IP-> Properties->Advanced->Options->
TCP/IP Filtering->Properties
.

Nonostante l'apparente utilità il filtraggio a livello TCP/IP presenta tuttavia una serie di
svantaggi:le regole create si applicano in modo monolitico a tutte le schede di rete; qualsiasi impostazione non influenza in alcun modo le connessioni già instaurate e richiede un riavvio del sistema.
Esistono alcuni problemi di funzionamento: in particolare i filtri sembrano non comprendere appieno la porzione IP relativa al tipo di protocollo e i filtri possono essere gestiti soltanto a livello locale introducendo pertanto un ulteriore onere di amministrazione.


Figura 9 - Attivare Filtri TCP/IP

IPSec – Policy della Rete


Figura 10 - Filtri IPSec

Senza dubbio la soluzione migliore rispetto alla precedente consiste nell'uso dei filtri IPSec che rappresentano uno dei vantaggi derivati dal pieno supporto che il sistema operativo Windows 2003 garantisce al protocollo IPSec.

L'IP Security è una estensione del protocollo IP (opzionale con l'IPv4 e nativa con l'IPv6) definita dalla Internet Engineering Task Force (RFC 2401-2411) e diretta a superare la naturale insicurezza delle reti basate su IP attraverso un nucleo di servizi integrati che garantiscono funzioni di autenticazione, controllo della integrità e confidenzialità del traffico facendo uso di ben noti algoritmi di crittografia.

Peraltro, in aggiunta a quelle appena menzionate, IPSec fornisce anche delle funzionalità per così dire "minori" tra le quali rientra per l'appunto la possibilità di definire delle regole per il filtraggio delle connessioni a livello di singolo host.
I componenti che in Windows 2003 garantiscono il supporto per l'IPSec sono l'IPSec Policy Agent e l'IPSec Driver. Il primo è un vero e proprio servizio di sistema che provvede ad acquisire e distribuire ai vari meccanismi le policy via via definite mentre il secondo è un driver caricato durante la fase di avvio del sistema ed è responsabile dell'esercizio dei filtri e del mantenimento della connessioni. Il driver quindi utilizza direttamente i filtri definiti per stabilire quali pacchetti debbano essere bloccati o accettati. 

IPSec – Creazione di una Policy
Per creare una policy personalizzata IPSEC occorre accedere allo snap-in delle policy come visto in precedenza e cliccare con il tasto destro su IP Security policy on local computer e selezionare Create IP Security Policy come da figura 11.

NOTA: Si consiglia l'utilizzo della procedura descritta in seguito solo ad amministratori esperti.


Figura 11 - Creazione di una policy IPSec

A questo punto, si avvierà il Wizard di configurazione e dovrete seguire i passaggi descritti delle figure successive.







IPSec – Creazione di un Filtro

Accedere con il tasto destro su IP Security policy on local computer, vedi figura 16.


Figura 16 - Gestione di un filtro IPSec

Nella schermata Manage ip filter and filter action, aggiungiamo una nuova regola, premendo sul pulsante Add - vedi figura 17.


Figura 17 - Inserimento nuova regola

Inserite il nome della regola - figura 18.


Figura 18 - Assegnazione nome regola

Inserire il range del traffico sorgente, nel nostro caso vogliamo fare un filtro su tutti gli indirizzi IP in entrata sul nostro server, figura 19.


Figura 19 - Filtro traffico in entrata

Inserire il range del traffico di destinazione, nel nostro caso gli indirizzi IP del server, figura 20.


Figura 20 - Filtro traffico di destinazione

Specificare il tipo di protocollo sul quale il filtro andrà ad agire, figura 21.


Figura 21 - Impostazione protocollo

Specificare la porta dalla quale verrà richiesto il servizio e la porta relativa al servizio in ascolto, figura 22.


Figura 22 - Impostazione porta

Abbiamo finito la configurazione del nostro filtro, figura 23.


Figura 23 - Conclusione del wizard

IPSec – Creazione di Altri Filtri
A questo punto abbiamo configurato il nostro primo filtro. Eseguire le operazioni elencate per la “Creazione di un filtro” per tutti i filtri che vogliamo rendere attivi. E’ importante creare anche un filtro per tutto il traffico in entrate e per tutte le porte richieste. Di seguito vengono mostrati i filtri presenti sul server web

IPSec – Applicare un Filtro ad una Policy
Per applicare un filtro, ad una policy creata in precedenza, occorre selezionare la policy in questione e con il tasto destro cliccare su proprietà della policy. A questo punto occorre addizionare i filtri che vogliamo rendere presenti all’interno della nostra policy e selezionarli.

IPSec – Assegniamo la Policy
Abbiamo finito la configurazione del nostro primo filtro. A questo punto occorrerà rendere attiva questa policy cliccando con il tasto destro sulla policy stessa e cliccando su Assign. Una cosa da tenere presente è il tempo di ricarica della policy che di default è impostato ad un valore maggiore di 0 e quindi occorrerà aspettare il tempo di ricarica, vedi figura 24.


Figura 24 - Assegnazione di una policy IPSec

IPSec – Importare una Policy
E possibile eseguire l’import e l’export di una policy direttamente dallo snap in di IPSEC, come da figura 25, questo metodo consente un semplice riutilizzo dei filtri creati in precedenza per il nostro server web. La figura 26, invece, mostra i filtri creati sia per TCP che per UDP.


Figura 25 - Importare una policy IPSec


Figura 26 - Impostazione filtri TCP e UDP

Firewall
L’integrazione a Windows Server 2003 del firewall come per Windows XP Service Pack 2, facilita le operazioni di monitoraggio e bloccaggio delle connessioni in ingresso per vietare che vengano effettuate connessioni a porte non autorizzate.

NOTA: Il firewall presente in Windows XP e Windows 2003 non blocca il traffico generato dal server, ma solo quello VERSO il server, pertanto se si necessita di ulteriore protezione, utilizzare altri strumenti quali ISA SERVER o altri firewall di terze parti (hardware o software).

In Windows Server 2003 ogni network Adapter dispone di un proprio Firewall con relative regole di ingresso e di uscita.

Firewall – Impostazioni
A questo punto occorrerà abilitare il Firewall per quella scheda di rete cliccando sul pulsante radio On, figura 27.


Figura 27 - Abilitazione del firewall

A questo punto occorre specificare i servizi da rendere visibili all’esterno per ogni interfaccia di rete installata sulla macchina. Nella sezione avanzata del Firewall è possibile abilitare la registrazione delle richieste effettuate al server tramite il quale monitorare eventuali attacchi o intrusioni non autorizzate.

Altri servizi
Molti servizi vengono installati di default su un Windows Server 2003 che in effetti poi non servono e comunque rubano cicli di CPU. Un piccolo programmino molto utile è WWDC.exe, figura 30, che permette senza navigare su diverse schermate per disabilitare particolari servizi di disabilitarli facendo click sulla sua interfaccia. Da ricordare che i servizi FTP e SMTP sono direttamente dipendenti da DCOM e quindi tale servizio deve non essere disabilitato.


Figura 30 - Windows Worm Doors Cleaner

Conclusioni
E’ importante tenere in considerazione la possibilità di installare sulla macchina in questione un Firewall Software che ammetta le connessioni specificati e ne rifiuti le altre. Il Service Pack di Windows Server 2003 mette a disposizione strumenti per mettere in sicurezza un server tra cui consiglio di utilizzare per ogni interfaccia di rete un Firewall. Una volta installato occorre andare a definire i servizi per i quali si vuole lasciare in ascolto le porte, per le altre connessioni il firewall rifiuterà la connessione e invierà un evento (nel registro alla voce security) di accesso negato per quella porta per quel servizio ecc…

NB: Se si utilizza Windows Server 2003 Service Pack 1 è possibile analizzare la protezione del server utilizzando il nuovo strumento "Analisi e configurazione della protezione" (Security Configuration Wizard).

Link Utili
http://www.microsoft.com/technet/security/prodtech/windowsserver2003.mspx