Hardening di Windows 2000 e IIS 5

Avvertenze

Prima di mettere in pratica i consigli e le impostazioni illustrate nel presente documento è necessario leggere con cura le seguenti avvertenze:

  1. questo documento è soltanto una guida contenente la descrizione di una serie di impostazioni e strumenti il cui utilizzo è raccomandato per migliorare la sicurezza di un classico sistema connesso alla rete Internet ed, in quanto tale, esso non vuole e non è destinato a sostituire le policies e le practices di sicurezza ben strutturate e raccomandate dal produttore del sistema operativo;
  2. questa guida non è diretta a risolvere e non prende in considerazione le problematiche di configurazione specifiche per un determinato sito;
  3. le impostazioni descritte nel presente documento fanno esclusivo riferimento al sistema operativo Windows 2000 Server e non devono essere applicate ad un sistema operativo differente per tipo o versione;
  4. è fortemente sconsigliato applicare le impostazioni descritte nel presente documento senza prima averle applicate e verificate con successo in un ambiente di test non operativo;
 

Installazione di Windows 2000 Server

La fase di installazione del sistema operativo riveste una importanza cruciale nell’intero processo di hardening di un server web poiché durante questa fase devono essere prese delle decisioni che possono influire in maniera decisiva sulla sicurezza dell’intero sistema.
Prima di avviare l’installazione occorre compiere alcune verifiche ed, in particolare, accertare:

  1. che l’hardware a disposizione sia compatibile con Windows 2000 (consultare l’HCL detto anche elenco delle compatibilità hardware disponibile sul CD-ROM d’installazione, nella cartella drive:\support\hcl.txt, oppure il sito http://www.microsoft.com/hcl;
  2. che i driver delle varie periferiche hardware siano certificati: ciò serve a garantire la loro qualità ed evita quei fastidiosi malfunzionamenti che possono provocare una situazione di instabilità del sistema pericolosa sotto il profilo della sicurezza;
  3. che le principali risorse di sistema soddisfino una serie di requisiti minimi:

In realtà questi sono soltanto requisiti minimi e, come tali, non possono essere certamente considerati soddisfacenti per un server web. Al contrario tali requisiti dovrebbero essere tarati in modo tale da garantire la scalabilità del sistema.

Partizionamento dei dischi

Una delle fasi più delicate del processo di installazione è quella concernente il partizionamento dei dischi e la scelta del tipo di file system da montare.
Partendo dal presupposto di una situazione ideale rappresentata dalla presenza di un sistema con due dischi rigidi differenti, è consigliabile suddividere il primo disco in due partizioni logiche, una dedicata al sistema operativo e l’altra agli applicativi. Viceversa su un secondo disco è consigliabile memorizzare soltanto i dati degli applicativi.
In entrambe le situazioni per poter usufruire delle caratteristiche di sicurezza, efficienza e compressione dei dati fornite da Windows 2000 bisogna creare le partizioni utilizzando esclusivamente il file system NTFS.

Avvio del setup

Inizialmente il programma di setup viene eseguito in modalità a carattere onde permettere di eseguire alcune operazioni preliminari (come ad esempio il partizionamento dei dischi).
In ogni caso durante tale fase le operazioni più salienti sotto il profilo della sicurezza sono: la scelta della password di amministratore, la selezione dei componenti software da installare, la configurazione del TCP/IP e la scelta se includere o meno il server in un dominio Windows.
Una considerazione estemporanea merita invece l’assegnazione al server di un nome che deve avvenire nel rispetto delle seguenti regole:

Scelta della password amministrativa

La scelta di una password per l’utente amministratore è senza dubbio un passaggio cruciale che spesso non viene tenuto nella dovuta considerazione.
Infatti se è vero che la password amministrativa può essere cambiata in un qualsiasi momento successivo al completamento della installazione, è anche vero che, nella migliore delle ipotesi, tale cambiamento non avverrà prima di qualche mese per cui è di fondamentale importanza che il server sia protetto da una password iniziale davvero robusta.
Il primo presupposto affinché si possa parlare effettivamente di robustezza è dato dalla lunghezza della password che in Windows 2000 può essere di 127 caratteri massimo.
La lunghezza tuttavia non è di per sé una garanzia sufficiente se essa non si accompagna ad altri presupposti.
Sostanzialmente possiamo affermare che una password è tanto più robusta quanto più essa non sia riconducibile ad alcun tipo di vocabolo presente in un comune dizionario (ciò pone al riparo da determinate tipologie di attacco delle password dette per l’appunto dictionary-based proprio perché prendono spunto da un set di vocaboli di uso comune).
L’unico rimedio quindi consiste nell’impostare una password in modo che essa comprenda non soltanto lettere (possibilmente maiuscole e minuscole insieme) e numeri ma anche simboli non stampabili come i seguenti:

` ~ ! @ # $ % ^ & * ( ) _ + - = { } | [ ] \ : " ; ' < > ? , . /

Selezione del software

Il principio fondamentale è quello di installare soltanto i componenti assolutamente necessari per il funzionamento del server tralasciando invece tutti gli altri (Figura 1).
L’adozione di questo tipo di approccio presenta alcuni vantaggi noti: innanzitutto ad un minor numero di componenti corrisponde una minore probabilità che qualcuno di questi possa essere affetto da un bug che influenza la sicurezza del sistema; in secondo luogo ciò produce un impatto positivo sulle risorse di sistema in quanto queste ultime non vengono appesantite attraverso l’esecuzione di software “inutile”; in terzo luogo un beneficio esiste anche sotto il profilo della amministrazione del sistema che risulta facilitata dalla presenza di pochi componenti.
Infine non va dimenticato che, operando in questo modo, non viene preclusa la possibilità di aggiungere un componente in una fase successiva alla prima installazione è cioè quando effettivamente si prospetta la necessità di un suo utilizzo.

Figura 1 - Scelta dei componenti da installare

Configurazione del TCP/IP

Le considerazioni che seguono sulla configurazione della suite TCP/IP hanno valore soltanto per quanto concerne l’interfaccia di rete pubblica del server web.
Durante l’installazione, giunti alla fase di configurazione dei protocolli di rete, occorre selezionare l’opzione Custom nella finestra di dialogo Network Settings e, quindi, deselezionare tutte le voci con la sola esclusione di Internet Protocol (TCP/IP) e Client for Microsoft Networks.
Successivamente è necessario richiamare la finestra delle proprietà (Figura…) del protocollo IP per l’inserimento di alcuni parametri fondamentali quali l’indirizzo, la maschera di sottorete, il default gateway nonché l’indirizzo del server DNS primario (a questo proposito rivolgersi al proprio fornitore di connettività)
Inoltre cliccando su Advanced e scegliendo la scheda Wins è necessario disabilitare la casella Enable LMHOSTS Lookup e selezionare l’opzione Disable NetBios over TCP/IP (Figura 2).

Figura 1 - Proprietà del TCP/IP

In sostanza queste impostazioni evitano che il server si trovi esposto, sul lato pubblico delle connessioni, ad una serie di debolezze intrinseche del protocollo NetBios su TCP/IP (nonché di SMB/CIFS) che potrebbero aumentare notevolmente i rischi di una sua compromissione.

Dominio o workgroup ?

L’ultimo passaggio rilevante consiste nello stabilire se il server debba essere configurato in modo da essere parte di un dominio Windows oppure se debba funzionare in modalità standalone.
A tale proposito va detto che la soluzione migliore è senza dubbio la seconda poiché, in caso di effettiva compromissione dell’host, essa impedisce che l’eventuale aggressore possa sfruttare le relazioni di dominio per guadagnare l’accesso a quest’ultimo ed agli altri sistemi che di esso fanno parte.

Attività post-installazione

Una volta terminata l'installazione occorre compiere altre due attività: innanzitutto l'installazione del Microsoft High Encryption Pack che innalza il livello di sicurezza del server a 128 bit ed, in secondo luogo, l'applicazione dell'ultimo Service Pack e degli hot fixes rilasciati .
È importante che queste attività siano effettuate prima di iniziare la configurazione vera e propria del sistema (creazione di accounts, definizione di policies, etc..).
Inoltre è da tenere in considerazione che gli hot fixes rilasciati da Microsoft vanno applicati soltanto in caso di effettiva necessità.

 

Configurazione dei servizi

Il passo da compiere immediatamente dopo l'installazione del sistema è quello concernente la configurazione dei servizi.
Questa attività si rende necessaria poichè per impostazione predefinita molti servizi vengono avviati in modo automatico e quindi consumano, magari inutilmente, risorse preziose oppure vengono eseguiti nel contesto dell'account di sistema ed allora espongono il server ad una serie di rischi in caso di compromissione.
In effetti un servizio pregiudicato che gira in un contesto di privilegi molto elevato comporta, quasi inevitabilmente, l'acquisizione da parte dell'aggressore di un potere di controllo della macchina pressocchè assoluto con tutte le conseguenze che da ciò possono derivare; al confronto uno stesso servizio, attentamente configurato in modo da non disporre di contesti privilegiati "superflui", pur essendo una indubbia minaccia è ben lontano dal rappresentare una autentica "voragine" per il sistema.

Linee guida

La configurazione dei servizi è una fase molto importante ed in quanto tale dovrebbe essere posta in essere tenendo bene a mente due principi fondamentali:

Un dilemma che spesso si pone è quello concernente l'alternativa tra la semplice disabilitazione dei servizi non necessari oppure la loro effettiva cancellazione dal database dei servizi.
Peraltro, sebbene quest'ultima soluzione sia quella che offre le maggiori garanzie in termini di sicurezza, va detto tuttavia che essa si pone come poco pratica poichè obbliga ad una successiva reinstallazione del servizio qualora insorga la necessità di utilizzarlo.

Identificazione dei servizi

La scelta dei servizi da abilitare non può prescindere dal caso concreto. Tuttavia applicando il principio dell'abilitazione del minor numero di servizi possibile la tabella sottostante riporta, per un server web stand-alone con livello di sicurezza medio/alto, una lista di servizi con l'indicazione del relativo stato:

Servizio
Abilitato
Alerter
Application Management
Clipbook
COM+ Event System
Computer Browser
DHCP Client
Distributed File System
Distributed Link Tracking Client
Distributed Link Tracking Server
DNS Client
X
EventLog
X
Fax Service
File Replication
Ftp Publishing Service
IIS Admin Service X
Indexing Service
Internet Connection Sharing
Intersite Messaging
Logical Disk Manager
X
Logical Disk Manager Administrative Service
Kerberos Key Distribution Center
Network Connections
Messenger
Net Logon
Network DDE
Network DDE DSDM
NT LM Service Provider
Performance Logs and Alerts
Plug & Play X
Print Spooler
Protected Storage X
QoS RSVP
Remote Access Auto Connection Manager
Remote Access Connection Manager
Remote Procedure Call
Remote Procedure Call Locator
Remote Registry Service
Routing and Remote Access
RunAsService
Security Accounts Manager
X
Server
Simple TCP/IP Services
System Event Notification
X
Task Scheduler
TCP/IP NetBIOS Helper
Telephony
Telnet
Terminal Services
Utility Manager
Windows Installer
Windows Time
Windows Management Instrumentation
Windows Management Instrumentation Driver Extension
Workstation
World Wide Web Publishing Service X

È importante che le impostazione citate siano verificate dapprima in un ambiente di test e, soltanto dopo questa fase, riprodotte eventualmente in un ambiente di produzione.

Impostazione delle policies di sistema

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).

Figura 1 - Pannello di controllo delle policies

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_MACHINE\SAM ed in un file locale, bloccato dal sistema, all'interno della cartella %systemroot%\system32\config.
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:

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:

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:

Inoltre occorre verificare attentamente le seguenti impostazioni presenti nella sezione Account Policies | Password Policy del Local Security Policy:

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:

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 Users

Creator Owner

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 Control

Modify

Read and Execute

List Folder Contents

Read

Write

\Documents and Settings

X

X

X

X

X

\WinNT\Installer'>

X

X

X

X

X

\WinNT \System32\Spool

X

X

X

X

X

\WinNT \System32\Config

X

X

X

X

X

\WinNT \Repair

X

X

X

X

X

\WinNT\System32\Spool\Drivers

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:

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 Control

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 eseguibili

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 o un gruppo. Rename 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, directory,chiavi di registro, stampanti e ecc..)

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.

Figura 2 - Impostazione dell'auditing sul filesystem

Successivamente cliccando sul tasto Add sarà possibile scegliere per quali utenti e per quali eventi eseguire l’auditing.

Figura 3 - Utenti ed eventi da monitorare

Un altro elemento importante su cui effettuare l’auditing è la chiave di registro HKEY_LOCAL_MACHINE\SAM (REGEDT.EXE|Security|Permissions|Advanced).


Installazione e configurazione di IIS 5

Meglio noto con l’acronimo di IIS, Internet Information Service è oggi tra i web server più utilizzati e diffusi. La versione 5 ha subito un sostanziale restyling dal punto di vista dell’architettura tanto da essere divenuta un componente strettamente integrato con i sistemi operativi Windows 2000 Advanced Server, Server e, sia pure con qualche limitazione Professional.

La prima conseguenza di un così grande successo è che tale sistema risulta essere un oggetto di un’attenzione particolare da parte dell’universo hacker e di conseguenza risulta molto sensibile alle problematiche inerenti la sicurezza informatica.

In questa sezione ci occuperemo pertanto degli aspetti concernenti l’installazione,la configurazione e l’amministrazione di IIS 5.0 dedicando una attenzione particolare alle precauzioni da adottare per garantire un adeguato livello di sicurezza del sistema.

Al server IIS sono generalmente associati,oltre al servizio WWW, altri servizi standard quali FTP, SMTP, NNTP ed altri specifici non presi in considerazione in quest’articolo, quali Certificate Server, Index Sever e Microsoft Transaction Server. L’insieme di questi servizi costituisce una piattaforma integrata e completa per le applicazioni di e-business.

Installazione

È un luogo comune errato quello secondo cui la sicurezza informatica consiste unicamente nell’adozione di misure idonee a proteggersi contro gli attacchi esterni.

Non è possibile infatti sapere con esattezza da che cosa proteggersi e con quali mezzi se non viene condotta una attenta analisi delle problematiche la quale oltretutto è di grande ausilio per evitare di incorrere in scelte sbagliate di cui poi ci si può pentire.

Questo discorso, sia pure adattato, ha una sua rilevanza anche per ciò che concerne l’installazione di componenti software ed, in particolare, di quelli che in qualche modo possono impattare sulla sicurezza intrinseca di un sistema operativo come per l’appunto un server web. Pertanto di seguito vengono elencati per semplicità di trattazione i passi da compiere per giungere ad una corretta installazione di IIS 5:

Configurazione e Amministrazione

Dopo l’installazione si passa alla fase di gestione del sistema che comprende all’inizio quella di prima configurazione e poi a regime quella di amministrazione. Anche in questo caso per chiarezza di trattazione descriviamo il percorso da seguire per rendere sicura una installazione standard di IIS 5.0:

Figura 1 - Proprietà dell'account IIS
Figura 2- Permessi di accesso home del nuovo sito

Tipo

Directory di esempio

Dati di esempio

Permssi NTFS

Permessi IIS 5

Contenuto Statico

\Inetpub\wwwroot\home

\Inetpub\wwwroot\images

\Inetpub\ftproot\ftpfiles

HTML, immagini, download FTP, etc.

Administrators (Full Control);
System (Full Control);
WebAdmins (Read & Execute,Write, Modify);
Authenticated Users (Read &Execute);
Anonymous (Read & Execute);

Read

FTP Upload

\Inetpub\ftproot\dropbox

Directory used as a place for users to store documents for review prior to the Admin making them available to everyone

Administrators (Full Control);
WebAdmins or FTPAdmins (Read & Execute, Write, Modify);
Specified Users (Write)

Write

Script

\Inetpub\wwwroot\scripts

.asp

Administrators (Full Control);
System (Full Control);
WebAdmins(Read & Execute,Write, Modify);
Anonymous (Read & Execute)

Read &Script

Altri eseguibili e file include

\Inetpub\wwwroot\
executables

\Inetpub\wwwroot\include

.exe, .dll, .cmd, .pl

.inc, .shtml, .shtm

Administrators (Full Control);
System (Full Control);

Read & Scripts, Executables



L’attività di logging è attiva di default ma in relazione ad essa conviene comunque:

Figura 3- Impostazione funzionalità di log

Tipo di estensione

Funzione

.htr

Web Password Reset

.idc

Internet Database Connector

.stm,.shtm,.shtml

Server Side Include

.printer

Internet printing

.cer

Represents a certificate

.cdx

Active Channel File Definition

.asa

Active Server Application

.htw,.ida,.idq

Index Server

 

Implementazione delle politiche di backup

Ogni sistema informatico è caratterizzato dalla presenza al suo interno di dati più o meno sensibili. La natura di queste informazioni è ovviamente variabile in relazione alla funzione che in concreto il sistema svolge ma, in ogni caso, la loro importanza evidenzia la necessità di predisporre delle misure idonee ad impedire la loro distruzione e/o danneggiamento e, comunque, a rendere possibile il loro ripristino in tempi brevi senza che questo comporti delle conseguenze negative sotto il profilo economico, legale, o puramente di immagine.

A tal fine l'esecuzione periodica e programmata di procedure di backup consente di far fronte agevolmente a tutte quelle situazioni in cui sussiste una esigenza di immediato recupero dei dati a prescindere dalla causa della loro alterazione e/o perdita (virus, guasti hardware, attacchi informatici, ecc...).

Naturalmente per far sì che una politica di backup sia realmente efficace occorre che esse sia ben congegnata in relazione al sistema da proteggere.

In questa sezione affronteremo pertanto gli aspetti più salienti di questa tematica soffermandoci sullo strumento ntbackup messo a disposizione del sistema operativo Windows 2000.

Individuazione dei dati

La prima esigenza che si pone in concreto è quella relativa alla individuazione dei dati da proteggere. Poichè non è pensabile di sottoporre a backup ogni volta tutti i dischi del server è opportuno individuare i dati che necessitano di maggiore protezione (indubbiamente per un server web, come nel nostro caso, una parte considerevole di questi dati è rappresentata dalle pagine html,dagli script e da quant'altro contribuisce a formare nel complesso le risorse del server).
Inoltre, anche se ad intervalli di tempo più lunghi, è sempre utile creare una fotografia dello stato del sistema (file di avvio e di configurazione, registro di configurazione) ed un disco di ripristino di emergenza che potrebbe essere utilizzato nel caso di impossibilità di avviare il sistema.

Scelta del supporto

La scelta del tipo di supporto da utilizzare per la copia dei dati è in genere dipendente dalla quantità di questi ultimi e dal tempo durante il quale essi devono essere conservati.
Fortunatamente l'odierna tecnologia mette a disposizione un gran numero di prodotti dalle caratteristiche e dai prezzi adatti alle più svariate esigenze.
La cosa più importante è effettuare una valutazione tenendo conto oltre che delle proprie esigenze anche di tutti gli aspetti relativi alla sicurezza (ad esempio, se possibile, prediligere supporti di tipo removibile da custodire in luoghi sicuri e/o supporti del tipo "write once read many" che sono intrinsecamente più sicuri di altri e così via).

Schedulazione

L'intervallo di tempo che deve trascorrere tra l'esecuzione di successive procedure di backup va tarato in base alle esigenze concrete, alla dinamicità con la quale i dati da conservare vengono modificati ed alla loro importanza.

Utilizzo di ntbackup

Questa utility del sistema operativo permette di soddisfare le esigenze di memorizzazione e ripristino dei dati in modo più che soddisfacente sia utilizzando la sua interfaccia grafica sia attraverso la più classica linea dei comandi (anche se in quest'ultimo caso con qualche limitazione).
Anche se in commercio esistono prodotti software certamente più sofisticati e dalla caratteristiche migliori il fatto di poter contare su una applicazione già integrata nel sistema operativo non è da sottovalutare. Sostanzialmente l'applicazione consente di eseguire le seguenti operazioni:

Per eseguire un backup di file e/o di cartelle è necessario esserne i proprietari oppure avere sugli stessi i privilegi di Lettura, Lettura/esecuzione, Modifica o Controllo completo, oppure appartenere al gruppo locale degli amministratori o degli operatori di backup (Backup Operators).
Indubbiamente l'operazione più corretta dal punto di vista della sicurezza consiste nel creare un utente apposito ed assegnarlo al gruppo degli operatori di backup.
Inoltre è opportuno limitare l'accesso al file di backup selezionando la casella di controllo Consenti l'accesso ai dati di backup solo al proprietario e all'amministratore nella finestra di dialogo Informazioni sul processo di backup.

Esecuzione del backup

Per avviare il backup attraverso l'interfaccia grafica del programma è necessario:

È possibile scegliere tra cinque differenti tipologie di backup:

Figura 1 - Selezione di file e cartelle

L'utilizzo di una combinazione di backup normali e incrementali richiede una quantità minima di spazio di archiviazione e risulta di conseguenza il metodo più rapido; tuttavia, poiché è possibile memorizzare il set di backup in diversi dischi o nastri, l'operazione di ripristino può richiedere molto tempo e risultare difficoltosa.
Viceversa l'utilizzo di una combinazione di backup normali e differenziali richiede una quantità di tempo superiore, soprattutto se si tratta di dati soggetti a frequenti modifiche, ma risulta più facile ripristinare i dati in quanto il set di backup viene in genere memorizzato solo in pochi dischi o nastri.

Figura 2 - Impostazione delle opzioni di backup

Ripristino

Per eseguire una operazione di ripristino dei dati occorre:

Figura 3 - Selezione dei dati da ripristinare

Utilizzo della linea di comando

L'utility ntbackup può essere richiamata anche da un file batch senza dover necessariamente ricorrere alla interfaccia grafica ma ciò comporta con due limitazioni principali:

In ogni caso per un elenco completo dei parametri utilizzabili da linea di comando è possibile consultare la guida in linea.


Applicazione di hot fix e patch

Applicazione di hot fix e patch
Nessun server web può dirsi veramente al sicuro se ad esso non vengono applicati periodicamente gli hot fix e le patch rilasciate dal produttore del software.
Per hot fix si intende una porzione di codice diretta a risolvere uno o più bachi specifici relativi in genere alla sicurezza di un sistema informatico. Gli hot fix insieme con le patch vanno poi a costituire un service pack.

Per rendere più agevole il difficile lavoro di ricerca la Microsoft ha predisposto una applicazione gratuita chiamata HFNetChk che permette di verificare quali hotfix e/o patch sono già state installate e quali devono invece essere ancora applicate per rendere più stabile e sicuro il sistema (è anche possibile scaricare un Hotfix report che, una volta installato, permette di lanciare automaticamente HFNetChk).
Il programma funziona in una tipica finestra DOS ed automaticamente si connette al sito della Microsoft dal quale preleva un file in formato XML chiamato mssecure.xml contenente la lista completa dei rilasci.

L'applicativo esegue poi una serie di controlli al termine dei quali genera un report in formato html che indica il numero della versione delle patch non installate sia per la parte riguardante il sistema operativo, sia per il software applicativo come Internet information Services e Internet Explorer, oltre naturalmente agli indirizzi web dai quali è possibile scaricarle (vedi Figura 1).

Figura 1 - Un report generato dal software HFNetChk

Strumenti a protezione della integrità del filesystem

I meccanismi diretti a rendere possibile l'identificazione dei cambiamenti che intervengono a livello di filesystem possono a tutti gli effetti ritenersi parte integrante di qualsiasi strategia di sicurezza che si rispetti.

Questo per una ragione molto semplice: infatti, in caso di compromissione di un host, una delle prime attività poste in essere è quella che consiste nell'installare versioni "troianizzate" di alcuni importanti eseguibili di sistema o modificare importanti file di configurazione oppure installare altri programmi che creano nel sistema delle backdoor.

In questo capitolo analizzeremo il funzionamento di uno dei più conosciuti strumenti di verifica dell'integrità del filesystem vale a dire Tripwire ed, in particolare, la versione 2.2.1 per Windows NT/2000.

Tripwire è stato originariamente sviluppato per la piattaforma Unix da Gene Kim ed Eugene Spafford agli inizi degli anni 90 ma successivamente è stato portato anche su altre piattaforme.

Il software, di carattere commerciale e non open-source, può essere acquistato contattando direttamente Tripwire Inc. (http://www.tripwire.com oppure http://www.tripwiresecurity.com).

Tripwire rientra a pieno titolo nella categoria degli HIDS (Host Based Intrusion Detection System) poichè di norma viene installato sull'host a protezione del quale è posto; tuttavia esso focalizza il suo funzionamento sul filesystem e non sul lato delle connessioni di rete e dello strato TCP/IP.

L'applicazione acquisisce inizialmente una fotografia (snapshot) dei file prescelti per il monitoraggio e li cataloga raccogliendo per ciascuno di essi una impronta digitale calcolata tramite degli algoritmi di hash cd. one-way in modo da essere in grado di identificare in qualsiasi momento i cambiamenti intervenuti in termini di aggiunta e/o cancellazione di file oppure di modifica del loro contenuto.

Qualora questi mutamenti siano avvenuti al di fuori di particolari condizioni essi vengono notificati in vario modo (report, email) all'amministratore che può confermarli, aggiornando contestualmente il database interno delle signatures, oppure accorgersi che si tratta di modifiche non autorizzate e cercare quindi di ripristinare la situazione precedente.

Installazione di Tripwire

L'installazione del software non presenta particolari problematiche anche perchè esso viene distribuito sotto forma di archivio dotato di una propria procedura di setup.
Durante questa fase vengono poste all'utente alcune domande concernenti aspetti specifici della configurazione che, peraltro, possono essere modificati in qualsiasi momento e , soprattutto, viene richiesta l'introduzione di una frase ("passphrase") che verrà utilizzata dal software per firmare digitalmente i file utilizzati dall'applicativo.

Funzionamento

L'architettura di tripwire basa il suo intero funzionamento su un insieme di file ciascuno dei quali assolve ad un compito specifico:

Prima di cominciare è assolutamente necessario modificare il file delle policies ed a questo proposito si può prendere spunto dal file twpol.txt, installato insieme con il software, che contiene un insieme di regole abbastanza generico.

Questo file dunque deve essere modificato con qualsiasi editor di testo in modo da raccogliere un insieme di regole piuttosto specifico ed adatto alle reali esigenze del server da proteggere (consultare l'esauriente manuale in linea per una spiegazione del significato delle varie proprietà ed attributi delle regole).

Il risultato di questa modifica può essere salvato in un altro file di testo (magari con un nome significativo) e deve essere firmato digitalmente ed installato come nuovo file di policies prima di inizializzare il database interno. A tal fine aprendo una finestra di prompt occorre digitare il seguente comando :

twadmin --create-polfile <nome del file di testo delle policies>

Il processo avviato provvederà ad installare il nuovo file nella cartella indicata come destinataria nel file di configurazione. Dopo questa prima fase è possibile inizializzare il database interno digitando il comando:

tripwire --init-verbose

In questo modo verrà creato il database delle signatures all'interno della cartella indicata dalla variabile DBFILE del file di configurazione.

Verifica dell'integrità ed aggiornamento del database

Data la sua importanza è opportuno che la verifica dell'integrità del filesystem sia schedulata come attività periodica. Il periodo temporale che deve intercorre tra le successive verifiche dipende naturalmente dalle reali esigenze ma, in linea di principio, si può dire che una verifica giornaliera è alquanto opportuna e dovrebbe porre al riparo da spiacevoli sorprese.
Il processo può essere avviato lanciando da una finestra di prompt (o attraverso un opportuno file batch) il seguente comando:

tripwire --check

Con questa istruzione il software avvia la verifica della integrità sulla base delle policies precedentemente create, stampa un elenco delle eventuali anomalie a video e salva in formato binario una copia del report nella cartella alla quale punta la variabile REPORTFILE del file di configurazione.
In ogni caso è anche possibile eseguire una verifica per una singola regola oppure per un determinato livello di severità delle anomalie od anche per una specifica sezione del file delle policies (consultare a tale proposito il manuale utente).

Qualora, a seguito della verifica, vengano riscontrate delle anomalie è necessario aggiornare anche il database interno in modo che esso riproduca sempre la situazione attuale del sistema e per evitare che modifiche "normali" continuino ad essere segnalate in futuro come situazioni critiche:

tripwire --update --twrfile <nome del file report creato>

L'aggiornamento del database può anche essere effettuato subito dopo la verifica quando quest'ultima viene lanciata con il comando:

tripwire --check --interactive

Una attività di sincronizzazione deve inoltre essere eseguita in caso di modifica del contenuto del file delle policies quando:

In tutte queste ipotesi i passi da seguire sono i seguenti:

  1. creare una versione ascii del file delle policies mediante il comando twadmin --print-polfile > <nome del file di testo>;
  2. editare il file di testo creato in modo da apportarvi i cambiamenti desiderati;
  3. istruire il software in modo da accogliere le modifiche apportate tramite il comando tripwire --update-policy <nome del file di testo>;

Per impostazione predefinita il processo di aggiornamento viene eseguito con un livello di sicurezza elevato nel senso che esso avvia una contestuale verifica di integrità secondo le nuove regole e visualizza ogni eventuale violazione delle regole del vecchio file che sono anche coperte dalle nuove regole.
Dal momento che in caso di riscontrate anomalie il database non viene di fatto aggiornato occorre accertare che gli eventi segnalati siano in realtà normali e, soltanto in quest'ultima ipotesi, procedere con l'aggiornamento riavviando il processo in modalità a bassa sicurezza tramite il comando:

tripwire --update-policy --secure-mode low <nome del file di testo delle policies>

Adozione di sistemi per la scoperta delle intrusioni

Per circa due decenni le tecniche di scoperta delle intrusioni sono state oggetto di ricerca ma soltanto negli ultimi anni hanno fatto la loro comparsa sul mercato dei nuovi prodotti che, basandosi su queste tecniche, si sono dimostrati in grado di affiancare gli strumenti tradizionali nel difficile compito di costruire una linea di difesa efficiente nei confronti delle aggressioni esterne.

Sebbene i sistemi per la scoperta delle intrusioni non abbiano ancora raggiunto un grado di maturità completo essi hanno acquisito una importanza strategica decisiva ed, in virtù di questa rilevanza, esplicano ormai un ruolo chiave proprio nel processo di hardening di qualsiasi piattaforma.

In questo capitolo ci soffermeremo sugli aspetti salienti relativi all'installazione ed alla configurazione di uno dei prodotti open-source che ha maggiormente riscosso successo sul mercato vale a dire Snort.

Caratteristiche degli IDS

Gli ids possono avere caratteristiche tra loro molto differenti perciò l'unico modo per comprenderne appieno le potenzialità e le debolezze è quello di suddividerli in categorie diverse. Una prima classificazione, basata sulla fenomenologia che tali strumenti registrano, è quella che distingue tra:

Una seconda classificazione che interessa soprattutto gli ids cd. network based è quella basata sulle modalità attraverso le quali avviene il riconoscimento delle intrusioni:

Snort

Snort è un ids network-based originariamente sviluppato nel 1998 da Martin Roesch per le piattaforme Unix ma che, grazie al lavoro della comunità open-source, è ora disponibile anche per le piattaforme Windows.
Snort è un software a linea di comando leggero ma al tempo stesso flessibile e potente che analizza in tempo reale il traffico di rete alla ricerca di impronte conosciute allertando l'amministratore di rete e producendo dei record di log quando una corrispondenza viene trovata.

Installazione di snort

Snort può essere liberamente scaricato dall'indirizzo (http://www.snort.org oppure http://www.datanerds.net/~mike) ma per il suo corretto funzionamento richiede la presenza dei driver WinPcap sviluppati dal politecnico di Torino (http://netgroup-serv.polito.it/winpcap/install/default.htm).

L'installazione di Snort deve dunque avvenire soltanto dopo l'installazione della libreria Winpcap ma a tal fine è sufficiente creare due directory chiamate Snort e Snort\Bin (possibilmente su una partizione distinta da quella in cui risiede il sistema operativo Windows 2000) e scompattare all'interno di quest'ultima cartella l'archivio di distribuzione.

Il passo immediatamente successivo consiste invece nel verificare il corretto funzionamento del software e ciò avviene digitando in una finestra di prompt il comando: snort -W.
Se tutto funziona a dovere allora verrà visualizzata una lista degli adattatori di rete riconosciuti mentre, in caso contrario, sarà restituito un errore.

Considerazioni sulla configurazione di Snort

Il funzionamento di Snort si basa sulla presenza di un file di configurazione (snort.conf) e di una serie di file addizionali con estensione rules.
Il primo contiene le impostazioni necessarie per il corretto funzionamento del software mentre gli altri compongono complessivamente il database interno delle signatures.
In particolare i file rules indicano quali sono le caratteristiche intrinseche che devono avere i pacchetti di rete da catturare ed inoltre specificano se per ciascuno di essi deve essere rilasciato un avvertimento che viene scritto in un altro file denominato alert.ids.

Poichè il database contenuto all'interno dell'archivio di distribuzione di Snort non è in genere molto aggiornato è altamente consigliato, subito dopo l'installazione, cancellare dalla relativa cartella sia il file snort.conf che i file rules e procurarsi un nuovo archivio più aggiornato (http://www.whitehats.com oppure http://www.snort.org).

La successiva fase di configurazione permette di adattare le caratteristiche del software alle reali esigenze e si articola in una serie di modifiche da apportare al file snort.conf quali:

  1. l'impostazione delle variabili globali di ambiente;
  2. la configurazione dei preprocessori;
  3. la configurazione dei plugins di output;
  4. la personalizzazione del database interno;

Il primo tipo di impostazione consiste nel valorizzare le variabili HOME_NET, EXTERNAL_NET e DNS_SERVERS: la prima variabile va impostata con l'indirizzo IP assegnato alla interfaccia di rete pubblica del server, la seconda variabile può rimanere invece invariata (equivale ad ANY) mentre la terza è destinata a contenere la lista degli eventuali server dns utilizzati.

L'esatta configurazione dei preprocessori dipende anche dal tipo di versione in uso (consultare il manuale e/o le note contenute nel file di configurazione).

I preprocessori sono porzioni di codice integrate nel software che assolvono ad un compito ben definito (ad es. la corretta gestione dei pacchetti frammentati o l'impostazione della soglia di sensibilità per il riconoscimento delle attività di scansione delle porte TCP/UDP).

I plugin di output definiscono invece in che modo i dati di log vengono registrati ed anche per quanto riguarda le loro impostazioni è possibile consultare il manuale d'uso o le note contenute nel file di configurazione.

Infine la personalizzazione del database interno rappresenta un processo un pò più laborioso che richiede una preventiva analisi delle caratteristiche della rete nonchè delle effettive esigenze di protezione del server oltre ad un successivo periodo di test e perfezionamento volto a migliorare l'efficienza complessiva del sistema nel riconoscimento delle eventuali intrusioni e nella diminuzione del numero di falsi positivi.

Fondamentalmente questa personalizzazione si articola nella possibilità di includere o meno nel database uno o più file rules ma non va dimenticato che la flessibilità dello strumento è tale da consentire perfino la definizione di nuove regole.

Configurazione di Snort come servizio

È possibile configurare Snort in modo che sia eseguito come servizio di sistema anzichè come semplice applicazione. Il vantaggio fondamentale derivante da questa scelta è rappresentato dalla possibilità di sfruttare la caratteristica di esecuzione automatica dei servizi che non richiede alcun login da parte di un utente ed offre le maggiori garanzie di copertura soprattutto nell'ipotesi di crash della macchina ed immediato riavvio (peraltro questi due eventi potrebbe anche essere forzati da un eventuale aggressore).

Esistono due utilities facenti parte del Windows 2000 Resource Kit che permettono di installare da linea di comando un servizio (instsrv.exe) e di eseguire una comune applicazione Win32 come un vero e proprio servizio di sistema (srvany.exe).

In caso di indisponibilità del resource kit entrambe le utilities possono essere ricercate in rete tramite un qualsiasi motore di ricerca.

Attenzione: prima di eseguire le attività indicate è altamente consigliato effettuare una copia di backup del registry poichè le modifiche apportate direttamente a quest'ultimo possono rendere il sistema instabile.

Per la configurazione procedere nel seguente modo:

Successivamente aprire la finestra dei servizi, selezionare Snort e visualizzarne le proprietà assicurandosi che sia selezionata l'opzione di startup Automatic.

Meccanismi di log ed alert

Una delle caratteristiche più apprezzate di Snort è data dalla presenza di differenti meccanismi di log: il primo consiste nella produzione di file che tengono traccia del traffico di rete catturato (vengono chiamati snort-) mentre il secondo prevede la produzione di un file alert.ids contenente l'indicazione di quei pacchetti per i quali è stata trovata una esatta corrispondenza nel database interno.

La produzione e le dimensioni dei file di log ed alert sono direttamente influenzate dai parametri indicati sulla linea di comando (consultare a tale proposito il manuale operativo).

Entrambi questi tipi di file sono destinati a raccogliere le evidenze di eventuali aggressioni o tentativi di attacco per cui meritano una attenzione particolare nella individuazione dei meccanismi da utilizzare per la loro protezione onde evitare che essi possano essere alterati o peggio distrutti in qualche modo.

Alcune precauzioni che è possibile adottare a tal fine sono elencate di seguito e vanno modulate in base alle reali esigenze del caso concreto:

Una delle attività più impegnative nel caso di utilizzo di Snort, ed in generale di qualsiasi IDS, è quella relativa alla consultazione periodica dei file delle evidenze che, a seconda delle caratteristiche del server e delle "attenzioni esterne" che riceve, possono crescere nel tempo in modo considerevole.

Questo può obbligare ad una attività di revisione estremamente impegnativa ed, in quanto tale, suscettibile di dar luogo a sviste pericolose che possono far passare inosservati i segni di attività sintomo di imminenti attacchi.
Per questo motivo diventa indispensabile avvalersi di software specifici sviluppati proprio con l'intento di semplificare il processo di consultazione dei tracciati di log (vedi ad es. SnortSnarf disponibile all'indirizzo http://www.silicondefense.com/software/snortsnarf/index.htm).


Definizione di filtri sulle connessioni: filtering ed IPSec

Uno dei più importanti strumenti di difesa di un server contro gli attacchi di tipo esterno è costituito dall'utilizzo dei dispositivi di controllo degli accessi (switch, router e firewall) che dovrebbero essere configurati in modo da bloccare tutto il traffico non desiderato diretto alle porte TCP ed UDP corrispondenti a quei servizi di rete che non possono, per qualche ragione o scelta, essere disattivati.
Peraltro, al di là delle considerazioni legate alle problematiche di installazione e configurazione dei dispositivi citati, è sempre opportuno, specie nel processo di hardening di un server Web, implementare, anche a livello di singolo host, delle ulteriori politiche di filtro delle connessioni.
Infatti ciò garantisce la presenza di un ulteriore strato di sicurezza che può essere di ausilio nel caso in cui uno dei dispositivi posti a protezione del perimetro della rete venga bypassato da un eventuale aggressore.
Il sistema operativo Windows 2000 offre due strumenti per l'implementazione di filtri sulle connessioni: filtri TCP/IP e filtri IPSec.

Filtri TCP/IP

Questa funzionalità è identica a quella già presente nel sistema operativo Windows NT 4 ed è possibile accedervi attraverso la finestra delle proprietà delle connessione di rete locale 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:

Per queste ragioni il ricorso a questa funzionalità viene sconsigliato anche perchè in sostituzione di quest'ultima è attualmente possibile avvalersi di strumenti più flessibili come i filtri IPSec.

Filtri IPSec

Come anticipato una soluzione senza dubbio migliore rispetto alla precedente consiste nell'uso dei filtri IPSec che rappresentano uno dei vantaggi derivati dal pieno supporto che il sistema operativo Windows 2000 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 quelli appena menzionati, l'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 2000 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 policies 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 (Figura 2).

Figura 2 - Funzionamento driver IPSec

Fondamentalmente i filtri IPSec presentano una serie di caratteristiche vantaggiose quali:

Creazione di una policy

Il concetto che ruota intorno all'intero meccanismo dell'IPSec è quello di policy. Una policy è una astrazione cioè una sorta di contenitore virtuale che raccoglie regole di vario genere.
Tra queste regole ci possono essere quelle definite in modo tale da ricomprendere una o più liste di filtri per ciascuna delle quali vengono definite delle apposite azioni (ad es. accetta o blocca).
Il primo passo nella creazione di filtri è dunque quello della definizione di una nuova policy. Per far ciò è necessario cliccare con il pulsante destro del mouse sulla voce IP Security Policies on Local Machine raggiungibile attraverso Programs | Administrative Tools | Local Security Setting (Figura 3).

Figura 3 - Policies IPSec sulla macchina locale

Selezionare la voce di menu Create IP Security Policy e seguire l'autocomposizione guidata. Dare un nome alla policy (ad esempio Sicurezza Web Server) ed introdurre una breve descrizione (Figura 4).

Figura 4 - Definizione di una policy

Nella finestra successiva deselezionare la casella Activate the default response rule, cliccare sul pulsante Next, lasciare attivata la casella Edit, cliccare sul pulsante Finish e chiudere la successiva finestra della proprietà che viene richiamata automaticamente.

Creazione dei filtri

Dopo aver definito una nuova policy ed averle dato un nome occorre associarle delle apposite liste di filtri. Per fare ciò cliccare con il pulsante destro del mouse sulla voce IP Security Policies on Local Machine della finestra Local Security Settings e selezionare la voce di menu Manage IP filter lists and filter actions.
Nella successiva finestra cliccare sul pulsante Add all'interno della scheda Manage IP Filter Lists e dare un nome ed una breve descrizione alla nuova lista (ad esempio Traffico consentito server web).
Quindi cliccare sul pulsante Add ed in successione aggiungere due nuovi filtri per consentire, ad esempio, soltanto le connessioni TCP sulle porte 80 (http) e 443 (https) del server web (Figure 5 e 6).

Figura 5 - Proprietà filtro (Indirizzi sorgente e destinazione)

Per questa lista non è necessario definire una azione specifica poichè possiamo essa dovrebbe essere già esistente a livello di sistema (infatti spostandosi nella scheda Manage filter actions dovremmo notare una azione chiamata Permit).

Figura 6 - Proprietà filtro (Protocollo)

Procedendo nello stesso modo è necessario creare anche una lista di filtri per bloccare tutto il traffico non consentito (chiamandola ad esempio Traffico non consentito server web) .
Per questa ulteriore lista occorre invece definire una azione predefinita e quindi è necessario selezionare la scheda Manage filter actions, deselezionare la casella Use Add Wizard e cliccare sul pulsante Add.
Nella successiva finestra selezionare Block all'interno della scheda Security Methods, dare un nome al tipo di blocco (ad esempio Blocco traffico web) nella scheda General e chiudere la finestra confermando (Figura 7).

Figura 7- Proprietà filtro di blocco

Creazione di un associazione tra i filtri e la policy

Una volta definiti sia la policy che le varie liste di filtri con le relative azioni è necessario stabilire un legame associativo tra questi elementi.
Cliccare con il pulsante destro del mouse sulla nuova policy all'interno della finestra Local Security Settings e scegliere Properties.
Nella successiva finestra deselezionare la casella Use Add Wizard e cliccare sul pulsante Add: quindi nella scheda Manage IP filters selezionare la lista dei filtri di accesso e spostarsi nella scheda Manage filter actions, selezionare l'azione Permit e chiudere la finestra confermando.
Procedere nello stesso identico modo per associare la lista per il blocco del traffico con la relativa azione.

Assegnazione della policy ad una interfaccia di rete

L'ultimo passo per rendere operativo l'intero meccanismo è quello di assegnare la policy ad una interfaccia di rete (nell'ipotesi di server web con due schede di rete questa è naturalmente l'interfaccia pubblica). Nella finestra delle proprietà della connessione di rete locale desiderata selezionare Internet Protocol (TCP/IP) | Properties nella scheda General, cliccare su Advanced, portarsi sulla scheda Options, selezionare IP filter | Properties, attivare Use following rules e scegliere dall'elenco la policy precedentemente creata.

Figura 8 - Assegnazione della policy alla interfaccia

In questo modo i filtri diventano immediatamente operativi senza la necessità di riavviare il sistema.


Lo stack TCP/IP di Windows 2000 e i parametri di sicurezza

Lo stack TCP/IP implementato da Microsoft nei sistemi operativi della famiglia Windows 2000 introduce, rispetto alle precedenti implementazioni, alcuni miglioramenti quali:

Inoltre è stato garantito il supporto per altre caratteristiche come IPSEC (Internet Protocol Security), NAT (Network Address Translation), QoS (Quality of Service), L2TP (Layer Tunneling Protocol) e così via.

Parametri di sicurezza dello stack

La suite di protocolli TCP/IP di Windows 2000 ricava tutte le informazioni per il suo corretto funzionamento dal Registro di sistema dove esse vengono scritte dal programma di installazione ed, in alcuni casi, dal servizio client DHCP qualora esso venga utilizzato.
Generalmente le impostazioni di default si rivelano sufficienti per una grande varietà di ambienti tuttavia in alcune circostanze (come ad es. nel caso di un Web Server) può essere opportuno riconfigurare manualmente alcuni parametri in modo tale da migliorare la robustezza dello stack TCP/IP ed il livello generale di sicurezza.

Attenzione: le modifiche manuali apportate al registro possono rendere instabile l'intero sistema. Pertanto prima di compiere qualsiasi operazione si raccomanda di effettuare un backup dei dati e dello stesso registro di configurazione. Inoltre è fortemente consigliata una fase di verifica circa il corretto funzionamento delle nuove impostazioni su sistemi di test prima di replicare qualsiasi modifica su un sistema in produzione.

Grazie alla esperienza maturata nella gestione dei laboratori di Win2000test.com la Microsoft è riuscita ad aggiungere al registro di configurazione un set di chiavi che possono essere impostate con valori "tarati" in modo tale da accrescere la resistenza del sistema soprattutto nei confronti di certe tipologie di attacco (vedi gli attacchi di tipo Denial of Service).

I parametri in questione si trovano sotto la chiave di registro HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters e sono i seguenti:

In aggiunta a quella già menzionate esistono inoltre altre due chiavi del registro di sistema che possono influenzare la sicurezza di rete: una è situata nel percorso HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
Tcpip\Parameters\Interfaces\<nr. interfaccia>
:

mentre l'altra è localizzata sotto HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
NetBT\Parameters\Interfaces\:


Strumenti di protezione contro il codice nocivo

Il Symantec Norton Antivirus è uno dei più noti e diffusi prodotti antivirus oggi disponibili sul mercato.Esso prevede fondamentalmente due tipi di installazione:

Nel caso di un server web la migliore scelta rimane quella di una installazione standalone in modo da non lasciare aperte possibili porte di accesso alla rete interna.
Al momento dell’installazione è di fondamentale importanza provvedere alla creazione del disco di emergenza poichè quest'ultimo potrebbe essere di ausilio nel caso in cui sia necessario ripristinare il sistema (il dischetto di emergenza contiene una copia di backup del settore di avvio del disco fisso oltre ad una copia del motore di scansione).

Aggiornamento del file delle firme

In una installazione client non è possibile, ovviamente, ricevere gli aggiornamenti da un server Norton ma occorre preoccuparsi di aggiornare periodicamente i programmi ed il file delle definizioni scaricandoli direttamente da internet.
Fortunatamente gli aggiornamenti vengono resi disponibili più volte al mese sul sito della Symantec e l’intera operazione può essere effettuata tramite la funzione di LiveUpdate che permette di scaricare il file delle micro-definizioni.
In genere le dimensioni degli aggiornamenti non sono eccessive poichè viene recuperata soltanto solo la parte di file contenete i nuovi dati.

Tipologie di scansione

La miglior strategia nella lotta contro il codice nocivo è rappresentata oltre che dall’aggiornamento costante del file delle firme anche dalla presenza di una serie di opportune protezioni che possono essere combinate tra loro:

La console

L'applicativo fornisce una console (Figura 1) che permette di impostare e pianificare le attività di scansione del sistema, configurare le opzioni, avere l’elenco dei file posti in quarantena o riparati, ed infine consultare le statistiche sui risultati della scansione in tempo reale del filesystem.

Figura 1 - La console del Norton antivirus

Il programma mette a disposizione una autocomposizione guidata attraverso la quale è possibile creare delle scansioni personalizzate che sarà possibile salvare e richiamare successivamente. Inoltre l'utente può ricorrere anche ad altre forme di scansioni:

In ogni caso per evitare che il server sia appesantito da lunghe operazioni potrebbe essere utile suddividere l'intera operazione in parti più piccole eseguite in orari differenti, magari sfruttando i momenti di minor carico o di minor utilizzo delle risorse del server.
Qualunque sia il tipo di approccio prescelto è buona norma controllare sempre nel folder “cronologia” del pannello di controllo la cronologia dei virus identificati, delle scansioni nonchè il registro degli eventi per valutare l’esito delle attività completate.

Altre impostazioni

Le altre opzioni del programma che è opportuno configurare sono le seguenti:

 

Verifica della sicurezza del sistema

L'ultimo passo nel processo di hardening del sistema consiste nell'accertare la sua conformità a quei criteri di sicurezza che hanno rappresentato le linee guida di tutte le precedenti fasi di configurazione.
In questa sezione ci soffermeremo sugli aspetti più basilari concernenti quella particolare attività definita come "penetration testing" che, come lascia intendere il nome, è diretta a valutare la reale possibilità di portare a termine con successo un attacco nei confronti di un sistema informatico attraverso lo sfruttamento dei suoi punti deboli.
Per la verità la serie di test che andremo a definire si discosta da un vero e proprio penetration testing per il semplice fatto che una illustrazione delle tecniche di penetrazione esula dallo scopo di questa guida ma, per il resto, assume lo stesso significato ed importanza del primo.
In effetti l'obiettivo principale è uno soltanto: tentare di acquisire, attraverso l'utilizzo di strumenti software appropriati, tutte quelle informazioni utili non soltanto ad identificare gli eventuali punti del sistema rimasti privi di un adeguata protezione ma anche particolari aspetti della configurazione del sistema stesso e delle sue componenti primarie che richiedono una attenzione particolare.

Individuazione delle aree di intervento

Per semplicità di trattazione le aree oggetto di test vengono individuate con riferimento a quei soli aspetti concernenti la sicurezza di un host e non coinvolgono pertanto altri aspetti pur presenti in un test di penetrazione completo (ad es. l'enumerazione dei punti di presenza su Internet, delle risorse di rete, la sicurezza della rete e dei dispositivi di cui è composta,ecc..). Sostanzialmente queste aree sono le seguenti:

Servizi di rete

L'attività di enumerazione dei servizi di rete, detta anche port scanning, è diretta ad individuare il numero ed il tipo dei servizi TCP attivi sul server permettendo quindi di valutare la necessità del loro utilizzo effettivo oppure, viceversa, l'opportunità di disabilitarli.
Il numero degli strumenti di port scanning oggi disponibile in rete è davvero impressionante ma un posto d'onore va senza dubbio riconosciuto a Nmap (http://www.insecure.org/nmap) originariamente sviluppato da Fyodor per le piattaforme Unix e successivamente portato anche in Windows.
Nmap (Figura 1) è una applicazione a linea di comando molto potente che consente di effettuare scansioni TCP/UDP di uno o più host mettendo a disposizione una serie di caratteristiche avanzate tra le quali spiccano:

Figura 1 - Scansione con Nmap

L'aiuto che può fornire uno strumento simile è veramente prezioso se si considera che attraverso di esso risulta possibile non soltanto ricostruire la lista dei servizi attivi ma anche accertare l'adeguatezza della configurazione di tutti quei dispositivi posti a protezione del server, come ad esempio i firewall.
In particolare, per quanto riguarda l'oggetto di questa guida, si può valutare la correttezza degli eventuali filtri IpSec di cui si è parlato nella sezione dedicata alla impostazione dei filtri sulle connessioni oppure la riconoscibilità dei vari tentativi di scansione attraverso Snort di cui si è parlato nella sezione dedicata ai sistemi per la scoperta delle intrusioni.

Sistema operativo

Le verifiche più importanti da compiere in questa area interessano la possibilità di ottenere enumerazioni tramite le cd. sessioni nulle NetBios, il controllo dei privilegi sui vari oggetti di sistema (filesystem, registro di configurazione,servizi di sistema, ecc...) nonchè i privilegi assegnati agli utenti e la robustezza delle password.
Per quanto riguarda la prima attività va ricordato che la disabilitazione dei servizi NETBIOS sulla interfaccia di rete pubblica del server, di cui si è parlato nella sezione relativa alla installazione del sistema operativo, è diretta ad impedire il recupero di preziose informazioni attraverso l'uso delle sessioni nulle.
Uno degli strumenti più utili che è possibile utilizzare per questo genere di test è Enum (Figura 2) sviluppato dal gruppo RAZOR (http://razor.bindview.com).

Figura 2 - Enumerazione delle password policies con enum

Per la convalida dei privilegi sui vari oggetti di sistema è possibile invece ricorrere sia ad utility comprese nel sistema operativo e/o nel Resource Kit di Windows 2000 sia ad applicazioni sviluppate da terze parti, ed in particolare:

Per valutare invece la robustezza delle password è possibile utilizzare il software L0phtCrack scaricabile in versione demo dall'indirizzo http://www.atstake.com.
L'utilità principale di questa applicazione che va abbinata ad un buon dizionario di vocaboli risiede nella possibilità di ottenere un riscontro pratico del tempo necessario a decodificare gli hash delle password degli utenti (chiaramente maggiore è il tempo impiegato dal processo di decodifica di una o più password più rigidi e quindi sicuri possono dirsi i criteri in base ai quale esse sono state prescelte).

Applicazioni

Nessun test che si rispetti può prescindere dalla valutazione della sicurezza delle applicazioni ed, in particolare, di quelle che possono esporre il sistema stesso ad una serie di probabili attacchi.
In questa area rientra senza alcun dubbio il software che fornisce le funzionalità del servizio http e cioè nel nostro caso Internet Information Service 5.
Purtroppo la portata di questo test è tale che richiederebbe una trattazione a sè stante ma un ottimo punto di partenza per eseguire una serie di verifiche è rappresentato dall'eccellente documento intitolato "Assessing IIS Configuration Remotely" scritto da David Litchfield e liberamente disponibile all'indirizzo http://www.ngssoftware.com.


Links
http://www.mrwebmaster.it/webserver/iis/guida_iis/
http://www.webmasterpoint.org/iis/home.asp
Installare ASP in Locale: Vedi

Installazione di IIS: Vedi