Introduzione ad ISA Server

ISA Server 2004 è il prodotto commerciale di Microsoft per la protezione di reti aziendali. La nuova versione 2004 presenta innumerevoli novità dalla versione 2000: la principale è la scomparsa della scelta del tipo d'installazione di ISA; infatti, nella versione 2000 ci viene chiesto quale di tra le modalità "Firewall", "Cache" o "Integrated" vogliamo installare. I link ufficiali dove trovare tutte le informazioni sono i seguenti:

In questo tutorial tralascerò gli aspetti teorici sulla protezione di una rete e le varie tecniche ora disponibili preferendo un approccio più tecnico descrivendo un caso reale e tutti i passaggi relativi all'installazione di ISA Server in una piccola rete locale e la configurazione di tutti i computer presenti.

Incominciamo

La rete che prendiamo d'esempio e basata su un server con installato Windows Server 2003 e x client basati su normali PC con Windows Xp. Come rete è banale, ma ci sarà utile per capire i concetti di base che serviranno per la configurazione di reti più complesse. Ecconr la struttura:

La struttura della rete

Al centro notiamo il server dotato di Windows 2003 che si collega all'esterno con un modem/router ADSL ed alla rete interna con una normale scheda di rete ed un hub/switch collegato ai client. Nell'esempio qui proposto, non è stato creato nessun dominio tra i computer, ma essi condividono risorse in un unico Workgroup. Vediamo in dettaglio la configurazione di rete dei singoli PC:

Computer Server
IP
Mask:
Workgroup:
Gateway:
192.168.0.1
255.255.255.0
MiaRete
 
Client 1
IP
Mask:
Workgroup:
Gateway:
192.168.0.2
255.255.255.0
MiaRete
192.168.0.1
Client 2
IP
Mask:
WorkGroup:
Gateway:
192.168.0.3
255.255.255.0
MiaRete
192.168.0.1

Per tutti gli altri client, viene dato un numero progressivo impostandolo direttamente per ogni singolo computer dalla Proprietà di rete di ogni computer. Le impostazioni di Windows Server 2003 sono quelle di base e sono stati attivati i ruoli: "File server" per la condivisioni di cartelle, "Server di stampa" e il "Server Applicazioni" per IIS e ASP.NET (vedremo di seguito come pubblicare un nostro sito web in Internet grazie a ISA Server):

Installiamo ISA Server

L'installazione di ISA Server è stata notevolmente semplificata. Come detto in precedenza non ci viene più chiesta la modalità d'installazione ma solo se vogliamo installare ISA come server Stand-Alone o come Array member. Vediamo i vari passi:

Dopo il classico messaggio di benvenuto e accettate le solite clausole di restrittiva responsabilità per il produttore ci sarà chiesto il tipo d'installazione:

Nel nostro caso scegliamo "Typical" e andiamo avanti fino a quando ci sarà chiesto l'Internal Network.

Premendo su "Add" si aprirà una nuova finestra, in cui dobbiamo specificare il range di IP della nostra rete interna. Ritornando al nostro grafico iniziale, dobbiamo specificare la rete che include i server e i nostri client. 

Possiamo specificare direttamente il range di valori, ma se non siamo sicuri, cliccando su Select Network Adapter, nella nuova finestra possiamo specificare direttamente la scheda di rete collegata al network da proteggere:

Di seguito comincerà l'installazione del software:

Alla fine, un messaggio ci confermerà la riuscita dell'installazione:

Ora possiamo richiamare l'ISA Server Managment per le varie impostazioni del Firewall, del Web Proxy e della Cache:

Di default ISA Server chiude tutte le porte della nostra rete. Se infatti proviamo a richiamare ora dal nostro server o da qualsiasi client collegato alla rete una pagina web, ci sarà visualizzato un messaggi di errore da parte di ISA Server:

Non solo, anche le risorse condivise del nostro server non saranno più accessibili dai client!

Prime impostazioni

Inizialmente inseriremo queste regole in ISA Server:

