Lo scopo di questa sezione è di fornire delle indicazioni utili per le
impostazioni delle policies di sistema in modo da definire una politica di
accesso alle risorse tale da ridurre al minimo le possibili vulnerabilità o le
lacune derivanti di regola da una installazione standard del sistema
operativo.
Tutte le indicazioni date di seguito fanno riferimento ad una
macchina configurata come server web stand-alone cioè non facente di alcun
dominio Windows 2000.
Local Security Policy
Una volta terminata l'installazione del sistema operativo è possibile
regolamentare molti degli aspetti relativi alla sicurezza del sistema accedendo
alla finestra Local Security Settings e ridefinendo le impostazioni di
default per le varie aree Account, Local, Public Key ed IpSec (Figura 1).
Peraltro, oltre all'utilizzo della interfaccia grafica, è possibile impostare
le politiche di sicurezza anche attraverso l'uso di template, definiti mediante
il Security Template snap-in, che rappresentano un modo semplice di
raggruppare tutti gli attributi che complessivamente formano una policy.
Un principio fondamentale da tenere bene a mente è quello del
bilanciamento tra le esigenze di sicurezza e la fruibilità del sistema: in base
a questo principio l'impostazione di regole estremamente rigide non giova al
sistema quando la loro rigidità è tale da renderlo poco fruibile.
Prima di cambiare le impostazioni standard
è sempre una buona idea salvare le impostazioni correnti selezionando la voce di
interesse, cliccando con il pulsante destro del mouse e scegliendo la voce di
menù Export List.
Inoltre tutte le impostazioni suggerite in questa
sezione dovrebbero essere preventivamente valutate in un ambiente di test per
identificare e risolvere eventuali malfunzionamenti e, soltanto al termine di
questa fase, essere riprodotte in un ambiente di
produzione.
Security Accounts Manager (SAM)
Uno dei componenti principali di Windows 2000 è il SAM detto anche Security
Accounts Manager all'interno del quale sono conservati gli account degli utenti
di sistema e gli hash delle loro password.
Per impostazione predefinita
il SAM è criptato usando una chiave di startup memorizzata nel sistema locale.
Questa chiave contiene a sua volta un codice hash che viene processato durante
la fase di avvio in modo che il database degli account sia decifrato e caricato
in memoria dove rimane a disposizione del sistema.
La locazione della
chiave di criptazione può essere cambiata tramite l'utility syskey.exe
scegliendo l'opzione Update. Questo strumento consente in particolare di
memorizzare la chiave in un floppy disk di cui naturalmente vanno create
molteplici copie di backup da conservare in un luogo sicuro considerato che, in
mancanza del floppy, il sistema, non potendo decifrare il SAM, rifiuterà
qualsiasi tipo di operazione e rimarrà pertanto inutilizzabile.
Sui
sistemi che fungono da domain controller Windows 2000 il SAM è contenuto
all'interno di Active Directory mentre su tutti gli altri sistemi il SAM
continua ad essere memorizzato nel registro alla posizione
HKEY_LOCAL_MACHINESAM ed in un file locale, bloccato dal sistema, all'interno
della cartella %systemroot%system32config.
Peraltro va ricordato che anche
in Windows 2000 come nel precedente Windows NT 4 il SAM continua ad essere
soggetto alla stessa tipologia di attacchi che mirano tutti a catturare una
copia di tale database tramite:
- il boot del sistema con un floppy disk e la lettura del filesystem NTFS con
programmi del tipo NTFSDOS; - l'utilizzo della copia di backup del SAM creata con l'utility Rdisk (ora
NTBackup) posta dentro la directory %systemroot%repair; - l'estrazione diretta degli hash dal file del SAM tramite programmi come
L0pthcrack; - la cattura degli hash scambiati durante i meccanismi di challenge/response
che presiedono all'autenticazione degli utenti in rete utilizzando il programma
L0pthcrack
Account utente
La definizione di regole ben precise assume un ruolo chiave per il
mantenimento di adeguati livelli di sicurezza del sistema ed è in grado di
evitare una serie di pericolosi attacchi che tentano di sfruttare debolezze o
lacune concernenti alcuni aspetti della gestione degli account. Le regole minime
da seguire sono le seguenti:
- disabilitare tutti gli utenti non necessari (es: Guest, TsInternetUser se
non si utilizza il terminal server); - rinominare l'account amministratore 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;
Password
La violazione delle password è senza dubbio il più classico dei modi in cui
un sistema può essere compromesso. Il procedimento che porta alla scoperta di
una password può essere caratterizzato dall'impiego di tecniche differenti
(attacchi a forza bruta, basati su dizionario, ingegneria sociale, etc...) ma
ciò assume rilevanza soltanto per evidenziare due aspetti salienti: l'assoluta
necessità di adottare password caratterizzate da una certa complessità e una
politica che imponga la modifica obbligatoria delle password ad intervalli di
tempo opportuni. Tutte le password dovrebbero comunque rispettare una serie di
requisiti minimi:
- avere una lunghezza compresa tra 6 a 14 caratteri;
- contenere numeri e lettere in alternanza ed utilizzare minuscole e maiuscole
insieme; - 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 i comuni vocaboli presenti nei dizionari, come nomi di
persone, posti o date;
Inoltre occorre verificare attentamente le seguenti impostazioni presenti
nella sezione Account Policies | Password Policy del Local Security
Policy:
-
Enforce password history: determina il
numero di nuove password che l'utente deve cambiare prima di poter utilizzare
una vecchia password (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);
Per avere un riscontro pratico sulla facilità o meno con la quale è possibile
identificare una password che non rispetta i requisiti appena citati si può far
uso di uno dei tanti strumenti disponibili in rete (ad. es. per le piattaforme
Windows il miglior password cracker è senza dubbio L0phtCrack disponibile
all'indirizzo http://www.atstake.com).
Blocco degli utenti
Una delle caratteristiche del sistema operativo che è possibile utilizzare
contro gli attacchi che tentano di indovinare le password è quella concernente
il blocco degli utenti dopo un certo numero di tentativi falliti di
login.
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 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 login
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 login (valore
consigliato 30 minuti);
Filesystem
Windows 2000 supporta oltre ad NTFS anche i file system di tipo FAT e FAT32
ma questi ultimi non consentono un elevato livello di sicurezza per cui è di
fondamentale importanza che tutti i dischi del server siano formattati facendo
uso di NTFS.
Un altro accorgimento consiste nell'installare il sistema
operativo in una directory differente da quelle proposta come default
(WINNT) in modo da rendere più difficoltosa l'esecuzione di attacchi che danno
per scontata la presenza della cartella WINNT.
Subito dopo l'installazione è
opportuno azzerare i privilegi esistenti per tutte le partizioni logiche di
tutti i dischi in modo da rimuovere ogni occorrenza del gruppo Everyone
ed impostare i privilegi così come indicati in tabella, utilizzando l'opzione di
che consente la propagazione dei nuovi privilegi a tutti i file e le
sottocartelle:
Administrators |
Authenticated |
Creator |
System |
|
Full Control |
X |
X |
X |
|
Modify |
X |
|||
Read and Execute |
X |
|||
List Folder Contents |
X |
|||
Read |
X |
|||
Write |
X |
Inoltre è importante rimuovere tutti i permessi per il gruppo
Authenticated User relativi alla directory di sistema ed agli oggetti in
essa contenuti dando invece tale gruppo i permessi sotto elencati per le
relative cartelle:
Full |
Modify |
Read |
List |
Read |
Write |
|
Documents and Settings |
X |
X |
X |
X |
X |
|
WinNTInstaller'> |
X |
X |
X |
X |
X |
|
WinNT System32Spool |
X |
X |
X |
X |
X |
|
WinNT System32Config |
X |
X |
X |
X |
X |
|
WinNT Repair |
X |
X |
X |
X |
X |
|
WinNTSystem32SpoolDrivers |
X |
X |
X |
Al termine di queste due fasi è possibile impostare i permessi per le
cartelle dei vari utenti nel modo più appropriato.
Condivisioni amministrative
In Windows 2000 ogni partizione logica di ciascun disco è caratterizzata
dalla presenza di una condivisione sulla root che assume un nome del tipo
<NomeDrive>$ (es: C$ o D$). Inoltre in aggiunta a quelle
appena menzionate esistono altre condivisioni speciali:
-
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%SYSTEM32SPOOLDRIVERS
- 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;
Queste sono in realtà condivisioni amministrative e non standard tanto che
esse risultano invisibili all'utente ignaro della loro esistenza ma non ad un
eventuale aggressore che conosca il fatto suo.
In effetti chiunque sia
a conoscenza del nome e della password di un utente appartenente a gruppi con
privilegi amministrativi o elevati (ad es. membro del gruppo Backup Operators)
può connettersi facilmente ad una condivisione di questo genere e guadagnare
accesso agli oggetti in essa contenuti.
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.
Nonostante questo accorgimento le condivisioni saranno
nuovamente impostate in modo automatico alla successiva ripartenza del
server.
Un altro modo per disabilitare queste condivisioni consiste nel
disabilitare il servizio di sistema Server in modo da impedire a
chiunque di connettersi da remoto alla risorsa condivisa.
Ovviamente anche se
queste operazioni servono a rendere il sistema più sicuro occorre prestare
particolare attenzione in quanto potrebbe venire compromesso il normale
funzionamento di alcuni programmi.
Creazione di condivisioni
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.
Poichè questa impostazione è
troppo lacunosa in termini di sicurezza è necessario sostituire il gruppo
Everyone con quello Authenticated Users.
La seguente
tabella riepiloga le azioni possibili su di una risorsa condivisa sulla base dei
permessi assegnati:
Azione |
Full |
Change |
Read |
Visualizzazione del nome dei file e dei subfolder |
X |
X |
X |
Navigazione attraverso i subfolder |
X |
X |
X |
Visualizzazione dei dati nei file ed esecuzione degli |
X |
X |
X |
Aggiungere file e subfolder al folder condiviso |
X |
X |
|
Modifica dei files |
X |
X |
|
Cancellazione dei subfolders e dei files |
X |
X |
|
Modifica dei permessi |
X |
||
Acquisizione della proprietà |
X |
Registro di configurazione
In linea di massima le impostazioni di default di Windows 2000 per quanto
concerne il registro di configurazione sono sufficienti.
In ogni caso un
ulteriore livello di sicurezza deriva dalla disabilitazione del servizio di
sistema Remote Registry Service in modo da impedire l'accesso da remoto.
Auditing
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 seguenti impostazioni:
Azione |
Evento |
Success |
Failure |
Audit Account Logon Events |
Logon o logoff ad un computer remoto |
X |
X |
Audit Account Management |
Creazione,cancellazione, o modifica di uno user account |
X |
X |
Audit Directory Access |
Accesso di un utente ad un oggetto di un Active directory |
||
Audit Logon Events |
Logon o logoff / connessione di rete al computer locale |
X |
X |
Audit Object Access |
Accesso di un utente ad un oggetto di sistema (es: file, |
|
X |
Audit Policy Change |
Modifica delle policies |
X |
X |
Audit Privilege Use |
Utilizzo da parte di un utente dei suoi privilegi |
X |
X |
Audit Process Tracking |
Attivazione dei processi, chiusura dei processi, etc.. |
||
Audit System Events |
Restart o Shutdown del sistema |
X |
X |
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.
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.
Successivamente cliccando sul tasto Add sarà possibile scegliere per quali
utenti e per quali eventi eseguire l'auditing.
Un altro elemento importante su cui effettuare l'auditing è la chiave di
registro HKEY_LOCAL_MACHINESAM
(REGEDT.EXE|Security|Permissions|Advanced).