Il Firewall di ISA Server 2004

ISA Server 2004 è un prodotto Microsoft ideato principalmente per proteggere le reti aziendali e, in secondo luogo ma non per questo meno importante, per cachare siti web.

La configurazione descritta sotto è un ottimo compromesso per l’installazione di ISA Server 2004 come Firewall di una piccola rete (adatta per ufficio o casa) e può essere usata come base per capire bene il funzionamento di un prodotto come questo che ha delle enormi potenzialità.

Requisiti Minimi :


Fulcro di questa piccola rete, naturalmente, e di questa mini-guida, è naturalmente il server sul quale abbiamo installato Windows 2003 Standard Edition che si collega all’esterno tramite un modem/router ADSL, mentre all’interno utilizza un HUB/Switch per collegarsi ai client (io personalmente cosiglio l’utilizzo di apparati wireless la cui guida alla configurazione sarà di prossima uscita). Non è stato creato alcun dominio tra i computer per facilitare le cose, inserendo tutti i pc in un unico Workgroup.
La configurazione di rete dei singoli PC è così riassumibile:

COMPUTER

Server

Client 1

Client 2

IP

10.0.0.1/192.168.0.1

192.168.0.2

192.168.0.3

SUBNET

255.0.0.0/255.255.255.0

255.255.255

255.255.255.0

GATWAY

 

192.168.0.1

192.168.0.1

Le impostazioni di Windows 2003 saranno quelle standard e l’unica differenza con i PC client, sarà data dalla seconda scheda di rete configurata in maniera tale da dialogare con il router ADSL.

Installazione di ISA Server 2004

Per chi già ha avuto a che fare con ISA Server 2000, noterà alcune differenze in fase di installazione, ma le semplificazioni apportate con la versione 2004 non ne hanno affatto compromesso la funzionalità, anzi....

Dopo il classico messaggio di benvenuto e aver accettato le solite clausole di responsabilità, verrà richiesto il tipo di installazione.


 

In questo caso un’installazione “Typical” va benissimo perchè vogliamo creare una struttura di rete molto semplice. Qualora si volesse creare in fase di installazione anche l’agent client di ISA, dovremo selezionare “Custom” e indicare i componenti aggiuntivi da installare.

Selezionare NEXT per andare avanti dove ci verrà richiesto il range di indirizzi a cui appartiene la nostra scheda interna.


Cliccando su ADD... si aprirà il pannello in cui dovremo inserire tale range, specificando la rete che include sia i server che i client (nel nostro caso da 192.168.0.0 a 192.168.0.255)


Potremo anche selezionare direttamente la scheda di rete interna attraverso il tasto Select Network Adapter... e selezionando la scheda interessata

Dopo di che partirà l’installazione vera e prorpia, alla fine della quale possiamo premere il tasto FINISH e aprire la console di gestione per la configurazione di ISA.

La prima cosa da notare è che se noi tentiamo di aprire dal server ISA una qualsiasi pagina we, IE ci restituirà un errore. Questo perchè, per default, appena installato ISA chiude tutte le porte di accesso al web e persino alle risorse condivise del server stesso!

Infatti, se noi apriamo la console di gestione, troveremo un’unica regola che nega a tutto il traffico di rete di passare.

Passiamo, allora, a creare le prime impostazioni che ci permetteranno di:

  1. Garantire l’accesso dei client alle risorse del server

  2. Garantire l’accesso del server a tutte le risorse di Internet

  3. Limitare l’accesso dei client alle risorse di Internet

  4. Bloccare il traffico FTP verso i client

  5. Bloccare il download di files eseguibili da parte dei client

  6. Bloccare l’accesso a determinati siti

Avviamo ISA Server Management e selezioniamo la voce FIREWALL POLICY

Come preannunciato troveremo un unica regola che vieta qualsiasi tipo di traffico su tutte le schede di rete.

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.

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.

Primi passi
La prima cosa da fare è aprire ai client della nostra rete interna, l’accesso a tutte le risorse condivise dal 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: diamo il nome alla policy e andiamo Avanti

Selezioniamo “Allow” (dobbiamo DARE accesso, non VIETARE) e andiamo Avanti

In questo caso lasciamo di default “All outbound traffic” 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à il button "Add" che, cliccato, aprirà una nuova finestra di dialogo in cui selezionare il "Protocol":