Avviato ISA Server Managment, nella treeview sulla sinistra selezioniamo la voce "Firewall Policy":

Come vediamo è presente solo una voce, che "nega" qualsiasi accesso o invio da parte del server. Sulla destra della finestra è presente un'area dove sono presenti tre tab: "Toolbox", "Tasks" e "Help". In "Tasks" saranno visualizzati i vari comandi disponibili una volta selezionato un elemento nella finestra principale di ISA Server, in "Help" informazioni utili sulle varie funzioni e in "Toolbox" abbiamo a disposizione tutti i protocolli e regole disponibile per inserire le nostre regole per il Firewall. Qui sotto sono visualizzati affiancati le cinque voci selezionabili in questo tab:

In "Protocol" sono elencati tutti i protocolli divisi in categoria che vogliamo inserire nelle nostre regole per il firewall. In "Mail" sono presenti i vari "POP3", "SMTP", "IMAP4" e così via; in "Web", "Http", "Https", ecc... Nulla ci vieta di inserire protocolli personalizzati per gli usi più disparati. In "Users" sono presenti le varie tipologie di utenti che possono accedere a ISA Server; anche in questo caso possiamo creare nuovi utenti prendendoli direttamente dagli user presenti in Windows.
In "Content Types" sono presenti i tipi di documenti che possiamo "trattare" con ISA Server, anche in questo caso personalizzabili.
In "Schedules" possiamo specificare intervalli di tempo che possiamo utilizzare per impostare il funzionamento di regole in determinate fasce di orario e giornate. Infine, in "Network Object" sono presenti tutte le voci che rappresentano la rete, come IP address, DNS, URL, nomi di Dominio e quant'altro. Su quest'ultima sezione mi soffermo perché è probabilmente la più importante visto che grazie ad essa si definisce gli ambiti di difesa delle varie funzioni di ISA Server.

Nel nodo "Networks" sono presenti le voci che rappresentano la nostra rete. Tra gli altri, "External" è la rete al di fuori da quella protetta da ISA Server. Nel grafico mostrato all'inizio è rappresentato da Internet ed eventuali altre reti tra il nostro server e altri client. Internal rappresenta tutti i client della nostra rete tranne il server. Local Host è il server.

Se vogliamo specificare intere sezioni di rete, in "Network Sets" sono presenti le voci "All Networks", che rappresenta qualsiasi computer presente sia nella rete interna, il server e Internet, "All Protected Networks" che rappresenta i computer protetti: i client e il server.

Anche in questo caso possiamo creare gruppi per le nostre preferenze, anche singoli computer o range di IP o anche le Subnets della rete. Non c'è che dire, un controllo capillare!

Conclusioni

Nella prossima puntata di questa mini serie impareremo a configurare ISA Server in modo che siano abilitati alcuni protocolli e porte di utilizzo più comune.
Con questo articolo ci siamo fatti un'idea dei vantaggi che può aggiungere una soluzione di firewalling ad una rete: non ci resta che approfondire l'argomento con la prossima puntata!


Dopo la prima parte siamo pronti per scrivere la nostra prima regola, o per meglio dire policy.
Vogliamo rendere accessibile dai client della nostra rete tutte le risorse condivise nel server. Selezioniamo quindi "Create new Access Rule" dal tab "Tasks" o selezionando questa voce dal menu che compare cliccando sul tasto destro su "Firewall Policy". Apparirà la seguente finestra di dialogo:

Scriviamo il nome della policy e clicchiamo su "Avanti":

