Università degli Studi Roma Tre Dipartimento di Informatica e Automazione Facoltà di Ingegneria Corso di Laurea in Informatica Tesi di Laurea Impostazione di un insieme di misure di sicurezza per la LAN di un ente di ricerca Laureando Mario Masciarelli Relatore Prof. Giuseppe Di Battista Università Roma Tre Correlatore Dott.ssa Maria Lorenza Ferrer I.N.F.N. – Laboratori Nazionali di Frascati Anno Accademico 2001/2002 1 – Presentazione dell’ambiente di lavoro 1.1 Presentazione dei Laboratori Nazionali di Frascati dell’I.N.F.N. 1.2 Problematiche relative alla sicurezza 1.2.1 Perché è necessario proteggere una rete 1.2.2 Quanto ‘proteggere’ una rete 1.2.3 Quali strumenti utilizzare per proteggere una rete 1.3 Caratteristiche e topologia della LAN 1.3.1 VMPS 1.4 Servizi di rete (DNS, SMTP, AFS, WWW, DHCP, FTP, IMAP, POP3, NIS, NFS, etc…) 1.4.1 DNS e DHCP 1.4.2 SMTP 1.4.3 WWW 1.4.4 WebMail 1.4.5 LPD server 1.4.6 IMAP server 1.5 Server di memoria di massa 1.5.1 AFS server 1.5.2 NAS server 1.5.3 SAN server 1.5.4 ADSM/TSM 1.6 Server per il calcolo 1.6.1 Macchina dxcalc 1.6.2 Macchina axcalc 1.6.3 Farm Linux 1.7 Client 2 - Tipologie di attacco più frequenti 2.1 Attacchi in rete 2.1.1 Attacco Man In The Middle (MITM) 2.2 Attacchi di tipo DOS o DDOS 2.2.1 Saturazione di banda 2.2.2 Resource starvation 2.2.3 Bug software 2.2.4 Attacchi basati sul routing 2.2.5 Attacchi basati sul DNS 2.2.6 Smurfing 2.2.7 Fraggle 2.2.8 SYN Flood 2.3 Virus 2.3.1 Cosa è un virus 2.3.2 Storia 2.3.3 Categorie di virus particolari 2.4 Mail spam 2.4.1 Cosa è lo spam 2.4.2 Come difendersi dallo spam 2.4.3 Quanto può “costare” lo spam 2.4.4 Conclusioni 3 - ACL 3.1 Come funzionano le ACL 3.1.1 Sintassi. 3.1.2 Wildcard 3.2 Implementazione della ACL sul router dei LNF 3.2.1 Analisi dei requisiti. 3.2.2 Packet filtering in uscita. 3.2.3 Packet filtering in entrata. 3.2.4 ACL contro SYN-Flood. 3.2.5 ACL contro ping-Flood. 4 - Test delle vulnerabilità (Nessus) 4.1 Introduzione 4.2 Caratteristiche tecniche 4.3 Installazione 4.3.1 Struttura dei directory. 4.4 Utilizzo 4.5 Risultati ottenuti ai LNF 4.5.1 Dall’interno della LAN 4.5.2 Dall’esterno della LAN 5 - Firewall 5.1 Test effettuati 5.1.1 Cisco PIX515 5.1.2 Box OpenBSD 5.1.3 InfoGuard IGWall 5.1.4 Symantec 5600 5.1.5 Nokia IP 330 5.1.6 Clavister 5.1.7 Conclusioni 6 - Evoluzione verso le VPN 6.1 Introduzione 6.1.1 Cifratura e autenticazione 6.1.2 Tunnelling e protocolli 6.1.3 Specifiche per singoli utenti remoti 6.2 Test ai LNF 6.2.1 Configurazione del servizio Desidero ringraziare il responsabile del Servizio di Calcolo dei LNF dell’INFN Massimo Pistoni per avermi dato la possibilità di realizzare questo lavoro. 1 Capitolo 1 Presentazione dell’ambiente di lavoro In questo capitolo viene dapprima presentato l’ambiente dove è stato svolto il lavoro di tirocinio descritto in questa tesi. Successivamente viene brevemente descritto il problema della sicurezza, dopo di che vengono descritti l’infrastruttura di rete e i servizi offerti relativi al sito oggetto di questo studio. 1.1 Presentazione dei Laboratori Nazionali di Frascati dell’I.N.F.N. Il lavoro di tirocinio descritto in questa tesi é stato svolto presso i Laboratori Nazionali di Frascati dell’Istituto Nazionale di Fisica Nucleare. L’Istituto (d’ora in avanti INFN) é l’ente dedicato allo studio dei costituenti fondamentali della materia e svolge attività di ricerca, teorica e sperimentale, nei campi della fisica subnucleare, nucleare e astroparticellare. L’INFN nacque il giorno 8 Agosto 1951 da fisici delle università di Roma, Padova, Firenze e Milano al fine di proseguire e sviluppare la tradizione scientifica iniziata negli anni trenta con le ricerche teoriche e sperimentali di fisica nucleare di Enrico Fermi e della sua scuola. L’attività dell’INFN si basa su due tipi di strutture di ricerca complementari: le Sezioni e i Laboratori Nazionali. Le 19 Sezioni hanno sede in dipartimenti universitari e realizzano il collegamento tra Istituto e Università. I 4 Laboratori, con sede a Catania, Frascati, Legnaro e Gran Sasso, ospitano grandi apparecchiature e infrastrutture messe a disposizione della comunità scientifica nazionale e internazionale. Il primo Laboratorio nacque nella seconda metà degli anni cinquanta a Frascati per consentire la costruzione del primo acceleratore italiano: l’elettrosincrotrone. Nella figura 1.1 sono rappresentate Sezioni, Laboratori e Gruppi Collegati (piccoli nuclei con un numero limitato di dipendenti che afferiscono amministrativamente a Sezioni più grandi). La pianta organica dell’INFN è attualmente di 2014 dipendenti. 2 fig. 1.1 - Strutture dell’INFN La struttura dei Laboratori Nazionali di Frascati (d’ora in avanti LNF) é suddivisa in Divisioni e Unità funzionali; la differenza tra i due tipi di struttura é nelle dimensioni: le Divisioni sono piú grandi e complesse, le Unita funzionali piú piccole e dedicate. A loro volta infatti le Divisioni sono divise in Servizi. Le strutture. Le strutture più grandi dei LNF sono le due Divisioni: Acceleratori e Ricerca. Nella figura 1.2 si può vedere l’organigramma dei LNF 3 LNF D iv i s i o n e A c c e le r a t o r i D i v is i o n e R ic e r c a U .F . F i s ic a S a n i t a r ia U .F . M e d ic in a d e l L a v o ro S e r v iz io C a lc o lo S e r v iz io In fo s c ie n tif. S e r v iz io M a g a z z in i S e r v iz i o Supp. DAFN E S e r v iz io S e g r e t e r ia S e r v iz io P ro g e tta z . A p p . S p e r im . U .F . P r e v e n z io n e e p r o te z io n e U .F . F u n z io n a m e n t o S e r v iz io S e r v iz i o S v il u p p o e E le ttr . e a u to m . C o s t r . R iv e la t . fig. 1.2 - Strutture dei LNF In particolare il lavoro oggetto di questa tesi è stato svolto presso il Servizio di Calcolo della Divisione Ricerca. Il Servizio di Calcolo e Reti si occupa della configurazione e dell'amministrazione delle risorse di calcolo e della rete di trasmissione dati dei LNF. In particolare gestisce: • L’infrastruttura di rete locale: o Cablaggio strutturato in rame e in fibra o Apparati di rete locale (switch livello 2 e livello 3) • La connessione alla rete geografica o Il router di accesso • I seguenti servizi di rete: o DNS, DHCP o SMTP (Mail routing) o WWW o WebMail o Lpd server o IMAP server • Le seguenti risorse di memorizzazione di massa (mass storage) o AFS server o NAS server o SAN server o ADSM/TSM • Le seguenti risorse di calcolo vero e proprio o Computer axcalc 4 o Computer dxcalc o Farm linux 5 1.2 Problematiche relative alla sicurezza Dopo aver visto il contesto nel quale si è svolto il lavoro di tirocinio, in questo paragrafo vedremo quali sono le problematiche che hanno reso utile lo svolgimento di questo tirocinio. In pratica vedremo perché è necessario adottare delle misure di sicurezza per proteggere una rete, in che misura è necessario proteggerla, ricordando che generalmente più una rete è protetta, meno è accessibile e versatile, e infine quali mezzi la tecnologia odierna ci mette a disposizione per rendere più sicura una rete. 1.2.1 Perché è necessario proteggere una rete Durante i primi decenni della loro esistenza le reti servivano solo a collegare calcolatori tra loro per scambiarsi messaggi e per condividere periferiche come stampanti. Oggi invece la reti collegano molti più computer (si può pensare ogni macchina collegata ad Internet come un nodo terminale di questa rete) e le informazioni che sono veicolate tramite rete sono le più disparate. Alcune di queste in particolare devono rimanere protette dall’accesso di estranei: si può pensare ad esempio alla posta elettronica, o al commercio elettronico, o semplicemente all’autenticazione per il login su una macchina remota. 1.2.2 Quanto ‘proteggere’ una rete Questo è un argomento cruciale. Esiste una massima che dice:”L’unico computer sicuro è un computer disconnesso”. Questa battuta mette bene in evidenza il fatto che ‘sicurezza’ e ‘versatilità’ di una sistema informatico in genere sono due esigenze che vanno in direzioni opposte: quanto più un sistema deve essere sicuro, tanto più sarà chiuso e poco versatile; viceversa, quanto più un sistema deve essere ‘disponibile’, aperto, tanto più sarà insicuro. È ovvio che questo vale a parità di impegno profuso per l’amministrazione del sistema; è cioè vero che è possibile avere sistemi ‘aperti’ e nello stesso tempo sicuri, ma a costo di un maggiore carico di lavoro di gestione e di controllo del sistema stesso. Ad esempio, il sistema informatico di una banca, sul quale transitano e sono memorizzate transazioni finanziarie, ha requisiti di sicurezza decisamente maggiori rispetto alla rete di un laboratorio universitario. È però vero che se si volesse rendere sicuro un laboratorio semplicemente adottando misure simili al sistema bancario, si dovrebbe sostenere una spesa ingiustificata e si otterrebbe un laboratorio del tutto inutilizzabile. Nel progettare e realizzare l’insieme di misure di sicurezza per la LAN dei LNF abbiamo sempre tenuto in mente questa problematica e cercato il miglior compromesso tra sicurezza e accessibilità al sistema. In particolare, l’esigenza di sicurezza dei LNF è quella di rendere la rete sufficientemente protetta, in modo di tutelare il più possibile tutti i nodi interni (non solo quelli del servizio di calcolo, ma anche quelli degli utenti) da attacchi provenienti dall’esterno. Nello stesso tempo, però c’è l’esigenza di implementare servizi sulla WAN (server WWW, email, DNS, etc.), c’è l’esigenza di permettere agli utenti di scaricare file, di attivare 6 server per i propri servizi, di far collegare alla rete i portatili degli ‘ospiti’ (in particolare anche tramite rete wireless), etc. 1.2.3 Quali strumenti utilizzare per proteggere una rete Per rendere sicura una rete bisogna considerare che tutti i livelli del modello ISO/OSI sono coinvolti (Tanenbaum: Reti di computer), dal livello fisico al livello applicazione. Per ognuno dei livelli esistono diversi strumenti di protezione: ad esempio a livello fisico si possono proteggere i cavi della rete con tecniche particolari. Una di queste è quella di inserire i cavi in tubi con gas in pressione. In caso di tentativo di accesso al cavo la perforazione del tubo porta ad un abbassamento della pressione del gas, che può essere monitorata, e generare un allarme. Questa è una tecnica usata in ambito militare. Oppure, a livello data link, i pacchetti su una linea punto-punto possono venire codificati appena lasciano una macchina e decodificati appena arrivano all’altra. Tutti i dettagli possono essere gestiti dal livello data link, lasciando i livelli superiori ignari di cio’ che sta succedendo. Vediamo quali sono le soluzioni previste per i LNF utilizzando, come modello per la pila di protocolli, il modello TCP/IP e non il modello OSI, dato che la rete usa la tecnologia internet (IP): Livello Fisico: nessun accorgimento particolare se non quello di proteggere con una infrastruttura adeguata i cavi e le apparecchiature della rete. Per i cavi si usa sempre un cablaggio strutturato in classe E secondo lo standard ISO/IEC 11801 che prevede la chiusura dei cavi in apposite canalizzazioni; mentre le apparecchiature di rete sono sempre poste in armadi chiusi a chiave. Livello Collegamento (data link): tutte le macchine della LAN dei LNF hanno un MAC address conosciuto e inserito in un database. Questo permette di usare un meccanismo che inserisce le macchine in una Virtual LAN (VLAN) a seconda del loro MAC address. Se un utente (ad esempio un ospite) collega un nuovo PC ad una presa di rete, il PC viene inserito in una VLAN particolare con un accesso limitato. Questo meccanismo è illustrato più in dettaglio nel paragrafo 1.3.1 Livello IP: a questo livello si effettua il packet filtering. Questa tecnica, analizzata in dettaglio nel capitolo 3 è stata implementata come ACL sul router di accesso alla WAN, e studiata nel capitolo 5 dato che è uno dei servizi cardine di un firewall. Livello Trasporto: anche a questo livello si effettua il packet filtering. La differenza rispetto a quello di livello 3 (IP) è che a livello trasporto non si controlla solo l’indirizzo del mittente e del destinatario del pacchetto, ma anche il tipo di protocollo (TCP, UDP), e la porta di accesso. Livello Applicazione: Al livello più alto si trovano soluzioni quali:antivirus, per evitare tra l’altro l’installazione di back-door, antispamming. Inoltre si possono usare programmi per testare la sicurezza della rete quali:port scanner, Intrusion Detection System (IDS), vulnerabilty scanner, etc. 7 1.3 Caratteristiche e topologia della LAN La rete dei LNF copre praticamente il 100% del territorio. Nella fig. 1.3 si può vedere una mappa della dislocazione degli edifici dei LNF. fig. 1.3 – Mappa dei LNF La rete prevede uno switch centrale di livello 3 Cisco Catalyst 6509 come centro stella fisicamente collocato all’interno dell’edificio del centro di calcolo (edif. 14), più altri 4 switch di livello 3 in altrettanti edifici dove è necessario fare routing tra sottoreti, e una serie di switch di livello 2 (Cisco Catalyst 3500, 4000, 6000) negli altri edifici. I 4 router sono utilizzati: per le macchine del sistema di controllo dell’acceleratore di particelle (DAFNE, edif. 9, dove è presente un Cisco Catalyst 6000), per l’esperimento più grande ad esso collegato (KLOE, che usa al suo interno un Cisco Catalyst 6500), per l’ufficio di direzione (edif. 1 con un Cisco Catalyst 6000) e l’edificio 4 (Ares) con un Cisco Catalyst 4000. Inoltre i router di DAFNE e di KLOE sono collegati anche tra loro direttamente. Questo fa si che la macchina e l’esperimento possano scambiarsi dati senza dipendere dal funzionamento del resto della rete. Tutti i collegamenti tra router sono fatti in Gigabit Ethernet su fibra ottica. Il resto degli edifici è servito tramite switch di livello 2 collegati anch’essi allo switch di livello 3 centrale tramite Gigabit Ethernet. Il collegamento alla WAN è realizzato tramite un ulteriore router (Cisco 7507) collegato al router centrale tramite Gigabit Ethernet, e all’esterno tramite un canale ATM 155Mb/s su cui è definito un circuito virtuale da 34Mb/s. Come vedremo nel capitolo 3 i filtri di accesso (ACL) sono impostati proprio su tale router. Con questa configurazione, si mantiene separata la gestione dei filtri, che richiede molta CPU, dalla gestione dei pacchetti di secondo livello della rete 8 (effettuata invece in ASIC) che così avviene in maniera più veloce ed efficiente. Nella figura 1.4 si può vedere uno schema della rete dei LNF 9 fig. 1.4 – Schema della rete dei LNF 10 Una tecnologia molto utile, anche dal punto di vista della sicurezza, messa a disposizione dai router Cisco è quella che consente di suddividere le LAN virtuali non solo geograficamente (cioè a seconda della porta dello switch) ma anche a seconda dell’indirizzo di livello 2 del nodo collegato. Questa tecnologia prende il nome di VMPS. 1.3.1 VMPS La sigla VMPS sta per VLAN Membership Policy Server, ovvero server di gestione di appartenenza a VLAN. Tramite questo protocollo proprietario di Cisco si può realizzare una rete facendo si che un nodo appartenga ad una specifica VLAN a seconda del suo MAC address e non in funzione della porta o dello switch al quale esso è collegato. Ovviamente per far si che ciò sia possibile è necessario un database che metta in relazione i MAC address con le relative VLAN. Questo database risiede su due switch centrali e viene caricato al boot da un TFTP server. Questo meccanismo è molto utile per realizzare una LAN sicura e al tempo stesso non troppo “blindata”: se una stazione di lavoro appartiene a un dipendente o a una persona che lavora stabilmente all’interno dei LNF il suo MAC address viene inserito all’interno del database VMPS, e di conseguenza, il nodo stesso sarà inserito in una VLAN opportuna. Se invece qualcuno collega alla rete un PC ‘sconosciuto’ (cioè non presente nel database VMPS) esso viene comunque inserito in una VLAN, in modo che l’utente possa lavorare, però la VLAN nella quale viene inserito è filtrata, verso il resto della LAN dei LNF, dalle stesse ACL che si trovano sul router di accesso e attraverso le quali passano le connessioni provenienti dall’esterno. In questo modo tutti gli ospiti possono collegare i loro portatili a qualunque presa Ethernet e usare la rete, ma nello stesso tempo è molto difficile che un eventuale hacker possa fare danni. Ciò è molto utile, ad esempio, durante conferenze o meeting. Inoltre, a cause della insicurezza intrinseca delle reti wireless, è stata dedicata una VLAN specifica proprio a questo tipo di accesso. In questo modo chiunque si colleghi alla rete senza fili dei LNF è si connesso, ma deve passare attraverso le ACL. Lo schema adottato si può vedere nella figura 1.5: 11 WAN Utente ‘registrato’ 193.206.80.0/21 ACL 192.84.131.0/24 ACL Utente occasionale Rete wireless fig. 1.5 – Schema di funzionamento del VMPS È importante notare che lo switch mantiene separate le due sottoreti ‘rossa’ e ‘verde’. Quindi i pacchetti della rete ‘rossa’ (cioè quella degli utenti occasionali) diretti alla rete ‘verde’ (cioè quella interna dei LNF) sono smistati dal router (quindi a livello 3), e devono attraversare le ACL di ingresso come tutti i pacchetti provenienti dall’esterno (WAN). 12 1.4 Servizi di rete In questo paragrafo vedremo quali sono i servizi di rete forniti dal Servizio di Calcolo dei LNF. Li abbiamo già elencati all’inizio del capitolo, vediamoli ora più in dettaglio: 1.4.1 DNS e DHCP Ricordiamo brevemente a cosa serve il DNS: ogni nodo di una rete IP è contraddistinto da un indirizzo (detto appunto indirizzo IP) composto da 4 byte. Sarebbe però piuttosto scomodo ricordare questo indirizzo a memoria, molto più facile è ricordare un nome mnemonico di un nodo (può essere, ad esempio nel caso del PC di un utente il nome dell’utente stesso). Per poter fare cio’ serve però un meccanismo che associ gli indirizzi IP in forma numerica agli indirizzi IP in forma mnemonica. Agli albori di internet (Arpanet) il meccanismo era costituito semplicemente da una tabella contenuta nel file hosts dove era riportata una lista con il nome dei nodi seguito dal loro numero IP. Ogni notte tutti gli host della rete lo copiavano scaricandolo dal sito nel quale era mantenuto. Questo meccanismo funzionava ragionevolmente bene finché il numero di nodi era di un centinaio. Al crescere del numero di nodi collegati, e con la loro estensione geografica tale soluzione divenne impraticabile, perché il file sarebbe diventato di dimensioni troppo grandi, e soprattutto perché per evitare conflitti con i nomi degli host sarebbe servita una gestione centralizzata che non è compatibile con la realtà di una rete internazionale. Per ovviare a questi problemi fu messo a punto il DNS definito nei documenti RFC 1034 e 1035. Vediamo in breve come funziona il DNS: quando un programma deve trasformare un nome in un indirizzo IP chiama una procedura di libreria (resolver) passandole il nome come parametro di ingresso. Il resolver manda un pacchetto UDP al server DNS più vicino, che cerca il nome e restituisce l’indirizzo IP al resolver, che a sua volta lo trasmette al programma chiamante. Se il server DNS locale non conosce il nome interroga un server DNS gerarchicamente superiore. Questo perché lo spazio dei nomi Internet è suddiviso in domini di primo livello, a loro volta divisi in sottodomini e così via fino a formare un albero di nomi di domini. Per ogni livello di dominio esiste un server di dominio che conosce solo gli host presente nei suoi rami. Se gli viene chiesto un nome di host non appartenente al suo dominio, dovrà interrogare il nodo padre che girerà la richiesta al figlio opportuno, oppure di nuovo al padre. Ad esempio il dominio assegnato ai LNF è: lnf.infn.it In questo caso il dominio di primo livello è .it che identifica la nazione Italia, poi viene .infn che identifica l’Ente, poi .lnf che identifica i Laboratori di Frascati. Quindi un host di nome pippo nella rete dei LNF avrà un nome su Internet che sarà: pippo.lnf.infn.it Ogni volta che una macchina collegata in rete deve accedere a un host di Internet, ad esempio per aprire una pagina web, viene interrogato il DNS server 13 della rete locale. È quindi evidente quanto sia importante il buon funzionamento del server DNS. Infatti nel caso che il server DNS non funzioni, anche con la rete perfettamente funzionante, non sarebbe praticamente utilizzabile nessun servizio (funzionerebbero infatti solo quei servizi che accedono ad un host tramite numero IP). Per questo motivo il server DNS dei LNF è realizzato in maniera ridondante. Inoltre dato che il servizio di DNS non impegna eccessivamente la macchina, né come CPU né come rete è stato scelto di mettere sulla stessa macchina anche il server SMTP e il server DHCP. La ridondanza è ottenuta utilizzando 2 macchine identiche, la prima che funge da server DNS primario e da server SMTP secondario, la seconda viceversa è il server DNS secondario e il server SMTP primario. In questo modo, in condizioni normali ogni macchina svolge il proprio ruolo; se una delle due macchina si guasta l’altra svolge tutti e due i compiti, a prescindere da quale sia quella guasta. Per questo compito sono usate 2 macchine con architettura Intel Pentium II a 400MHz con 128 MB di RAM e scheda Ethernet 100Mbit. Per quanto riguarda il sistema operativo è stato scelto Linux nella distribuzione Red Hat 8.0 Il DHCP (Dynamic Host Configuration Protocol) è un protocollo di rete che permette ai dispositivi che ne facciano richiesta di essere automaticamente configurati per entrare a far parte della rete IP. Tramite questo protocollo, non è necessario specificare manualmente nessun parametro di rete, in quanto il server DHCP fornisce tutte le informazioni necessarie al client nel momento stesso in cui questo effettua il boot. Ovviamente si tratta di una soluzione molto comoda per tutti coloro che usano computer portatili in quanto tutte le volte che si muovono da una LAN all'altra, non devono manualmente specificare nulla: basta che inseriscano la presa di rete in una porta attiva, e il server DHCP farà il resto. Vediamo in breve come funziona questo protocollo: gli indirizzi IP da assegnare ai client vengono configurati nel database Scope del server DHCP. Il server garantisce inoltre l'indirizzo IP per un certo periodo di tempo, chiamato Lease time, scaduto il quale il client non è più autorizzato ad usare la configurazione IP ricevuta. Il processo di configurazione di un client avviene in 3 fasi: 1. Richiesta IP – Il client manda in rete un pacchetto broadcast di richiesta. La richiesta (DHCPDISCOVER) contiene inoltre l'indirizzo MAC della scheda di rete, questo per essere identificato univocamente dal server. 2. Offerta IP – Il server DHCP manda un messaggio (DHCPOFFER) broadcast contenente l'indirizzo IP. Il client utilizzerà il primo IP che riceverà, nel caso che ci siano più server DHCP sulla rete, gli altri verranno ignorati. 3. Selezione di IP - Dopo aver accettato un IP, il client manda un messaggio broadcast (DHCPREQUEST) informando tutti i server DHCP che ha accettato un IP. Il messaggio include l'indirizzo del server DHCP che ha mandato l'IP che è stato accettato; tutti gli altri server ritirano le loro offerte. Il server DHCP manda quindi un messaggio di conferma (DHCPACK) al client, contenente il valore di Lease per l'IP. Quando il client riceve il messaggio di ACK completa la configurazione del TCP/IP. 14 Come scritto precedentemente (paragrafo 1.4.1) i server DHCP sono due in modo da avere una ridondanza per questo servizio essenziale 1.4.2 SMTP Il server SMTP è essenziale per il funzionamento della posta elettronica. Ha il compito di ‘spedire’ le email dell’interno della LAN sia verso l’interno sia verso l’esterno della LAN; inoltre ha il compito di ‘accettare’ le email del dominio lnf.infn.it e di rigirarle alla macchina sulla quale sono configurati i mailbox degli utenti. Come abbiamo visto parlando del server DNS (paragrafo 1.4.1) le macchine che gestiscono il servizio sono 2 in modo da garantire una ridondanza in caso di guasto a uno dei due server. 1.4.3 WWW Il protocollo World-Wide Web, nato nel 1989 al CERN per condividere documenti collegati tra loro e distribuiti su migliaia di macchine su Internet, è oggi così diffuso che milioni di persone pensano che esso sia “Internet”. È utilizzato praticamente in qualsiasi settore, sia in ambito locale (intranet) che geografico (internet). Questo servizio è svolto da 3 macchine in parallelo che si spartiscono il carico di lavoro. Sono macchine più potenti di quelle di cui abbiamo parlato in precedenza, perché il carico di lavoro richiesto è superiore. Sono sempre macchine con architettura Intel, ma Pentium III a 1 GHz con 512 MB di RAM sempre con Linux Red Hat. Gli indirizzi serviti dai server web dei LNF sono: http://www.infn.it http://www.lnf.infn.it http://www.ac.infn.it http://scienzapertutti.lnf.infn.it 1.4.4 WebMail Questo è un servizio utile per consultare la propria casella di posta elettronica da una rete esterna rispetto ai LNF. Questo perché, come vedremo nel capitolo 3, non è possibile usare il protocollo IMAP dall’esterno a causa dei filtri applicati sul router per aumentare la sicurezza. Infatti il protocollo IMAP non prevede che i dati per l’autenticazione siano cifrati, quindi sarebbe pericoloso usarli al di fuori della LAN. Utilizzando invece il servizio di WebMail, si può leggere la posta attraverso un client WWW utilizzando il protocollo sicuro https. A causa del carico di lavoro richiesto questo servizio gira su una macchina dedicata dello stesso tipo di quelle usate per i server WWW: Pentium III a 1 GHz con 512 MB di RAM e Linux Red Hat. L’indirizzo tramite il quale si accede al servizio è: https://webmail.lnf.infn.it 15 1.4.5 LPD server Il servizio LPD (Line Printer Daemon) serve per usare le stampanti di rete attraverso un server che gestisce le code di stampa. Ci sono due macchine dedicate, una su piattaforma Windows per gli utenti con questo sistema operativo, una con piattaforma Linux per gli utenti che usano i vari dialetti di Unix, tra cui anche MacOS X. 1.4.6 IMAP server Questo servizio serve per far si che gli utenti possano leggere la posta direttamente dal proprio PC. È un protocollo di tipo client-server: il server legge le mailbox degli utenti; il client, che gira sui PC, interroga il server e rende disponibili le mailbox. Questo meccanismo si basa su una autenticazione che richiede una password, che però viene trasmessa dal client al server senza essere cifrata, quindi questo meccanismo è utilizzato all’interno della LAN, ma filtrato in modo da essere inaccessibile dall’esterno. 16 1.5 Server di memoria di massa In questo capitolo vedremo come è organizzato il sistema di memorizzazione (storage) dei LNF e quali tecnologie utilizza. In particolare faremo accenni a cosa è AFS, cosa è una dispositivo NAS, cosa è una rete SAN e infine il sistema di backup ADSM. 1.5.1 AFS server Il sistema AFS (Andrew File System) viene utilizzato per la distribuzione a livello mondiale degli home-directory e del software di esperimento. AFS è un file system distribuito che permette l'accesso a file o directory residenti su macchine connesse in rete locale e geografica. La struttura e i meccanismi di indirizzamento di AFS consentono la creazione di file system distribuiti su un gran numero di nodi che possono risiedere in siti geografici diversi. I comandi di AFS consentono un accesso semplice, soprattutto per coloro che conoscono l'ambiente Unix, rapido ed efficiente. AFS si basa sul modello client/server; i dati sono memorizzati su una o più macchine server e vengono trasferiti alle macchine client soltanto quando vengono richiesti. Da questo momento in poi, tutte le modifiche sono eseguite sulla copia locale e sono riportate sul server solo alla chiusura del file. In AFS viene definita ‘cell’ un'unità amministrativa autonoma il cui nome generalmente coincide con il nome del dominio TCP/IP. Dal punto di vista hardware, una cella si può considerare come un gruppo di macchine server e client, per esempio un Dipartimento universitario, un Istituto del CNR etc. Un raggruppamento di celle correlate tra loro viene chiamato ‘site’. Ai LNF vengono usati 2 IBM H50 con doppio processore e un IBM B80 come server per la cella lnf.infn.it. Tutte e tre le macchine gemelle sono collegate allo stesso sottosistema di dischi tramite doppio canale veloce SSA che permette, in caso di guasto hardware di uno dei tre sistemi, la continuità del servizio anche per i volumi non replicati. Al momento si sta testando anche una macchina Linux equipaggiata con 1,2 TB di dischi SCSI come quarto server AFS. È molto importante notare che il protocollo AFS prevede che la autenticazione sia fatta utilizzando il sistema Kerberos 4 che quindi evita l’invio di password in chiaro sulla rete. È anche possibile utilizzare Kerberos 5. In entrambi i casi però i dati in rete sono trasportati senza cifratura. Esiste anche il sistema DCE/DFS, che è un file-system distribuito con cifratura dei dati, ma attualmente è ancora poco usato nell’ambito della ricerca italiana. 1.5.2 NAS server La sigla NAS significa Network Attached Storage. Il termine è utilizzato per fare riferimento a dispositivi di memorizzazione da connettere a una rete al fine di fornire ai sistemi di computer servizi di accesso ai file. Un dispositivo NAS è composto da un motore che implementa i servizi di file e da una o più periferiche su cui vengono memorizzati i dati. I dispositivi NAS possono esportare filesystem usando diversi protocolli. 17 Nell'utilizzo più comune, un sistema NAS è uno speciale server destinato a esportare file ai client tramite una rete. Il client accede ai file utilizzando NFS (Network File System) o altri protocolli di condivisione di file in rete. Le periferiche NAS dispongono solitamente di processori integrati che ospitano un sistema operativo specializzato, detto anche microkernel, e un file system ottimizzato, entrambi realizzati appositamente per consentire al dispositivo NAS di servire file ai client con prestazioni particolarmente elevate. Vista la capacità di tali periferiche di fornire file a client estremamente eterogenei, i dispositivi NAS offrono una forma di condivisione di dati eterogenei. All’interno dei LNF il sistema NAS è usato per la distribuzione a livello locale del software e dei dati di esperimento. Il server scelto è un Procom NetForce 2500 avente le seguenti caratteristiche: • Cpu primaria e ridondante • Unità di controllo RAID 0,1,5 primaria e ridondante • Capacità di disco complessiva di circa 1,5 TeraByte • Interfacce di rete: Gigabit Ethernet • Throughput complessivo reale maggiore di 30 Mbyte/s • Protocolli di servizio delle aree disco e volumi: o NFS o NetBios 1.5.3 SAN server Una rete SAN (Storage Area Network) è molto semplicemente una rete dedicata alla memorizzazione dei dati (storage). Una rete SAN consiste in un'infrastruttura di comunicazione (che fornisce connessioni fisiche), in un livello di gestione (che organizza connessioni), in elementi di memorizzazione e sistemi di computer in modo da garantire un trasferimento di dati sicuro e robusto. 1.5.4 ADSM/TSM La sigla ADSM sta per ADSTAR Distributed Storage Manager; un sistema con tecnologia client/server per il salvataggio dei dati e la loro gestione. ADSM è stato integrato nel protocollo TSM (Tivoli Storage Manager). Ai LNF è utilizzato per la salvaguardia dei dati serviti dal server AFS con il seguente criterio: • Il sistema AFS effettua gli snapshot giornalieri (su disco locale) • Il sistema ADSM garantisce la salvaguardia dei dati con la seguente politica: o Giornaliero dei file critici di autenticazione AFS o Giornaliero delle inbox, e delle home directories AFS o Settimanale incrementale di tutti i volumi AFS o Mensile totale di tutti i volumi AFS 18 1.6 Server per il calcolo Come anticipato ci sono 3 risorse centralizzate dedicate al calcolo. Lo scopo principale a cui sono destinate queste macchine è quello di fornire potenza di calcolo per i ricercatori che hanno bisogno di eseguire programmi ad uso intenso di CPU. A questo compito sono dedicate 3 risorse: 1.6.1 Macchina dxcalc È una macchina Compaq 4100 con 4 processori Alpha 400MHz e 2 GB di RAM su cui gira il sistema operativo Compaq True 64 Vers. 4.0f patch level 1 1.6.2 Macchina axcalc È una macchina IBM S80 con la seguente configurazione hardware: • Backplane switched • Single Image System • 12 processori Risc/6000 450MHz , SMP • Espandibile a 24 processori • 16 GB di memoria RAM (espandibile a 32 GB) • 10 dischi da 18 GB in modalità RAID su SSA (80 MB/s) • • • • • • • • • • Con la seguente configurazione software: OS: IBM AIX 4.3.3 Compilatori: Fortran77, Fortran90, C, C++ Librerie: Cern, Mathematica S/W: ASIS, GNU e applicativi gratuiti vari (Pine, Netscape etc.) Gestione dei mailbox di tutti gli utenti Servizi di esportazione dei mailbox su TCP/IP utilizzando i protocolli POP3 e IMAP4 Creazione di code batch Utility di resource sharing per utilizzo interattivo e batch Servizi client fondamentali: client AFS e client ADSM Home directory degli utenti su cella locale AFS 1.6.3 Farm Linux È costituita da un rack di 10 macchine DELL PowerEdge 1550 con sistema operativo Linux RedHat 7.3 configurate come segue: • Dual Pentium III a 1GHz (256KB cache) bus 133MHz • 512MB RAM 133MHz • Scheda grafica integrata ATI Rage PRO 3D (4MB SGRAM) • U160 WideSCSI integrata • 2 dischi da 18 GB 10K rpm • CD-ROM, Floppy 1,44MB • Doppia scheda LAN 10/100 (protocollo PXE integrato) 19 Su queste macchine, grazie ad un software commerciale che permette di “clonare” il sistema operativo (Rembo), gira lo stesso sistema e sono configurate in maniera identica. In questo modo è molto semplice anche aggiungere altre macchine: basta semplicemente fare il boot via rete da un server Rembo su cui sono configurati i MAC address delle macchine da installare, automaticamente le macchine, al boot ottengono la configurazione di rete dal server DHCP, scaricano, dal server Rembo, l’immagine della partizione di sistema sul proprio disco rigido e sono pronte per il successivo boot da disco. 20 1.7 Client All’interno della rete LNF esistono moltissime tipologie di client che possono essere suddivise in 3 grandi categorie: • Macchine Windows • Macchine Macintosh • Macchine Unix Nella prima categoria rientrano le varie versioni del sistema operativo Microsoft in particolare le versioni XP e 2000. I PC Macintosh invece vanno suddivisi in 2 categorie, quelli con MacOS fino alla versione 9 e quelli dalla 10 in poi (MacOS X); questo quest’ultimo sistema è uno Unix, quindi rientra a tutti gli effetti nella ultima categoria, cioè quella delle macchine Unix. Quest’ultime sono divise tra PC con sistemi Linux e macchine Sun Microsystem, IBM, Compaq. Ai fini della sicurezza della rete è molto importante considerare non solo i server ma anche i client. Questo perché, generalmente, le macchine collegate alla LAN godono di privilegi maggiori rispetto a quelle esterne (le quali devono sottostare a sistemi quali ACL o firewall), inoltre accedono alle risorse locali (ad esempio server) con la velocità tipica di una LAN e non di una WAN. Tutto ciò fa si che qualora un malintenzionato riuscisse a ‘entrare’ su una macchina client avrebbe molte più possibilità di mettere in crisi tutta la rete. Ad esempio per la piattaforma Windows esistono molti software chiamati generalmente virus, che una volta installati (magari li installa l’utente stesso senza accorgersene) fanno si che la macchina apra una connessione verso l’esterno (eludendo così il firewall dato che la connessione è dall’interno verso l’esterno e non viceversa) alla ricerca della macchina dell’hacker che poi ne prende effettivamente il controllo. Per questa loro caratteristica tali software sono detti trojan-horse. Anche la piattaforma Linux non è immune da buchi di sicurezza. Ad esempio esiste una versione del daemon ssh con un baco che permette, tramite un exploit, di prendere il controllo della macchina come root dall’esterno. Probabilmente, data la loro minore diffusione, le macchine meno soggette a debolezze di questo tipo sono le macchine Apple. 21 Capitolo 2 Tipologie di attacco più frequenti 2.1 Attacchi in rete 2.1.1 Attacco Man In The Middle (MITM) La tipologia di attacco conosciuta con il nome “Man In The Middle”, cioè “Uomo in mezzo”, consiste nel dirottare il traffico generato durante la comunicazione tra due nodi verso un terzo nodo (attaccante). Durante l’attacco è necessario far credere ad entrambi i nodi terminali della comunicazione che l’host attaccante sia in realtà il loro interlocutore legittimo (vedi fig.2.1) Nodo 1 Nodo 2 Connessione logica Connessione reale Nodo Attaccante fig. 2.1 – Schema dell’attacco MITM In questo modo il nodo attaccante riceve tutto il traffico generato dai nodi 1 e 2 e si preoccupa di inoltrare correttamente il traffico verso l’effettiva destinazione dei pacchetti ricevuti. A seconda dello scenario in cui si opera l’attacco MITM può assumere forme diverse: 22 • • • Rete locale o ARP Poisoning o STP Mangling o Traffic desync o DNS Spoofing Da rete locale a remoto (attraverso un router) o ARP Poisoning o Traffic desync o DNS Spoofing o DHCP Spoofing o ICMP Redirection o IRDP Spoofing o Route Mangling Remoto o DNS Poisoning o Traffic tunnelling o Route Mangling Vediamo come lavorano: Rete Locale - ARP Poisoning Il protocollo ARP (Address Resolution Protocol) serve per convertire gli indirizzi di livello 3 (IP Address) in indirizzi di livello 2 (MAC Address) in modo tale che il pacchetto in uscita da un nodo possa essere indirizzato verso il nodo destinatario conosciuto in rete tramite il suo indirizzo MAC. Nello standard Ethernet il protocollo ARP prevede due tipi di messaggi: ARP request: richiede l’indirizzo MAC di un particolare indirizzo IP. Generalmente viene spedito in modalità broadcast ARP reply: viene spedito in risposta a un “request” dichiarando l’indirizzo MAC del nodo che corrisponde all’indirizzo IP richiesto Una volta ottenuta la corrispondenza tra indirizzo IP e indirizzo MAC, questa informazione viene mantenuta in una tabella chiamata ARP CACHE. Questa tabella serve per ottimizzare le prestazioni di rete. Infatti una volta richiesto un indirizzo MAC relativo ad un certo IP questo rimane memorizzato nella ARP CACHE, per un certo periodo di tempo, e può essere riutilizzato dal nodo per inviare altri pacchetti IP senza dover fare nuovamente una richiesta ARP. Per aumentare ulteriormente le prestazioni sono stati introdotti altri stratagemmi di memorizzazione (caching): se un nodo riceve una ARP-Reply, anche non richiesta, esso la memorizzerà in cache. Alcuni kernel (come quello di Linux) adottano anche un meccanismo di caching all’arrivo di una ARP-Request. Vediamo più in dettaglio cosa succede nei seguenti 3 casi: • Spedizione di un pacchetto IP – Il kernel controlla se ha in cache l’indirizzo MAC corrispondente all’indirizzo IP di destinazione. Se si, costruisce il frame ethernet e lo spedisce; se no manda una ARP-Request e una volta ottenuta la risposta prepara il frame e lo spedisce. • 23 • • Arrivo di una ARP-Request – Il Kernel risponde con una ARP-Reply. Alcuni kernel inseriscono l’indirizzo MAC del sorgente in cache nell’ipotesi che anche lui dovrà a breve comunicare con l’altro. Arrivo di una ARP-Reply – Se l’ARP-Reply era stata sollecitata dal kernel viene immediatamente scritta in cache. Alcuni kernel (Windows e Linux) inseriscono in cache anche ARP-Reply non sollecitate. Altri (Solaris) non sovrascrivono la cache solo se l’indirizzo relativo a quell’IP era gia’ presente in cache. Vediamo come si può sfruttare questo meccanismo per fare un attacco: Supponiamo di volerci inserire tra due nodi (supponiamo quindi che il nostro nodo esegua l’attacco): si mandano delle false risposte ARP ai due host che si vogliono attaccare. Nelle risposte si comunicherà al primo host che l’indirizzo MAC del secondo host è il nostro, e lo stesso si farà col secondo host. Da quel momento in poi tutti i pacchetti che dovrebbero viaggiare tra le vittime verranno in realtà spediti all’host attaccante. Vediamo un esempio: HOST1: MAC:01:01:01:01:01:01 IP:192.168.0.1 HOST2: MAC:02:02:02:02:02:02 IP:192.168.0.2 HOSTATTACK: MAC:03:03:03:03:03:03 IP:192.168.0.3 Per portare a termine l’attacco è necessario che i pacchetti siano inoltrati correttamente verso l’effettiva destinazione. Quindi l’attaccante non deve fare altro che inoltrare a HOST1 (MAC:01:01:01:01:01:01) i pacchetti indirizzati a 192.168.0.1 e a HOST2 (MAC:02:02:02:02:02:02) i pacchetti indirizzati a 192.168.0.2. La cache è periodicamente cancellata dal kernel, quindi per poter portare a termine un attacco ARP-Poisoning a lungo termine, l’attaccante dovrà continuamente rinfrescare il valore di timeout delle entries mandando i relativi ARP-Reply ad intervalli regolari minori del timeout. Rete Locale - STP Mangling Questo non è un vero e proprio attacco MITM, ma piuttosto consente di ricevere delle copie dei pacchetti che circolano in una LAN con una serie di switch, e che normalmente non sarebbe possibile ricevere. Si basa sul meccanismo dello “spanning tree”. Lo spanning tree (prot. 802.1d) è un protocollo di livello 2 che serve per evitare cicli (“loop”) di pacchetti qualora siano presenti percorsi ridondanti per rendere a prova di guasti (“fault tolerant”) una rete di switch. Vediamo come funziona prendendo come riferimento il modello Cisco Catalyst. Ogni pacchetto che ha come destinazione un indirizzo MAC non presente nelle tabelle degli switch, così come ogni pacchetto broadcast o multicast, viene inoltrato su tutte le porte dell’apparato, sia quelle collegate a computer, sia quelle collegate ad altri switch. Questo potrebbe portare e dei “loop”. La soluzione consiste nel mettere in stato di “blocking” (e quindi non far partecipare all’inotro dei pacchetti) tutte le porte che fanno parte di percorsi • 24 ridondanti. Per risalire alla topologia della rete, e costruire un albero privo di loop, gli switch che supportano 802.1d scambiano dei pacchetti di “bridge protocol data unit” (BPDU) con i loro vicini. Lo scambio si conclude con l’elezione di un “root switch” che sarà la radice dell’albero di inoltro e con la designazione, da parte di ogni switch, della porta corrispondente al percorso più breve per raggiungere le radice e della porta (o delle porte) per inoltrare i pacchetti ai rami inferiori dell’albero. In fig. 2.2 e 2.3 possiamo vedere un esempio di come si modifica una rete magliata dopo l’applicazione dell’algoritmo di spanning tree: fig. 2.2 Rete con percorsi ridondanti fig. 2.3 Rete con percorsi ridondanti dopo l’esecuzione dello spannig tree Ogni pacchetto contiene l’identificativo di priorità dello switch che lo sta trasmettendo, l’identificativo della porta di trasmissione, e altre informazioni 25 meno importanti per l’argomento in oggetto. L’identificativo di priorità è composto da 2 byte (il valore di default è 32768) più l’indirizzo MAC dello switch. Minore è questo numero, maggiore è la priorità. In una configurazione di default, quindi, lo switch con priorità maggiore (root switch) sarà quello con l’indirizzo MAC più basso. Inizialmente tutte le porte dello switch passano attraverso uno stato di “listening” e poi di “learning”, in questo stato lo swtich comincia a trasmettere le BPDU. All’inizio ogni switch crede di essere root. Quando uno switch riceve un pacchetto che indica una radice con priorità maggiore della sua, prende quella come root e identifica la porta da cui l’ha ricevuto come “root port”. Quindi lo switch inizia a trasmettere pacchetti contenenti il “root ID” aggiornato. Alla fine della fase di “learning”, ogni switch sa quali porte sono coinvolte nello spanning tree (le porte da cui ha ricevuto BPDU), e ha identificato la sua root port (cioè la porta relativa al percorso più breve per raggiungere la radice). A questo punto, per ogni segmento di rete, lo switch più vicino alla radice (e con ID più basso) viene eletto “designated switch”. Questo switch identifica la porta che lo collega al segmento, di cui è stato eletto “designato”, come designated port (tutte le porte del root switch coinvolte nello spanning tree diventano “designated”). A questo punto, ogni switch mette nello stato di blocking tutte le porte coinvolte nello spanning tree che non siano “root” o “designated”. Le altre vengono messe in stato “forwarding”, raggiungendo una configurazione stabile e priva di loop. Le porte in stato forwarding continuano a ricevere e mandare BPDU (le porte blocking ricevono soltanto) per poter reagire all’inserimento di un nuovo root nella rete o alla caduta di un link. Questo avviene quando uno switch non riceve più BPDU sulle porte root o designated (probabilmente uno switch è “andato giù”) per un certo periodo di tempo, e lo switch forza un cambiamento di topologia, rimettendo in gioco le porte che erano state tenute in “blocking”. Per eseguire l’attacco è sufficiente costruire e inviare pacchetti che identifichino il nostro host come root, mettendo a zero i campi di priorità, ed eventualmente “abbassando” manualmente il nostro indirizzo MAC (solo nel caso sia presente uno switch a priorità zero). In breve tempo tutti gli switch “ricostruiranno” la rete utilizzando il nodo attaccante come radice. Questo gli permette di ricevere traffico unicast non diretto ad esso. Quando l’attacco termina, semplicemente gli switch reagiranno e ridisegneranno un nuovo albero senza il nodo attaccante. Durante l’attacco, i pacchetti raggiungono comunque anche il legittimo destinatario. Per ottenere il vero MITM (se si riuscisse a monitorare entrambi i versi di una connessione) si potrebbe tentare di “desincronizzare” le sessioni TCP. 26 Rete Locale - Traffic desync Se si è in grado di poter leggere tutto il traffico di un segmento di rete (ad esempio perché si è collegati ad un hub, oppure a una porta “monitor” di uno switch, o ancora perché si sta usando la tecnica del STP mangling) si possono inserire, all’interno di una connessione TCP, dei pacchetti (costruiti ad hoc) in maniera tale da far incrementare il numero di sequenza atteso. In questo modo il destinatario della connessione verso cui si sono spediti questi pacchetti smetterà di accettare il traffico proveniente dalla sorgente legittima poiché lo riterrà obsoleto, e accetterà invece il traffico che proviene dal nodo attaccante, che lo avrà eventualmente modificato e rispedito (dopo aver aggiornato i numeri di sequenza). • Rete Locale - DNS spoofing Come anticipato nel primo capitolo, il servizio DNS serve per convertire i nomi IP nei corrispondenti numeri IP. Il protocollo è piuttosto complesso, qui ci limiteremo a vedere un modo semplice per ingannare una macchina che fa una richiesta. Quello che si vuole fare con lo “spoofing” è fornire in risposta ad una macchina un indirizzo IP voluto invece che quello reale, in modo tale che tutto il traffico seguente sia indirizzato al nodo attaccante invece che al legittimo destinatario. Il protocollo DNS prevede che il pacchetto contenga un campo chiamato ID (lungo 2 byte) per identificare le risposte. Questo minimale meccanismo di sicurezza fa si che non si possano generare risposte alla cieca. Ma se l’attaccante può leggere il traffico in rete, potrà leggere anche l’ID della domanda e formulare la risposta con l’ID corretto prima che il vero server DNS risponda. Una volta ingannato il client l’attaccante può fare da proxy tra esso e il server, oppure può non contattare mai il server reale e mostrare servizi fasulli al client. • Da Locale a Remoto – ARP poisoning Quando un host deve mandare pacchetti verso una destinazione che non è all’interno della sua LAN, guarda nelle sue tabelle di routing alla ricerca del gateway per tale destinazione. Una volta conosciuto l’indirizzo IP del gateway, l’host farà una ARP-Request per conoscere il suo indirizzo MAC. A questo punto i pacchetti potranno essere mandati in rete con l’effettivo inidirizzo IP del destinatario e l’indirizzo MAC del gateway come destinazione. Sarà poi il gateway a prendersi carico di inoltrare i pacchetti verso la destinazione scelta. Esattamente come nel caso della rete locale, facendo un “poisoning” dell’indirizzo del gateway di default su un host, saremo in grado di ricevere tutto il traffico che tale host farà verso “internet”. Valgono quindi tutte le considerazioni fatte precedentemente a riguardo. • Da Locale a Remoto – Traffic desync Valgono le stesse considerazioni fatte per il caso della rete locale, dato che questa tecnica opera a livello TCP. • 27 Da Locale a Remoto – DNS spoofing Anche qui valgono le stesse considerazioni fatte per il caso della rete locale, perché comunque si opera a livello 3. • Da Locale a Remoto – DHCP spoofing Il servizio DHCP è utilizzato per l’assegnazione in maniera dinamica di una serie di parametri per la connettività di rete ad un host che ne fa richiesta. Il protocollo usa UDP come layer di trasporto e non supporta alcun tipo di autenticazione. Il protocollo DHCP è in realtà abbastanza complesso ma ci limiteremo a una trattazione minimale inerente alle informazioni necessarie a portare a termine l’attacco. L’attacco avviene in questo modo: intercettando una richiesta DHCP è possibile rispondere prima del vero server assegnando, ad esempio, alla macchina che ne fa richiesta, un gateway di default falso o un DNS server falso. Ad esempio assegnando come gateway l’indirizzo IP di una macchina gestita dall’attaccante, si ottiene che tutto il traffico passa attraverso di essa. Assegnando invece un DNS falso si possono intercettare tutte le richieste di risoluzione dei nomi e si può facilmente portare un attacco di tipo DNS spoofing • Da Locale a Remoto – ICMP redirection Il protocollo ICMP è usato per una varietà di scopi, tra cui il più famoso è probabilmente l’applicativo “ping”. Un altro strumento è il “redirect”. Si usa quando in una rete sono presenti più di un gateway. Supponiamo che in una rete ci siano due gateway chiamati GW1 e GW2. Supponiamo che GW1 sia, per l’host H, il gateway per una serie di indirizzi. Se però GW1, per instradare un pacchetto ricevuto da H, è costretto a passare per GW2, informerà l’host con un pacchetto ICMP REDIRECT, dicendogli di instradare i pacchetti successivi, per la medesima destinazione, direttamente verso GW2, eliminando così un salto (hop) dal tragitto. È importante notare che nel pacchetto REDIRECT sia presente una parte del pacchetto originale che GW1 è stato costretto a inoltrare su GW2. Questo è necessario perché l’host sia in grado di capire a quale “flusso” fa riferimento il REDIRECT. L’attacco consiste nel costruire un pacchetto ICMP REDIRECT per deviare il traffico che H inoltrerebbe attraverso GW1 per una data destinazione e far agire l’host dell’attaccante come se fosse un gateway più comodo per tale destinazione. In questo caso si manda ad H un pacchetto mascherando l’IP dell’attaccante come se il pacchetto provenisse da GW1. H comincerà a usare il nodo di attacco come gateway il quale poi inoltrerà i pacchetti a GW1, avendo cura di non spedire pacchetti REDIRECT “leciti” ad H che indichino GW1 come gateway preferenziale. • Da Locale a Remoto – Route mangling Questo tipo di attacco consiste nel far credere ad un host H collegato ad Internet tramite un gateway GW che la strada migliore per raggiungere un qualsiasi nodo esterno passi per un altro gateway che è la macchina di attacco. Questo tipo di attacco si rivolge però non all’host H ma al gateway GW • 28 mandandogli dei pacchetti che annunciano la macchina attaccante come un router con una ottima metrica per una determinata rete. Una volta fatto ciò rimane il problema di far arrivare effettivamente i pacchetti al legittimo destinatario, in quanto l’unico che potrebbe farlo è proprio GW che non si può usare perché rimanderebbe i pacchetti alla macchina attaccante. Per ovviare a questo serve un’altra macchina, ovunque nel mondo, con un IP pubblico con la quale instaurare un tunnel unidirezionale GRE (General Routing Encapsulation) attraverso il quale saranno spediti i pacchetti ricevuti e che si occuperà di smistarli. Remoto – DNS poisoning Questo attacco consiste nel modificare la tabella di un server DNS in modo che, a seguito di una richiesta, venga indicato ad un host il numero IP della macchina attaccante invece di quello realmente richiesto. Per fare cio’ l’attaccante fa credere al server DNS “ingannato” di essere a sua volta un server DNS autoritativo per l’indirizzo richiesto dall’host, in modo che possa rispondere alla richieste del server DNS e quindi fornirgli un numero IP falso. • Remoto – Traffic tunnelling L’obiettivo di questo attacco è quello di dirottare, verso l’attaccante, il traffico in entrata di un router remoto, sfruttando la “protocol encapsulation” e il “traffic tunnelling”. Questo tipo di attacco necessita della possibilità di avere accesso a livello di amministrazione su un router a monte del server. • Remoto – Route Mangling L’obiettivo è quello di intercettare il traffico tra due punti A e B. L’attacco consiste nel far si che il traffico passi attraverso la macchina attaccante. Gli approcci sono 2: dirottare effettivamente il traffico verso il nodo della macchina attaccante o dirottarlo verso un router che ha instaurato un tunnel verso la macchina attaccante. Anche in questo caso c’è da superare la difficoltà di inoltrare il traffico “rubato” verso la legittima destinazione. • 2.2 Attacchi di tipo DoS o DDoS a servizi di rete Lo scopo di un attacco DoS o anche DDoS è quello di negare agli utenti legittimi l’uso totale o parziale di una o più componenti di un sistema informativo ad esempio banda di rete o sistemi hardware e software. Infatti il significato della sigla DoS è proprio “Denial of Service”, cioè “Indisponibilità del servizio” e la lettera “D” aggiuntiva sta per “Distribuited”, cioè distribuito perché viene da più sorgenti. I motivi per cui si esegue un attacco di questo tipo possono essere: • Frustrazione: l’attaccante non riesce ad introdursi in un sistema e decide di farlo cadere • Azione dimostrativa: singoli o gruppi hanno motivi personali o politici di rivalsa nei confronti di singoli o organizzazioni 29 • 1. 2. 3. 4. 5. Necessità pratiche: necessità di operare un reboot per rendere effettive alcune modifiche al sistema al fine di renderlo più vulnerabile Le tipologie di attacco possono essere diverse: Saturazione di banda Resource starvation (saturazione delle risorse) Bug Software Attacchi basati sul routing Attacchi basati sul DNS Vediamoli più in dettaglio: 2.2.1 Saturazione di banda Questo attacco consiste nel generare una quantità di traffico tale da consumare tutta la banda a disposizione di un sito. È possibile farlo in due modi: 1. Il sito da attaccare ha a disposizione poca banda e il sito dell’attaccante ha a disposizione molta banda. In questo modo è facile generare una quantità di traffico tale da mettere in crisi la rete sotto attacco. 2. Il sito da attaccare ha a disposizione più banda del sito attaccante. In questo caso è più difficile portare a termine l’attacco: servono delle tecniche di “amplificazione” del traffico. 2.2.2 Resource starvation Questo tipo di DoS tende a saturare altre risorse del sistema piuttosto che i link di rete come ad esempio tempo di CPU, memoria, spazio su disco, numero massimo di file aperti. In genere il sistema diventa inusabile oppure collassa. 2.2.3 Bug software Si sollecita il sistema in modo da attivare delle situazioni che non sono correttamente gestite dal software di sistema. Ad esempio bug nello stack di rete oppure situazioni di buffer overflow o ancora errori presenti in HW dedicato. Un caso tipico di bug è il cosiddetto “IP fragmentation overlap”: Si basa sulla vulnerabilità presente nelle implementazioni software dello stack IP, per quanto riguarda il riassemblaggio della sequenza dei pacchetti. La tecnica consiste nel generare una sequenza di pacchetti costruita “ad arte” in modo da provocare il crash o il reboot del sistema 2.2.4 Attacchi basati sul routing Questo tipo di attacco si basa sulla manipolazione delle tabelle di routing in modo da deviare tutto o parte del traffico della rete verso una destinazione diversa o verso un “buco nero”. 2.2.5 Attacchi basati sul DNS L’attaccante manipola la cache del sistema DNS in modo da deviare tutto o parte del traffico della rete verso una destinazione diversa o verso un “buco nero” 30 Vediamo ora alcune tecniche utilizzate per portare a termine questi attacchi: 2.2.6 Smurfing Questa tecnica basa la sua efficacia sul fatto di mandare una pacchetto ICMP di tipo “ping” verso un indirizzo broadcast di una rete. In questo modo ogni host della rete risponde al ping con un altro pacchetto ICMP diretto verso l’host che ha fatto la richiesta. In questo modo con un solo pacchetto si ha la possibilita di generarne decine o centinaia (a seconda del numero di nodi della rete). Se l’attaccante usa la tecnica dello “spoofing” vista in precedenza per inviare il proprio ping, facendo finta di essere la macchina vittima, quest’ultima riceverà una serie di risposte a ping non richiesti. 2.2.7 Fraggle È simile allo “Smurfing”, ma usa il protocollo UDP invece di ICMP, bisogna notare che se gli host sulla rete “amplificatrice” non sono configurati per rispondere ai pacchetti UDP, trasmettono comunque indietro un pacchetto ICMP “unreachable” generando comunque traffico. 2.2.8 SYN Flood Usa una debolezza nella implementazione del protocollo di connessione “three way handshake”. Normalmente per stabilire una connessione TCP il primo host manda un pacchetto SYN al secondo che risponde con un SYN-ACK, dopo di che il primo spedisce un ACK al secondo e viene instaurata la connessione. L’attacco consiste nel mandare pacchetti SYN con l’indirizzo mittente modificato (Spoofing) alla vittima in modo che quest’ultima mandi i pacchetti SYN-ACK verso un host inesistente (“buco nero”) e rimanga in attesa del relativo pacchetto ACK. L’obiettivo è di far riempire la coda delle connessioni “potenziali” fino ad esaurire tutte le risorse allocate allo scopo. 31 2.3 Virus In questo paragrafo vedremo cosa sono i virus e perché sono importanti ai fini della sicurezza di un sistema informatico. I motivi principali sono due: • Innanzitutto un virus impedisce il corretto funzionamento di una macchina, sia di una postazione di lavoro, sia di un server. Mentre è relativamente facile tenere un virus lontano dai server è molto più difficile fare lo stesso su tutti i nodi client della rete soprattutto perché se l’utente ha il pieno controllo della propria macchina (password di amministratore) non gli si può impedire di installare programmi potenzialmente pericolosi. • Un altro motivo per cui i virus possono essere un pericolo è il fatto che se una rete contiene un nodo “infettato” esso può aprire connessioni verso l’esterno rendendo tutta la rete vulnerabile scavalcando i filtri sul router (o su eventuali firewall). 2.3.1 Cosa è un virus Un virus informatico è un programma, cioè una serie di istruzioni scritte da un programmatore ed eseguibili da un computer, che ha le seguenti caratteristiche: • • • • • • è stato scritto per “inglobarsi” e cioè confondersi alle istruzioni di altri programmi modificandoli chi l'ha scritto ha previsto la possibilità che il virus sia in grado di replicarsi, ovvero di copiare le istruzioni che lo compongono in altri programmi dopo un tempo prestabilito, necessario per effettuare la “replicazione”, il virus comincia a compiere l'azione per cui è stato scritto, che può consistere, per esempio, nel distruggere dati e/o programmi presenti su di un supporto magnetico o, semplicemente, nel far comparire a video un messaggio. Da ciò si deduce che: i virus non sono capaci di un comportamento autonomo: tutto ciò che sono in grado di fare è stato puntualmente previsto, come per qualsiasi programma di computer, dai programmatori che li hanno ideati e scritti i virus sono facilmente identificabili ed eliminabili da programmi, detti perciò “antivirus”, scritti appositamente; questi ricercano negli altri programmi presenti sul computer la sequenza di istruzioni che caratterizza il virus; ciò è però possibile solo se i virus sono noti, e cioè se è nota, almeno in parte, la sequenza di istruzioni con cui sono stati scritti: tale sequenza è diversa per ogni virus i virus, come tutti i programmi, non possono funzionare, e quindi portare a termine il compito loro assegnato, se non nel sistema per cui sono stati scritti; quindi un virus scritto per computer che usano il sistema operativo MS/DOS, non potrà “funzionare” su computer Macintosh che usano un diverso sistema operativo, e vice versa 32 • • i virus informatici (“virus” in latino significa veleno) hanno mutuato il loro nome dal campo medico, biologico, per una vaga somiglianza con alcune caratteristiche dei virus nella microbiologia: come questi ultimi, per riprodursi, devono penetrare in una cellula ospite ed assumere il controllo dei suoi processi metabolici, così i virus informatici devono penetrare nel programma ospite modificandolo, sia per riprodursi sia, in seguito, per danneggiare dati e/o programmi presenti su supporti registrabili come nella biologia i virus sono organismi relativamente semplici e molto piccoli, rispetto all'organismo che invadono, così anche i virus informatici sono dei programmi costituiti da poche centinaia di istruzioni, al massimo un migliaio; ciò consente loro di portare a termine il compito per cui sono stati scritti senza, in genere, far notare la loro presenza all'utente del computer. 2.3.2 Storia Il primo virus fu sviluppato nel novembre del 1983, con fini dimostrativi, nell'ambito di una ricerca finanziata da una delle principali società costruttrici di computer ed inserita in un più generale progetto di studio della sicurezza dei sistemi informativi. L'obiettivo della ricerca era di dimostrare come le possibilità di un attacco al patrimonio informativo di un'azienda non fossero limitate a quelle tradizionalmente prese in esame negli studi sulla sicurezza fino ad allora svolti; tali studi avevano incentrato la loro attenzione sull'attacco fisico (p.es. atti terroristici), sulla conoscenza illegittima di password e su modifiche ai programmi effettuate da personale interno alle aziende. L'esperimento, che riuscì perfettamente, dimostrò che predisponendo opportunamente il programma aggressore era possibile attaccare qualsiasi sistema: il virus sperimentale, sviluppato in sole otto ore da un esperto, impiegava meno di mezzo secondo per replicarsi “copiandosi” in un altro programma, che diventava, a sua volta, “portatore” del virus. Il primo virus sviluppato in Italia, che ebbe una notevole diffusione in tutto il mondo, fu il cosiddetto virus della pallina, denominato “ping-pong”, che si limitava a far comparire sul video del computer una “faccina sorridente” che si spostava su tutto lo schermo; è quasi certo che tale virus sia stato realizzato per fini di ricerca, nel 1987, da alcuni studenti del politecnico di Torino. 2.3.3 Categorie di virus particolari Esistono inoltre 2 categorie particolari di virus: i “cavalli di Troia” (“Trojan Horse” o più semplicemente “Trojan” e i macro-virus. I primi devono il loro strano nome al meccanismo che usano per diffondersi: come il cavallo costruito dall’astuto Ulisse fu consciamente portato dentro le mura di Troia dagli stessi abitanti della città che lo credevano un omaggio fatto dai Greci ad una divinità per carpirsene il favore, così i programmi in questione sembrano essere dei normali programmi scritti, ad esempio, per gestire archiviazioni di dati, ma in realtà, una volta “fatti entrare” nel computer 33 dallo stesso utente, tratto in inganno dal loro nome, provvedono a modificare programmi e dati dell'hard disk del computer determinandone, in tutto o in parte, una sua inservibilità. Un caso famoso è accaduto alla fine del 1989 quando una sedicente società panamense inviò a utenti di personal computer di mezzo mondo copie di un dischetto contenente un programma informativo sull'A.I.D.S.; il programma dava delle informazioni sul virus; inserendo, poi, alcuni dati riguardanti la proprie recenti abitudini sessuali si poteva avere persino la probabilità di essere venuti a contatto con il virus dell’A.I.D.S.. Il programma dopo essere stato eseguito una novantina di volte visualizzava un minaccioso messaggio ed invitata gli utilizzatori a versare una somma in dollari ad una non meglio identificata società «PC Cyborg Corporation», con sede in Panama, se si voleva ottenere un ulteriore dischetto contenente la chiave per recuperare il contenuto dell'hard disk del computer che da quel momento era divenuto inutilizzabile, in quanto il programma medesimo aveva provveduto a cambiarlo in base ad un algoritmo conosciuto solo dai suoi autori. Il 1° febbraio del 1990 fu arrestato, negli Stati Uniti, Joseph L. Popp, uno zoologo residente nell'Ohio. Poiché il caso dei dischetti A.I.D.S. fu portato all'attenzione della polizia britannica, e le indagini furono avviate da quest'ultima, a seguito del suo arresto ne fu richiesta l'estradizione da parte delle autorità britanniche sotto l'accusa di ricatto e di estorsione. Nel febbraio del 1991, a seguito del parere favorevole del Dipartimento di stato americano, L. Popp venne trasferito in Gran Bretagna per essere processato; Joseph L. Popp rischia la condanna a quattordici anni di detenzione. Siccome migliaia di copie di questo dischetto furono spedite anche nel nostro Paese, contro la stessa persona la magistratura italiana ha disposto il rinvio a giudizio per tentata estorsione. I macro-virus invece sfruttano una caratteristica presente nei pacchetti di Microsoft che è quella di poter usare uno pseudo-linguaggio (il linguaggio macro, appunto) per poter programmare alcune funzioni dei suddetti programmi. Attraverso l'uso delle macro, e quindi di un linguaggio di programmazione, è possibile registrare insieme ad un documento (testo o tabella che sia) dei comandi che vengano lanciati automaticamente all'apertura del documento medesimo senza che l'ignaro utente si accorga di nulla. Se è alquanto difficile, ma non impossibile, fare in modo che un virus di macro riesca a modificare dei programmi eseguibili (EXE, COM) per fare in modo che i medesimi si facciano portatori del virus medesimo, realizzare un programma che cancelli i dati con le macro è una cosa veramente alla portata di qualsiasi utente evoluto. 34 2.4 Mail spam Vediamo innanzitutto di definire cosa è lo spam: 2.4.1 Cosa è lo spam Lo Spam consiste nell'invio di una stessa email, contenente di solito pubblicità, a centinaia, se non a migliaia di persone, basandosi sul fatto che la posta elettronica è gratuita. Il termine deriva dallo sketch di un gruppo comico inglese, i Monty Python, su una nota marca di carne in scatola “Spam”. A volte si può trovare indicato anche con la sigla U.C.E. che sta per “Unsolicited Commercial Email”, ovvero email commerciale non richiesta. C’è stato un antenato dello spam negli Stati Uniti: l'invio di FAX o messaggi vocali via telefono, sfruttando il fatto che le telefonate urbane erano completamente gratuite. Questo fenomeno e' stato prontamente bloccato attraverso una legge. Purtroppo la strada per bloccare lo spam è più difficile data la natura sovranazionale della rete. Lo spam è un fenomeno negativo perché è chi riceve che paga. Il provider paga le infrastrutture che vengono abusate, il cliente paga il tempo per scaricare, paga il tempo per leggere esaminare e cancellare quello che quasi sempre sono messaggi che non ha richiesto. Non essendoci virtualmente costi a carico del mittente non esiste quindi un freno al numero dei messaggi inviati che frequentemente raggiungono l'ordine di grandezza delle decine di milioni. Ancora peggio, per ridurre ulteriormente i costi, gli spammer hanno iniziato ad utilizzare i servers altrui per la distribuzione del proprio spam, avvalendosi del fatto che ancora la maggior parte dei mail server su Internet permettono questo. Questi comportamenti sono illegali, in quanto causano danno al malcapitato gestore del mail server che si trova un netto incremento di traffico sulle proprie linee oltre a dover perdere parecchio tempo per bloccare l'abuso, rispondere ai destinatari ed eliminare tutti i messaggi che non possono andare a destinazione. Nonostante ciò, queste pratiche sono utilizzate continuamente dagli spammer, perché putroppo sono difficilmente rintracciabili o denunciabili. Attualmente il traffico di SPAM ricevuto dagli utenti italiani di Internet si quantifica in “qualche messaggio al giorno”, ma visti i ritmi di crescita di questo fenomeno è probabile che in meno di un anno si riceveranno anche molte decine di messaggi al giorno. 2.4.2 Come difendersi dallo spam Non e' facile. Esistono alcuni metodi, alcuni sono totalmente inutili (ad esempio inviare false risposte di casella inesistente), altri lo sono fin troppo (rischiando di rifiutare messaggi legittimi). Non solo, se la cancellazione avviene dopo la ricezione da parte dell'utente, il danno sarà già stato causato e lo spammer non si accorgerà di nulla. Un metodo spesso adottato per evitare che il proprio indirizzo venga inserito nelle mailing lists degli spammers sta nel non pubblicarlo in alcun modo, non utilizzarlo quando si inviano messaggi su usenet (news), non inserirlo in pagine web, etc. È per questo motivo che quando diviene necessario pubblicarlo o comunicarlo in pubblico, si vedono messaggi con indirizzo 35 modificato in modo che non sia estraibile automaticamente (ad esempio [email protected]). Purtroppo è sufficiente che venga spedito un solo messaggio con l’indirizzo corretto che questo verrà inesorabilmente e definitamente inserito nelle mailing list, senza possibilità di rimozione. Quindi, non è più possibile usare questo sistema qualora si sia già utilizzato anche una sola volta l’indirizzo in pubblico. Esistono delle indicazioni che possono aiutare a capire quando un messaggio è spam, si possono considerare spam i messaggi: • Nei quali l'indirizzo di provenienza non sia valido secondo gli standard di scambio di posta elettronica su Internet. • Nei quali l’indirizzo di provenienza appartenga ad un dominio inesistente. • Da domini e indirizzi di coloro che sono manifestamente spammer. • Dai server che sono manifestamente appartenenti a spammer. • Dai server che operano il relaying (volontario o involontario) dello spam. Si noti che “non accettare” non significa cancellare i messaggi; significa invece comunicare al server mittente il rifiuto del messaggio. Tale server provvede poi a comunicare al mittente che la trasmissione del messaggio non è andata a buon fine. Non è comunque possibile smettere di ricevere spam utilizzando gli indirizzi tipo remove@xxxxx pubblicizzati dagli spammers stessi, perché nella quasi totalità dei casi vengono semplicemente ignorati o peggio ancora, servono a confermare allo spammer che gli indirizzi sono veritieri e funzionanti. 2.4.3 Quanto può “costare” lo spam Non sono mancati apologeti dello spam che, trascurandone l'effetto sulla produttività di chiunque utilizzi la posta elettronica, hanno provato a sostenere che, per la ricezione di una email, il costo puramente di rete sia minimo. Purtroppo non è così. Certi utenti ricevono molti messaggi indesiderati, qualcuno se la cava con 15-20 al mese, altri arrivano anche a 70-100 al mese, perfino di più quando si tratta di mailbox con indirizzo vecchio, che viene usato da svariati anni. Nel tempo si sono visti molti tentativi di stimare l’entità del danno in termini monetari. Qui citiamo le risultanze di uno studio effettuato per conto della Commissione Europea: <<Unsolicited Commercial Communications and Data Protection>> (gennaio 2001). È un documento molto interessante che giunge a valutare il costo per un singolo utente in circa 30 euro all’anno. La conclusione (tradotta) è così espressa: “...Su scala mondiale, assumendo una comunità online di 400 milioni [di utenti internet], il costo globale dello scaricamento di messaggi pubblicitari usando la attuale tecnologia può essere cautelativamente stimato in dieci miliardi di euro [all'anno] - e questa è solamente la frazione di costo che viene sostenuta dagli utenti direttamente.” 36 2.4.4 Conclusioni Nonostante possa sembrare legato in maniera marginale all’aspetto della sicurezza, il fenomeno dello spam non è da trascurare proprio in virtù del fatto che utilizza risorse (rete, server, etc.) altrui per scopi diversi da quelli per i quali sono stati acquistati e sono gestiti. Quindi bisogna considerare di impostare in maniera ottimale il servizio di posta elettronica, in particolare per non essere “usati” dagli spammer come nodi dai quali fare relay per i propri interessi 37 2.5 Considerazioni finali Ai LNF gli acceessi sono controllati e registrati attraverso un apposito servizio di guardiania, di conseguenza gli attacchi di tipo locale sono stati considerati meno probabili. A conforto di tale ipotesi questo tipo di attacco, fino ad oggi, non è mai avvenuto. Al contrario gli attacchi da remoto sono molto frequenti. Lo scopo di questo lavoro è quindi soprattutto quello di salvaguardare la LAN da questo tipo di attacchi. In particolare si sono adottate una serie di misure atte a proteggere i servizi di rete dagli attacchi elencati nel paragrafo 2.2 38 Capitolo 3 ACL Un primo passo verso la protezione dei nodi interni di una LAN, da attacchi provenienti dall’esterno, può essere quello di utilizzare la tecnica del packet filtering sul router di accesso. In particolare per implementare questa tecnica sui router Cisco si usano le ACL (Access Control List). Con questa tecnica molti tipi di attacco sono bloccati dal router ancora prima di poter arrivare al nodo sotto attacco. INTERNET Computer d’attacco Router Con ACL LAN Protetta fig. 3.1 - Protezione di una LAN tramite packet filtering sul router d’accesso In particolare i router Cisco mettono a disposizione più tipi di ACL. Ad esempio relativamente al protocollo IP si hanno le IP standard access list e le IP extended access list. La differenza é che utilizzando le standard si può controllare solamente l’indirizzo IP sorgente; mentre con le extended si possono controllare molti più campi del pacchetto IP, più precisamente: • Indirizzo IP sorgente • Indirizzo IP destinatario • Campo protocollo nell’header del livello rete (Network layer) • Numero di porta nell’header del livello trasporto (Transport layer) 39 Frame Header (for example, HDLC) Segment (for Packet (IP header) example. TCP Header) Protocol Data Port number e TCP flags Source Address Destination Address fig. 3.2 - Struttura di un pacchetto IP 40 3.1 Come funzionano le ACL Ci sono delle linee guida che dovrebbero essere seguite quando si creano e implementano le access list su un router: • Si può assegnare solo una access list per ogni interfaccia, protocollo o direzione del traffico. Questo significa che se si crea una access list di tipo standard per il protocollo IP, se ne può avere solo una in ingresso e una in uscita per ogni interfaccia. • Si dovrebbe organizzare in modo tale che i test più specifici siano all’inizio della lista. • A meno che la lista non finisca con il comando permit any tutti i pacchetti saranno scartati se non sono compatibili con almeno una regola. Ogni lista dovrebbe avere almeno un comando permit altrimenti é come spegnere l’interfaccia. • Non si può togliere una singola linea da una lista. Se si compie questa operazione si rimuove tutta la lista. Per modificare una ACL bisogna copiarla in un editor di testo, apportare le modifiche e poi riapplicarla sul router. • Dopo aver creato una access list si deve applicare ad una interfaccia. Se si crea una lista, ma non si applica a nessuna interfaccia, non ci sarà nessun filtro. • Le access list sono progettate per filtrare il traffico attraverso il router. Esse non filtrano il traffico generato dal router. • Si dovrebbero mettere le access list IP standard il più vicine possibile alla destinazione. • Si dovrebbero mettere le access list IP extended il più vicine possibile alla sorgente. Vediamo in particolare il motivo di queste ultime due regole cominciando dalla penultima e prendendo come esempio la rete mostrata nella figura 3.3. Abbiamo visto che le ACL standard prevedono la possibilità di filtrare il traffico solo in base all’indirizzo sorgente. Supponiamo che si voglia impedire l’accesso ad Internet agli host della LAN 1, senza limitare l’accesso alle altre reti connesse ai router R2 e R3. Se imposto la ACL su R1 blocco tutto il traffico proveniente dalla rete LAN 1, anche quello diretto a R3 e a R2; quindi devo per forza impostare la ACL sull’ultimo router prima della destinazione. In particolare, se una ulteriore LAN fosse connessa a R3, devo mettere la ACL solo sulla porta di uscita verso Internet del router R3, e non sulla porta che collega R3 a R1, altrimenti, di nuovo, bloccherei il traffico verso R3 (e quindi anche verso R2). Se invece uso le ACL estese, posso controllare anche l’indirizzo di destinazione, quindi potrei mettere le ACL su R1 o su R3 (o su entrambi), cioè su qualsiasi router presente nel tragitto tra sorgente e destinazione. In questo caso 41 conviene però impostare le ACL sul router più vicino alla sorgente, perché elimino il traffico indesiderato prima che raggiunga, inutilmente, altri router. INTERNET R3 R1 R2 LAN 1 LAN 2 fig. 3.3 - Dove “mettere” le ACL Inoltre bisogna ricordare l’ordine con il quale lavora una ACL: quando un pacchetto arriva al router tramite una interfaccia sulla quale è stata definita una ACL, esso viene confrontato con la prima regola della lista; se questa è soddisfatta il pacchetto non viene confrontato con le regole successive, altrimenti viene confrontato finché non soddisfa una regola oppure arriva alla fine della ACL e viene rifiutato. Per questo motivo abbiamo detto precedentemente che deve essere presente almeno un comando permit, altrimenti è come spegnere l’interfaccia sulla quale è applicata la ACL. Oltre alle IP standard access list e alle IP extended access list è possibile filtrare i pacchetti anche in base ad altri protocolli. Nella tabella successiva si può vedere la lista completa dei tipi di ACL disponibili: 42 <1-99> <100-199> <200-299> <300-399> <400-499> <500-599> <600-699> <700-799> <800-899> <900-999> <1000-1099> <1100-1199> <1200-1299> IP standard access list IP extended access list Protocol type-code access list DECnet access list XNS standard access list XNS extended access list AppleTalk access list 48-bit MAC address access list IPX standard access list IPX extended access list IPX SAP access list Extended 48-bit MAC address access list IPX summary address access list tab.3.1 Tipi di ACL Cisco 3.1.1 Sintassi. Vediamo ora, entrando più nel dettaglio, come si scrive una ACL e il significato della sua sintassi. Router (config)# Access-list <access-list-number> {permit | deny} protocol Source source-wildcard-mask [operator source-port | source-port] Destination destination-wildcard-mask [operator destination-port | destination-port] [established] Sintassi di una ACL IP extended Analizziamo le singole righe che la compongono: Router (config)# Router è il nome del Router Ad esempio: Acme(config)# Access-list access-list-number {permit | deny} protocol access-list-number è il numero della ACL. Come abbiamo {permit | deny} visto in precedenza, il numero specifica anche il tipo della ACL (Tab. 3.1). indica se si tratta di una ACL che accetta o rifiuta i pacchetti. (permit=accetta, deny=rifiuta) 43 protocol indica il tipo di protocollo da controllare può essere: IP, TCP, UDP, ICMP, GRE, IGRP Ad esempio: access-list 103 permit tcp Source source-wildcard-mask Source Indirizzo source-wildcard-mask IP sorgente. Può essere any per indicare un host qualsiasi, oppure host<address> per indicare un host specifico. Serve per controllare più indirizzi di una rete senza specificarli singolarmente. Il funzionamento è spiegato più avanti. Ad esempio: 172.30.16.0 0.0.15.255 [operator source-port | source-port] operator Può essere lt(less source-port than),gt(greater than),eq(equal),neq(not equal),range. Porta IP da controllare. Grazie agli operatori, opzionali, si possono controllare più porte con una sola riga di ACL. Ad esempio: gt 80 Indica di controllare tutte le porte superiori alla 80. Destination destination-wildcard-mask Destination Indirizzo IP destinazione. Può essere any per indicare un host qualsiasi, oppure host<address> per indicare un host specifico. destination-wildcard-mask Serve per controllare più indirizzi di una rete senza specificarli singolarmente. Il funzionamento è spiegato più avanti. Ad esempio: 172.30.16.0 0.0.15.255 [operator destination-port | destination-port] operator Può essere lt(less than),gt(greater destination-port than),eq(equal),neq(not equal),range. Porta IP da controllare. Grazie agli operatori, opzionali, si possono più porte con una sola riga di ACL. Ad esempio: gt 80 Indica di controllare tutte le porte superiori alla 80. 44 • [established] Indica le sessioni gia instaurate. 3.1.2 Wildcard Le wildcard sono utilizzate nelle ACL per specificare più host, reti o sottoreti. Le wildcard si usano negli indirizzi di host o di reti per indicare una gamma di indirizzi. Quindi per specificare un solo host l’indirizzo sarà del tipo: 172.16.30.5 0.0.0.0 che può essere anche scritto nella forma: host 172.16.30.5 I quattro zeri della wildcard mask indicano che tutti e quattro i byte dell’indirizzo devono corrispondere in maniera esatta. Per specificare, invece, che un byte dell’indirizzo può assumere un valore qualsiasi, tutti i suoi bit devono essere ‘uno’, ossia, il valore decimale è 255. Nell’esempio seguente è mostrato come si indica una intera rete di classe C: 172.16.30.0 0.0.0.255 In questo caso i 3 byte più significativi devono coincidere, mentre l’ultimo può assumere un qualsiasi valore. Questi, naturalmente, sono solo 2 tra gli esempi più facili. Ma se si ha bisogno di specificare una piccola sottorete le cose si complicano leggermente. Innanzitutto si può specificare solo una sottorete la cui grandezza è una potenza di due. Ad esempio posso specificare una sottorete di 64 o di 8 indirizzi, ma non di 20 indirizzi. Supponiamo di dover filtrare una sottorete nella gamma di indirizzi da 172.16.8.0 fino a 172.16.15.0. La logica con cui calcolare la wildcard mask è abbastanza semplice: per ogni bit che non cambia all’interno della gamma di indirizzi si mette uno ‘zero’, se invece il bit cambia si mette ‘uno’. Nel nostro esempio i due bytes più significativi (172.16) sono uguali, quindi i primi due bytes della wildcard mask saranno 0.0, il terzo byte può variare tra 8 (00001000) e 15 (00001111) pertanto la maschera dovrà essere 7 (00000111). Come si può facilmente vedere i bit diversi sono i 3 meno significati (00000111) quindi il numero decimale corrispondente sarà 7. Riguardo l’ultimo byte (il meno significativo) sarà, ovviamente, 255 dato che l’ultimo indirizzo della sottorete 172.16.15.0 è proprio 172.16.15.255, quindi tra 0 e 255 cambiano tutti i bit. Concludendo la wildcard mask sarà 0.0.7.255. Vediamo ancora un esempio: RouterA(config)# access-list 10 deny 172.16.16.0 0.0.3.255 45 In questo caso stiamo indicando al router di filtrare dalla rete 172.16.16.0 fino alla rete 172.16.19.0 (cioè fino all’indirizzo 172.16.19.255). Infatti l’operazione di OR binario tra 16 e 3 fa proprio 19. Vediamo un ultimo esempio: RouterA(config)# access-list 10 deny 172.16.64.0 0.0.63.255 Qui l’ultimo indirizzo filtrato sarà 172.16.127.255, infatti il risultato dell’operazione di OR tra 64 e 63 è proprio 127. 46 3.2 Implementazione della ACL sul router dei LNF Come abbiamo detto all’inizio del capitolo, una delle prime misure per difendere la rete da attacchi esterni è quella di impostare delle Access Control List sul router che collega la LAN alla WAN. In questo paragrafo vediamo come ciò è stato realizzato nella nostra rete. 3.2.1 Analisi dei requisiti. Il primo passo è stato quello di individuare cosa avremmo voluto che le ACL avessero filtrato. Per fare questo è stato necessario consultarsi con i responsabili dei vari Servizi dei LNF al fine di sapere se ci fossero eventuali nodi, che per fornire servizi all’esterno, non sarebbero potuti essere filtrati. Dopo questi incontri è stata stilata una lista di nodi, e di servizi attivi per ogni nodo. È importante sapere anche il servizio, perché in questo modo si può lasciare aperta solo la porta (o le porte) relative al quel servizio, e non tutte le porte di quell’host. Ad esempio se c’è la necessità di un server web su un certo host basta lasciare ‘aperta’ la porta 80 di quell’host, e non tutte le altre. Si è deciso inoltre che, ovviamente, dalla LAN dei LNF dovessero uscire solo pacchetti con indirizzo sorgente appartenente a quelli assegnati ai Laboratori stessi. Questo per evitare che si usi la LAN dei LNF per fare spoofing. Un’altra esigenza che si è manifestata è stata quella di poter inserire una black list, ovvero una lista dove aggiungere eventuali nodi vittima di attacchi. Questo per far si che PC infettati da virus non siano tramite per la ulteriore diffusione del virus stesso. Inoltre, ovviamente, le ACL non avrebbero dovuto limitare in nessun modo le funzionalità dei servizi centralizzati indispensabili quali email, WWW, DNS etc. È stato deciso che un accesso di tipo testuale dall’esterno fosse indispensabile. Però lasciare la possibilità a chiunque di fare telnet su tutti i nodi sarebbe stato un ‘buco’ di sicurezza impossibile da tenere sotto controllo. Inoltre, ricordando che il protocollo telnet non è cifrato, ne per la sessione, ne tantomeno per la password, è stato deciso di non usarlo. Si è quindi scelto di usare il protocollo ssh per il login testuale e di limitare la possibilità di collegarsi dalle reti esterne solo su una macchina dove tutti i dipendenti hanno un account. Quindi se si ha l’esigenza di collegarsi ad una macchina qualsiasi all’interno della LAN (ad esempio il proprio PC) si deve prima aprire una sessione ssh verso l’unica macchina autorizzata, e una volta autenticati su questa (e quindi all’interno della LAN) si può aprire una sessione su qualunque altro nodo della intranet, a questo punto anche in telnet. È stata mantenuta la possibilità di utilizzare il protocollo Appletalk, quindi si è aperto un tunnel Appletalk su IP. È stato lasciato aperto tutto il traffico dei pacchetti ICMP, impostando però una limitazione di banda per questo tipo di traffico. Questo permette di utilizzare 47 il protocollo, ad esempio per poter usare la funzione ping, ma nello stesso tempo evita la possibilità di attacchi di tipo ping-flood. 3.2.2 Packet filtering in uscita. Per prima cosa è stata impostata una ACL standard sulla porta del router connessa alla LAN dei Laboratori nella direzione di uscita verso la WAN (fig.3.4). Dati SA DA LNF LAN LNFGW Ip access-group <numero access-list> out fig. 3.4 - ACL in uscita sul router d’accesso Questa ACL serve per far si che dalla LAN escano solo ed esclusivamente pacchetti con i numeri IP delle reti appartenenti alla LAN. Questa che potrebbe sembrare una misura di sicurezza superflua è necessaria per evitare il fenomeno dell’”IP Spoofing”. Questo fenomeno si ha quando un hacker prende il controllo di una macchina, e fa uscire da questa dei pacchetti contenenti una intestazione con l’indirizzo IP sorgente modificato. Impostando questa ACL eventuali pacchetti “contraffati” vengono bloccati dal router impedendone così l’uscita dalla rete e quindi lo spoofing. Nella tabella seguente (tab.3.2) si può vedere come può essere inserita in un router questa ACL: no access-list 1 ! access-list 1 permit 193.206.80.0 access-list 1 permit 192.135.25.0 access-list 1 permit 192.135.26.0 access-list 1 permit 192.84.128.0 access-list 1 deny any log exit 0.0.7.255 0.0.0.255 0.0.0.255 0.0.3.255 ! tab3.2 - ACL in uscita sul router d’accesso. Vediamo il significato delle singole linee che la compongono: 48 no access-list 1 Questa riga serve per cancellare la ACL numero 1 precedentemente attiva. Come abbiamo visto nel paragrafo precedente, non si può modificare una ACL togliendo una singola riga o aggiungendone una in un punto qualsiasi. Il trucco per fare ciò consiste nel cancellare tutta la lista e riscriverla. Per evitare di cancellare ogni volta una lista, ed evitare quindi che ci si possa dimenticare di farlo, è utile inserire in testa ad ogni ACL il comando che cancella la ACL con lo stesso numero di quella che si sta impostando. ! Il punto esclamativo serve per scrivere un commento. Tutto ciò che segue, sulla stessa riga, viene ignorato. access-list 1 permit 193.206.80.0 0.0.7.255 Qui cominciano le regole vere e proprie. In particolare questa riga abilita in uscita il traffico proveniente dalla rete 193.206.80.0 con netmask 255.255.248.0 ovvero dall’host 193.206.80.1 (l’indirizzo 193.206.80.0 è l’indirizzo della rete stessa) fino all’host 193.206.87.254. (l’indirizzo 193.206.87.255 è l’indirizzo del broadcast). Questo perché la wildcard mask è semplicemente la negazione logica (not) della netmask. access-list 1 permit 192.135.25.0 0.0.0.255 Questa riga è analoga alla precedente. L’unica differenza è che qui la rete è la 192.135.25.0 soltanto. access-list 1 permit 192.135.26.0 0.0.0.255 Anche qui siamo in una situazione analoga alla precedente. L’unica differenza è che qui la rete è la 192.135.26.0. access-list 1 permit 192.84.128.0 0.0.3.255 Questa riga è analoga alla precedente. L’unica differenza è che qui la rete è la 192.84.128.0, e la netmask è 255.255.252.0. access-list 1 deny any log 49 Questa riga serve per bloccare il traffico che non rispetta le regole precedenti. Infatti il comando deny any blocca i pacchetti, provenienti da qualsiasi host. Non dobbiamo dimenticare che le regole vengono eseguite in ordine, quindi, se un pacchetto non trova riscontro con nessuna delle regole precedenti questa riga, deve essere scartato. In precedenza avevamo anche visto, però, che quando un pacchetto arriva alla fine di una ACL senza essere accettato da nessuna regola viene automaticamente rifiutato. Quindi sembrerebbe del tutto inutile inserire questa riga. L’utilità è nell’ultimo campo della riga: log. Questo comando indica che tutti i pacchetti che trovano riscontro con questa regola (quindi tutti i pacchetti scartati) vengono registrati. In questo modo si tiene traccia del traffico “illecito”. exit Il comando exit serve per uscire dalla modalità di inserimento ACL e tornare al sistema operativo del router. È sempre presente alla fine di ogni lista. 50 3.2.3 Packet filtering in entrata . Ora prendiamo invece in esame la ACL impostata sulla porta esterna del router nel senso di ingresso verso le LAN come illustrato nella figura seguente: (fig.3.5) Dati SA DA LNF LAN LNFGW Ip access-group <numero access-list> in fig. 3.5 - ACL in ingresso sul router d’accesso Vediamo adesso quali regole contiene la lista analizzandole a gruppi: (in appendice B si può trovare la ACL completa. Per ragioni di riservatezza, tutti gli indirizzi di host e di reti sono sostituiti da ‘x’) no access-list 103 Come abbiamo visto in precedenza, questo comando serve per cancellare la ACL precedentemente attiva con lo stesso numero. ! Black list access-list 103 deny ip any host xxx.xxx.xxx.xxx log access-list 103 deny ip any host xxx.xxx.xxx.xxx log All’inizio della lista sono stati messi i comandi per bloccare gli accessi ad alcune macchine rivelatesi “sotto attacco”. Con la sintassi specificata si impedisce tutto il traffico IP (quindi TCP, UDP, etc.) su qualsiasi porta (any) degli host specificati; in più tutti i tentativi di accesso sono registrati (log). ! !Nodi particolari che devono essere completamente accessibili ! access-list 103 permit ip any host xxx.xxx.xxx.xxx log access-list 103 permit ip any host xxx.xxx.xxx.xxx log 51 Subito dopo viene una lista limitata di nodi che per motivi particolari devono essere completamente (cioè a tutti i protocolli e su tutte le porte) accessibili. ! ! Permesso a tutte le connessioni TCP già stabilite ! access-list 103 permit tcp any 193.206.80.0 0.0.7.255 access-list 103 permit tcp any 192.135.25.0 0.0.0.255 access-list 103 permit tcp any 192.135.26.0 0.0.0.255 access-list 103 permit tcp any 192.84.128.0 0.0.3.255 established established established established Questa parte è una delle più importanti. Il significato di queste 4 righe è quello di accettare tutte le connessioni TCP purché siano gia stabilite. In ognuna della 4 righe è specificata una LAN con relativa netmask. In questo modo si permette il transito dei pacchetti in ingresso nei casi in cui la connessione sia stata instaurata da una macchina della LAN verso un nodo esterno, oppure sia instaurata da un nodo esterno verso l’interno purchè permessa dalle regole successive. Questo meccanismo evita la maggior parte degli attacchi esterni. Inoltre, siccome la maggior parte del traffico è costituito proprio da pacchetti di questo tipo (cioè relativi a connessioni già stabilite), se si inseriscono le regole che effettuano questo controllo all’inizio della lista, si ottiene anche il vantaggio che i pacchetti vengono confrontati con un numero limitato di regole alleggerendo notevolmente il carico di lavoro della CPU del router. ! ! Permesso di tutti i nodi ! access-list 103 permit tcp access-list 103 permit udp access-list 103 permit tcp access-list 103 permit tcp access-list 103 permit udp access-list 103 permit tcp ai dns e smtp in IP any any any any any any host host host host host host <dns1/smtp2> <dns1/smtp2> <dns1/smtp2> <dns2/smtp1> <dns2/smtp1> <dns2/smtp1> eq eq eq eq eq eq 53 53 25 53 53 25 log log log log log log Queste 6 regole servono per permettere l’accesso ai server DNS del dominio lnf.infn.it e ai server SMTP per permettere l’ingresso della posta elettronica. In particolare si può vedere che sono 2 gruppi di 3 regole. Il primo gruppo è relativo all’host che funziona da server DNS primario e server SMTP secondario; il secondo gruppo è relativo all’host che fa da DNS secondario e al server SMTP primario; questa architettura permette una ridondanza nel caso una delle due macchina abbia un guasto. Per limitare la possibilità di accessi indesiderati sono state lasciate aperte solo le porte necessarie a questi due protocolli cioè la porta 53 per il DNS (sia in UDP che in TCP per il zone-transfer) e la 25 per il server SMTP. 52 ! ! Permesso di tutti i nodi ! access-list 103 permit tcp access-list 103 permit tcp access-list 103 permit tcp ai server SSH del Calcolo (tcp 22) any host xxx.xxx.xxx.xxx eq 22 log any host xxx.xxx.xxx.xxx eq 22 log any host xxx.xxx.xxx.xxx eq 22 log Questa parte serve per consentire l’accesso da qualsiasi nodo esterno ai 3 specifici host del Servizio di Calcolo che consentono accesso tramite ssh. Anche in questo caso è lasciata aperta esclusivamente la porta del protocollo ssh, cioè la 22. È stato scelto di usare il protocollo ssh invece del telnet in quanto il primo e crittografato, quindi più sicuro. ! ! Permesso di tutti i nodi ai web server primari ! sulle porte http (tcp 80) e https (tcp 443) ! access-list 103 permit tcp any host 193.206.84.219 access-list 103 permit tcp any host 193.206.84.220 access-list 103 permit tcp any host 193.206.84.198 access-list 103 permit tcp any host 193.206.84.219 access-list 103 permit tcp any host 193.206.84.220 access-list 103 permit tcp any host 193.206.84.198 eq eq eq eq eq eq 80 log 80 log 80 log 443 log 443 log 443 log In questa sezione di ACL sono inserite le regole che permettono l’accesso da qualsiasi nodo della rete (any) ai tre server Web. Come indicato nel commento che precede le regole vere e proprie sono aperte le porte: 80 per il protocollo http, e 443 per il protocollo https. ! access-list 103 permit tcp host yyy.yyy.yyy.yyy host xxx.xxx.xxx.xxx eq 443 log ! Questa regola serve per una esigenza particolare: c’è un nodo di Trieste (qui indicato con yyy.yyy.yyy.yyy che deve accedere ad un particolare server web con una sessione https (quindi porta 443) sito a Frascati (nodo xxx.xxx.xxx.xxx). ! ! Permesso di tutti i nodi a web server secondari sulla porta http ! (tcp http-80,https-443,rtsp-554) ! access-list 103 permit tcp any host 193.206.xxx.xxx eq 80 log access-list 103 permit tcp any host 193.206.xxx.xxx eq 8080 log access-list 103 permit tcp any host 193.206.xxx.xxx eq 80 log access-list 103 permit tcp any host 193.206.xxx.xxx eq 554 log access-list 103 permit udp any host 193.206.xxx.xxx eq 554 log access-list 103 permit tcp any host 193.206.xxx.xxx eq 80 log access-list 103 permit tcp any host 193.206.xxx.xxx eq 80 log 53 access-list 103 permit tcp any host 193.206.xxx.xxx eq 80 log access-list 103 permit tcp any host 193.206.xxx.xxx eq 80 log Questa serie di regole serve per consentire l’accesso da qualsiasi nodo esterno alla LAN ad alcuni server di servizi particolari. Anche in questo caso i vari nodi sono indicati tutti con la stessa sigla 193.206.xxx.xxx. ! ! Permesso di tutti i nodi verso i server AFS ! access-list 103 permit tcp any host 193.206.xxx.xxx range 7000 7009 log access-list 103 permit tcp any host 192.84.xxx.xxx range 7000 7009 log access-list 103 permit tcp any host 193.206.xxx.xxx range 7000 7009 log access-list 103 permit tcp any host 192.84.xxx.xxx range 7000 7009 log access-list 103 permit tcp any host 192.135.xxx.xxx range 7000 7009 log access-list 103 permit tcp any host 192.135.xxx.xxx range 7000 7009 log ! ! Permesso di tutti i nodi per le call-back di afs (porta tcp 7001) ! access-list 103 permit tcp any any eq 7001 log ! ! Permesso di accesso ai server di autenticazione AFS ! access-list 103 permit udp any host 193.206.xxx.xxx eq 750 log access-list 103 permit udp any host 193.206.xxx.xxx eq 750 log Questa porzione di ACL serve per il corretto funzionamento del file-system AFS (Andrew file-system). Quest’ultimo è un file-system distribuito quindi è necessario che i nodi che lo compongono possano scambiarsi informazioni secondo un protocollo prestabilito che prevede l’uso dei protocolli TCP e UDP sulle porte da 7000 a 7009 e sulla porta 750 per l’autenticazione. ! ! Permesso di accesso a agli NTPserver sulla porta ! access-list 103 permit udp any host 193.206.84.121 access-list 103 permit udp any host 192.84.130.151 access-list 103 permit udp any host 193.206.84.123 access-list 103 permit udp any host 192.84.130.153 ntp(123) eq eq eq eq 123 123 123 123 log log log log Queste quattro regole servono per permettere la sincronizzazione dei quattro server NTP (Network Time Protocol) con altri server esterni. Il protocollo NTP usa il protocollo UDP sulla porta 123. 54 ! ! Permesso al tunnel Appletalk (gre/ip) ! access-list 103 permit gre any host 193.206.xxx.xxx log Questa regola serve per consentire il traffico AppleTalk, cioè un protocollo di rete proprietario della Apple Computer. La regola consente il traffico dei pacchetti da qualsiasi nodo esterno (any) al router che gestisce il tunnel Appletalk qui indicato con l’indirizzo: 193.206.xxx.xxx. ! ! Permesso del router GARR-B a fare telnet al router lnfgw ! access-list 103 permit tcp host 193.206.xxx.xxx host 193.206.yyy.yyy eq 23 log Questa regola permette al router del GARR (GARR sta per “Gruppo per l'Armonizzazione delle Reti della Ricerca", cioè è l’organismo che gestisce la rete dell’Università e della Ricerca in Italia) di aprire una connessione di tipo telnet verso il router dei LNF. ! ! Permesso di tutti i nodi ad aprire una connessione sulle porte ftp (protocollo TCP, porte 20, 21) di un nodo particolare ! access-list 103 permit tcp any host 193.206.aaa.aaa eq 20 log access-list 103 permit tcp any host 193.206.aaa.aaa eq 21 log ! ! Permesso di tutti i nodi aprire una connessione sulle porte ftp e telnet (protocollo TCP, porte 20, 21, 23) di un nodo particolare ! access-list 103 permit tcp any host 193.206.bbb.bbb eq 20 log access-list 103 permit tcp any host 193.206.bbb.bbb eq 21 log access-list 103 permit tcp any host 193.206.bbb.bbb eq 23 log Questa serie di regole serve per consentire l’accesso da nodi esterni qualsiasi e dei nodi interni che svolgono servizi specifici. Ad esempio i server 193.206.aaa.aaa e 193.206.bbb.bbb sono usati dall’ufficio ‘direzione del personale per lo scambio di dati attraverso il protocollo FTP che prevede l’uso della porta 20 per il flusso dei dati, e della 21 per il controllo. Le altre 3 regole sono analoghe ma per un servizio diverso e in più per il protocollo telnet sulla porta 23. Di regole di questo tipo ne seguono molte, mi limito a commentare queste perché le altre si differenziano solo per l’indirizzo del nodo destinazione (LNF) o per la sorgente (che in genere è any oppure un nodo specifico). Comunque la ACL completa si trova in appendice B. ! ! Divieto a tutto il traffico TCP 55 ! access-list 103 deny tcp any any log ! ! Divieto a tutti i nodi verso le porte alte UDP "pericolose": ! NFS (udp e tcp porta 2049), ! MySQL (tcp e udp porta 3306), ! fontsrv (udp e tcp porte 7000 e 7100 ! webmin (udp porta 10000 ! access-list 103 deny udp any any eq 2049 log access-list 103 deny udp any any eq 3306 log access-list 103 deny udp any host 193.206.84.107 eq 7000 log access-list 103 deny udp any any eq 7100 log access-list 103 deny udp any any eq 10000 log ! ! Permesso di tutti i nodi verso le porte alte udp (>1024) ! access-list 103 permit udp any any gt 1024 access-list 103 deny udp any any Questi 3 blocchi di ACL sono molto importanti e servono per implementare la seguente “politica” di accesso: si vogliono bloccare tutti i pacchetti TCP provenienti dall’esterno tranne quelli appartenenti a connessioni precedentemente stabilite (vedi connessioni established all’inizio della ACL). In questo modo si bloccano tutti i tentativi di attacco via TCP che sfruttano, ad esempio, bachi di servizi quali FTP, HTTP, telnet e simili senza limitare l’operatività della rete. L’unico limite derivante da ciò sarebbe l’impossibilità di usare questi servizi su una macchina qualunque della LAN. Come vedremo nel capitolo dedicato, questo è stato risolto grazie all’uso del tunneling SSL e, in via sperimentale, mediante le Virtual Private Network (VPN). Per quanto riguarda invece il protocollo UDP, non essendo orientato alla connessione, non si può attuare una politica simile. Si è deciso allora di scartare tutti i pacchetti UDP destinati alle porte inferiori alla 1024, che in genere fanno riferimento a servizi standard (infatti le porte dalla 1 alla 1024 sono anche conosciute con il nome di Well Known Ports), tranne alcuni servizi particolari; e di accettare tutti i pacchetti UDP destinati alle porte sopra la 1024 tranne quelli relativi a porte note quindi più facilmente vulnerabili. ! ! permesso di tutti i nodi al ping ! access-list 103 permit icmp any any log Il significato di questa regola è abbastanza intuitivo, serve per consentire il traffico ai pacchetti di controllo del protocollo icmp (Internet Control Message Protocol) ! ! Divieto a tutto il resto 56 ! access-list 103 deny ip any any log L’ultima riga della ACL serve, come nel caso della ACL precedente, per registrare (log) tutti i tentativi di accesso falliti che non sono stati riscontrati da nessuna delle regole precedenti. In aggiunta a questa ACL (103) ce ne sono altre due che servono per evitare altri due tipi di attacco: il SYN-Flood (ACL 104) e il ping-Flood (ACL 105). Vediamole in dettaglio. 57 3.2.4 ACL contro SYN-Flood. Questa ACL sfrutta la funzionalità TCP intercept implementata sui software dei router Cisco a partire dalla versione IOS 11.2 F per ovviare a Denial-ofService dovuti al SYN-Flood. Questo tipo di attacco è spiegato in dettaglio nel capitolo 2, rivediamo brevemente qual’è il suo meccanismo: il nodo di attacco invia dei pacchetti SYN al server di un servizio. i pacchetti hanno il campo dell’indirizzo sorgente falsificato. il server risponde all’indirizzo falsificato e la connessione non viene mai stabilita. se il nodo di attacco manda i pacchetti abbastanza velocemente riesce a far si che il server occupi tutte le sue risorse per rispondere e non riesca più ad erogare il servizio che dovrebbe. In tal caso si ha quindi una mancanza del servizio (Denialof-Service). La funzionalità TCP intercept permette di ovviare a ciò facendo si che la connessione sia stabilita dal router stesso invece che dal server. In dettaglio funziona così: 1. il nodo di attacco invia dei pacchetti SYN al server di un servizio. il router intercetta i pacchetti TCP-SYN destinati a nodi interni alla LAN specificati in una apposita access-list estesa. il router cerca di stabilire una conessione con il client. se la connessione avviene, il router stabilisce una connessione tra il server del servizio e il client che l’aveva chiesta. In questo modo i tentativi di connessione da nodi inesistenti non raggiungono mai il server. inoltre se in un determinato intervallo di tempo le richieste di connessione superano una certa soglia se ne possono scartare alcune. In questo modo si limita anche il traffico. La sintassi di questo tipo di ACL è simile alla precedente: access-list <access-list-number> {deny | permit} tcp any destination destination-wildcard ip tcp intercept list <access-list-number> Sintassi ACL TCP-Intercept La ACL completa è in appendice B. 58 3.2.5 ACL contro ping-Flood. Questa ACL sfrutta la funzionalità di Rate Limiting del software Cisco. L’attacco di tipo ping-Flood mira, come il precedente, ad una interruzione del servizio (Denial-of-Service). Questo viene portato semplicemente sfruttando i pacchetti ICMP. Anche questo tipo di attacco è illustrato nel capitolo dedicato, qui ricordiamo brevemente che funziona “inondando” il server di un servizio con pacchetti ICMP. Il server, per rispondere a tutti i ping, è costretto a sprecare risorse in termini di CPU e banda di rete. Se il rateo di arrivo dei ping è sufficientemente elevato il server può collassare e provocare una interruzione del servizio. Per ovviare a questo il software dei router Cisco dispone della funzionalità di limitazione del traffico. In questo modo al server arriva solo una quantità di pacchetti tale da non metterlo in crisi; eventuali pacchetti eccedenti sono scartati dal router. La ACL è la seguente: access-list 105 permit icmp any any echo rate-limit input access-group 105 256000 8000 8000 conform-action trasmit exceed-action drop La prima riga serve per consentire il traffico di risposta ai comandi ICMP. La seconda indica che il traffico relativo alla ACL 105 deve essere limitato a 256000 bps con un burst di 8000 bps e un burst massimo ancora di 8000 bps. I pacchetti che non eccedono questo traffico vengono accettati (trasmit) quelli che invece eccedono il traffico vengono scartati (drop). 59 Capitolo 4 Test delle vulnerabilità 4.1 – Introduzione. Nelle reti di grandi dimensioni, e con tipologia piuttosto complessa, come quella oggetto di questo studio è, per vari motivi, praticamente impossibile rilevare i servizi presenti su tutti i nodi e gli eventuali buchi di sicurezza. Innanzitutto bisogna considerare che la maggior parte della macchine non sono gestite direttamente dal centro di calcolo, ma da altri gruppi o da singoli utenti. Questo fa si che l’amministratore della rete, o il responsabile della sicurezza, non siano a conoscenza di quali servizi siano attivi sulle macchine e quali versioni dei vari software siano presenti. In questo modo anche se ci sono dei bug di sicurezza noti alla comunità rimane responsabilità del singolo gruppo o utente tenere aggiornato il proprio software, e ciò spesso esula dalle loro competenze. Ad esempio un gruppo può aver bisogno di aprire un server FTP per condividere dei dati all’interno della LAN dei Laboratori. Per soddisfare questa esigenza esistono moltissimi software praticamente per ogni piattaforma; risulta quindi impossibile sapere se tutti i servizi FTP della rete sono al sicuro da buchi noti. Bisogna poi considerare che anche sulle macchine di competenza diretta del centro di calcolo sono installati vari sistemi operativi, e su ognuno di essi più tipi di servizi (vedi 1.4 Servizi di rete). Anche in questo caso essere sempre sicuri di avere versioni prive di buchi conosciuti diventa un compito piuttosto impegnativo se il numero di macchine, e soprattutto di servizi, non è piccolo. È anche vero che i filtri sul router di frontiera impediscono comunque l’accesso a un nodo qualunque della rete, ma se un hacker riuscisse ad entrare nella LAN (mediante un buco di sicurezza di una macchina alla quale si può accedere dall’esterno, o più banalmente entrando fisicamente nella LAN) avrebbe la possibilità di tentare di entrare in altri nodi. Un primo aiuto a chi si occupa di sicurezza viene da alcuni software conosciuti come port scanner. Il compito di questi software è quello di fare una scansione di tutte le porte IP di un nodo di una rete alla ricerca di quelle aperte. 60 Grazie a questi programmi si può sapere, abbastanza velocemente e agevolmente, quali servizi sono attivi su ogni nodo, infatti, per ogni porta aperta viene generalmente fornito anche il nome del servizio che è attivo su quella porta. Uno dei più diffusi port scanner è nmap che gira sotto linux. Nella tabella seguente si può vedere un tipico esempio di output di nmap: [root@nessus root]# nmap pcmasciarelli Starting nmap V. 2.54BETA31 ( www.insecure.org/nmap/ ) Interesting ports on pcmasciarelli.lnf.infn.it (193.206.85.3): (The 1548 ports scanned but not shown below are in state: closed) Port State Service 135/tcp open loc-srv 139/tcp open netbios-ssn 1025/tcp open listen 5800/tcp open vnc 5900/tcp open vnc-http 6000/tcp open X11 Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds [root@nessus root]# Tipico output di nmap In questo esempio, si può vedere che lanciando il programma su un host (nel caso specifico sulla macchina ‘pcmasciarelli’, con numero IP 193.206.85.3) ottengo la lista delle porte utilizzate con l’indicazione del protocollo (TCP o UDP), lo stato (in questo caso ‘open’) e il nome del servizio che utilizza la porta. È anche da notare che il tempo necessario per la scansione è stato trascurabile (0 secondi); questo perché il programma è stato lanciato su un solo host bersaglio. Se si lancia il programma su più bersagli contemporaneamente o anche su una macchina protetta da un firewall i tempi possono allungarsi anche notevolmente . Questo programma è gia un aiuto per conoscere meglio la propria rete e capire quali possono essere le macchine più ‘aperte’ (quindi, in genere, più attaccabili) e con i servizi che hanno più probabilità di essere affetti da bug. L’informazione che si ottiene, però, è piuttosto limitata: ad esempio se scopro che su una macchina è attivo un server http, non posso comunque sapere quale programma ne tantomeno quale versione è installata. Per conoscere queste informazioni serve un’altra categoria di programmi conosciuta come ‘vulnerability scanner’; uno dei più diffusi è Nessus. 61 4.2 – Caratteristiche tecniche: Come scritto nel paragrafo precedente, Nessus è un vulnerability scanner, vediamo in breve quali sono le sue caratteristiche tecniche più interessanti. Innanzitutto vediamo cosa fa Nessus: • Cerca i servizi attivi su una macchina, anche su porte non standard. Ad esempio non cerca i server http solo sulla porta 80, ma su tutte le porte. • Identifica le versioni dei programmi che rispondono alle chiamate sulle porte aperte. • Identifica il sistema operativo remoto. • A richiesta, prova realmente gli exploit noti. • Riconosce molti client usati per lanciare dei DDoS (Trin00, Stacheldraht, Trinity); • A richiesta, può lanciare dei DoS. • • • • • • • • • Caratteristiche tecniche: Architettura a plug-in: ognuno può scrivere un proprio exploit senza avere una conoscenza approfondita del ‘motore’ del programma. Linguaggio proprietario: grazie a NASL (Network Attack Scripting Language) è più facile scrivere gli exploit da provare. È comunque possibile anche scrivere exploit nel più comune linguaggio C. Database aggiornato: esiste una comunità di sviluppatori che mantiene costantemente aggiornato il database di vulnerabilità. Supporto CVE: (Common Vulnerabilities and Exposures http://www.cve.mitre.org), un dizionario di nomi standard per identificare univocamente vulnerabilità e problemi di esposizione delle informazioni; Architettura client-server: è possibile analizzare diverse reti dal proprio PC anche installando il programma che effettua la scansione (daemon) su un'altra macchina (ad esempio una macchina dedicata). La comunicazione tra client e server avviene in maniera cifrata. Parallelismo: si possono lanciare contemporaneamente più client da postazioni diverse (o anche dalla stessa) che fanno riferimento ad un unico server su cui gira il daemon di Nessus. Velocità di esecuzione: (scan in multithread e timeout plug-in modificabile). Inoltre Nessus può controllare più macchine in parallelo; il limite è solo la potenza della CPU sulla quale gira e dalle risorse di rete disponibili. Riconoscimento intelligente: Nessus riconosce i servizi dal banner fornito e non dal numero di porta sulla quale rispondono. Cooperazione: vengono evitati i test di exploit inutili a seconda delle opzioni che il servizio analizzato mette a disposizione (Se un server FTP non permette accesso anonimo, verranno saltati tutti gli exploit che necessitano di questa caratteristica). 62 • • • • • • • Completezza: dopo aver individuato l'exploit, viene fornita anche la soluzione al problema (cosa modificare, che patch scaricare, ecc...). Esportabilità: terminata l'analisi della rete, è possibile avere il report degli exploit in vari formati (html, ASCII, LaTeX) Supporto multilingue: per ora Inglese a Francese ma presto arriveranno anche altri supporti. Portabilità: Nessus può funzionare su molti sistemi Unix. Sul sito è disponibile il pacchetto per Linux, ma i sorgenti, sempre disponibili sul sito, sono stati compilati con successo anche su altri sistemi Unix come Solaris e FreeBSD. Sicurezza: Nessus supporta pienamente il protocollo SSL, può quindi verificare servizi quali: https, smtps, imaps e altri. Inoltre, può usare certificati per integrarsi in ambienti PKI. Economicità: Nessus è rilasciato con licenza Open Source, quindi è gratuito. Supporto commerciale: se necessario, è possibile ottenere un supporto commerciale opzionale, per la propria azienda. 63 4.3 – Installazione Come scritto nel paragrafo precedente Nessus è basato su una architettura client/server. Il server è generalmente utilizzato su piattaforma Linux, mentre il client esiste anche per Windows. I requisiti hardware minimi del server non sono eccessivamente elevati; bisogna considerare comunque che più memoria RAM si ha a disposizione, tanto più le scansioni si possono lanciare in parallelo, e tanto più velocemente si otterranno i risultati. I requisiti delle macchine dove dovrà girare il client possono essere anche piuttosto modesti. L’installazione di Nessus può avvenire in 3 modi diversi: • Attraverso lynx (lynx è un browser http testuale). • Manualmente, scaricando lo script di configurazione. • Manualmente, scaricando i vari pacchetti e installandoli singolarmente. Queste tre opzioni sono elencate in ordine di difficoltà crescente. La prima opzione è la più semplice, è automatica, ma più pericolosa. L’ultima è la più lunga e noiosa, ma è la più sicura e permette il controllo totale dei vari passi dell’installazione. L’installazione via lynx si può effettuare solo se la macchina è connessa direttamente ad Internet perché il programma deve scaricare dal sito lo script di installazione e tutti i successivi pacchetti di cui ha bisogno. La sua potenziale pericolosità sta proprio in questo: lynx scarica e manda in esecuzione dei programmi scaricati direttamente da Internet. Se un hacker avesse effettuato un poisoning (vedi capitolo 2) del server DNS potrebbe eseguire sulla macchina qualsiasi comando come se fosse digitato dall’utente che ha lanciato lynx. La semplicità di questo metodo è nel fatto che tutto cio che si deve fare per installare Nessus è digitare: lynx –source http://install.nessus.org | sh Il secondo metodo è un ottimo compromesso tra semplicità e sicurezza. Ciò che si deve fare è scaricare da uno dei server consigliati nel sito ufficiale di Nessus (http://www.nesssu.org) uno script e mandarlo in esecuzione. Lo script è autosufficiente e non ha bisogno di scaricare null’altro dalla rete. Grazie a ciò si può installare Nessus anche su una macchina non direttamente connessa ad Internet e inoltre non c’è nessun problema di sicurezza. Dopo aver scaricato lo script di circa 3 megabyte sulla macchina dove girerà il server di Nessus tutto ciò che dobbiamo fare per installare il pacchetto è digitare: sh nessus-installer.sh • • Infine il terzo metodo richiede l’installazione manuale dei seguenti moduli: nessus-libraries libnasl 64 • • nessus-core nessus-plugins che vanno scaricati e compilati esattamente nell’ordine descritto. Questo è anche l’unico modo per usare Nessus su sistemi Unix diversi da Linux (Solaris, Compaq, etc). La soluzione da noi adottata è stata la seconda. Vediamo nel dettaglio come si è svolta l’installazione. Per l’installazione è stato scelto un server Dell. Le caratteristiche di questa macchina, specifiche per essere utilizzata come server, sono le seguenti: • Dual Pentium III a 1GHz (256KB cache) bus 133MHz • 512MB RAM 133MHz • Scheda grafica integrata ATI Rage PRO 3D (4MB SGRAM) • U160 WideSCSI integrata • 2 dischi da 18 GB 10000 rpm • CD-ROM, Floppy 1,44MB • Doppia scheda LAN 10/100 (protocollo PXE integrato) Su questa macchina è stato installata la distribuzione RedHat 7.3 di Linux. Completata l’installazione del sistema operativo siamo passati all’installazione di Nessus. Terminata la fase di installazione ci si trova sul disco della macchina i seguenti directory: /usr/local/etc/nessus /usr/local/include/nessus /usr/local/lib/nessus /usr/local/var/nessus /usr/local/var/nessus/users/nessus /usr/local/com/nessus/CA 4.3.1 Struttura dei directory Vediamo cosa contengono i directory appena elencati: • /usr/local/etc/nessus In questo directory sono contenuti i file di configurazione. In particolare: o accounts.txt o nessusd.conf Questo file è un file di configurazione utilizzato dal plug-in ‘accounts’ Questo è il file di configurazione del daemon di Nessus. Ad esempio in questo file è scritto il numero massimo di hosts che è possibile testare contemporaneamente (variabile max_hosts). Il valore predefinito è 30. Questo valore va configurato in base alle dimensioni della rete, alla potenza di calcolo della macchina sulla quale gira Nessus e alla banda che si vuole dare a disposizione a Nessus. Prima di modificare questo valore si deve tenere conto anche della variabile max_checks. Questo perché Nessus 65 lancia un numero di processi pari al prodotto delle due variabili. Ad esempio lasciando i valori predefiniti vengono lanciati 30x10=300 processi. Viste le dimensioni della rete dei LNF e la potenza della macchina da noi usata abbiamo fatto delle prove e abbiamo aumentato questi valori per far si che la scansione si concludesse in tempi ragionevoli. o nessusd.rules o queso.conf Questo file contiene una serie di regole che permette di impedire o consentire la scansione di particolari host o reti. Può essere utile se si vuole essere certi di non eseguire mai scansione su macchine particolari quali server di servizi importanti. Nel nostro impiego abbiamo lasciato il valore predefinito default accept che permette di eseguire la scansione di qualsiasi host. Questo è il file di configurazione del plug-in QueSO. Questo plug-in serve per interrogare un host e capire che tipo di sistema operativo ci gira. In questo modo un eventuale hacker potrebbe utilizzare gli strumenti più opportuni per quel particolare sistema. • /usr/local/include/nessus Questo directory contiene i file include. • /usr/local/lib/nessus Questo directory contiene le librerie necessarie per scriversi i propri plug-in. • /usr/local/var/nessus Questo directory è molto importante perché contiene molti altri directory che è utile conoscere: o /CA o /logs Contiene le chiavi private dei certificati RSA. Contiene i file di log, e cioè i file: nessusd.dump e nesussd.messages. Nel primo sono elencati eventuali messaggi di errore generati dai plug-in, ad esempio per bachi di programmazione, che possono essere utili per il debugging; nel secondo sono elencati una serie di messaggi utili per controllare lo stato di esecuzione di Nessus. Ad esempio, ogni volta che viene mandato in esecuzione il daemon di Nessus nel file nessusd.messages viene scritto il messaggio: nessusd 1.2.4 is starting up Oppure ogni volta che si lancia un client viene scritto il messaggio: connection from 127.0.0.1 66 dove 127.0.0.1 indica il fatto che il client è stato lanciato dalla stessa macchina dove gira il daemon (localhost), altrimenti ci sarebbe stato il numero IP della macchina che ha lanciato il client. o /report Questo directory contiene i report generati da Nessus al termine della scansione. I report possono essere salvati nel formato proprietario di Nessus (.NBE) oppure in HTML. • /usr/local/var/nessus/users In questo directory sono salvate tutte le impostazioni relative ai vari utenti di Nessus. I più utili sono: o detached o kbs o Plugins o sessions In questo directory sono contenuti dei file che indicano lo stato delle scansioni detached. Questo tipo di scansione, molto utile per grandi reti, non costringe l’utente di Nessus a tenere il client aperto per tutto il tempo della scansione. Usando la scansione detached infatti si può aprire il client, impostare la scansione, lanciarla e chiudere il client. Quando Nessus finisce la scansione avverte l’utente tramite un breve report via email. A questo punto può lanciare nuovamente il client e ottenere un report più dettagliato. Per tenere traccia delle scansione in corso si usa il directory detached che contiene un file per ogni sessione di scan eseguita. Il nome del file è il numero del processo lanciato dal daemon nessusd, e il contenuto del file è la lista degli host sui quali è stata lanciata la scansione. In questo directory (il cui nome sta per Knowledge Data Base) sono contenuti i file necessari per sfruttare la caratteristica di riuso delle informazioni acquisite da scansioni precedenti di Nessus. Come è facile intuire dal nome in questo directory finiscono i plugin scaricati dall’utente. In realtà noi non abbiamo mai usato questo metodo, ma abbiamo sempre aggiornato i plugin di sistema contenuti in /usr/local/lib/nessus/plugins, mediante il comando nessus-updateplugins. In questo modo i plugin aggiornati sono disponibili a tutti gli utenti. Nel directory sessions ci sono dei file che contengono i dati sulle scansioni eseguite e su quelle in corso. Grazie a questi file è possibile continuare delle sessioni di scansione anche in caso di crash di Nessus durante una scansione. In questo caso infatti è sufficiente rilanciare il client (che è si è chiuso in seguito al 67 crash) e usare l’opzione ‘restore session’. Le informazioni relative ad ogni sessione sono memorizzate in due file, uno con i dati veri e propri, e uno di indice. Il nome del file contiene la data e l’ora di inizio della scansione. Mediante il programma Nessus è possibile scegliere su quale sessione lavorare oltre che tramite la data anche in base al nodo bersaglio della scansione (fig. 4.1) fig. 4.1 - Schermata con le sessioni eseguite • /usr/local/com/nessus/CA In questo directory è contenuta la chiave pubblica del certificato CA. 68 4.4 – Utilizzo In questo capitolo vedremo come utilizzare al meglio Nessus dopo averlo installato. Infatti Nessus è altamente configurabile e ottimizzabile in base a vari parametri che possono essere: la dimensione della rete, lo scopo per il quale i nodi della rete sono utilizzati, la velocità della rete, la potenza della macchina sulla quale gira Nessus, quante persone sono deputate all’utilizzo di Nessus. Considerando tutte queste variabili, ottimizzeremo il programma per avere risultati validi in tempi accettabili, senza ‘disturbare’ il comportamento della rete e senza far correre pericoli di DoS ai server presenti in rete. Dopo aver installato il programma, per prima cosa si deve creare una utenza, per farlo si usa il comando: nessus-adduser che chiede il nome da usare come login (da non confondere con il login per accedere alla macchina sulla quale gira nessusd, infatti Nessus usa un database di utenze proprio), la password e eventuali ‘regole’ (rules). Le regole servono per restringere la possibilità di scansioni ad alcuni utenti. In questo modo si possono designare alcune persone ad effettuare scansioni di un sottoinsieme delle macchine della rete, ad esempio solo di quelle di loro competenza. Ciò può essere molto utile per organizzazioni con reti molto estese e gestite da più gruppi; in questo modo il singolo gruppo non deve installarsi il proprio Nessus, tutti usano lo stesso programma semplificando notevolmente il lavoro di gestione e mantenimento del programma. A questo punto si può configurare il programma secondo le proprie esigenze andando a modificare il file: /usr/local/etc/nessus/nessusd.conf Dettagli sulla configurazione di questo file li vedremo nel paragrafo successivo. Si può comunque cominciare a fare scansioni anche senza ottimizzare la configurazione. Il passo successivo è lanciare il programma. Abbiamo detto che Nessus è composto da un server che gira come un daemon e da un client sul quale l’utente agisce per impostare la scansione. Quindi per prima cosa bisogna lanciare il daemon da una finestra terminale, come utente “root”, nel seguente modo: nessusd –D 69 dove l’opzione “–D” serve proprio per far si che il server Nessus giri in background, cioè in modalità daemon. Per conoscere le altre opzioni del comando nessusd si può consultare la pagina di help con il solito: man nessusd A questo punto si può lanciare il client che usa una interfaccia grafica. La prima schermata che compare è quella di login (fig. 4.2) fig. 4.2 - Schermata di login Nel nostro caso, dato che il client e il server (daemon) girano sulla stessa machina nel campo “Nessusd Host” lasceremo il valore di default, cioè “localhost”. Il campo successivo indica su quale porta TCP e UDP avviene la comunicazione tra il client e il server; quella di default è la 1241, conviene lasciarla inalterata, anche perché è regolarmente registrata presso lo IANA. Più in basso ci sono i campi per l’autenticazione: i classici “Login” e “Password”, più in basso ancora il tasto che ci permette di accedere agli altri campi, una volta autenticati: 70 “Log In”. Come si può vedere dalla figura 4.2 l’interfaccia del programma è organizzata in otto pagine sovrapposte delle quali quella di login è la prima. Una volta “entrati” nel programma si apre la seconda:”Plugins” (vedi fig. 4.3). In questa schermata si possono vedere quali sono i moduli (plugin) presenti suddivisi in categorie e si possono attivare o disattivare sia per categorie, sia singolarmente. fig. 4.3 - Schermata dei plugin 71 Nella semifinestra superiore sono elencate le categorie in cui sono suddivisi i plugin; selezionandone una nella finestra inferiore compaiono i singoli plugin appartenenti a quella categoria. In questo modo posso selezionare facilmente i plugin desiderati. Per semplificare le operazioni sono inoltre presenti i tasti “Enable all” per selezionare tutti i plugin, “Disable all” per disabilitare tutti i plugin. Un altro tasto molto utile è “Enable all but dangerous plugins” che permette di abilitare solo i plugin non pericolosi, cioè quelli che non creano DoS e che non mandano in crash le macchine. Questo si è rivelato molto utile per fare scansioni di macchine di utenti esterni al Servizio. Un altro tasto utile è “Filter…”: mediante questo tasto si possono fare ricerche all’interno della lista dei plugin utilizzando i seguenti campi identificativi dei plugin: • Name • Description • Summary • Author • ID number • Category La terza pagina (fig. 4.4) serve per impostare le preferenze. È una pagina molto lunga in quanto sono elencate tutte le preferenze dei singoli plugin. Nel prossimo paragrafo (4.5) vedremo quali sono stati i più utili per la nostra esperienza. 72 fig. 4.4 - Schermata di impostazione delle preferenze La quarta pagina consente di impostare le opzioni di scansione (“Scan options”). È importante notare che comunque vengono considerate anche le impostazioni scritte nel file /usr/local/etc/nessus/nessusd.conf. In particolare se nel file sono impostati dei limiti (ad esempio il numero di host su cui effettuare la scansione in contemporanea) questi non possono essere superati anche se nella finestra si inseriscono valori maggiori. Nella fig. 4.5 è possibile vedere questa pagina. 73 fig. 4.5 - Schermata di impostazione delle opzioni • • • • • Vediamo il significato di questi campi: Port range: definisce quale intervallo di porte deve essere preso come bersaglio della scansione. Maggiore è il numero delle porte più tempo prenderà la scansione. Number of hosts to test at same time: definisce su quanti nodi della rete eseguire la scansione in contemporanea. Più è alto maggiori saranno la larghezza di banda utilizzata della rete e la potenza di calcolo richiesta alla macchina dove gira Nessus. Number of checks to perform at the same time: definisce il numero massimo di test da effettuare contemporaneamente su un nodo. Path to the CGIs: in questo campo si può inserire una lista di directory nelle quali Nessus dovrà cercare i CGI dei server web dei quali effettua la scansione. Do a reverse lookup before testing: attivando questa opzione, e indicando i bersagli della scansione tramite numero IP, Nessus esegue una ricerca dei nomi dei nodi prima di eseguire la scansione. Attivando questa opzione si rallenta leggermente la scansione. 74 • • • • • • Optimize the test: questa opzione fa si che Nessus eviti di eseguire test apparentemente inapplicabili. Questo può far si, almeno in teoria, che ci siano falsi negativi, cioè problemi di sicurezza non rilevati. Il vantaggio è che in questo modo si velocizza di molto la scansione. Safe check: alcuni test eseguiti da Nessus possono bloccare i server remoti disabilitando i servizi temporaneamente o anche fino al successivo riavvio della macchina. Abilitando questa opzione Nessus non esegue l’attacco vero e proprio ma si limita a fidarsi del “banner” ricevuto. In questo modo si ottengono risultati meno affidabili ma senza correre pericoli di crash. Questa opzione andrebbe attivata dal punto di vista della ricerca della massima sicurezza, mentre andrebbe disattivata dal punto di vista dell’amministrazione dei servizi di rete. Designate hosts by their MAC address: questa opzione permette di identificare i nodi della rete tramite il loro MAC address. È particolarmente utile per fare il controllo di reti che usano il protocollo DHCP. Detached scan: questa opzione è molto importante. Serve per lanciare delle scansioni in background. Selezionandola si può impostare la scansione, lanciarla e uscire dal client. Quando il daemon di Nessus finisce l’operazione manda un email. Riaprendo il client si può vedere il report ed eventualmente salvarlo. Continuos scan: selezionando l’opzione precedente si attiva la possibilità di scegliere anche questa opzione. Lo scan continuo consiste nel lanciare una scansione in background e, una volta terminata, attendere un tempo impostabile e ricominciarne un’altra. Questo può essere utile per tenere una rete continuamente sotto controllo. È molto importante impostare correttamente le opzioni della Knowledge Base come vedremo successivamente. Port scanner: in questa finestra si può scegliere quale programma di “port scanner” utilizzare, tra i quali nmap di cui abbiamo già parlato. La schermata successiva è quella relativa alla selezione dei nodi da testare: “Target selection”, si può vedere nell’immagine seguente (fig. 4.6) 75 fig. 4.6 - Schermata di selezione dei nodi da testare Nella casella di testo chiamata “Target(s)” si inserisce l’identificativo del nodo da testare. È possibile specificare una gamma di nodi semplicemente indicando il primo e l’ultimo separati da un trattino; è anche possibile specificare una lista di nodi ‘sparsi’ scrivendoli separati da una virgola. Tramite il tasto “Read file…” si può anche far leggere a Nessus un file contenente i nodi da controllare. È anche possibile, utilizzando una richiesta AXFR, far si che Nessus interroghi il DNS e esegua il test su tutte le macchine conosciute dal DNS server. La pagina successiva è “User”. In questa pagina (fig 4.7) è possibile inserire delle regole (rules) per limitare l’attività di alcuni utenti di Nessus. 76 fig. 4.7 – Schermata per impostare le limitazioni sugli utenti La settima pagina è molto importante ed è quella relativa alle impostazioni della “knowledge base” (KB). Come anticipato la knowledge base è una funzionalità di Nessus che permette di risparmiare tempo quando si fanno scansioni ripetute. Il concetto su cui si basa è quello che è inutile fare la stessa scansione sulla macchina se non è cambiata la configurazione della macchina. Vediamo a cosa servono le varie opzioni presenti nella schermata (fig.4.8) 77 fig. 4.8 – Schermata di configurazione della funzionalità KB Innanzitutto la prima opzione permette di abilitare o meno questa funzione. Può essere utile, in quanto se non si è interessati ad utilizzarla è inutile sprecare spazio su disco per memorizzare i dati della KB. Più in basso sono presenti tre radio button che permettono di scegliere come utilizzare la KB. Si può scegliere se: • ad ogni scansione controllare tutti i nodi • ad ogni scansione controllare solo i nodi che non sono stati già controllati • ad ogni scansione, viceversa, controllare solo i nodi che sono già stati controllati Si può scegliere poi se utilizzare la KB o meno tramite l’apposito checkbox. Seguono poi altre opzioni su come deve essere usata la KB: • la prima permette di scegliere se eseguire o meno i plugin già eseguiti • la seconda è simile alla prima ma si riferisce esclusivamente ai plugin che permettono solo di ricevere informazioni • la terza è simile alla prima ma si riferisce ai plugin che effettuano attacchi veri e propri • la quarta è di nuovo simile ma fa riferimento ai plugin che testano i DoS • la quinta opzione permette di scegliere se mostrare un report completo o solamente le differenze 78 È inoltre presente una casella dove impostare la durata della KB in secondi trascorsi i quali è da considerarsi scaduta. È infine presente la schermata con i credits dove si trovano informazioni sugli autori e il sito ufficiale: http://www.nessus.org 79 4.5 – Risultati ottenuti ai LNF In questo paragrafo sarà illustrato come è stato ottimizzato Nessus per la rete dei LNF e saranno presentati i risultati ottenuti. È suddiviso in due sottoparagrafi, uno con i risultati ottenuti facendo la scansione dall’interno della rete, e uno facendo la scansione mettendo l’host dove gira Nessus all’esterno del router con le ACL. In questo modo è possibile simulare un attacco sia dall’esterno sia dall’interno mettendosi nei panni di un eventuale hacker che sia riuscito a impossessarsi di un nodo interno. In questo modo si ottiene anche una stima di ‘quanto protegge’ il router. 4.5.1 Dall’interno della LAN Innanzitutto vediamo come è stato configurato Nessus: è stato scelto di dedicare una macchina esclusivamente a questa funzione, quindi il daemon ha a disposizione una potenza di calcolo abbastanza buona. La rete è una Ethernet 100Mbit, quindi abbastanza veloce. Queste due considerazioni ci hanno portato a impostare il numero di nodi da testare contemporaneamente a 30, e il numero di test da eseguire contemporaneamente a 10. In questo modo si riesce a sfruttare tutta la CPU. Inoltre non si corre il rischio di “piantare” la macchina dato che è stata lasciata attiva l’impostazione di far girare Nessus in “nice mode”. In questo modo quando il sistema ha bisogno di CPU questa risulta disponibile, quando invece il sistema non ne ha bisogno Nessus può sfruttarla al massimo. Nel box sottostante si può vedere l’uso tipico di CPU durante la scansione di una rete: CPU0 states: 96.2% user, CPU1 states: 95.0% user, 3.3% system, 96.0% nice, 4.4% system, 89.4% nice, 0.0% idle 0.0% idle Vediamo anche le altre impostazioni che abbiamo personalizzato: innanzitutto è stato aumentata la gamma delle porte da testare inserendole tutte da 0 a 65536. Non è invece stata molto utilizzata la tecnica del “detached scan”. Questo perché si è visto che, date le dimensioni piuttosto grandi della rete, è molto utile poter controllare “in diretta” lo stato di avanzamento del test. Ciò si è rivelato utile anche perché abbiamo visto che alcuni plugin, nonostante abbiano dei timeout, in casi particolari rimangono bloccati facendo si che l’esecuzione di Nessus non arrivi mai alla conclusione. Per questo motivo è stato scelto anche di non fare mai scansioni di reti troppo grandi, tipicamente ci siamo fermati a reti di 256 nodi. Tutte le scansioni di macchine non amministrate direttamente dal Servizio di Calcolo sono sempre state effettuate in modalità “safe check” e utilizzando solo i plugin non pericolosi. Una caratteristica che abbiamo utilizzato è invece la funzionalità “KB saving” che ci permette di risparmiare tempo evitando di fare scansioni sulle stesse macchine. Il tempo risparmiato può essere usato per fare scansioni più frequenti e quindi controllare in maniera più 80 tempestiva le nuove macchine o le macchine riconfigurate. Nella figura seguente (fig. 4.9) si può vedere Nessus in azione. A sinistra compare il numero IP del nodo o, il nome se si è impostata l’opzione “Do a reverse lookup before testing it”, o il Mac address se si è impostata l’opzione “Designate hosts by their Mac address”; al centro ci sono degli indicatori che indicano il progredire della scansione e il nome del plugin attualmente in scansione. A destra c’è il tasto “Stop” per interrompere la scansione di un singolo nodo. Questo tasto è utile nel caso in cui Nessus si pianti su un host. Nel caso, invece, che si voglia interrompere completamente il test si può usare il tasto “Stop the whole test” in basso. fig. 4.9 – Nessus durante una scansione di una rete Dopo aver visto come abbiamo impostato il programma, vediamo quali risultiamo si ottengono al termine della scansione. Innanzitutto c’è da dire che la scansione di una rete di circa 250 nodi avviene, la prima volta, in circa un’ora, un’ora e mezza. Al termine Nessus presenta una finestra suddivisa in cinque riquadri che riportano le informazioni sulla scansione avvenuta dal generale al particolare. Il primo riquadro in alto a sinistra riporta l’elenco delle reti controllate; il secondo, più in basso, contiene la lista dei nodi appartenenti alla rete selezionata precedentemente. Nella fig. 4.10 si può vedere come appare la finestra del report di Nessus: 81 fig. 4.10 – Report di Nessus È da notare che abbiamo rilevato un baco sulla visualizzazione delle reti e degli host. Il problema è nel fatto che Nessus identifica le sottoreti semplicemente togliendo l’ultimo byte dagli indirizzi degli host. Per fare ciò semplicemente toglie i caratteri a destra dell’ultimo carattere “.” (punto) come si può vedere in figura 4.10. Se però si abilita l’opzione di convertire i numeri IP nei rispettivi nomi, quello che succede è che viene tolto semplicemente “.it” dal nome degli host, quindi nella finestra delle sottoreti in realtà compaiono tutti i nodi testati con il nome troncato. Questo comportamento anomalo può essere visto nella figura seguente (fig. 4.11) 82 fig. 4.11 – Report di Nessus Come si può vedere dalla figura 4.10 una volta selezionato l’host compare la lista delle porte aperte su tale host, ed eventualmente a fianco, una piccola icona che serve ad indicare il grado di pericolosità che tale apertura comporta. Le icone possono essere di tre tipi diversi: una lampadina, un segnale stradale di “pericolo generico” e un segnale stradale di “divieto di accesso”. Se non viene ricavata nessuna informazione sulla pericolosità dovuta a tale apertura Nessus si limita ad indicare il numero della porta, il protocollo (UDP o TCP) e se lo riconosce anche il servizio (http, x11, etc.), senza aggiungere nessuna icona. Se invece l’apertura di una porta permette di ricavare informazioni sulla macchina Nessus disegna vicino al nome del servizio l’icona di una lampadina come ad esempio nella figura 4.12 83 fig. 4.12 – Nessus ha trovato una porta che fornisce informazioni sul nodo testato Se invece l’apertura di una porta comporta un “leggero” pericolo l’icona che compare è il cartello di “pericolo generico” come visibile in figura 4.13 84 fig. 4.13 – Nessus ha trovato una porta potenzialmente pericolosa Se infine l’apertura della porta comporta un grave problema di sicurezza compare l’icona di un “divieto di accesso”. (Vedi figura 4.14). La più “pericolosa” di queste 3 icone è riportata anche vicino al nome del nodo; il nodo più vulnerabile fa si che anche la rete alla quale appartiene sia marchiata dallo stesso simbolo. In questo modo, quando si controllano più reti, si ha subito il colpo d’occhio su quanto e quali siano le reti più in pericolo. 85 fig. 4.14 – Nessus ha trovato un buco di sicurezza In questo caso, come nel precedente, Nessus indica anche un grado di pericolosità e il riferimento CVE relativo. Dopo di che visitando il sito http://cve.mitre.org si possono consultare tutte le informazioni note relative al “buco”. Nell’esempio in figura 4.14 Nessus ha trovato un buco sul daemon del servizio FTP catalogato con la sigla 2002-0073. 86 fig. 4.15 – Sito CVE con le informazioni relative al buco trovato da Nessus Facendo una ricerca sul sito si possono trovare informazioni di approfondimento, tra le quali il collegamento al sito Microsoft da dove è possibile scaricare un programma di aggiornamento (patch) per risolvere il problema (fig. 4.16) 87 fig. 4.16 – Sito Microsoft dal quale è possibile scaricare la “patch” necessaria per eliminare la vulnerabilità Vediamo più in dettaglio il caso specifico, in modo da capire meglio come Nessus può rendersi utile per proteggere i server di una LAN. Durante una scansione è stato rilevato che il servizio FTP di una macchina aveva un buco di sicurezza. Nessus indica il codice CVE del buco. Utilizzando questo codice, tramite il sito di CVE, si possono ottenere ulteriori dettagli a riguardo. Una delle informazioni è proprio il collegamento al sito del produttore del software (in questo caso Microsoft) dove è possibile scaricare la patch per correggere il problema. Dopo averla scaricata e installata si esegue una nuova scansione di Nessus per vedere se il problema persiste e si nota che ora il servizio FTP è esente da problemi. Si può anche notare che la patch scaricata ha corretto molti altri problemi di sicurezza. Infatti, come si può vedere, nel report in HTML generato da Nessus durante la prima scansione e mostrato in figura 4.17 ci sono molti più pericoli che in quello generato durante la seconda scansione, cioè dopo che la patch è stata applicata (fig. 4.18). 88 fig. 4.17 – Risultato della prima scansione fig. 4.18 – Risultato della seconda scansione 89 Situazione delle porte prima della applicazione della patch Situazione delle porte dopo la applicazione della patch echo (7/tcp) echo (7/udp) (Security warnings found) discard (9/tcp) daytime (13/tcp) daytime (13/udp) (Security warnings found) qotd (17/tcp) qotd (17/udp) (Security warnings found) chargen (19/tcp) chargen (19/udp) (Security warnings found) ftp (21/tcp) (Security hole found) smtp (25/tcp) http (80/tcp) (Security notes found) unknown (135/tcp) netbios-ns (137/udp) (Security warnings found) netbios-ssn (139/tcp) snmp (161/udp) (Security hole found) https (443/tcp) unknown (1025/tcp) unknown (1050/tcp) unknown (1028/tcp) x11 (6000/tcp) echo (7/tcp) echo (7/udp) (Security warnings found) daytime (13/tcp) daytime (13/udp) (Security warnings found) qotd (17/tcp) qotd (17/udp) (Security warnings found) chargen (19/tcp) chargen (19/udp) (Security warnings found) ftp (21/tcp) smtp (25/tcp) http (80/tcp) (Security notes found) unknown (135/tcp) unknown (135/udp) netbios-ns (137/udp) (Security warnings found) netbios-dgm (138/udp) netbios-ssn (139/tcp) snmp (161/udp) (Security hole found) xdmcp (177/udp) https (443/tcp) isakmp (500/udp) router (520/udp) unknown (1025/tcp) unknown (1028/tcp) unknown (1050/tcp) x11 (6000/tcp) afs3-callback (7001/udp) (Security notes found) afs3-callback (7001/udp) (Security notes found) tab. 4.1 – Risultati della scansione prima e dopo l’applicazione della patch Dopo aver visto come usare Nessus per rendere più sicura una singola macchina vediamo come Nessus fornisce un report su intere sottoreti. Abbiamo gia visto in figura 4.10 la schermata di nessus al termine della scansione di 2 reti di classe C. Se si vuole avere un resoconto riassuntivo, con i grafici delle statistiche dei problemi trovati, è molto utile generare un “report HTML”. Di seguito vediamo il report della scansione delle seguenti sottoreti di classe C: 193.206.82.0 e 193.206.83.0 Il report inizia con il seguente riassunto: The Nessus Security Scanner was used to assess the security of 509 hosts • • • 27 security holes have been found 202 security warnings have been found 657 security notes have been found Subito dopo troviamo un grafico a torta che fornisce le stesse informazioni ma in forma percentuale: 90 fig. 4.19 – Statistica sulla pericolosità della rete testata Il grafico seguente mostra invece una classifica di vulnerabilità per servizi. Da questo grafico possiamo vedere quali sono i servizi più attaccabili: fig. 4.20 – Statistica sulla pericolosità dei servizi 91 proseguendo troviamo il grafico che ci da’ una indicazione sulla tipologia dei servizi presenti sulla rete: fig. 4.21 – Statistica sulla presenza dei servizi Infine l’ultimo grafico che incontriamo ci fornisce l’informazione di quanto influisce il nodo più insicuro sulla sicurezza media della rete: 92 fig. 4.21 – Influenza del nodo più insicuro rispetto alla media della rete Con questo grafico finisce la prima sezione del report. La seconda sezione riporta la lista dei nodi testati in forma di ipertesto. Selezionando uno dei nodi si accede alle informazioni specifiche per quel nodo. Vediamo ad esempio la sezione riguardante il nodo che Nessus ha trovato più “aperto”: 193.206.82.204 La prima informazione che troviamo è un grafico a torta con la distribuzione del grado di pericolo: 93 fig. 4.22 – Grado di vulnerabilità di un nodo dopo il grafico troviamo la lista delle porte aperte, e in corrispondenza di quelle sulle quali Nessus trova una vulnerabilità, un ipertesto che mostra quale pericolo si corre e il riferimento al sito CVE per porvi rimedio, ad esempio: 94 List of open ports : ssh (22/tcp) ftp (21/tcp) chargen (19/tcp) daytime (13/tcp) discard (9/tcp) echo (7/tcp) telnet (23/tcp) smtp (25/tcp) (Security notes found) time (37/tcp) finger (79/tcp) sunrpc (111/tcp) login (513/tcp) (Security warnings found) exec (512/tcp) (Security warnings found) printer (515/tcp) shell (514/tcp) (Security warnings found) uucp (540/tcp) unknown (1103/tcp) unknown (1522/tcp) unknown (1521/tcp) (Security warnings found) unknown (1627/tcp) unknown (1626/tcp) unknown (4045/tcp) unknown (6112/tcp) afs3-callback (7001/tcp) afs3-fileserver (7000/tcp) xfs (7100/tcp) (Security hole found) Tab. 4.2 – Porte aperte e indicazione del grado di vulnerabilità Collegandosi all’ipertesto relativo all’ultima riga della tabella, cioè: xfs (7100/tcp) si ottengono le seguenti informazioni: Vulnerability found on port xfs (7100/tcp) The remote X Font Service (xfs) might be vulnerable to a buffer overflow. n attacker may use this flaw to gain root on this host remotely. *** Note that Nessus did not actually check for the flaw *** as details about this vulnerability are still unknown Solution : See CERT Advisory CA-2002-34 Risk factor : High CVE : CAN-2002-1317 Facendo click sull’ultima riga si accede alla sezione del sito CVE relativa al problema illustrato. Come visibile dalle prime informazioni fornite da Nessus la rete è risultata alquanto insicura. Questo non deve stupire in quanto come detto all’inizio è anche 95 molto “aperta”. Non dobbiamo però dimenticare che questi sono i risultati effettuando la scansione da un nodo interno alla rete, ovvero senza passare per le ACL del router principale. Quindi un malintenzionato che volesse penetrare in questa rete troverebbe una situazione ben diversa. Per simulare anche questa situazione abbiamo fatto delle prove mettendo il PC sul quale gira Nessus su una rete esterna e abbiamo ripetuto le prove. I risultati sono visibili nel prossimo paragrafo. 4.5.2 Dall’esterno della LAN Per fare questa prova abbiamo configurato la macchina dove gira Nessus su una VLAN sottoposta alle stesse ACL alle quali sono sottoposti i pacchetti che provengono dal router di accesso. In particolare abbiamo usato la VLAN 192.84.131.0/24 così come indicato nel capitolo 1 e visibile in fig. 1.5. Dopo aver fatto questa configurazione abbiamo lanciato il programma sulle stesse reti ma il risultato è stato completamente diverso: dopo circa sei giorni Nessus non era ancora riuscito a portare a termine la scansione di una rete di classe C. Facendo una prova con il programma nmap si scopre che, mentre dall’interno si riusciva a fare uno scan in un secondo, dall’esterno servono circa 1000 secondi. Il motivo di questa differenza è che il router non risponde ai pacchetti, quindi sia nmap, sia Nessus aspettano un tempo prefissato (timeout) prima di passare alla porta successiva. Il timeout in genere è dell’ordine della decina di secondi, le porte sono 65536, anche facendone un certo numero in parallelo si vede che servono alcune ore. Bisogna poi considerare che Nessus tenta la scansione con diversi plugin, ognuno dei quali esegue una scansione su tutte le porte, e deve attendere il timeout; si capisce quindi il perché di simili tempi di attesa. Questo risultato ci da una ulteriore conferma della corretta funzionalità dei filtri applicati sul router, in quanto un eventuale attaccante impiegherebbe diverse settimane per ottenere un risultato dalla scansione dei nodi dei LNF. Oltretutto il risultato di tale scansione sarebbe quello di scoprire poche porte aperte e quindi, una drastica riduzione delle probabilità di vulnerabilità, dovuta anche al fatto che tutti i servizi accessibili sono sotto la gestione e il controllo diretto del Servizio di Calcolo. 96 Capitolo 5 Firewall centralizzati In questo capitolo viene presentato uno studio teso a testare e valutare quale soluzione di firewall può essere la migliore per l’ambiente dell’INFN. Lo studio ha coinvolto anche altri gruppi esterni ai LNF in modo da ridurre i tempi e mettere alla prova i dispositivi anche in configurazioni diverse. Per avere dei risultati paragonabili sono state decise di comune accordo alcune procedure di test. Ciò che si è voluto valutare sono stati la funzionalità, la facilità di gestione e le prestazioni. 5.1 – Test effettuati Vediamo innanzitutto lo scenario nel quale i firewall sono stati messi alla prova ricordando che la configurazione della rete dei LNF è quella descritta nel primo capitolo, in particolare in figura 1.4. Nella figura seguente (fig. 5.1) possiamo vedere come è stato inserito il firewall di test, quali nodi e su quali reti sono stati fatti girare i programmi di prova. 97 WAN ATM 7507 192.84.128.20 6500 192.84.128.2 Outside 192.84.129.1 Inside PC2 192.84.129.10 PC1 fig. 5.1 – Scenario di test Dopo aver visto come vediamo nella lista seguente quali sono state le soluzioni da noi testate: 1. Cisco PIX 515 2. Box OpenBsd 3. Infoguard IGWall 4. Symantec 5300 5. Nokia IP330 6. Clavister • • Su questi apparecchi sono state fatte le seguenti prove: Configurazione dei parametri di base e delle regole. Misura del throughput passante. o Misura del throughput in TCP e UDP fra due PC collegati Back to Back utilizzando Netperf o Ripetizione delle misure frapponendo il firewall fra i pc 98 Misura con il firewall in modalità “Passante” (O senza regole configurate) Misure ripetute all’aumentare della complessità delle regole. Vediamo ora più in dettaglio i test effettuati sui singoli firewall 5.1.1 Cisco PIX 515 Vediamo innanzitutto la configurazione: Articolo PIX-515 Descrizione PIX 515 Chassis only PIX-4FE CAB-ACI SF-PIX-6.1 PIX-515UR-SW PIX Four-port 10/100 Ethernet interface, RJ45 VPN Accelerator Card (VAC) for PIX Firewall PIX-VPN-ACCEL • • • • • Le caratteristiche dei PC usati invece sono le seguenti: PC1: Duron 800 Mhz - 256MB di RAM – Fast Ethernet 3COM 3c905c PC2: Pentium III 1.6Ghz - 256MB di RAM – Fast Ethernet on board Intel Mentre come software per fare le misure abbiamo utilizzato: Redhat 7.2 Kernel 2.4.9-21 Come sistema operativo dei PC di prova Netperf versione 2.1pl3 Per generare il traffico e misurare le performance. Netperf è composto da un client e da un server. Il primo genera del traffico, il secondo, in ascolto, misura la quantità di traffico ricevuto. ICMP Bomber Per generare il traffico “ping flood”. Questo programma è un exploit per causare DoS dovuti al traffico di tipo “ping”. Vediamo ora uno stralcio della configurazione del firewall: nameif ethernet0 outside security0 //Interfaccia Insicura verso il router nameif ethernet1 inside security100 //Interfaccia Sicura verso la LAN hostname pixlnf // Access-List applicata sull’interfaccia Inside in Ingresso che permette // qualsiasi tipo di traffico dalla LAN verso Internet access-list acl_inside_in permit ip any any // Access-List applicata sull’interfaccia Outside in Ingresso di 84 entry // con match sull’ultima entry 99 … access-list acl_out_test2 permit tcp any host 192.84.129.28 eq 22 access-list acl_out_test2 permit tcp any host 192.84.129.29 eq 22 access-list acl_out_test2 permit tcp any host 192.84.129.20 eq www access-list acl_out_test2 permit tcp any host 192.84.129.21 eq www access-list acl_out_test2 permit tcp any host 192.84.129.22 eq www access-list acl_out_test2 permit tcp any host 192.84.129.23 eq www access-list acl_out_test2 permit tcp any host 192.84.129.20 range 7000 7009 access-list acl_out_test2 permit tcp any host 192.84.129.21 range 7000 7009 … icmp permit any outside //Traffico ICMP permesso icmp permit any inside //Traffico ICMP permesso ip address outside 192.84.128.2 255.255.255.0 ip address inside 192.84.129.1 255.255.255.0 … //NAT Disabilitato nat (inside) 0 0.0.0.0 0.0.0.0 0 0 static (inside,outside) 192.84.129.0 192.84.129.0 netmask 255.255.255.0 0 0 access-group acl_out_test2in interface outside access-group acl_inside_in in interface inside La prima prova che abbiamo fatto è stata la misura delle performance sia come dispositivo passante (cioè senza filtri), sia con dei filtri applicati sempre più complessi. La prova si è svolta nel seguente modo: Innanzitutto si è misurato il throughput senza il firewall tra il PC1 e il PC2 utilizzando Netperf. Sul PC1 abbiamo lanciato il server, in ascolto, di netperf, mentre sul PC2 abbiamo lanciato il client. Nelle tabelle successive si possono vedere i risultati: Collegamento Back to Back Throughput misurato in TCP 93.70 Mbps Throughput misurato in UDP 95.80 Mbps Test con Pix Firewall con access-list ip any any (Passante) Throughput misurato in TCP 93.03 Mbps Throughput misurato in UDP: 95.60 Mbps PING (Media) 356 microsecondi Test con firewall e acl di 84 linee Throughput misurato in TCP 93.20 Mbps Throughput misurato in UDP 95.54 Mbps PING (Media) 371 microsecondi Test con firewall e acl di 270 linee Throughput misurato in TCP 93.10 Mbps 100 Throughput misurato in UDP PING (Media) 95.39 Mbps 427 microsecondi Nel test successivo abbiamo voluto vedere come si comporta il Pix 515 nel caso di attacco di tipo “ping-flood” Lo scenario è simile al precedente ma con l’aggiunta di una macchina che effettua il traffico ICMP-ping ad alta velocità. Lo schema si può vedere nella figura seguente (fig. 5.2) ATM WAN 7507 ICMP Bomber PC3 192.84.128.20 6500 192.84.128.2 Outside 192.84.129.1 Inside PC2 192.84.129.10 PC1 fig. 5.2 – Scenario di test per il Ping-Flood Vediamo i risultati del test: Impostazioni del software ICMP Bomber: size 1 intervallo 1 88.74 Mbps Throughput in TCP 101 Impostazioni del software ICMP Bomber: size 10 intervallo 1 Throughput in TCP 87.67 Mbps Aggiungendo, alla configurazione del firewall, la seguente regola all’inizio: access-list acl_out_test3 deny icmp any host 192.84.129.10 Le prestazioni diventano: Impostazioni del software ICMP Bomber: size 1 intervallo 1 86.36 Mbps Throughput in TCP Impostazioni del software ICMP Bomber: size 10 intervallo 1 86.80 Mbps Throughput in TCP Impostazioni del software ICMP Bomber: size 1000 intervallo 1 Throughput in TCP 80.43 Mbps 5.1.2 Box OpenBsd Vediamo innanzitutto la configurazione della macchina che funge da firewall: • • • • Box OpenBSD: Pentium III 866 Mhz - 512MB di RAM – 2xFast Ethernet 3COM 3c905c PC1 e PC2 : IBM Xseries 330 Biprocessori PIII 800 512MB 2 Fast Ethernet on Board. Il software utilizzato e’ stato: Netperf versione 2.1pl3 Redhat 7.2 Kernel 2.4.9-21 Vediamo come e’ stata impostata la funzionalità di packet filtering di OpenBSD. Innanzitutto bisogna abilitare questa funzionalità modificando il file: /etc/rc.conf e scriverci dentro: pf=YES pf_rules=/etc/pf.conf 102 La prima opzione abilita il packet filtering, la seconda indica quale è il file che contiene le regole. Per far partire il servizio bisogna digitare il comando: pfctl -e Per rendere operative le regole bisogna digitare: pfctl –R /etc/pf.conf Per verificarle: pfctl –s rules Per verificare lo stato delle connessioni: pfctl –s states Vediamo anche per questo firewall un esempio di file di configurazione: # $OpenBSD: pf.conf,v 1.3 2001/11/16 22:53:24 dhartmei Exp $ # # See pf.conf(5) for syntax and examples # pass all packets in and out (these are the implicit first two rules) # pass in all # pass out all block in on fxp0 all #Fa passare le connessioni ssh (Setup o syn) e permette il ritorno dei pacchetti associati pass in on fxp0 inet proto tcp from any to any port 22 flags S keep state # pass in on fxp0 inet proto { tcp, udp } from any to any port 500 keep state pass in on fxp0 inet proto { tcp, udp } from any to any port 501 keep state .. pass in on fxp0 inet proto { tcp, udp } from any to any port > 10000 keep state pass in on fxp0 inet proto icmp from any to any keep state Le prestazioni rilevate sono: Test con Pix Firewall con access-list ip any any (Passante) 94.13 Mbps 96.17 Mbps 200 microsecondi Throughput in TCP Throughput in UDP PING (Media) 103 Test con Pix Firewall con access-list di 80 linee 94.13 Mbps 96.19 Mbps 200 microsecondi Throughput in TCP Throughput in UDP PING (Media) Test con Pix Firewall con access-list di 270 linee Throughput in TCP 94.13 Mbps 96.20 Mbps Throughput in UDP 200 microsecondi PING (Media) Test con Pix Firewall con access-list di 5000 linee Le prestazioni rimangono praticamente invariate. 5.1.3 Infoguard IGWall Vediamo per prima cosa le caratteristiche di questo dispositivo: • Interfaccia Web HTTPS • S.O. Linux (IP Tables) • NAT • DHCP Server • Portscan Detection • Accounting • VPN IPSec (Client SSH Sentinel sui client). • Log Server • Antispam • Packet Filtering Come di consueto abbiamo usato il solito Netperf 2.1pl3, Redhat 7.2 Kernel 2.4.9-21 per i PC di test e ICMP Bomber per generare il traffico per il ping-flood. I PC utilizzati sono gli stessi con i quali abbiamo testato il Pix. Questa volta non è possibile indicare un file di configurazione dato che si configura tramite una interfaccia web, vediamo allora a titolo di esempio una immagine di come si presenta l’interfaccia di configurazione di IGWall: 104 fig. 5.3 – Interfaccia web per la configurazione del IGWall di Infoguard Vediamo infine le prestazioni: Throughput in TCP Throughput in UDP Collegamento Back to Back 93.70 Mbps 95.56 Mbps Test con access-list ip any any (Passante) Throughput misurato in TCP 94.00 Mbps Throughput misurato in UDP: 96.11 Mbps Test con access-list di 45 linee Throughput misurato in TCP 93.52 Mbps Throughput misurato in UDP: 96.17 Mbps 5.1.4 Symantec 5300 Cominciamo, al solito, vedendo le caratteristiche del dispositivo: • S.O. Proprietario (Linux based) • Management console per windows. • NAT • Accounting • VPN 105 • • • Antivirus Packet Filtering IDS (Con LiveUpdate!) Il software utilizzato è il solito e anche le macchine di test sono le stesse usate per testare il box OpenBSD: 2 IBM Xseries 330 Biprocessori PIII 800 512MB 2 Fast Ethernet on Board. Anche questo dispositivo si configura tramite una interfaccia grafica; a differenza del box OpenBSD però, questa gira su windows. Nelle prossime figure possiamo vedere qualche esempio di schermata di configurazione: fig. 5.4 – Pannello di configurazione del Symantech 5300 106 fig. 5.5 – Pannello per la definizione delle regole sul Symantech 5300 5.1.5 Nokia IP330 Caratteristiche tecniche: • Interfaccia Web • Suporto di interfacce WAN V35 T1/E1 • Funzionalità di routing (RIP,OSPF,BGP) • Firewall • VPN IPSec . • IDS • Packet Filtering Vediamo qualche esempio di schermate del software di questo firewall fig. 5.6 – Interfaccia web per la definizione delle regole sul Symantech 5300 5.1.6 Clavister Caratteristiche tecniche: • S.O.+Software Proprietari (Dimensioni minori di un Megabyte) • Management console per windows in grado di gestire piu firewall anche geograficamente distanti. • Supporto Vlan 802.1q! • Packet Filter • Traffic Shaping • NAT • VPN • Tool di Analisi dei Log 107 La caratteristica più particolare è proprio il fatto che il sistema operativo e il software sono proprietari, e occupano solo un megabyte di spazio. Vediamo qualche schermata di configurazione del software di controllo di questo dispositivo: fig. 5.7 – Schermata per la definizione delle regole sul Clavister 5.1.7 Conclusioni Vediamo in una tabella comparativa un sommario delle caratteristiche dei dispositivi testati: Firewall ACL IDS VPN Gigabit Prezzo Cisco PIX 515 Si No Disponibile 8000€ Nokia IP330 Symantec SGS 5300 Si Si Si Disponibile dal mod. 525 in poi No Si Si Si No 17.300€ (256 users) 34.173€ Senza Limiti Infoguard IGWall BoxBSD Si No Si Opzionale Si No Clavister Si No Configurabile Si (Dipende dall’hardware) Si Si tab. 5.1 – Tabella comparativa 0€+il PC 7200€ 108 Una grossa differenza esiste tra PIX e Clavister e gli altri che sono dei PC con un hardware specifico (rack mount) con un software con funzioni di firewall che gira su un sistema operativo basato su un nucleo Linux o BSD. Vediamo in un’altra tabella vantaggi e svantaggi delle due conclusioni: Dispositivo Firewall • • • Vantaggi Spesso in un unico Box sono racchiuse le funzioanlità di Firewall, IDS e VPN Server. Hanno in genere una interfaccia di management che rende semplice la gestione del box e la visualizzazione dei log. In generale l’utilizzo di questi appliance dovrebbe scaricare l’amministratore dal lavoro di installazione ed ottimizzazione del sistema operativo, permetendogli di occuparsi solo della definizione delle regole di sicurezza da implementare. • • • Svantaggi Il prezzo è spesso abbastanza elevato Essendo spesso PC standard preconfigurati e’ difficile che l’hardware sia allineato al top della tecnologia disponibile. A differenza della modifica e l’inserimento di nuove regole che è molto semplice ed intuitivo, la creazione di ACL complesse e composte di molte regole risulta poco funzionale da interfaccia grafica e la configurazione a linea di comando non è sempre banale. tab. 5.2 – Tabella comparativa dei firewall basati su dispositivi dedicati Box BSD o Linux • • • • Vantaggi Il costo è unicamente quello del PC che si vuole utilizzare. Si può avere il controllo completo delle funzionalità implementate e quindi una flessibilità totale. I tool (IPtables e specialmente pf su BSD) sono potenti e documentati. E’ possibile avvalersi di piattaforme hardware più performanti appena si rendono disponibili sul mercato semplicemente replicando al configurazione su PC piu potenti. • • Svantaggi Tutta la configurazione del Box e la gestione dei log è lasciata al sistemista che dovrà predisporre autonomamente le configurazioni e gli script di analisi dei log. Essendo pacchetti che risiedono su sistemi operativi “Open” continuamente in sviluppo, occorre porre molta attenzione in fase di installazione in modo da non lasciare attivi servizi potenzialmente vulnerabili. tab. 5.3 – Tabella comparativa dei firewall basati su PC 109 • • • Siamo quindi giunti alle seguenti considerazioni finali: L’utilizzo di un firewall può essere indicato per quelle sezioni dell’INFN che non dispongono di un router o uno switch centrale sufficientemente “performante” nella valutazione delle ACL. Un firewall può essere utile per proteggere in maniera particolare alcuni specifici rami della propria rete. Se l’unica funzione richiesta al firewall è quella di packet filter e non è possibile delegarla ad un router, si consiglia l’utilizzo di Box BSD o Linux opportunamente configurati. Se invece si desidera gestire da un unico Box anche altre funzioni quali VPN, IDS o Antivirus allora si può pensare ad un investimento più consistente in un dispositivo “proprietario”. Ai LNF il router di accesso alla WAN è adeguato a gestire un flusso di dati superiore al limite del circuito virtuale di accesso di 34Mbps. Abbiamo verificato che con la banda saturata il carico della CPU del router, dovuto prevalentemente alla esecuzione delle regole incluse nelle ACL, ha raramente superato un livello del 60%. Per questo motivo non si ritiene per ora necessario l’utilizzo di un firewall tra lo switch e il router che introdurrebbe un ulteriore “point-of-failure”. 110 Capitolo 6 Evoluzione verso le VPN In questo capitolo sono descritte le Reti Private Virtuali; nel primo paragrafo vedremo cosa sono e come funzionano, nel secondo vedremo una implementazione provata ai LNF per consentire un accesso sicuro ma allo stesso tempo molto versatile; sicuro perché tutto il traffico è cifrato, versatile perché l’utente collegato, da remoto, verso la LAN dei LNF via VPN può operare come se si trovasse collegato direttamente all’interno della LAN. 6.1 – Introduzione. VPN sta per Virtual Private Network, cioè Rete Privata Virtuale: una tecnologia che consente di utilizzare la rete Internet per connettere in sicurezza uffici e collaboratori a costi molto ridotti rispetto a quelli delle linee telefoniche private dedicate. Vi sono due usi principali per le VPN: il primo è connettere due o più reti geografiche separate come ad esempio la sede centrale e le filiali. Il secondo uso consente agli impiegati o comunque a utenti autorizzati, di accedere alla rete aziendale da un PC remoto, come ad esempio, viaggiando, da un laptop o dal computer di casa. Entrambi questi usi permettono l’accesso a reti protette, solo a utenti autorizzati. Occorre naturalmente prevedere soluzioni tecnologiche che soddisfino pienamente i requisiti di sicurezza e flessibilità richiesti da questa struttura. Una rete privata virtuale è formata da due componenti principali: il gateway di rete che ha interfacce multiple verso le diverse componenti del network e diversi protocolli di cifratura e decifratura del traffico che lo attraversa. Due gateway possono essere utilizzati per costituire una VPN tra due reti locali remote. L’altro elemento della rete privata è un client VPN installato su un PC, in grado a sua volta di cifrare e decifrare selettivamente il traffico che riceve e invia alla rete geografica protetta dal gateway della VPN. Sono necessari in questo caso client compatibili e gateway che supportino interfacce diverse. 111 6.1.1 Cifratura e autenticazione La cifratura è il processo di modifica dell’informazione spedita, in modo che questa non possa essere letta da nessuno all’infuori del recipiente selezionato. Questo risultato si ottiene applicando un algoritmo matematico che richiede una chiave di decifratura per sbloccare i dati originali. Gli algoritmi che utilizzano la stessa chiave per cifrare e decifrare sono conosciuti come simmetrici: gli esempi più comuni sono: DES e RC4. Algoritmi che utilizzano chiavi diverse per cifarer e decifrare i dati si definiscono asimmetrici o “a chiave pubblica”. I più comuni sono RSA e Diffie-Hellman. Si possono utilizzare congiuntamente sia gli uni sia gli altri. Oltre a cifrare e decifrare i dati, una VPN deve anche verificare chi invia le informazioni e assicurare che queste non siano state modificate attraversando la rete pubblica Internet. Il processo di verifica dell’identità del mittente si definisce “autenticazione” che può essere fatta attraverso la verifica dello username e della password e/o da un pezzo di informazione chiamato “certificato digitale”. Un certificato digitale contiene i parametri di cifratura che possono essere usati per identificare in modo univoco l’utente o il sistema di hosting da cui parte la chiamata. La verifica che i dati non siano stati modificati da una terza parte non autorizzata, nel corso della trasmissione si chiama “integrity cheking”: controllo dell’integrità. Un processo che viene eseguito applicando un algoritmo, conosciuto come “hash” (groviglio), ai dati, prima che questi vengano inviati e verificando lo stesso hash alla ricezione. Se le mappe dei due hash non sono state modificate significa che il dato è integro. 6.1.2 Tunnelling e protocolli Le VPN utilizzano un processo che si definisce “tunnelling” per far passare il traffico cifrato attraverso Internet. Il tunneling è il processo di incapsulamento di un pacchetto di una rete, dentro un altro e consente di nascondere in tal modo l’indirizzo IP del vero mittente e ricevente, oltre ad altri protocolli di informazioni (come ad esempio se il pacchetto contiene e-mail o traffico web). Il pacchetto che viaggia attraverso Internet è cifrato e solamente gli indirizzi pubblici della VPN (Gateway o client) sono notificati durante il trasporto. Il sistema funziona anche in presenza di indirizzi IP dinamici. Le VPN sono lo strumento ideale per connettere due o più reti locali (LAN) di uffici geograficamente remoti. Attraverso la VPN le persone possono utilizzare tutte le opportunità offerte da una intranet: siti web aziendali, email, videoconferenze, scambio e condivisione di file tra reti geografiche separate. Ancora più frequentemente le funzionalità della VPN vengono utilizzate per connettere uffici periferici tra loro e con una sede centrale. Il traffico di una rete viene indirizzato verso un server remoto attraverso un normale indirizzo IP, ma passando attraverso il gateway della VPN viene cifrato e inserito in una procedura di tunnelling che lo instrada automaticamente verso la rete remota cui è destinato. Quando il gateway di questa rete riceve il pacchetto di dati cifrati, verifica il mittente e l’integrità del pacchetto, quindi lo decifra e lo distribuisce al destinatario senza modificarlo. Dato che la VPN è 112 implementata solo tra due gateway, rimane trasparente rispetto a qualsiasi utente e applicazione. Questo tipo di VPN può essere realizzata con una combinazione di tecnologie IPSec e SKIP. IPSec significa IP Security ed è un protocollo standard per VPN, sviluppato da Internet Engineering Task Force (IETF). Questo protocollo definisce il formato dei protocolli utilizzati per cifrare e verificare i pacchetti di dati. SKIP significa Simple Key Management for Internet Protocols ed è un altro standard sviluppato da SUN, viene usato per negoziare e modificare dinamicamente le chiavi di cifratura per migliorare i livelli di sicurezza e renderne più semplice l’utilizzo. La tecnologia SKIP è compatibile con Check Point, e TrustWorks. 6.1.3 VPN specifiche per singoli utenti remoti Una rete privata virtuale consente a utenti remoti di accedere attraverso un Provider Internet, alla LAN della sede centrale o, nel caso vi sia un sistema di collegamento anche con altri uffici remoti, di accedere a tutti i terminali della VPN in uso. Una volta connesso al provider l’utente attiva un collegamento VPN al gateway della sua rete e, da quel momento in poi, tutto il traffico viene indirizzato attraverso la VPN. Come nel caso della VPN che collega uffici remoti, anche l’utente remoto sfrutta le tecnologie di tunnelling per nascondere il traffico, ma in questo caso utilizza uno strato più basso della rete. Questo funziona attraverso l’assegnazione da parte del gateway, di un indirizzo IP univoco al client che si collega a questo punto come se fosse un utente interno della rete. Una volta che il traffico viene decifrato dal gateway, il client utilizzerà l’indirizzo interno che gli ha assegnato per farlo transitare sulla rete locale. La tecnologia più usata per implementare le reti di utenti remoti è il Point to Point Tunnelling Protocol (PPTP) di Microsoft. Il supporto per il PPTP è integrato nel Microsoft Dial-Up Networking in Windows. Questo significa che non occorre acquistare e installare client VPN di terze parti per gli utenti remoti. Configurare un utente remoto di VPN comporta la definizione del circuito virtuale sul client e la relativa creazione degli account utente sul gateway. Un indirizzo IP viene assegnato al client quando si connette e viene rilasciato al gateway quando la sessione è terminata. Gli account vengono creati stabilendo una password e una usarname per ogni utente; per l’autenticazione si può fare riferimento al database di “Active Directory” di Windows o ad un server “RADIUS”. Gli utenti possono anche essere inseriti in gruppi con prerogative speciali, cui possono essere associati accessi PPTP di gruppo. Sul sistema dell’utente viene creato un nuovo ingresso di rete per il dial-up, con l’indirizzo di IP pubblico del gateway. Per connettersi l’utente seleziona l’ingresso di rete in dial-up e gli viene richiesta la password e lo username. Windows si connette al gateway e gli viene assegnato un nuovo indirizzo IP sulla LAN cui viene anche associato l’indirizzo del server DNS. L’utente può anche decidere l’indirizzo IP del server Windows della LAN e, in questo modo, navigare all’interno della rete e fare logging sui controllers di dominio di NT. 113 6.2 – Test ai LNF. Come anticipato, avere la possibilità di collegarsi ad una LAN tramite una VPN è molto vantaggioso dal punto di vista della sicurezza, perché sia i dati di autenticazione, sia i dati che viaggiano sulla rete sono cifrati. Inoltre il collegamento tramite VPN fa si che il computer remoto non sia semplicemente collegato alla LAN ma si trovi “proiettato” all’interno della stessa, nel senso che ottiene un numero IP appartente alla LAN stessa. La soluzione sperimentata ai LNF fa uso di un server Windows collegato allo switch centrale che fa da gateway per il protocollo PPTP di Microsoft. In questo modo è facile per un utente che usi un sistema operativo Microsoft collegarsi al server e instaurare una VPN a prescindere dal posto e dal tipo di connessione utilizzato per collegarsi. Ad esempio può essere usato per collegarsi alla LAN da casa, collegandosi ad un provider via modem, poi grazie al tunnel VPN, si può usufruire dei servizi della LAN. Ovviamente con un accesso via modem le prestazioni, a causa della scarsità di banda saranno limitate e impediranno di fatto l’utilizzo di alcuni servizi. Questo problema non esiste, ovviamente, utilizzando tecnologie quali ADSL, oppure collegandosi da una LAN diversa da quella dei LNF. Ad esempio può essere utilizzata da una persona dei LNF che si trova momentaneamente in un altro laboratorio dell’INFN o di una Università. 6.2.1 Configurazione del servizio Come anticipato è stata dedicata una macchina a fare da gateway; dato che questa macchina deve cifrare tutto il traffico è stata scelta una macchina abbastanza potente, cioè un PC Intel con 4 processori Xeon a 700 MHz con 2MB di cache, 2 GB di RAM e due dischi di sistema in mirroring. Per connetterla ci sono a disposizione 2 schede Fast Ethernet e un Gigabit Ethernet su fibra ottica.In questo modo è possibile utilizzare la Gigabit per collegare la macchina allo switch Catalyst 6500, e le altre a delle VLAN dedicate alle VPN (vedi fig.6.1). Il sistema operativo è Windows 2000 Advanced Server. 114 WAN ATM 7507 ACL 6500 VPN Gateway LAN fig. 6.1 – Configurazione della rete con il gateway VPN Vediamo come è stata configurata la macchina: innanzitutto bisogna configurare il servizio tramite il programma “Routing and Remote Access” che si trova tra gli “Administrative Tools” (fig. 6.2) fig. 6.2 – Server: Configurazione del servizio tramite “Routing and Remote Access” 115 Selezionando le proprietà del server si accede ad un pannello di configurazione che permette di abilitare il routing dei pacchetti e di abilitare l’accesso remoto (fig 6.3). fig. 6.3 – Server: Abilitazione del routing e di accesso remoto Dopo aver abilitato questi servizi si passa alla configurazione di IP, dove bisogna abilitare il routing di IP e le connessioni a richiesta basate su IP (vedi fig. 6.4). Successivamente si può scegliere se usare il protocollo DHCP per assegnare i numeri IP ai client che si connettono oppure indicare una gamma di indirizzi che assegna Windows stesso. Noi abbiamo scelto la seconda alternativa indicando una gamma di indirizzi pubblici appartenenti alla LAN. Gli indirizzi scelti sono dal 193.206.84.249 al 193.206.84.254. Il primo viene assegnato all’interfaccia del server, gli altri sono disponibili per i client. Anche queste impostazioni sono visibili in fig. 6.4 116 fig. 6.4 – Server: Configurazione di IP Dopo aver configurato il server bisogna creare la connessione sul client utilizzando lo strumento “Make New Connection” e selezionando la connessione a VPN come indicato in fig. 6.5. fig. 6.5 – Client:Creazione di una connessione a VPN Dopo averla creata ci si può connettere indicando il nome del server (nel nostro caso w2ksrv), la propria username e la password. Dopo essersi connessi il client avrà a disposizione una ulteriore interfaccia di rete (virtuale) configurata con il numero IP assegnato dal server, quindi appartenente alla LAN interna dei LNF anche se il collegamento fisico fosse stato fatto da un’altra LAN, ad esempio 117 da un provider commerciale. Per i nostri test abbiamo utilizzato la stessa LAN, per motivi di semplicità e per avere a disposizione più banda per “stressare” maggiormente il server. Lo scenario del test è visibile nella fig. 6.7 ATM WAN 7507 ACL 193.206.84.146 VPN Gateway 6500 193.206.84.249 193.206.84.253 172.16.14.130 Collegamenti fisici { Collegamento logico LAN Fast Ethernet Gigabit Ethernet ATM Tunnel VPN fig. 6.7 – Scenario di test In questo schema, il gateway VPN fa anche da proxy ARP per i client, infatti se un nodo della LAN deve mandare un pacchetto a quest’ultimo, utilizzerà il numero IP assegnatogli dal server VPN (nell’esempio 193.206.84.250) e l’indirizzo MAC dell’interfaccia fisica che collega il server allo switch Catalyst 6500. Per verificare questo meccanismo abbiamo provato a vedere la cache ARP di un nodo appartenente alla LAN. Questa verifica è stata importante per vedere se effettivamente il traffico raggiungesse il client attraverso la VPN (193.206.84.253) e non attraverso la normale interfaccia di rete locale (172.16.14.130). Il risultato si può vedere in fig. 6.8 118 fig. 6.8 – Cache ARP di un nodo della LAN Una volta appurato che il collegamento funzionasse abbiamo voluto provare a vedere quanto la cifratura dei dati impegnasse il server. Per avere una misura abbiamo effettuato un trasferimento di file da una macchina della LAN al client VPN, in modo che il server dovesse cifrare tutti i pacchetti in arrivo prima di rigirarli sul tunnel VPN. In particolare abbiamo fatto due prove: con e senza compressione, ma entrambi con la cifratura Microsoft MPPE 128 bit che usa l’algoritmo RSA RC4. Abbiamo visto che abilitando la compressione la velocità media di trasmissione si attesta su circa 30 Mbps portando il carico di lavoro delle 4 CPU del server a circa il 20% di ognuna come visibile in fig. 6.9, mentre disabilitando la compressione la velocità sale a quasi 40 Mbps e il carico sulle 4 CPU scende a quasi il 15%. È importante notare che il file trasferito era un archivio compresso. In questo modo non si deve tener conto del fatto che a una velocità maggiore corrisponde un numero maggiore di dati da trasferire, cosa che avrebbe reso più difficile la valutazione delle performance globali. Abbiamo anche voluto verificare che il file fosse veramente cifrato, per farlo abbiamo usato un programma commerciale che cattura i pacchetti sulla rete (EtherPeek); in appendice C è possibile vedere un pacchetto relativo al trasferimento di un file ASCII, e come si può vedere, risulta incomprensibile. 119 fig. 6.9 – Carico di lavoro dovuto a un traffico di 30Mbps Questi risultati sono confortanti, infatti è vero che si raggiunge il carico del 20% già con un solo client, ma non bisogna dimenticare, come già detto, che il client era in realtà su rete locale a 100Mbps e che riusciva a fare un traffico di circa 30Mbps. Se si considera che l’utilità delle VPN è per accedere alla LAN dell’esterno, e che il circuito virtuale ATM che collega il sito dei LNF al GARR è di 34Mbps, si può vedere che il server è dimensionato adeguatamente per gestire il traffico in entrata anche se fosse tutto su VPN. Visto l’esito estremamente positivo del test si sta pensando di implementare tale servizio in maniera stabile e definitiva per dare accesso dall’esterno a tutti gli utenti dei LNF. 120 Appendice A Glossario 0-9 100BaseFX - 100BaseFX utilizza un cavo in fibra ottica, per le connessioni Fast Ethernet. Il cavo è conforme allo standard IEEE 802.3, ha una lunghezza massima di 400 metri e una velocità di trasmissione pari a 10 Mbps. 100BaseT - 100BaseT utilizza un cavo (doppino) telefonico non schermato UTP (Categoria 5), per le connessioni Fast Ethernet. Il cavo è conforme allo standard IEEE 802.3, ha una lunghezza massima di 100 metri e una velocità di trasmissione pari a 100 Mbps. 10Base2 - 10Base2 utilizza un cavo coassiale da 50 Ohm, chiamato anche cavo Cheapernet o Thinnet, per le connessioni sottili Thin Ethernet. Il cavo è conforme allo standard IEEE 802.3, ha una lunghezza massima di 185 metri e una velocità di trasmissione pari a 10 Mbps. 10Base5 - 10Base5 utilizza un cavo coassiale da 50 Ohm, per le connessioni normali Thick Ethernet. Il cavo è conforme allo standard IEEE 802.3, ha una lunghezza massima di 500 metri e una velocità di trasmissione pari a 10 Mbps. 10BaseF - 10BaseF utilizza un cavo in fibra ottica, per le connessioni Ethernet. Il cavo è conforme allo standard IEEE 802.3, ha una lunghezza massima di 2000 metri e una velocità di trasmissione pari a 10 Mbps. 10BaseT - 10BaseT utilizza un cavo (doppino) telefonico non schermato UTP (Categoria 3, 4 e 5), per le connessioni Ethernet. Il cavo è conforme allo standard IEEE 802.3, ha una lunghezza massima di 100 metri e una velocità di trasmissione pari a 10 Mbps. A A.A.A. - Acronimo di Authentication Authorization Accounting. Queste rappresentano le tre fasi che validano ogni richiesta espressa da un utente A.C.L. - Access Control List A.D.S.L. - Asymmetric digital subscriber line. Una delle quattro tecnologie DSL. L'ADSL trasmette con larghezza di banda più ampia in fase di ricezione che in quella di trasmissione. In ricezione (verso l'utente) i dati viaggiano tra 1,5 e 9 Mbps, in trasmissione (dall'utente) tra i 16 e i 640 Kbps. L'ADSL copre distanze fino a 5500 metri su singolo doppino telefonico in rame. Vedere anche HDSL, SDSL e VDSL. A.F.S. - Andrew File System 121 Applet - Riferito nello specifico a programmi client-server Java-Based. Generalmente un applet è un componente di una applicazione scaricato in locale in grado di comunicare direttamente con un server remoto. Appletalk - Protocollo di rete proprietario di Apple computer. Usato sui PC Macintosh ARPANET - Advanced Research Projects Agency Network. Rete telematica statunitense creata nel 1969 per collegare enti governativi e militari e istituti di ricerca. Fu sviluppata negli anni '70 dalla BBN (Bolt, Beranek, and Newman) e divenne il nucleo iniziale di Internet. Il termine ARPANET scomparve definitivamente nel 1990. A.S.I.C. - Application-Specific Integrated Circuit A.T.M. - Asynchronous Transfer Mode. Modalità di trasporto asincrona che trasferisce il traffico multiplo (come voce, video o dati) in cellule di lunghezza fissa di 53 byte (piuttosto che in “pacchetti” di lunghezza variabile come accade nelle tecnologie Ethernet e FDDI). La modalità ATM permette di raggiungere velocità elevate e diventa particolarmente diffusa nelle dorsali di rete a traffico intenso. Le apparecchiature di rete di nuova generazione permettono di supportare le trasmissioni WAN anche in ATM, rendendola interessante anche per grandi organizzazioni geograficamente distribuite. C C.A. - Certification Authority. Categoria 1–5 - Classificazione dei cavi UTP in base allo standard EIA/TIA-586. Categoria 1: utilizzata per le comunicazioni telefoniche, non adatta al trasporto dei dati. È il classico doppino telefonico che arriva in tutte le case. Categoria 2: può trasportare dati fino ad una velocità massima di 4 Mbps. Categoria 3: utilizzata nelle reti 10BaseT, può trasmettere dati fino ad un massimo di 10Mbps. Categoria 4: utilizzata nelle reti Token Ring, raggiunge la velocità di 16 Mbps. Categoria 5: adatta per il trasporto dei dati fino a 100 Mbps, tutti le nuove reti vengono oggi costruite utilizzando questa categoria di cavi. Vedi anche UTP, 10BaseT e seguenti. Certificato digitale - Il certificato digitale, conosciuto anche come Digital ID, è l'equivalente elettronico di un passaporto o di una licenza di commercio. Viene emesso da un'Autorità Certificativa (Certification Authority o CA) e certifica ufficialmente l'identità del suo possessore. Un Digital ID è composto da due chiavi complementari. Si tratta di un sistema a doppia-chiave: una chiave privata viene installata sul server della società che vende al pubblico prodotti o servizi e può essere utilizzata esclusivamente da questa società; una chiave pubblica viene distribuita e incorporata in tutti i browser più comuni, come Internet Explorer e Netscape Navigator, a cura della Certification Authority. C.G.I. - Common Gateway Interface. Insieme di regole che descrivono come un server web comunica con altre applicazioni presenti sullo stesso PC e come queste applicazioni (chiamate “programmi CGI”) comunicano con il server. 122 Qualsiasi applicazione può diventare un programma CGI se gli input e gli output sono conformi allo standard CGI. Cifratura o crittografia - Sistema che permette di codificare messaggi testuali in simboli non comprensibili a prima vista, in modo che non possano essere interpretati da chi non possiede la corretta chiave di lettura. La crittografia è nata prima dei computer, ed è stata spesso utilizzata per cifrare i messaggi militari. In pratica le lettere del testo vengono trasformate con un determinato algoritmo ed è sufficiente conoscere o scoprire tale algoritmo per decifrare (decryption) il messaggio. Oggi, invece, l'algoritmo è ben noto, ma per la decodifica è necessario conoscere una o più parole chiave. In inglese è chiamata “encryption”. Commutazione di circuito - In una rete a “commutazione di circuito”, quando una sessione di comunicazione viene aperta, si stabilisce un contatto fra la parte chiamante e quella chiamata. La rete telefonica PSTN, che è di questo tipo, garantisce la qualità del servizio (QoS) dedicando alla conversazione un circuito full-duplex con una larghezza di banda 64 KHz. Tale larghezza di banda rimane inalterata indipendentemente dal fatto che le parti siano in conversazione attiva o in silenzio. Nella tecnologia a “commutazione di circuito” la capacità del canale trasmissivo è interamente dedicata ad un solo tipo di trasmissione. Per questo motivo non possiamo utilizzare questa linea per telefonare e contemporaneamente navigare in Internet. Per fare entrambe le cose dobbiamo avere installata una linea (rete) particolare, ad esempio una linea ISDN o ADSL. Commutazione di pacchetto - Tecnologia di trasferimento file su cui si è basato lo sviluppo di Internet. Ogni singolo messaggio viene suddiviso in “pacchetti” di dati dalle dimensioni fisse, con il proprio numero di identificazione, l'indirizzo del mittente e del destinatario. Tutte queste informazioni sono racchiuse nell'header del pacchetto. Il “pacchetto” di dati può così viaggiare nella rete in modo autonomo utilizzando il percorso più rapido per raggiungere la meta (in questo viene “aiutato” dai router). Questa tecnologia permette di usare lo stesso canale di comunicazione per far passare contemporaneamente pacchetti contenenti dati diversi. Una volta arrivati a destinazione, il messaggio è ricomposto nella sua forma originaria. Il “packet switching” è stato elaborato da Paul Baran negli anni '60. D D.D.o.S. - Distributed Denial of Service D.E.S. - Data Encryption Standard. Algoritmo introdotto negli Stati Uniti nella metà degli anni 70. Il DES è un sistema crittografico che sfrutta chiavi di lunghezza pari a 64-bit (8 caratteri ASCII). D.H.C.P. - Dynamic Host Configuration Protocol. È un protocollo che permette agli amministratori di rete di gestire centralmente ed in modo automatico l'assegnamento dell'indirizzo IP di ogni dispositivo connesso ad una rete (che deve risultare unico). 123 D.N.S. - Domain Name System. Non è un vero e proprio protocollo Internet ma piuttosto un sistema per tradurre i nomi dei nodi (ad esempio www.nasa.org ) in indirizzi numerici (ad esempio 192.168.2.1). Dominio - Nome alfabetico che identifica un server Internet al quale è abbinato un indirizzo IP numerico utilizzato per il trasferimento dei dati, la traduzione è affidata al DNS. Il nome di dominio è diviso in più parti: il dominio di primo livello (Top Level Domain), la parte a destra dell'URL, che identifica spesso la nazione del dominio (esempio: it=italia, uk=inghilterra, fr=francia...) oppure la sua qualificazione (com=commerciale, org=organizzazione, mil=militare, edu=universitaria...). Nello standard OSI viene chiamato Country Code; il PRMD (Private Domain) name, in genere la parte intermedia dell'URL, ad esempio “cisco” in www.cisco.com. Chiamato spesso dominio di secondo livello, il sottodominio è la parte più a sinistra dell'URL. Il dominio di primo livello deve essere richiesto ad un organismo apposito diverso per ciascuna nazione. Dominio di collisione - Nelle reti Ethernet il dominio di collisione rappresenta l'area di rete entro cui i frame si possono scontrare. Ripetitori e hub favoriscono la possibilità delle collisioni, mentre switch, bridge e router la riducono. D.o.S. - Denial of Service D.S.L. - Digital Subscriber Line. Tecnologia di rete che trasmette con larghezza di banda ampia a distanze limitate e attraverso il tradizionale doppino telefonico in rame. Le DSL sono di quattro tipi: ADSL, HDSL, SDSL e VDSL. Ognuna di esse si avvale di due dispositivi specifici (simili ai modem) ai due estremi della trasmissione. Poiché la maggior parte delle tecnologie DSL non utilizza tutta la larghezza di banda disponibile sul doppino, rimane spazio per un canale voce (ad esempio per normali telefonate). Vedere anche ADSL, HDSL, SDSL e VDSL. E E-mail - Electronic Mail. Posta elettronica, ovvero scambio di messaggi e di file attraverso una rete locale o Internet. Avviene in tempo reale ed è indipendente dalla posizione fisica dei computer mittente e destinatario. I messaggi e file vengono conservati da un server di tipo POP e/o IMAP che provvede ad inoltrarli al destinatario quando questo si collega. Encryption - Trasformazione, mediante un algoritmo matematico ed una chiave, di un messaggio leggibile in un altro messaggio non facilmente interpretabile. L'obiettivo e' quello di nascondere la natura dell'informazione agli occhi di persone non autorizzate a venirne in possesso. Ethernet - La più diffusa tecnologia LAN inventata dalla Xerox Corporation e sviluppata successivamente dalla stessa Xerox insieme ad Intel e Digital Equipment Corporation. La tecnologia Ethernet utilizza il protocollo CSMA/CS (Collision Detection) per spostare i pacchetti tra computer. Opera su vari tipi di cavi (coassiali o doppini telefonici) ad una velocità di 10 Mbps, è simile 124 alle serie standard IEEE 802.3. Vedere anche 10Base2, 10Base5, 10BaseF, 10BaseT e Fast Ethernet. Extranet - Una rete simile ad Internet ma limitata nell'accesso a partner, fornitori o clienti di un'azienda, cui è stata fornita un'apposita password. Permette di condividere in modo semplice e conveniente informazioni e risorse. F Fast Ethernet - tecnologia LAN che utilizza lo stesso metodo di trasmissione di Ethernet 10 Mbps, ovvero il protocollo CSMA/CS (Collision Detection), ma che opera con una velocità dieci volte superiore, cioè 100 Mbps. Fast Ethernet è la soluzione ideale per prestazioni superiori in reti Ethernet congestionate, poiché utilizza lo stesso cablaggio e gli stessi software di rete. Le varianti esistenti comprendono 100BaseFX, 100BaseT4 e 100BaseTX. F.D.D.I. - Fiber Distributed Data Interface. Tecnologia LAN basata su una rete con topologia ad anello da 100 Mbps che utilizza cavi a fibre ottiche che coprono distanze fino a 2 Km. Generalmente è riservata alle dorsali di rete di grandi organizzazioni. Fibra ottica - Il cavo in fibra ottica utilizza i segnali luminosi per trasferire i dati e li trasmette attraverso una sottile fibra in vetro. È generalmente composto da una parte centrale in vetro circondata da parecchi strati di materiali protettivi. Il fatto di trasmettere impulsi luminosi anziché segnali elettrici consente di eliminare il problema delle interferenze elettriche. Per questo motivo è il mezzo trasmissivo ideale per quegli ambienti che hanno parecchie interferenze elettriche. I dati che viaggiano sulle fibre ottiche sono trasferiti a velocità altissime e su distanze maggiori rispetto al cavo coassiale e al twisted pair. Le fibre ottiche vengono spesso utilizzate per le dorsali (backbone). Firewall - Il firewall (letteralmente “parete antincendio”) è un sistema che impedisce gli accessi non autorizzati. In pratica è un sistema in grado di controllare l'accesso alle reti intercettando tutti i messaggi in entrata e in uscita. Il firewall, a seconda della configurazione e della tipologia, permette infatti il passaggio solamente di determinati tipi di dati, da determinati PC e da determinati utenti. Il firewall separa e protegge la rete interna, definendo e rafforzando le policy di rete. I computer esterni alla rete devono attenersi a una specifica procedura per ottenere l'accesso alle risorse, agli host e a tutte le altre informazioni. Se l'accesso viene autorizzato l'utente può passare, a patto che si attenga alla procedura definita dal firewall. Di solito sono configurati per proteggere la rete contro i login non autenticati all'esterno. Firma Digitale - Cifratura della chiave di hash atta a garantirne l'autenticità. Frame - Gruppo logico di informazioni inviate come unità a livello Collegamento Dati, su un mezzo trasmissivo. Spesso coincide con i dati dell'intestazione (header) che controllano la sincronizzazione e gli errori relativi all'invio delle informazioni dell'utente, contenute nell'unità. I termini cella, datagramma, messaggio, pacchetto e segmento sono anch'essi sinonimi per descrivere gruppi logici di informazioni inviate ai vari livelli del modello OSI. 125 Frame Relay - Tecnologia di collegamento di tipo geografico (WAN) a commutazione di pacchetto che opera al livello COLLEGAMENTO DATI. Questo protocollo è più efficiente dell'X.25. F.T.P. - File Transfer Protocol. Parte del principale del gruppo (TCP/IP) di protocolli Internet, utilizzato per trasferire i file dai server Internet ai computer dell'utente. G Gateway - Punto di collegamento che regola la comunicazione fra due reti, fra Internet e una rete locale. I gateway connettono reti anche tecnologicamente molto diverse tra loro operando ad un livello OSI superiore (livello APPLICAZIONE) a quello in cui operano i router (livello RETE). I gateway sono infatti elementi di comunicazione usati nella interconnessione di reti locali tra loro eterogenee, sia su scala locale LAN che su scala geografica WAN, a cui possono essere affidate anche complesse funzioni di conversione di protocolli, rappresentazione dati e modalità di accesso a risorse in maniera trasparente alle singole reti. G.A.R.R. - Gruppo per l'Armonizzazione delle Reti della Ricerca Gigabit Ethernet - Tecnologia LAN che utilizza lo stesso metodo di trasmissione di Ethernet 10 Mbps, ovvero il protocollo CSMA/CS (Collision Detection), ma che opera con una velocità cento volte superiore, 1.000 Mbps, cioè 1 Gbps. Gigabit Ethernet viene impiegata nelle dorsali aziendali a fibra ottica. Una tecnologia alternativa a questo tipo di rete è l'ATM. G.P.R.S. - General Packet Radio Service. Standard per le comunicazioni cellulari a 150 Kbps. G.U.I. - Graphic User Interface. Interfaccia utente che riceve comandi non tramite la digitazione sulla tastiera, ma utilizzando forme grafiche come puntatori, icone, finestre, menu e pulsanti. Microsoft Windows e Apple MacOS sono esempi di piattaforme GUI. H Hash, Algoritmo - Procedura secondo la quale, dato un messaggio ed una chiave, è possibile determinare l'integrità del messaggio. Hop - Termine che descrive il passaggio di un pacchetto di dati tra due nodi di una rete. Ad esempio il tratto di rete fra un router (o uno switch) e l'altro. Host - Computer ospite che accetta, tramite rete, le richieste di altri PC o terminali, che possono così utilizzare programmi o condividere dati presenti sull'host. H.T.M.L. - HyperText Markup Language. Semplice linguaggio di formattazione dei documenti utilizzato per preparare le pagine che devono essere visualizzate dai browser Web. Creato nel 1991, l'HTML fu elaborato successivamente dal CERN di Ginevra. Si tratta di un linguaggio piuttosto semplice. Esistono molte versioni, tutte comunque, devono passare l'approvazione del W3C, l'organizzazione che regolamenta e promuove l'uso dello standard. Esistono vari editor HTML in commercio che facilitano o 126 automatizzano del tutto la creazione del codice HTML, consentendo di impaginare i documenti senza alcuna conoscenza di programmazione. H.T.T.P. - Hypertext Transfer Protocol. Protocollo su cui si basa il WWW (World Wide Web). In linea di massima l'unica attività svolta da un server HTTP è quella di inviare file, siano essi documenti testuali, documenti in formato HTML, immagini, suoni, sulla base delle richieste pervenuti dai client degli utenti Internet tramite browser. I I.A.N.A - Internet Assigned Numbers Authority I.C.M.P. - Internet Control Message Protocol. Protocollo Internet a livello RETE che riporta i messaggi d'errore e di controllo della rete. I.D.S. - Intrusion Detection System I.K.E. - Internet Key Exchange. Procedura che garantisce lo scambio delle chiavi di cifratura. I.M.A.P. - Internet Message Access Protocol. Protocollo per l'E-mail, più evoluto del POP. IMAP4, per esempio, permette di scaricare messaggi anche solo parzialmente, di archiviare i messaggi sia sul computer sia sul server e di condividere caselle di posta con altri utenti. Anche l'IMAP utilizza il protocollo SMTP. I.N.F.N. - Istituto Nazionale di Fisica Nucleare Internet - L'insieme di tutte le connessioni di rete. Ogni rete è costituita da un insieme di computer (nodi) tra loro collegati dal protocollo TCP/IP. Esistono tuttavia reti che non si basano sul protocollo TCP/IP e pertanto non sono considerate appartenenti ad Internet, comunque è possibile comunicare con queste reti grazie ai gateway. Internet può essere considerata in parte l'evoluzione del sistema ARPANET. Internetworking - Termine generale che si riferisce all'intero sistema di interconnessione di reti e che comprende prodotti, procedure e tecnologie di rete. Intranet - Rete che utilizza la stessa tecnologia di Internet ma limitata nell'accesso ai soli dipendenti dell'azienda o membri dell'organizzazione. Di solito viene usata dalle aziende per mettere in collegamento la sede centrale con le varie filiali sparse nel mondo. Ad essa si accede tramite password. I.P. - Internet Protocol. È il protocollo di comunicazione di Internet. I messaggi vengono suddivisi in pacchetti e inviati attraverso la Rete. Il protocollo IP aggiunge ad ogni pacchetto le informazioni necessarie (fra cui l'indirizzo IP del computer di destinazione) affinché ogni host possa instradare il pacchetto verso la destinazione finale. IPSec - Protocollo basato su IP che garantisce l'integrità e l'autenticità del traffico che transita su una rete condivisa non sicura. IP spoofing - Questa operazione permette agli hacker di venire in possesso di indirizzi IP della rete privata dell'azienda che vogliono attaccare. L'obiettivo è quello di eludere i controlli di sicurezza al perimetro “costruendo” pacchetti IP il cui indirizzo sorgente è l'indirizzo IP “rubato”. 127 I.S.O. - International Organization for Standardization. Nata nel 1947 a Londra, questa organizzazione a partecipazione volontaria presiede alla regolamentazione degli standard internazionali riguardanti molteplici settori. Nel 1978 l'ISO propose OSI, un modello di riferimento a 7 livelli per sistemi di rete diversi. L LAN - Local Area Network. Rete o gruppo di segmenti di rete confinati in un edificio o un campus, che collega computer e periferiche (es. stampanti, fax, scanner) installate nella stessa sede (es. stesso palazzo, anche a piani diversi) oppure in sedi vicine (es. due palazzi adiacenti). Le LAN operano di solito ad alta velocità; per esempio Ethernet ha una velocità di trasferimento dati di 10 Mbps o di 100 Mbps nel caso della Fast Ethernet. Confrontare con la voce WAN. Larghezza di banda - Capacità di “trasporto dei dati” di un collegamento di rete utilizzata per indicare la velocità di trasmissione. Per esempio, un collegamento Ethernet è in grado di trasprtare 10 Mbps (10 milioni di bit al secondo); un collegamento 100 Mbps (100 milioni di bit al secondo); 1.000 Mbps (1 miliardo di bit al secondo). Livello 1: Fisico - Il livello fisico si occupa della trasmissione dei singoli bit da un estremo all'altro dei vari mezzi di comunicazione che possono essere il doppino telefonico, il cavo coassiale, le fibre ottiche, le onde radio, i satelliti. Perché si possa avere una connessione tra PC è necessario dunque, ma non indispensabile, un supporto fisico, composto solitamente da un cavo e da interfacce di comunicazione. La connessione tipica di una rete locale utilizza sistemi Ethernet. I cavi e le schede Ethernet appartengono a questo primo livello. Protocollo standard è il protocollo Ethernet. Livello 2: Collegamento Dati - Il livello del collegamento dati riguarda i dispositivi che gestiscono il collegamento dati da un PC all'altro della stessa rete. Controlla la correttezza delle sequenze di bit trasmesse e ne richiede eventualmente la ritrasmissione. Provvede alla formattazione delle informazioni ed alla sincronizzazione dei frame, nonché alla correzione ed al recupero dei messaggi errati. Un frame contiene, a livello di collegamento dati, l'indirizzo di destinazione e, se richiesto da un livello superiore, anche l'indirizzo di origine, e un codice per la correzione e rilevazione degli errori. Il protocollo più utilizzato nel livello 2 è il protocollo X.25. Livello 3: Rete - Nel livello di rete i messaggi vengono suddivisi in pacchetti che, una volta giunti a destinazione, vengono riassemblati nella loro forma originaria. Il livello di rete provvede inoltre a reinstradare tramite i router i pacchetti verso il PC di destinazione. Nel caso di una rete locale a banda larga con canali multipli ciò significa che è a questo livello che avviene lo smistamento dei pacchetti dati da e verso i rispettivi canali di origine o di destinazione. Il protocollo di rete più utilizzato nel livello 3 è il protocollo IP. Livello 4: Trasporto - Il livello di trasporto gestisce la trasmissione dei pacchetti end-to-end. Ha il compito specifico di assicurare il trasferimento dei dati tra strati di sessione appartenenti a sistemi diversi, geograficamente separati, senza 128 che sui dati vi siano errori o duplicazione. È in grado di identificare il destinatario, aprire o chiudere una connessione con il sistema corrispondente, suddividere o riassemblare un testo, controllare e recuperare gli errori, controllare la velocità con cui fluiscono le informazioni. A questo livello l'esistenza dei livelli inferiori è completamente ignorata e ciò porta ad identificarlo come il primo dei livelli che prescindono dal tipo e dalle caratteristiche della rete utilizzata. Il protocollo standard utilizzato nel livello 4 è il TCP. Livello 5: Sessione - Il livello di sessione gestisce la corretta sincronizzazione della corrispondenza dei dati che verranno poi visualizzati. Instaura cioè una sessione, cioè un collegamento logico e diretto tra due interlocutori, organizzandone il dialogo. Per tipo di dialogo si intende la modalità full-duplex, ovvero in entrambe le applicazioni in trasmissione e ricezione contemporaneamente (tipo telefono), o in half-duplex, che equivale a dire che mentre una stazione trasmette l'altra riceve o viceversa (tipo radiotelefono), oppure in simplex, dove una stazione può sempre e solo trasmettere e l'altra sempre e solo ricevere (come nelle trasmissioni televisive). Per sincronizzazione s'intende invece la capacità di sapere sempre fino a che punto la comunicazione sia arrivata a buon fine. Livello 6: Presentazione - Il livello di presentazione gestisce i formati di conversione dei dati, cioè effettua tutte le opportune conversioni in modo da compensare eventuali differenze di rappresentazione e di formato dei dati in arrivo e/o in partenza. Macchine diverse possono avere infatti rappresentazioni diverse. Ha anche il compito di assicurare l'opportuna compressione e/o la necessaria crittografia dei dati da scambiare. Livello 7: Applicazione - Il livello di applicazione riguarda i cosiddetti programmi applicativi. Questo livello gestisce la visualizzazione dei dati: login remoto, file transfer, posta elettronica. Per la gestione dei PC, il problema si presenta quando due sistemi che vogliono comunicare possiedono video o tastiere diverse, e quindi non compatibili. Ad esempio, per spostare il cursore ad inizio linea o per cancellare lo schermo, ogni scheda ha i suoi comandi specifici: invece di dotare tutti i sistemi di opportuni traduttori per tutti i possibili interlocutori è evidentemente molto più semplice definire uno standard unico di un PC virtuale a cui tutti i corrispondenti dovranno adeguarsi per comunicare. L.N.F. - Laboratori Nazionali di Frascati Login - Operazione durante la quale vengono digitati lo username e la password, per avere accesso a reti, siti o pagine Internet riservate. L.P.D. - Line Printer Daemon M M.A.C. (address) - Media Access Control Address. Indirizzo di livello 2 di un nodo. M.A.N. - Metropolitan Area Network. Rete che si estende sull'area metropolitana. Ricopre quindi un'area geografica maggiore di un LAN ma minore di una WAN. Vedi anche LAN e WAN. 129 N N.A.S. - Network attached storage N.A.T. - Network Address Translation. Meccanismo sviluppato per ridurre il fabbisogno globale di indirizzi IP unici. Il NAT permette ad una organizzazione di utilizzare al suo interno indirizzi non unici, ovvero utilizzati anche da altre aziende. La connessione verso internet è possibile grazie ad una traslazione degli indirizzi privati in pubblici. Ad un unico indirizzo pubblico (risparmio degli indirizzi IP) possono corrispondere numerosi indirizzi privati. NetBEUI - NetBIOS Extended User Interface. Versione aggiornata del protocollo NetBIOS utilizzato nei sistemi operativi di rete (LAN Manager, LAN Server, Windows for Workgroups e Windows NT). NetBEUI organizza il trasporto dei frame aggiungendo funzioni supplementari. Inoltre, implementa il protocollo OSI LLC2. NetBIOS - Network Basic Input/Output System. Era il nome di uno dei componenti software sviluppati in principio da IBM e Microsoft per supportare i servizi NetBIOS dei primi PC. N.I.C. - Network Interface Card. Si tratta della scheda di rete, cioè un dispositivo che permette al computer di colloquiare con la rete. Le schede di rete sono generalmente installate all'interno del PC. Sul retro del computer compare la parte terminale della scheda, dove si inserisce il cavo di rete. Portatili e notebook hanno schede di rete differenti (formato PCMCIA), ed occupano uno slot che si trova solitamente su uno dei lati. Esistono schede di rete Ethernet (10 Mbps) e Fast Ethernet (100 Mbps). N.NT.P. - Network News Transfer Protocol. Protocollo per la gestione delle newsgroup in USENET ed Internet (gruppi di discussione). N.T.P. - Network Time Protocol O O.S.I. - Modello OSI (Open Systems Interconnection). Tutto il sistema hardware e software che ruota attorno alle reti è regolato da norme ben precise che fanno riferimento nella maggior parte dei casi al cosiddetto Modello OSI, realizzato nel 1984 dall'ISO (International Standard Organization). Questo modello fornisce uno standard per le interconnessioni in rete dei vari PC. P Pacchetto - Gruppo di dati con un'intestazione (header) che può indicare il contenuto del pacchetto e il suo destinatario. Si può immaginare un pacchetto come una “busta di dati” con l'header che funge da indirizzo. I pacchetti vengono inviati ai destinatari attraverso le reti utilizzando la modalità “packet switching”. Password - Parola che consente l'accesso di un utente ad una rete, ad un servizio telematico o ad un sito Internet riservato. Alcuni software distinguono fra lettere maiuscole e minuscole. Peer-to-peer - Architettura di rete nella quale tutti i computer possono essere sia client che server. 130 PGP - Pretty Good Privacy. Sistema di crittografia a chiave pubblica che consente scambi sicuri di file e messaggi attraverso la rete. Plug-in - Software accessorio che aggiunge determinate funzioni ai programmi. POP - Post Office Protocol. Si tratta del primo protocollo di posta elettronica. Il server POP immagazzina la posta arrivata e la rende disponibile quando l'utente si collega. Dalla versione POP3 la lettura dei messaggi arrivati e la composizione dei nuovi messaggi possono essere effettuati off-line, collegandosi poi per un brevissimo periodo, giusto per consentire l'invio e la ricezione automatica dei messaggi. Un protocollo di questo tipo, ma decisamente più avanzato è l'IMAP. POP può essere inteso però anche come “Point of Presence”, ossia come punto locale di accesso alla rete. PPP - Point to Point Protocol. Protocollo che ha sostituito il protocollo SLIP che forniva connessioni router-to-router e host-to-network su circuiti sincroni e asincroni. Lo SLIP infatti poteva funzionare solo con il protocollo IP, mentre il PPP va bene anche per altri protocolli come l'IPX e l'ARA. Inoltre il PPP possiede meccanismi di sicurezza propri come il CHAP e il PAP. Il PPP si basa essenzialmente su due protocolli: l'LCP e l'NCP. PPTP - Point-To-Point Tunneling Protocol. Protocollo utilizzato da Windows 98 che permette l'implementazione di reti virtuali VPN in Internet o Intranet, consentendo di utilizzare protocolli diversi dal TCP/IP, come il protocollo IPX per reti NetWare. Proxy Server - I Proxy Server sono dei server che “filtrano” le informazioni che arrivano da Internet attraverso il firewall. Quando ci si connette ad un proxy con il proprio software client, il server avvia il suo software client (proxy) e fornisce i dati. Dal momento che i proxy server duplicano tutte le comunicazioni, sono in grado di mantenere il logging di tutto quello che fanno. Un grande vantaggio dei proxy server sta nel fatto che sono completamente sicuri, se configurati correttamente, non avendo instradamenti IP diretti. Q QoS - Quality of Service - Qualità del Servizio. Nasce dall'idea che la velocità di trasmissione e il tasso di errori possono essere misurati, migliorati ed in alcuni casi bisogna garantirne una percentuale. QoS è particolarmente importante quando si trattano comunicazioni che includono video e voce o comunque informazioni di tipo multimediali, poiché questi tipi di dati devono essere gestiti in modo differenziato rispetto ai dati puri. R Rete di perimetro - Ci si riferisce alla rete posta tra la rete pubblica (untrusted network o external network) e la rete interna sicura (trusted network) con l'obiettivo di aggiungere un livello di sicurezza aggiuntivo. Router - Termine che indica un dispositivo che sposta i dati tra segmenti di rete diversi ed è in grado di leggere l'header del pacchetto di dati per determinare 131 il percorso di trasmissione migliore. I router possono collegare segmenti di rete che utilizzano protocolli diversi. Essi permettono inoltre a tutti gli utenti di una rete di condividere un unico collegamento verso Internet o verso una WAN. I router sono ancora più intelligenti degli hub e degli switch. Basandosi su una mappa di rete denominata tabella di routing, i router possono fare in modo che i pacchetti raggiungano le loro destinazioni attraverso i percorsi più idonei. Se cade la connessione tra due router, per non bloccare il traffico, il router sorgente può creare un percorso alternativo. I router definiscono anche i collegamenti tra reti che utilizzano protocolli diversi, come ad esempio l'IPX (Internet Packet Exchange) e l'AppleTalk. Il router mantiene costantemente un elenco delle possibili vie di inoltro dei pacchetti di dati, verificando l'occupazione delle linee e scegliendo la soluzione migliore (incrociando sia le informazioni sui tempi, che quelle sui costi). Infine, i router gestiscono anche i trasferimenti mobili, come lo spostamento continuo di un PC portatile. Router-based firewall - Sono firewall dove la sicurezza è implementata utilizzando filtri a livello di pacchetto come primo stadio di protezione della rete. RSA - Il più diffuso sistema di cifratura. Il suo nome deriva dalle iniziali dei suoi 3 inventori: Ronald River, Adi Shamir e Leonard Adleman. Fu inventato nel 1978. S S/Key - Metodo di autenticazione sviluppato dalla Bellcore che utilizza delle one-time password. Con questo sistema, viene generato per l'utente un set di password partendo da una parola chiave. Quando il sistema presenta all'utente la schermata di autenticazione, l'utente genererà, partendo dalla parola chiave, una one-time password che varrà solo per quella sessione. S.A.N - Storage Area Network S.D.S.L. - Single-Line Digital Subscriber Line. Una delle quattro tecnologie DSL. L'SDSL trasmette con larghezza di banda pari a 1,544 Mbps sia in fase di ricezione che di trasmissione su singolo cavo twisted pair. L'utilizzo di un singolo doppino telefonico limita la copertura di trasmissione a 3048,8 metri. Vedere anche ADSL, HDSL e VDSL. Security policy - Insieme di regole che specificano quale rete o suo elemento è abilitata a comunicare con quali altre reti o elementi di rete. Server - Termine che indica un computer e un software che offrono servizi ai client quali la memorizzazione dei file (file server), i programmi (application server), la condivisione di stampanti (print server), fax (fax server) o modem (modem server). Quando la rete si ingrandisce e si aggiungono altri computer, uno di essi diventa il cosiddetto server, cioè un punto centrale per l'archiviazione dei dati o dei programmi applicativi in rete. Trasformare un computer in un server dedicato (cioè un PC su cui non ci lavora nessuno e che rimane a disposizione di tutti) consente di risparmiare sia sui costi aggiuntivi di nuove infrastrutture di rete, sia sui costi di gestione delle stesse. I computer collegati al server vengono chiamati client. Non è comunque necessario disporre di un server dedicato nella 132 propria rete. Tuttavia, se alla rete si aggiungono sempre più utenti, un server dedicato può fungere da centrale per i compiti amministrativi come il backup dei file e gli upgrade dei programmi. S.M.T.P. - Simple Mail Transfer Protocol. Protocollo per lo scambio di messaggi di posta elettronica in rete TCP/IP (Internet, Intranet, Extranet). Progettato per messaggi in ASCII puro, attraverso le estensioni MIME può gestire messaggi formattati ed allegati grafici, audio, video e multimediali. S.N.M.P. - Simple Network Management Protocol. Protocollo standard di Internet per la gestione di reti IP e dei dispositivi collegati. L'SNMP gestisce il protocollo TCP/IP, computer, router, hub. Spamming - Invio indiscriminato di grosse quantità di messaggi di posta elettronica. SSL - Secure Sockets Layer. Protocollo di sicurezza che assicura le transazioni commerciali in rete con carte di credito. Switch - Dispositivo che connette tra loro i computer analogamente a quanto fa un hub, ma in modo più efficiente e flessibile. Migliora le prestazioni di una rete segmentandola in sottoreti e attribuendo la banda disponibile in modo intelligente. Quando la porta di uno switch riceve i pacchetti di dati, li invia alle porte specifiche dei destinatari, sulla base delle informazioni contenute nell'header di ogni pacchetto. In tal modo si ottimizza l'uso della larghezza di banda disponibile tra client, server o workgroups collegati ad ogni porta dello switch. Gli switch quindi sono più intelligenti degli hub e offrono una larghezza di banda dedicata più grande. Uno switch stabilisce una connessione temporanea tra la sorgente e il punto di destinazione, chiudendola al termine del collegamento. Lo switch migliora le prestazioni di una rete segmentandola e riducendo la contesa per l'utilizzo della larghezza di banda. Le porte dello switch sono collegate tramite cavo UTP ai dispositivi di rete. I dispositivi connessi ad uno switch fanno parte dello stesso segmento di rete e più switch possono essere collegati in serie per formare una rete più complessa, a volte mischiando hub e switch secondo necessità. Lo switch è più semplice e veloce del router, il quale sceglie l'instradamento anche giudicando in base ad un resoconto dei costi e dei tempi di trasmissione. T TCP/IP - Transmission Control Protocol/Internet Protocol. È il protocollo utilizzato da Internet e da molte reti locali. In particolare, il TCP si occupa della suddivisione dei messaggi in “pacchetti”, mentre l'IP pensa ad inviarli al corretto destinatario. T.F.T.P. - Trivial File Transfer Protocol Telnet - Protocollo simile al TCP/IP che permette ad un utente di collegarsi in maniera interattiva ad un PC in remoto; è un'applicazione client/server usata per interrogazioni di database o per usufruire di servizi specifici di alcuni server. Token Ring - Tecnologia LAN nella quale i pacchetti vengono trasferiti tra le stazioni terminali della rete da un “gettone” (token) virtuale, che si muove continuamente intorno ad un anello chiuso tra le stazioni, ad una velocità tra 4 e 133 16 Mbps. Il protocollo Token Ring viene utilizzato su topologie a stella (o con più hub collegati ad anello), su cavi coassiali intrecciati a 150 W. Così come Ethernet, anche il protocollo Token Ring fornisce servizi per i primi due livelli dell'OSI, cioè il livello Fisico e il livello Collegamento Dati. I protocolli per i livelli 1 e 2 dell'OSI si distinguono in funzione del mezzo trasmissivo usato e del modo in cui il segnale è applicato al mezzo. Nelle reti Token Ring quando una stazione vuole trasmettere un pacchetto deve aspettare il gettone e rimuoverlo dall'anello prima di trasmettere il proprio pacchetto. Quest'ultimo viaggerà in una sola direzione lungo l'anello, passando da un PC all'altro. Come nel caso di reti Ethernet, il pacchetto è di solito indirizzato ad una singola stazione, e quando passerà da quella stazione il pacchetto verrà copiato. Poi continuerà a viaggiare lungo l'anello finché non ritornerà alla stazione di partenza, che provvederà a rimuoverlo dalla rete e ad inviare il gettone alla stazione successiva che si trova sull'anello. Topologia a bus - Nella topologia a bus tutti i PC sono connessi tra loro in modo lineare, per così dire in sequenza “a catena”. Le estremità di un bus non sono collegate tra loro, ma devono sempre essere terminate, altrimenti i segnali che raggiungono la fine del cavo possono fare un eco indietro, disturbando la trasmissione. Nelle reti con topologia a bus, come in quelle con topologia ad anello, viene di solito utilizzata la trasmissione a “commutazione di pacchetto”. Una stazione che vuole trasmettere delle informazioni divide il suo messaggio in tanti piccoli pacchetti e li invia uno alla volta. La topologia a bus è usata spesso con la cablatura in cavo coassiale. La “topologia ad albero” è una generalizzazione della topologia a bus, infatti una rete ad albero viene realizzata collegando insieme più reti a bus. Topologia a stella - La topologia a stella è oggi la topologia più utilizzata. In essa tutti i computer sono connessi ad un nodo centrale che può essere un semplice ripetitore (hub) o anche un dispositivo intelligente (switch o router). Nelle reti con topologia a stella i pacchetti che vengono inviati da un PC ad un altro sono ripetuti su tutte le porte dell'hub. Questo permette a tutti i PC di vedere qualsiasi pacchetto inviato sulla rete, ma solo il PC a cui il pacchetto è indirizzato lo copierà sul proprio hard disk. Uno dei vantaggi è dato dal fatto che se vi è un'interruzione su una delle connessioni della rete solo il computer attaccato a quel segmento ne risentirà, mentre tutti gli altri PC continueranno ad operare normalmente. Uno svantaggio è il costo aggiuntivo imposto dall'acquisto di uno o più hub. Di solito, però, questa spesa è compensata dalla più facile installazione e dal costo più economico del cablaggio in twisted pair rispetto al cavo coassiale. Topologia ad anello - Una topologia ad anello è in pratica una topologia a bus dove le due estremità sono unite tra loro a formare un anello. In questa topologia le informazioni viaggiano in una sola direzione. I dati, organizzati in pacchetti ognuno dei quali contiene l'indirizzo di destinazione, girano all'interno di questo anello fino a raggiungere il PC di destinazione. La topologia ad anello può essere utilizzata con la cablatura in twisted pair, in cavo coassiale o in fibra ottica. Il protocollo più importante attualmente utilizzato su reti locali con topologia ad anello è il protocollo Token Ring. 134 Trusted network - Sono le reti delimitate dalla propria rete di perimetro. Ci si riferisce a loro con il termine “sicure” perché sono sotto il nostro diretto controllo e quindi contemplate nella nostra policy di sicurezza. U UDP - User Datagram Protocol. UDP è un protocollo di trasporto semplice, senza connessione, che si basa sul trasferimento di pacchetti di dati. Non è particolarmente affidabile: invia i pacchetti ma non garantisce che questi arrivino a destinazione. Sono quindi gli applicativi che lo utilizzano che devono preoccuparsi dell'affidabilità del servizio. UMTS - Universal Mobile Telecommunications System. Il nuovo standard a banda larga basato su una serie di apparecchiature e sulla W-Cdma (WidebandCode division multiple access) che consentirà ai cellulari della terza generazione di accedere a banche dati on line, partecipare a videoconferenze, seguire programmi TV e radiofonici, ricevere e inviare messaggi audio e video, comprare via Internet, effettuare il trading on line e attivare servizi di home banking direttamente dal telefonino. Untrusted network - Sono le reti che si sa essere al di fuori della propria rete di perimetro. Ci si riferisce a loro con il termine “non sicure” proprio perché non sono sotto il nostro diretto controllo e quindi non sono contemplate nella nostra policy di sicurezza. Generalmente si fa riferimento a queste reti quando si parla della rete pubblica (Internet). URL - Universal Resource Locator. L'indirizzo di una pagina web su Internet, cioè l'indirizzo completo da digitare per ricevere una pagina, in formato alfabetico. L'URL viene trasformata in indirizzo IP dal DNS. User-id - Vedere “Username”. Username - Parola che identifica l'utente di una rete, di un servizio telematico o di un sito Internet. Bisogna digitarla esattamente, assieme alla password. Alcuni software distinguono fra lettere maiuscole e minuscole. Lo username può essere composto da sole lettere, da soli numeri, oppure lettere e numeri insieme; è pubblico e sempre accessibile, anzi è indispensabile conoscere quello di un altro utente per potergli indirizzare un messaggio di e-mail (negli indirizzi di posta elettronica, lo username costituisce la prima parte: [email protected]). UTP - Unshielded Twisted Pair. Doppino telefonico a quattro fili utilizzato nell'implementazione di molti tipi di rete. Il cavo UTP non è schermato (unshielded) e questo non permette di ridurre le interferenze elettromagnetiche (EMI). Esistono cinque tipi di cavi UTP: categoria 1, categoria 2, categoria 3, categoria 4 e categoria 5. Vedere anche STP. V V.D.S.L. - Very-High-Data-Rate Digital Subscriber Line. Una delle quattro tecnologie DSL. L'VDSL trasmette con larghezza di banda fra 13 e 52 Mbps in fase di ricezione e fra 1,5 e 2,3 Mbps in fase di trasmissione su singolo cavo 135 twisted pair. L'utilizzo di un singolo doppino telefonico limita la copertura di trasmissione tra 304,8 e 1.372 metri. Vedere anche ADSL, HDSL e SDSL. V.L.A.N. - Virtual Local Area Network V.P.N. - Virtual Private Network. Rete privata virtuale che permette al traffico IP di viaggiare in modo sicuro su una rete TC/IP pubblica (Internet, Intranet o Extranet) grazie alla codifica di tutto il traffico da una rete ad un'altra. La VPN utilizza il “tunneling” per codificare tutte le informazioni a livello IP e rappresenta l'alternativa economica alle più costose linee dedicate. W W.A.N. - Wide Area Networks. Rete geografica che connette computer in città o nazioni diverse. Una tecnologia comune per le WAN è quella delle linee telefoniche operanti fra 1 e 2 Mbps o nel caso di collegamenti intercontinentali, l'uso di satelliti. Esempi di reti WAN sono i network di tipo Frame Relay, SMDS e X.25. Wireless - Le tecnologie “wireless”, sono quelle tecnologie che non utilizzano cavi per i collegamenti. Le LAN wireless (WLAN) sono reti locali senza cavi, interne a edifici, che comunicano utilizzando una tecnologia radio o a raggi infrarossi per collegare i computer. Ad esempio una persona che utilizza un PC portatile con tecnologia wireless è in grado di controllare la posta elettronica, connettersi ad Internet e alle risorse di rete mentre si “sposta” fisicamente all'interno di un edificio. Le WLAN impiegano sia la tecnologia a raggi infrarossi (IR) sia la frequenza radio (RF), ma quest'ultima è senz'altro la più utilizzata, avendo un raggio d'azione più lungo, una banda più larga e una copertura più ampia. La maggior parte delle reti WLAN dispone oggi di una frequenza di 2,4 GHz. In casi particolari, si possono tuttavia raggiungere frequenze ancora più elevate che superano i 10 Mbps. Le reti wireless sono molto utili negli edifici dove può essere difficoltoso effettuare il cablaggio o dove è necessario crearlo in brevissimo tempo. Questo tipo di rete ha tuttavia degli svantaggi: è molto costosa, è poco sicura, è suscettibile all'interferenza elettrica della luce e delle onde radio ed è di solito più lenta delle LAN che utilizzano la cablatura. W.W.W. - World Wide Web. Termine coniato da Tim Berners-Lee (ideatore del linguaggio HTML) nel 1990, indica l'insieme dei server Internet che consentono alle pagine html e ad altri servizi di essere visualizzati attraverso applicazioni client chiamate browser. X X.25 - Il protocollo X.25 è un protocollo di rete standard adottato dal CCITT (Consultative Committee for International Telegraph and Telephone). Opera su rete a “commutazione di circuito”, è utilizzato soprattutto su reti WAN, reti pubbliche telefoniche e Frame Relay. X.D.S.L. - Acronimo generico che si riferisce all'intera famiglia delle tecnologie DSL. Vedi ADSL, HDSL, SDSL e VDSL. 136 Appendice B ACL no access-list 103 ! ! Black list access-list 103 deny ip any host 193.206.xxx.xxx log ! !access-list 103 permit udp any host 192.84.xxx.xxx log !access-list 103 permit tcp any host 192.84.xxx.xxx log ! ! Permesso a tutte le connessioni TCP gia' stabilite ! access-list 103 permit tcp any 193.206.80.0 0.0.7.255 established access-list 103 permit tcp any 192.135.25.0 0.0.0.255 established access-list 103 permit tcp any 192.135.26.0 0.0.0.255 established access-list 103 permit tcp any 192.84.128.0 0.0.3.255 established ! ! Permesso di tutti i nodi ai dns e smtp in ip ! (sarebbe meglio sulle porte bind e smtp) ! access-list 103 permit tcp any host 193.206.84.12 eq 53 log access-list 103 permit udp any host 193.206.84.12 eq 53 log access-list 103 permit tcp any host 193.206.84.12 eq 25 log access-list 103 permit tcp any host 193.206.84.112 eq 53 log access-list 103 permit udp any host 193.206.84.112 eq 53 log access-list 103 permit tcp any host 193.206.84.112 eq 25 log ! ! Permesso di tutti i nodi ai server SSH del Calcolo (tcp 22) ! access-list 103 permit tcp any host 193.206.84.35 eq 22 log access-list 103 permit tcp any host 193.206.84.36 eq 22 log access-list 103 permit tcp any host 192.84.130.106 eq 22 log ! ! Permesso di tutti i nodi ai web server primari ! sulle porte http (tcp 80) e https (udp,tcp 443) ! access-list 103 permit tcp any host 193.206.84.219 eq 80 log access-list 103 permit tcp any host 193.206.84.220 eq 80 log access-list 103 permit tcp any host 193.206.84.198 eq 80 log access-list 103 permit tcp any host 193.206.84.219 eq 443 log access-list 103 permit tcp any host 193.206.84.220 eq 443 log access-list 103 permit tcp any host 193.206.84.198 eq 443 log #access-list 103 permit udp any host 193.206.84.221 eq 443 log access-list 103 permit tcp any host 193.206.84.221 eq 443 log ! ! !Permesso al nodo di Trieste SISSA per accesso al server web della Presidenza INFN ! ! 137 access-list 103 permit tcp host 147.122.xxx.xxx host 193.206.xxx.xxx eq 443 log ! ! ! Permesso di tutti i nodi a web server secondari sulla porta http ! (tcp http-80,https-443,rtsp-554) ! access-list 103 permit tcp any host 193.206.83.14 eq 80 log access-list 103 permit tcp any host 193.206.83.14 eq 8080 log access-list 103 permit tcp any host 193.206.82.4 eq 80 log access-list 103 permit tcp any host 193.206.83.14 eq 554 log access-list 103 permit udp any host 193.206.83.14 eq 554 log access-list 103 permit tcp any host 193.206.83.208 eq 80 log access-list 103 permit tcp any host 193.206.80.159 eq 80 log access-list 103 permit tcp any host 193.206.80.166 eq 80 log access-list 103 permit tcp any host 193.206.85.83 eq 80 log ! ! richiesto da <username> ! access-list 103 permit tcp any host 193.206.xxx.xxx eq <port> log ! ! Permesso di tutti i nodi di cosenza al web server del funzionamento sulla ! porta http (tcp 80) !160.97.xxx.xxx/24 192.167.xxx.xxx/24 ! access-list 103 permit tcp 192.167.xxx.xxx 0.0.0.255 host 193.206.xxx.xxx eq 80 log access-list 103 permit tcp 192.167.xxx.xxx 0.0.0.255 host 193.206.xxx.xxx eq 80 log access-list 103 permit tcp 160.97.xxx.xxx 0.0.0.255 host 193.206.xxx.xxx eq 80 log access-list 103 permit tcp 160.97.xxx.xxx 0.0.0.255 host 193.206.xxx.xxx eq 80 log ! ! !Database esperimento <username> ! access-list 103 permit tcp any host 193.206.xxx.xxx eq 4333 log ! ! !Visibilita' DataBase Kloe 192.135.25.71 ! access-list 103 permit tcp any host 192.135.25.71 eq 10030 access-list 103 permit tcp any host 192.135.25.71 eq 10038 access-list 103 permit tcp any host 192.135.25.71 eq 10040 ! ! Permesso di tutti i nodi verso i server AFS (TCP e UDP range 70007009) ! access-list 103 permit tcp any host 193.206.84.121 range 7000 7009 log access-list 103 permit tcp any host 192.84.130.151 range 7000 7009 log access-list 103 permit tcp any host 193.206.84.122 range 7000 7009 log access-list 103 permit tcp any host 192.84.130.152 range 7000 7009 log 138 access-list 103 permit tcp any host 193.206.84.123 range 7000 7009 log access-list 103 permit tcp any host 192.84.130.153 range 7000 7009 log access-list 103 permit tcp any host 192.135.25.111 range 7000 7009 log access-list 103 permit tcp any host 192.135.25.112 range 7000 7009 log ! ! Permesso di tutti i nodi per le call-back di afs (porta tcp 7001) ! access-list 103 permit tcp any any eq 7001 log ! ! Permesso di tutti gli afsserver (di autenticazione INFN) verso afsserver in ip ! access-list 103 permit udp any host 193.206.84.121 eq 750 log access-list 103 permit udp any host 193.206.84.122 eq 750 log access-list 103 permit udp any host 193.206.84.123 eq 750 log ! ! Permesso di tutti i nodi all' NTPserver sulla porta ntp (udp 123) ! (afs1, afs1-f, afs3, afs3-f) ! access-list 103 permit udp any host 193.206.84.121 eq 123 log access-list 103 permit udp any host 192.84.130.151 eq 123 log access-list 103 permit udp any host 193.206.84.122 eq 123 log access-list 103 permit udp any host 192.84.130.152 eq 123 log access-list 103 permit udp any host 193.206.84.123 eq 123 log access-list 103 permit udp any host 192.84.130.153 eq 123 log ! ! Permesso al tunnel Appletalk (gre/ip) ! access-list 103 permit gre any host 193.206.82.11 log ! ! Permesso del router GARR-B a fare telnet al router lnfgw ! access-list 103 permit tcp host 193.206.xxx.xxx host 193.206.xxx.xxx eq 23 log ! ! Permesso di tutti i nodi a dirpers sulle porte ftp (tcp 20, 21) ! access-list 103 permit tcp any host 193.206.xxx.xxx eq 20 log access-list 103 permit tcp any host 193.206.xxx.xxx eq 21 log ! ! Permesso di tutti i nodi a ragsac sulle porte ftp e telnet (tcp 20, 21, 23) ! access-list 103 permit tcp any host 193.206.xxx.xxx eq 20 log access-list 103 permit tcp any host 193.206.xxx.xxx eq 21 log access-list 103 permit tcp any host 193.206.xxx.xxx eq 23 log ! ! Permesso di tutti i nodi a patsac sulle porte ftp (tcp 20, 21) ! access-list 103 permit tcp any host 193.206.xxx.xxx eq 20 log access-list 103 permit tcp any host 193.206.xxx.xxx eq 21 log ! ! Permesso a tutti i tunnel su IP ! 139 access-list 103 permit esp any 193.206.80.0 0.0.7.255 log access-list 103 permit esp any 192.84.128.0 0.0.3.255 log ! ! Permesso del server NT di SLAC a tutti i nodi dei LNF (protocollo gre/ip) ! access-list 103 permit gre host 134.79.xxx.xxx 193.206.80.0 0.0.7.255 log access-list 103 permit gre host 134.79.xxx.xxx 193.206.80.0 0.0.7.255 log ! ! Permesso di tutti i nodi al server di dominio W2k dei LNF (protocollo gre/ip) e pptp ! access-list 103 permit gre any host 193.206.xxx.xxx log access-list 103 permit tcp any host 193.206.xxx.xxx eq 1723 log ! ! Divieto a tutto il resto sotto la porta 1024 ! access-list 103 deny tcp any any log ! ! Divieto a tutti i nodi verso le porte alte UDP “pericolose”: ! NFS (udp e tcp porta 2049), ! MySQL (tcp e udp porta 3306), ! fontsrv (udp e tcp porte 7000 e 7100) ! webmin (udp porta 10000) ! access-list 103 deny udp any any eq 2049 log access-list 103 deny udp any any eq 3306 log access-list 103 deny udp any host 193.206.84.107 eq 7000 log access-list 103 deny udp any any eq 7100 log access-list 103 deny udp any any eq 10000 log ! ! Permesso di tutti i nodi verso le porte alte udp (>1024) ! access-list 103 permit udp any any gt 1024 access-list 103 deny udp any any ! ! permesso di tutti i nodi al ping ! access-list 103 permit icmp any any log ! ! Divieto a tutto il resto ! access-list 103 deny ip any any log ! !=================================================================== =========== ! ! Access List 104 per il TCP-Intercept ! no access-list 104 ! ! Permesso di tutti i nodi ai dns e smtp in ip ! (sarebbe meglio sulle porte bind e smtp) ! 140 access-list 104 permit tcp any host 193.206.84.12 eq 53 log access-list 104 permit tcp any host 193.206.84.12 eq 25 log access-list 104 permit tcp any host 193.206.84.112 eq 53 log access-list 104 permit tcp any host 193.206.84.112 eq 25 log ! ! Permesso di tutti i nodi ai server SSH del Calcolo (tcp 22) ! access-list 104 permit tcp any host 193.206.84.35 eq 22 log access-list 104 permit tcp any host 193.206.84.36 eq 22 log access-list 104 permit tcp any host 192.84.130.106 eq 22 log ! ! Permesso di tutti i nodi ai web server primari ! sulle porte http (tcp 80) e https (udp,tcp 443) ! access-list 104 permit tcp any host 193.206.84.219 eq 80 log access-list 104 permit tcp any host 193.206.84.220 eq 80 log access-list 104 permit tcp any host 193.206.84.198 eq 80 log access-list 104 permit tcp any host 193.206.84.219 eq 443 log access-list 104 permit tcp any host 193.206.84.220 eq 443 log access-list 104 permit tcp any host 193.206.84.198 eq 443 log #access-list 104 permit udp any host 193.206.84.221 eq 443 log access-list 104 permit tcp any host 193.206.84.221 eq 443 log ! ! Permesso di tutti i nodi a web server secondari sulla porta http ! (tcp http-80,https-443,rtsp-554) ! access-list 104 permit tcp any host 193.206.83.14 eq 80 log access-list 104 permit tcp any host 193.206.83.14 eq 8080 log access-list 104 permit tcp any host 193.206.82.4 eq 80 log access-list 104 permit tcp any host 193.206.83.14 eq 554 log access-list 104 permit tcp any host 193.206.83.208 eq 80 log access-list 104 permit tcp any host 193.206.80.159 eq 80 log access-list 104 permit tcp any host 193.206.80.166 eq 80 log access-list 104 permit tcp any host 193.206.85.83 eq 80 log ! ! Permesso di tutti i nodi di cosenza al web server del funzionamento sulla ! porta http (tcp 80) !160.97.xxx.xxx/24 192.167.xxx.xxx/24 ! access-list 104 permit tcp 192.167.201.0 0.0.0.255 host 193.206.xxx.xxx eq 80 log access-list 104 permit tcp 192.167.201.0 0.0.0.255 host 193.206.xxx.xxx eq 80 log access-list 104 permit tcp 160.97.xxx.xxx 0.0.0.255 host 193.206.xxx.xxx eq 80 log access-list 104 permit tcp 160.97.xxx.xxx 0.0.0.255 host 193.206.xxx.xxx eq 80 log ! ! Permesso di tutti i nodi verso i server AFS (TCP e UDP range 70007009) ! access-list 104 permit tcp any host 193.206.84.121 range 7000 7009 log access-list 104 permit tcp any host 192.84.130.151 range 7000 7009 log access-list 104 permit tcp any host 193.206.84.122 range 7000 7009 log 141 access-list 104 permit tcp log access-list 104 permit tcp log access-list 104 permit tcp log access-list 104 permit tcp log access-list 104 permit tcp log ! ! Permesso di tutti i nodi ! access-list 104 permit tcp ! ! ! ! Permesso di tutti i nodi ! access-list 104 permit tcp access-list 104 permit tcp ! ! Permesso di tutti i nodi 20, 21, 23) ! access-list 104 permit tcp access-list 104 permit tcp access-list 104 permit tcp ! ! Permesso di tutti i nodi ! access-list 104 permit tcp access-list 104 permit tcp ! ! exit ! any host 192.84.130.152 range 7000 7009 any host 193.206.84.123 range 7000 7009 any host 192.84.130.153 range 7000 7009 any host 192.135.25.111 range 7000 7009 any host 192.135.25.112 range 7000 7009 per le call-back di afs (porta tcp 7001) any any eq 7001 log a dirpers sulle porte ftp (tcp 20, 21) any host 193.206.xxx.xxx eq 20 log any host 193.206.xxx.xxx eq 21 log a ragsac sulle porte ftp e telnet (tcp any host 193.206.xxx.xxx eq 20 log any host 193.206.xxx.xxx eq 21 log any host 193.206.xxx.xxx eq 23 log a patsac sulle porte ftp (tcp 20, 21) any host 193.206.xxx.xxx eq 20 log any host 193.206.xxx.xxx eq 21 log 142 Appendice C Esempio di pacchetto cifrato Flags: 0x00 Status: 0x00 Packet Length:1459 Timestamp: 19:03:06.368704 03/04/2003 Ethernet Header Destination: 00:04:76:24:71:AF [0-5] Source: 00:05:DC:08:8C:0A [6-11] Protocol Type: 0x0800 IP [12-13] IP Header - Internet Protocol Datagram Version: 4 [14 Mask 0xF0] Header Length: 5 (20 bytes) [14 Mask 0x0F] Type of Service: %00000000 [15] 000. ...0 .... .... .... .... .... 0... .0.. ..0. Precedence: Routine, Normal Delay, Normal Throughput, Normal Reliability ECT bit - transport protocol will ignore the CE bit Total Length: Identifier: Fragmentation Flags: .... ...0 CE bit - no congestion 1441 1051 %000 [16-17] [18-19] [20 Mask 0xE0] 0.. Reserved .0. May Fragment ..0 Last Fragment 0 (0 bytes) [20-21 Mask 0x1FFF] Fragment Offset: Time To Live: 127 [22] Protocol: 47 GRE - General Routing Encapsulation [23] Header Checksum: 0x6120 [24-25] Source IP Address: 193.206.84.146 w2ksrv.lnf.infn.it [26-29] Dest. IP Address: 172.16.14.130 [30-33] No IP Options GRE - General Routing Encapsulation IP Data Area: 0....}.....d..9. 30 81 88 0B 05 7D C0 00 00 08 B4 64 00 06 39 E7 ..Ud[H..X...-..s FD 94 55 64 5B 48 B1 FB 58 15 D5 D4 2D B0 F1 73 [email protected]\)...!CL 0E A8 74 02 40 77 0A 4B 5C 29 BE FD B3 21 43 4C {...0.d.Y.(....w 7B AA 82 84 30 E6 64 D9 59 9D 28 EA C0 B8 BF 77 x.L^...m.m..p... 78 9C 4C 5E BC A9 A5 6D F8 6D 93 1B 70 14 99 1D ......c......... 93 88 07 DE 87 ED 63 1B C4 9E 14 CB 92 99 D0 AE ..;&...*y."].x.o DF 92 3B 26 90 A4 D0 2A 79 DB 22 5D 03 78 13 6F M.'AaT;__.h&.G.C 4D DD 27 41 61 54 3B 5F 5F 16 68 26 F1 47 8E 43 ..q..Y].R......! AA 17 71 E7 F0 59 5D EA 52 B5 84 BB F4 B4 89 21 .k....?qf...#... 1C 6B 1D C6 1C FA 3F 71 66 84 C9 BB 23 F8 C9 F4 )!':.#.g.W...B.m 29 21 27 3A 97 23 85 67 00 57 C3 98 EA 42 B9 6D 2.....d0.j...*.I 32 B3 DA 00 B3 82 64 30 BA 6A B9 F9 CC 2A 9A 49 ..w..1....5u-... 0A EE 77 AF CE 31 BA FC 94 C0 35 75 2D E6 89 82 ...=.j$.!..R...g AF F2 B7 3D D2 6A 24 09 21 B4 99 52 AC 84 BD 67 ./D\.B$.....aE.. E9 2F 44 5C B2 42 24 10 CD 11 11 A8 61 45 BA EE ..._....Z..E.T.. FD C8 CA 5F 94 E8 95 CE 5A 16 AE 45 A1 54 D9 9B ..m....N...(.... E4 A2 6D CA E7 F3 8E 4E FA C6 CA 28 F2 91 A2 FA ddJ ............ 64 64 4A 20 DF A3 CD 9F C1 14 1B 15 A5 97 C6 FF ./z.\w.....UD{S/ F6 2F 7A F4 5C 77 1D CA 0D 92 B8 55 44 7B 53 2F ..."Y...Y].',#.+ 96 1A F9 22 59 B5 18 96 59 5D 97 27 2C 23 8E 2B .....Xe..I.l..j. EA CB AF DF C1 58 65 B2 14 49 D6 6C B6 E8 6A ED '......lW.6%..c. 27 DF E0 98 9B 15 E3 6C 57 9E 36 25 C8 8B 63 AA .i9..(..F....f.. 82 69 39 ED A0 28 E8 87 46 F6 F8 EA B1 66 B5 BB ..Z/...MR....|.. E0 00 5A 2F E4 B3 B9 4D 52 8D 90 CB EA 7C D6 C9 [34-49] [50-65] [66-81] [82-97] [98-113] [114-129] [130-145] [146-161] [162-177] [178-193] [194-209] [210-225] [226-241] [242-257] [258-273] [274-289] [290-305] [306-321] [322-337] [338-353] [354-369] [370-385] [386-401] [402-417] 143 :{1...S.._.6.eB. ..i.4TJ......;~C Q......PC....... 0..........!.... .x2|?..!...%...d -....\..P.{;...0 .M.="..b...B.$Kd RO.........-.... ..+.5>\....W\..! ..r....).0....G? Fp..4R..F.:.>.#" ...@.>. .t..I..G x!.4...&....t .. .1y..mt...A...ef <....b....7e..>. ..`R.B..V=....w. =........._.5... ...s..#.U.'...+l -.#.s..(..}..".. Z}.:..P8...._.?. ...........d.$.V X..&},.#v3.W.=.. .3......9K.....L ..:...Up.../`lmP ..#.........Q&.. R...T,...Il....s <..s...v..U<1... %R/.....j.`k.V|. hzK~..M/F4yiZ... ...qnU.8z:...... k..\Q..H..P..qj8 ?t.\......p.H... .Q.6.......Y.... .......6x...`$.. .O........t..... ...u....|.l{..D. v=.r....DC}..(.. .{U~...7..U...`f .e...Z@.=....... ..$.n'.2.]...... ;ii..\.z.0.. h.. ..#..a.F:.i%...w .h{.....~.g..Eoz jl.i......n...o. 3X....sE..d[..4j #.K6....u...F... ...Yl.......D.g. ...[B:..<.@ f.R.2...V.y.A....f. L....`a3`...^2f. ....w+-......V.. ..]....([email protected]. .+....c.r...Ftc^ I.6.0..6....:..+ S.1.e75.p.5.U..f .S.k..*jC.4..u.. ..D,.........&.. .w.......(Sq..-. f^..J...Y....... .%.M..J.......8. .n<...x......... ...,.8.TI9.z..., ......k....V.*.. ..1.......Q.!... 3A A1 51 30 0C 2D 90 52 04 FD 46 A2 78 C8 3C 01 3D AA 2D 5A 87 58 F9 1D AC 52 3C 25 68 86 6B 3F A6 F4 BB 1F 76 B0 AC DC 3B 82 C9 6A 33 23 0C F5 14 4C F2 AE 13 49 53 DA FE E6 66 B2 B2 E1 09 07 7B DC A3 80 78 0E 4D 4F 0F 89 70 8F 21 31 D1 B2 D4 DD C7 7D B6 A4 33 01 84 AA 8C 52 7A 94 B1 74 51 84 4F A2 3D 7B 65 1C 69 DC 68 6C 58 ED BA 90 32 D1 CD C4 2B 91 AB 53 E6 77 5E 25 6E C8 C8 A3 31 69 AA 8B 32 B8 EF A1 2B 72 15 E7 C4 79 18 60 B1 C9 23 CF C2 C7 9A 3A 23 FE B3 2F 4B C2 C0 C4 F7 17 94 BA 93 55 B6 24 69 23 7B 8E 14 4B 0C 1F DF AF 8F 5D CC 36 31 C3 44 FD F9 9B 3C C5 9F 31 D0 B0 AF A0 7C 0A 3D C6 AA BC 16 40 34 B0 D3 52 B5 73 C9 3A 03 26 19 1F EB A1 73 B9 7E 71 5C 5C 36 CB 83 75 72 7E 9C A6 9E 8D E8 69 85 36 59 5B DD 12 03 B6 9F B7 B8 6B 2C CF B2 4D 9E 2C F0 A7 11 34 BA 1E 3F D6 22 0B 35 EF 34 F6 E6 11 92 EB AF D1 73 87 97 7D E4 FB D3 54 88 BE F6 6E 51 92 07 CA 86 1A 11 CC BF 6E E4 00 93 CC 9E F6 6C 42 C4 1D 77 FF AC 30 65 B9 B1 1B 4A 1F FD C8 9D A4 87 54 89 A4 9E 5C EA 91 3E C1 52 3E D6 6D 62 42 F0 E7 A9 86 F1 2C DC CD 8E 2C FD C0 C0 55 D5 E9 13 D0 8A 1A B8 05 5A 27 5C 61 CC DD 0C A6 9A 3A 56 60 2B 0E 9B 1C 37 07 F4 DD 92 FE 0B 38 BB 87 53 4A CB A8 9C 0E CE 82 5C CA CC DB A9 74 0B CB 19 23 90 50 19 F0 C7 55 18 CA B0 16 4D CF DC AD F1 E6 14 9F 80 9A 40 95 8C D3 F6 E8 73 C6 F2 F6 DD 61 2D E0 63 D7 35 2A 8D 8D D0 4A 78 9E 6B CF ED D3 50 9D 21 EF 62 F0 13 29 FB 20 26 FD C6 9E 90 E6 28 38 08 23 FF 70 C2 05 76 E5 2F 38 48 FF F0 36 09 C6 1A 37 CC 32 7A 46 FB DB 45 AC 11 E4 79 33 C4 28 05 36 FE 6A 92 19 B6 9E 81 54 A0 DC BD 10 43 0B C3 50 AF A1 02 05 46 DB FA A0 E2 56 A8 55 D6 8D F1 76 39 FB DE DE BF 6A 46 7A 81 B3 FB 78 CC 7C 44 C7 3D DC FE 3A 7E 99 C8 75 E0 3C D8 60 0D 52 72 AF 70 43 C7 F2 59 DE 81 49 E7 EA 5F AD 0B C5 91 14 E3 0A B1 30 EB 74 8C 9E E1 3D CE DF 16 84 85 33 4B DF 0B 49 E9 A9 34 3A A7 DE F1 10 F8 98 43 C6 AE 5D 30 AF 00 04 F0 10 8E CF 41 A2 A6 B3 D2 FC DC F0 C5 28 E0 0A D4 39 B6 F0 8A 0D D5 08 B4 7B 80 8A BC 03 3A 06 01 41 37 16 5F 27 7D 8B BE B8 EF 83 E5 6C 55 60 79 A2 50 70 C2 0B 74 6C 7D 55 0D B4 B1 69 67 6E 64 8F EA 40 07 DA E4 A7 E2 12 35 34 B6 53 E3 D8 F9 0C C9 51 36 FB 8D 21 25 3B 42 2D 57 95 E1 D0 92 CB 65 D4 07 B9 BC 03 64 57 ED 2F D8 9D 3C 6B 69 0F C3 A8 59 16 E0 7B 95 A9 9A B8 88 25 A9 16 5B D4 0C 20 A4 B2 E3 40 EE E7 CA AF C0 71 F3 EC 90 7A 56 F2 F6 AA EF 1E 8F FC 95 B3 5C DA 3E 49 74 F3 EE BD 35 13 0D 5F 14 F3 90 60 51 00 31 DC 5A B9 13 48 DD 60 A0 09 0F F8 B7 BD 20 85 FC CE 8C 46 44 66 E2 5E 8B 05 46 3A 55 C5 DF 84 E5 80 D7 D2 1D 21 65 3B AC 13 EF 1C 24 8B FD 81 9E 0C 20 E7 FE F7 EA E5 22 D3 24 3D A2 6C 26 06 D1 56 E2 19 71 A2 BE 24 B1 CC 28 1A BE 1B 68 DB 45 C8 16 84 89 8B 88 32 56 DF 74 A9 EF 75 26 D6 0F 01 CB 9A 2A 15 42 7E E1 F8 12 EC 4B 06 B7 47 23 97 84 65 3E 77 E6 2B 19 3F E5 A8 84 6D 92 94 F3 7C D3 BF 6A D7 94 06 AB 44 C7 60 EE A7 17 BB 6F 6F 34 E7 67 52 66 66 D9 44 63 8E A0 10 82 2D 9A 38 15 9B CC A1 C6 43 E1 DA 64 30 64 AD 21 3F 22 47 09 66 13 B1 CF 6C 9C A4 56 0D 4C 50 E5 73 18 89 C2 C9 38 E9 0E 0B EF 9C D6 66 05 BC D7 77 7A DA 6A 1A B5 2D DE A5 00 EA 5E 2B 66 D7 F1 E3 E5 BC F4 2C 96 F4 [418-433] [434-449] [450-465] [466-481] [482-497] [498-513] [514-529] [530-545] [546-561] [562-577] [578-593] [594-609] [610-625] [626-641] [642-657] [658-673] [674-689] [690-705] [706-721] [722-737] [738-753] [754-769] [770-785] [786-801] [802-817] [818-833] [834-849] [850-865] [866-881] [882-897] [898-913] [914-929] [930-945] [946-961] [962-977] [978-993] [994-1009] [1010-1025] [1026-1041] [1042-1057] [1058-1073] [1074-1089] [1090-1105] [1106-1121] [1122-1137] [1138-1153] [1154-1169] [1170-1185] [1186-1201] [1202-1217] [1218-1233] [1234-1249] [1250-1265] [1266-1281] [1282-1297] [1298-1313] [1314-1329] [1330-1345] [1346-1361] [1362-1377] [1378-1393] [1394-1409] [1410-1425] [1426-1441] 144 .,u.G.o`...I. C4 2C 75 E9 47 BB 6F 60 EF 8D 85 49 FE FCS - Frame Check Sequence FCS (Calculated): 0x33220D1B [1442-1454] 145 Bibliografia http://www.linuxjournal.com/article.php?sid=4685 http://www.uli.it/spam.html http://www.dada.net/abuse.shtml Tanenbaum – Reti di computer J. Scambray, S. McClure, G. Kurtz – Hacking exposed (second edition)