Ora 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/i protocollo/i selezionati nella finestra precedente. Andando avanti, selezioneremo i network che potranno accettare i dati inviati:

In questo caso abbiamo inserito “Internal” e “Local Host” in quanto vogliamo che queste regole vengano applicate sia al traffico in transito dalla rete interna che dal server stesso.
Clicchiamo su Fine e la regola è creata. Affinchè la regola venga applicata, però, si deve cliccare su “Apply” nella maschera che appare sopra l’elenco delle regole create: e la prima regola è creata.

Internet per tutti
Capito come funziona, iniziamo a creare le policy per il server che gli permettano di accedere a Internet e a tutti i suoi servizi. 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". Ricordiamoci di salvare il tutto e via. 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":

I Client
Per una questione di sicurezza, i client dovranno avere solo libero l'accesso alle pagine Web e ai servizi di messenger.
Iniziamo con il web. Come in precedenza creiamo una nuova "Access rule" dal nome fittizio "Web Clients" come in questa tabella:

Protocolli da abilitare: 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. Se abbiamo installato la versione “Full” possiamo scaricare dal server l’ISA client Agent che, se installato sui client, permette di ricevere dal server direttamente, i dettagli della connessione ad internet. In questo caso la voce "Rivela automaticamente impostazioni" è sufficiente per i nostri scopi, ma possiamo inserire anche i dati relativi al proxy server.
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.

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: per questo è fondamentale che la rule “Nega tutto” sia sempre l’ultima ddella lista.
Molto restrittiva come impostazione, ma permette che non si lascino senza saperlo pericolose porte aperte nella nostra rete.Un problema che ora dobbiamo affrontare è il divieto di fare 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 ".cmd" 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 seguente menù:

Selezioniamo "Configure HTTP", apparirà una nuova finestra di dialogo con cinque tab:
General: qui possiamo filtrare la richiesta HTTP dipendentemente la sua lunghezza o "responses" sospetti che contengono del codice eseguibile.
Methods: in questo tab possiamo specificare quali "method" HTTP vogliamo disabilitare; per esempio il "GET" o il "POST".
Extensions: questa è la sezione che approfondiremo tra poco, che permette il blocco di richieste di file con estensioni particolari.
Headers: qui possiamo filtrare specificando di headers.
Signatures: possiamo specificare di filtrare delle richieste che contengono al loro interno un determinato contenuto.
Ora inseriremo i nostri filtri nel tab "Extensions":

In questo caso abbiamo aggiunto i suffissi principali: ".exe" e ".cmd". Ovviamente è preferibile aggiungere anche i vari ".com", ".bat", quot;.dll" e altri ormai usati in modo esagerato da virus, dialer etc...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 ,percui selezioniamo anche questa voce.

Spostiamoci nelle proprietà della rule appena creata e vedremo otto tab:
General: possiamo modificare il nome dell'Access rule, inserire un'eventuale descrizione e abilitare o meno questa rule.
Action: Allow e Deny, per fare in modo che questa rule permetta o proibisca un'azione.
Protocols: già trattato in modo approfondito, i protocolli come HTTP, POP3, Web o altri personalizzati.
From: il mittente della richiesta.
To: il destinatario della richiesta.
Users: gli users a cui la rules è dedicata.

I due nuovi tab sono i seguenti:
Schedule: qui possiamo inserire un intervallo di tempo in cui questa rule sia attiva.
Content type: dove specificare ulteriormente il tipo di documento accettato:

Ulteriori impostazioni
Abbiamo bloccato ai client il download di file, e bloccando tutte le porte tranne quelle utili per la navigazione in Internet, 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:

E’ una protezione mimina, ma è pur sempre qualcosa. Se, al contrario, si vuole effettuare una seria politica di restrizione del web, la miglior cosa è di inserire gli indirizzi IP delle società di hosting che erogano servizi pornografici o similari.
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:

Naturalmente quanto proposto in questa mini-guida, può essere ampliato a seconda delle esigenze che si hanno. Importante è sempre tenere traccia di ogni cambiamento che viene messo in atto, per poter poi, in caso di errore, sapere dove correggere. ISA Server 2004 è un prodotto molto versatile che può essere anche configurato come server proxy per “salvare su disco” i siti che vengono maggiormente visitati in maniera da aumentare le prestazioni della navigazione web.
Rimandiamo ad un altro documento la spiegazione di come pubblicare un server Web o un server di posta.