Selezioniamo "Allow" (vogliamo creare una nuova policy che permetta un'operazione) e andiamo avanti:

In questo caso lasciamo la voce "All outbound traffic" selezionata e andiamo avanti. In questa finestra di dialogo possiamo selezionare i protocolli interessati per la policy che vogliamo inserire in ISA Server. Selezionando dalla dropdownlist "Selected protocol", si attiverà la il button "Add" che, cliccato, aprirà una nuova finestra di dialogo in cui selezionare il "Protocol":

Chi ricorda questa finestra? Ma andiamo avanti con la selezione precedente:

Qui dobbiamo selezionare i network interessati per questa policy. In questa finestra di dialogo dobbiamo inserire a quali network vogliamo dare il permesso di inviare il protocollo, o i protocolli, selezionati nella finestra precedente. Andando avanti, selezioneremo i network che potranno accettare i dati inviati:

Nell'esempio qui esposto sono state inserite per entrambe le finestre "Internal" e "Local Host", questo perché vogliamo che sia possibile tutto il traffico tra i client e il server.
Una nota: lo stesso effetto lo avremmo ottenuto selezionando per entrambe le finestre la voce "All protected Network". Cliccando "Avanti" sarà visualizzata una finestra con il riassunto delle informazioni finora inserite:

Cliccando su "Fine" la nuova policy sarà inserita. Come l'utente noterà, nella parte superiore che contiene le varie policy apparirà il pulsante "Apply". Solo dopo aver cliccato questo pulsante la nuova policy sarà attiva sul firewall e finalmente i client della nostra rete potranno comunicare con il server.

Apriamo le porte al server

Ora dobbiamo solo creare le policy per il server che gli permettano di accedere a Internet e a tutti i suoi servizi. Ormai dovrebbe essere chiaro come fare. Creiamo una nuova "Access rule" come descritto sopra, e diamo nel passaggio sui "Protocols" inseriamo come nel precedente passaggio "All outbounds traffic".
Al passaggio successivo "Access rules sources" inseriamo solo "Local Host" e come "Destination", "External". Fatto. Ora dal server possiamo navigare in Internet, leggere la posta, utilizzare i vari Messenger e quant'altro.

Un'annotazione particolare la merita il protocollo FTP. Se proviamo ad accedere ad un server esterno per fare l'upload di un file, essa ci sarà negato.
Perché? Non abbiamo liberato con la "rule" appena impostata l'accesso libero a tutte le risorse di Internet? No, di default il protocollo di FTP viene impostato in modalità sola lettura, tocca ancora a noi con ISA Server l'apertura di questa porta.
Selezioniamo l'Access Rule in ISA Server e clicchiamo con il tasto destro del mouse e selezioniamo "Configure FTP":


Deselezioniamo il checkbox "Read Only": ora avremo libero accesso in FTP ai server esterni.

I client

Come deciso in precedenza, i client dovranno avere solo libero l'accesso alle pagine Web, alle e-mail, ai newsgroups e ai servizi di messenger - lo so, sono troppo buono!
Iniziamo con il web. Come in precedenza creiamo una nuova "Access rule" dal nome fittizio "Web Clients" come in questa tabella:

Protocol: Gopher
Http
Https
Access Rule Source: Internal
Access Rule Destination: External
Rule Action: Allow

Ora dai client sarà possibile navigare tra le pagine web. E' buona regola, ma non obbligatorio, impostare nei client il proxy diretto ad ISA server:

La voce "Rivela automaticamente impostazioni" è sufficiente per i nostri scopi, ma possiamo inserire anche i dati relativi al proxy server così come si vede nell'immagine qui sopra.
Ora dai browser dei client sarà possibile navigare in Internet anche con pagine protette (https).

ISA funziona come un Web Proxy ed è in grado di intercettale le richieste dei client per pagine Web per eseguire le varie ottimizzazioni del caso: inserimento nella sua cache di pagine che saranno inviate direttamente ad altri client in caso di una loro richiesta e così via.

Il mistero delle mail e newsgroups

Creiamo l'access rule per la posta e newsgroups dal nome fittizio "Mail NNTP":

Protocol: IMAP4
NNTP
POP3
SMTP
Access Rule Source: Internal
Access Rule Destination: External
Rule Action: Allow

E proviamo a leggere la posta da un client. Sorpresa, otteniamo un errore simile al seguente:

In questo caso si è cercato di scaricare la posta da un server, e ci è stato inviato l'errore di account non trovato. Se proviamo ad accedere anche ad un server NNTP per i newsgroups otterremo lo stesso errore. Il problema in questo caso è che attraverso il protocollo POP3 - protocollo utilizzato in questo caso - non è possibile risolvere il nome di dominio ("tele2.it" in questo caso). La domanda che potrebbe nascere spontanea a questo punto è il perché navigando nelle pagine web con lo stesso client non si hanno questo tipo di problemi per la risoluzione dei nomi di dominio, mentre per la lettura di e-mail e newsgroups sì. La risposta sta nel modo con cui i client si collegano per la navigazione di pagine Web. Esse, infatti, vengono richieste al web proxy di ISA, e sarà il server ISA a inviare la richiesta, risolvendo eventuali nomi di dominio, della pagina Web al server desiderato effettuando poi tutte le ottimizzazioni tipiche di un proxy: memorizzazione nella cache interna delle pagine per un secondo accesso più veloce e quant'altro. L'accesso alla posta elettronica e ai newsgroups non viene filtrata dal web proxy di ISA, ma la richiesta passa direttamente attraverso ISA senza alcuna operazione.

Per risolvere questo problema dobbiamo creare un nuovo "Ruolo" in Windows 2003 Server, il DNS, attraverso l'"Amministrazione server" in Windows 2003.
Possiamo lasciare tutte le impostazioni di base e procedere con l'installazione. Alla fine dovrebbero attivi questi "ruoli" sul server:

Proviamo dal client a scaricare la posta o leggere i newsgroups: ora non ci dovrebbero essere problemi. Non ci resta che liberare l'accesso all'esterno anche dei vari messenger. Creiamo l'access rule "Messenger" con questi dati:

Protocol: ICQ
ICQ 2000
MSN Messenger
Access Rule Source: Internal
Access Rule Destination: External
Rule Action: Allow

Proibire funzionalità ai client

Avevamo deciso in precedenza di proibire anche qualsiasi accesso via FTP ai client. Per questo non dobbiamo fare nulla, perchè di base, come già detto, tutte gli accessi non appena installato sono bloccati e solo con i servizi che attiviamo noi nelle Acces Rule possiamo abilitare o meno delle operazioni tra i computer della nostra rete. Ricordo che, per ogni richiesta sia dall'interno che dall'esterno della rete, ISA Server legge in modo sequenziale le rule inserite finché non incontra una rule adatta per quella richiesta. Se nessuna di queste "rule" è adatta, la richiesta viene inviata all'ultima che nega qualsiasi passaggio.
Molto restrittiva come impostazione, ma permette che non si lascino senza saperlo pericolose porte aperte nella nostra rete.

Un problema che ora dobbiamo affrontare è la proibizione di download da parte dei client: questo porta il grosso vantaggio di evitare fin dalla radice la possibilità che qualche utente distrattamente possa scaricare file ".exe" o ".zip" sospetti, o altri programmi di uso non proprio consono ad un'azienda. Per far questo selezioniamo l'access rule prima creata "Web clients". Cliccando con il tasto destro su di esso comparirà il menu prima visto:

Selezioniamo "Configure HTTP", apparirà una nuova finestra di dialogo con cinque tab:

Come abbiamo visto brevemente, la possibilità di controllo è pressoché totale. Nel nostro caso inseriremo i nostri filtri nel tab "Extensions":

In questo caso abbiamo aggiunto i suffissi principali: ".exe" e ".zip". Ovviamente è preferibile aggiungere anche i vari ".com", ".bat", quot;.dll" e altri ormai usati in modo esagerato da virus, dialer e romp..., ops, divertimenti simili! In fondo a questa finestra di dialogo è presente anche una checkbox che consente di bloccare anche suffissi "ambigui", che potrebbero contenere al loro interno codice pericoloso . Non si è mai troppo prudenti, perc ui selezioniamo anche questa voce.

Spostiamoci nelle proprietà della rule appena creata e vedremo otto tab di cui finora ne abbiamo trattato, anche se indirettamente, solo sei:

I due nuovi tab sono i seguenti:

Come si vede, la scelte per proteggere la nostra rete da documenti non ben accetti sono numerose.

altri blocchi impostabili

Ok, ormai il più è fatto. Abbiamo bloccato ai client il download di file, e bloccando tutte le porte tranne quelle utili per la navigazione in Internet, email e newsgroups, evitiamo che i client utilizzino programmi come i P2P per un uso improprio di una rete aziendale (purtroppo vari programmi di questo tipo sono in grado di rimappare in modo automatico le porte, e in questo caso neanche ISA può far molto).
Ma se volessimo controllare in modo più granulare l'uso della rete degli utenti, possiamo proibire anche l'accesso a determinati siti o domini. Per esempio, se questa rete fosse fruibile anche da minorenni si potrebbe bloccare l'accesso a determinati tipi di siti non adatto ad un pubblico minorile (pornografia e simili). Anche se è pressoché impossibile con questa "rule" a tutti i siti di questo tipo, può essere utile per altri scopi.
Creiamo una nuova "Access rule" dal nome "Blocca siti":

Protocol: HTTP
Access Rule Source: Internal
Access Rule Destination: Vedere sotto
Rule Action: Deny

Per l'Access Rule Destination dobbiamo specificare i siti o domini di cui vogliamo negare la visita. Dal tab "To", selezioniamo "Add" quindi da "URL Sets" creiamo una nuova rules:


Anche se come proibizione è minima, è pur sempre qualcosa. Consiglio, se esiste realmente la necessità di negare l'accesso a determinati siti, di creare in "Address Range", sempre nelle "Network Entities", una nuova voce in "Address Range" con l'IP address dei siti interessati.

La domanda che può sorgere spontanea ora è che cosa accade quando l'utente richiama una pagina "proibita" o cercherà di eseguire il download di un file ".exe". Comparirà un messaggio di errore - una pagina in formato HTML - inviata da ISA Server. Nel caso di file ".exe" il codice del messaggio specifico sarà il "12217". Grazie a questi codici possiamo definire nostre pagine di errori personalizzate. Andando nella directory dov'è installato ISA Server troveremo una cartella di nome "ErrorHtmls", qui sono contenute tutte le pagine di errore utilizzate.
Per moltissimi errori sono già presenti pagine apposite, per errori non definiti viene utilizzate la "default.htm". Si può notare che i file qui presenti sono a copia e hanno questa struttura: xx.htm e xxr.htm (dove xx è un numero). Per esempio: 11001r.htm e 11001.htm . La prima sarà utilizzata per risposte al di fuori della rete interna, la seconda per tutti i client. Abbiamo visto che la nostra "rule" per probire la visita e il download di file eseguibili e "12217", bene, utilizzando questo codice facciamo una copia di "default.htm" nominandola "12217.htm" e inseriamo il messaggio di errore personalizzato. Ecco un ipotetico messaggio che comparirà al client al suo tentativo di un download proibito:

Scopriamo cosa accade...

ISA Server permette la memorizzazione e la visualizzazione di tutto il traffico che passa attraverso il server. Permette anche di mostrare report dettagliati in formato HTML con grafici e altro, e di impostare il calcolo di un report ad un determinato orario, dopo del quale, sarà lo stesso ISA Server dd inviarci una mail avvisandoci dell'elaborazione del report.

Ma quanto è dettagliato il log di ISA? Questo sono le richieste subite in poco meno di cinque minuti:

Come possiamo vedere, le richieste sono state tutte scartate, dal Ping all'attacco sulla porta 6346. Per la cronaca, quella è porta utilizzata dai network P2P come Gnutella.

Pubblichiamo un server web, parte prima

Nella nostra piccola rete interna abbiamo a disposizione un server Web - come nel caso della piccola rete presa ad esempio in questo documento in cui sul server è anche installato IIS6 - possiamo pensare di poter pubblicare un nostro sito web. Tralasciando l'assegnazione di un IP addess statico e domini vari, con ISA server questa operazione è molto semplice. Per pubblicare un nostro sito web abbiamo a disposizione due tecniche, la prima, molto semplice, che tratteremo subito, ed una leggermente più complessa ma che permette una maggiore personalizzazione.

Iniziamo creando una nuova "Access rule" con questi dati:

Protocol: HTTP
HTTPS
Access Rule Source: External
Access Rule Destination: Local Host
Rule Action: Allow

Ora il nostro server accetterà le richieste dall'esterno verso il Local Host (il server con Windows 2003 e IIS6) e sarà restituito il sito web predefinito in IIS.

Pubblichiamo un server web, parte seconda

Con la tecnica precedente abbiamo visto che le personalizzazioni sono molto limitate. Vediamo ora cosa ci offre ISA Server per la pubblicazione di un server Web.

Dal menu contestuale in "Firewall Policy" o in "Tasks" selezioniamo "Publish a Web Server". Sarà avviato un wizard, nel quale dobbiamo inserire un nome per l'access rule, per esempio "Sito Web", in Action selezionare "Allow" (dobbiamo permettere l'accesso al server), quindi ci troveremo di fronte a questa finestra di dialogo:

In "Computer name or IP address" inseriamo l'IP o il nome del computer della nostra rete in cui è presente il server web. In "Path" inseriamo l'eventuale path per raggiungere il sito che vogliamo pubblicare. Se per esempio volessimo pubblicare un sito web che sul server è richiamabile con "http://192.168.0.100/miosito", in "Path" inseriremo "miosito".

Nella videtata successiva possiamo selezionare a quali domini inviare le richieste. Nel nostro caso selezioniamo "Any domain name". In "Path (optional)" possiamo inserire un eventuale percorso aggiuntivo. Riprendiamo il caso precedente del sito "miosito". Se vogliamo che esso sia richiamato con solo l'IP del nostro collegamento a Internet (per esempio: http://150.150.78.238, o un eventuale dominio associato ad esso), ci sarà sufficiente richiamare inserire solo quell'IP dall'esterno per vedere il sito dall'esterno.
Se vogliamo, invece, che possa essere richiamato con la forma http://nome_dominio_esterno/vostrosito , in "Path (optional)" dovremo inserire "vostrosito". Questa tecnica ci permette di personalizzare eventuali richieste per redigere la richiesta a determinati siti web o determinati server se nella nostra rete sono presenti più server web.

Nella schermata successiva ci sarà chiesto quale "network" può inviare richieste al nostro server web. In "Web Listener" notiamo che non è presente nessuna voce se non è già stata inserita da noi voci preventivamente dal tab "Tasks" come si è visto in precedenza. In questo caso ne creiamo una nuova. Nella schermata appena citata clicchiamo su "New"

Apparirà un ulteriore wizard. Scriviamo un nome a nostro piacimento per il nome del Listener, finché non giungiamo nella schermata successiva:

Qui possiamo definire da quale network vogliamo accettare le richieste o addirittura specificare un range di IP. Selezioniamo "External" e abbiamo finito. Ritorniamo alla finestra di dialogo precedente e inseriamo come "Listener" la voce appena creata.
Ora il nostro sito web sarà visibile e la nostra rete continuerà a rimanere protetta.

Ecco infine il risultato di tutte le "rules" inserite finora:

Altri server

Con ISA possiamo pubblicare su Internet qualsiasi tipo di server: per la posta elettronica o NNTP. Per farlo il procedimento è molto simile al precedente ma al posto di "Publish a Web Server" selezioniamo "Publish a mail Server" per un server di mail o "Publish a New Server" per altri tipi. Per esempio, per le mail:

Per altri server:

Conclusioni

Con questa breve serie ho solo voluto mostrare le basi del nuovo ISA Server 2004 della Microsoft. Finalmente sembra quel prodotto maturo e completo per le reti aziendali che ha cancellato i noti problemi della versione precedente. Per maggiori informazioni consiglio questi siti e naturalmente gli "ufficiali" sul sito della Microsoft citati all'inizio della serie.