Basare la sicurezza della rete su di un S.O. gratuito.
Il firewall Linux

Dott. Bruni Emiliano
Trascrizione dell' intervento al Linux Day 2001



Questo testo viene rilasciato sotto la GNU FDL (Free Documentation License).
Tutte le loro sezioni sono da considerare non modificabili.


Altre risorse disponibili: Home page conferenza - Sommario - Audio - Filmato

Il concetto di sicurezza di rete.

Mi presento, mi chiamo Bruni Emiliano, sono un amministratore di rete per un Internet Services Provider di Pescara, sono inoltre uno sviluppatore in ambiente Linux e Microsoft. Sono inoltre "Cisco Certificated Designe Associate". Cisco è l'azienda leader nel settore internetworking i cui apparati instradano oltre il 90% del traffico di Internet.

Volevo parlare, in questa conferenza, della sicurezza nell'ambito di reti aziendali o singoli personal computer in collegamento con la rete Internet. Voglio farvi vedere come fa un cracker ad entrare nel volstro computer, cosa fa una volta entrato e, alla fine, darò una dimostrazione pratica di come si entra all'interno di una macchina Windows 2000 con installato IIS5. Mostrerò infine la soluzione Linux che serve per proteggere la vostra rete interna o il vostro singolo computer.

Cosa si intende per sicurezza nell'ambito di una rete di calcolatori? Si intende quella legittima aspettativa che  ha il proprietario del computer o della rete di calcolatori di usufruire dei servizi che il computer mette a disposizione, i file i documenti e tutte le informazioni offre, amministrando l'accesso a tali dati assegnando la loro fruizione solo a persone autorizzate. Nel momento in cui hanno accesso a documenti e servizi persone non autorizzate si ha quello che si chiama "buco di sicurezza" ossia un problema di sicurezza della vostra rete o del vostro calcolatore.

Ovviamente fintanto l'argomento verte su un singolo computer scollegato da tutto il resto del mondo va da sè che non c'è nessun problema di sicurezza a meno che un ladro non entri in casa vostra per rubarvi il computer. In questo caso, il sistema operativo nulla può. Anche nel caso di una piccola rete aziendale non collegata ad Internet non c' è relativamente alcun problema. Gli utenti della rete sono pochi e le possibilità di compiere azioni sono ristrette e quindi anche in questo caso la possibilità di avere accessi non autorizzati a documenti è limitata e, volendo, l'amministratore ha pochi problemi a risalire al "colpevole".

Il problema nasce nel momento in cui il vostro calcolatore, la vostra rete, vengono ad essere collegati al "caos" che c'è su Internet e a tutte le persone che in questo momento si trovano connesse ad internet.

Potrebbe accadere, soprattutto se il vostro collegamento è attivo per molto tempo o, al limite, ventiquatt'ore su ventiquattro, che qualcuno si accorga di voi. Fintanto che non date servizi all'esterno e siete solamente fruitori di servizi di rete può anche accadere che la vostra macchina abbia dei buchi di sistema ma nessuno si accorga di voi e quindi venite lasciati in pace.

Ma se date dei servizi importanti, la gente vi conosce, vi viene a trovare ci può essere qualche malintenzionato che può cercare di entrare all'interno della vostra rete per fare datti veri e propri o solo per farsi bravo di fronte agli altri per il fatto di aver trovato sul vostro sistema un buco di sicurezza.

Il tallone di Achille dei sistemi informatici.

La prima cosa che si può pensare è che, avendo una macchina di tipo Windows su cui neanche il leggittimo proprietario sa come entrare da un altro calcolatore si è sicuri. In realtà il problema non è tanto nel sistema operativo ma risiede nel fatto che sulle vostre macchine, di qualsiasi sistema operativo si parli, girano dei servizi, dei software che possono avere dei problemi.

Ora fintanto questo software agisce solo sul vostro computer, non è un software di rete, allora anche se questo software ha un problema non è una cosa grave almeno nell'ambito della sicurezza. Magari ogni tanto il programma vi muove, va in crash, finestra blu. Il problema nasce quando ciò accade in un software che dialoga con la rete.

Cosa significa: "dialoga con la rete"? Considerate, come analogia, casa vostra. Essa ha una porta di ingresso e di uscita. Il vostro calcolatore è come casa vostra solo che invece di avere un'unica porta ha più porte di accesso.

La maggior parte di queste porte sono chiuse e sono aperte solo quelle porte dove c'è dietro una persona, nel caso reale, un software, nel caso informatico, che è in attesa che qualcuno dall'esterno, dalla rete, si colleghi a lui.

Ma perché ci devo essere questi software attivi sul mio computer? Perché alcuni di questi software sono indispensabili per il corretto funzionamento di alcune attività. Per esempio, in Windows, avete la possibilità, se avete una rete locale, di vedere, tramite "risorse del computer", i computer presenti sulla rete e accedere alle risorse remote, per esempio, alle cartelle remote. Questa cosa funziona perché sui vari computer c'è un software in attesa su di una porta in attesa che qualcuno gli parli.

Ora questo software può avere un problema di sicurezza se la persona, l'essere umano che ha fatto il software non ha previsto tutti i possibili modi con cui, dall'esterno, si possono passare informazioni al software e soprattutto non ha gestito correttamente tutti gli eventuali errori inerenti a tale processo di comunicazione.

Faccio un esempio. Sviluppo un software che calcola il prodotto di due numeri. Quindi il programma aspetta un primo valore, un secondo valore e mi ritorna il risultato. Se questo software lo pubblichiamo su Internet nel senso che lo faccio diventare un servizio fruibile da Internet e chiunque può passargli due numeri e ricevere come risultato il loro prodotto allora questo può essere un punto in cui un cracker può fare breccia per accedere al mio calcolatore.

Cosa succede per esempio se io non gestisco un controllo sul fatto che ciò che viene inserito siano effettivamente dei numeri. Se invece di inserire dei numeri viene inserito del testo che succede?

Se il software fosse un programma che gira in locale esso andrebbe in crash; a livello di rete è invece possibile che questo problema di cui non ho tenuto conto possa aprire una breccia all'interno del mio computer. Quindi è possibile che questo problema del software possa fare entrare un malintenzionato nel mio computer o nella mia rete aziendale.

Il vantaggio dell'OpenSource.

Ovviamente, uno dei vantaggi dell'OpenSource è di avere a disposizione il sorgente del prodotto ed è quindi possibile risolvere il problema facilmente. Microsoft quando sente parlare di OpenSource muove l'accusa che avere accesso al codice sorgente facilita la vita dei crackers in quanto essi non si trovano davanti una scatola chiusa dove devono trovare, a tentoni, eventuali errori ma, avendo il sorgente a disposizione, possono trovare un errore e usarlo per tentare di fare breccia sul computer dove il software è installato.

Ma, in realtà, le cose non stanno proprio così in quanto non è solo il cracker ad avere accesso al sorgente ma è tutta la comunità di Internet quindi quello che ha trovato il cracker lo può trovare anche uno sviluppatore serio che mi contatta e mi dice : "Guarda Emiliano che qui hai sbagliato". Ma se anche nessun'altro se ne accorge e se ne accorge solo il cracker, beh tempo 12-24 ore e state sicuri che sulla rete si possono trovare già due o tre patch, soluzioni al problema perché, appunto, c'è il sorgente.

Se invece si tratta di un software chiuso, come quello di Microsoft, allora devo aspettare quei due o tre mesi affinche Microsoft rilasci i famosi "service packs" di 20 e oltre MByte.

Linux Vs. Windows: sicurezza a confronto.

Adesso non voglio dilungarmi sul fatto se Linux sia più o meno sicuro di una macchina Windows. Dico semplicemene che il fatto stesso che Linux sia OpenSource lo rende più sicuro.

In teoria potrebbe anche essere vero che una macchina Linux sia più attaccabile di una macchina Windows ma questo è dovuto solo al fatto che la macchina Linux offre molti più servizi ad Internet rispetto ad un calcolatore con sistema operativo Windows su cui è  solo un server Web, un DNS, un servizio FTP e uno SMTP. Nelle installazioni standard sono questi, più o meno, i servizi attivabili mentre su una macchina Linux ce ne sono tantissimi di servizi oltre a questi.

Quindi, in teoria, sarebbe anche vero questo se non fosse che i programmatori Microsoft, pressati da esigenze di carattere finanziario dettate dal dover rilasciare al più presto possibile l'ultima versione del Windows, tendono a non essere molto precisi nella scrittura del codice quindi, in realtà, i prodotti Microsoft, presentando buchi a volte molto gravi e in quantità abnorme, sono delle macchine molto più attaccabili di quanto lo siano quelle Linux.

Introduzione alla suite Iptables.

Quello che volevo farvi vedere ora è la soluzione Linux per la protezione della vostra rete. Quando parlo di rete non cito i sistemi operativi in essa presenti in quanto questa soluzione non dipende da essi.ù

Usualmente nella vostra rete aziendale esiste un punto su cui vi è un'uscita verso Internet. Quello che si fa, di solito, per proteggere una rete è mettere un'apparecchiatura tra la vostra rete e Internet. Un'apparecchiatura che possa filtrare i pacchetti che entrano e quelli che escono e che ha quindi la possibilità di bloccare il cracker a monte prima che esso possa entrare nella nostra rete.

Questa apparecchiatura si chiama firewall e la soluzione firewall sotto Linux, contenuta all'interno del kernel versione 2.4, si chiama iptables. Esso non è altro che un software che gira su di un calcolatore anche di tipo non recente tipo Intel 80486 con, per esempio, 16 Mbyte di RAM. Questa configurazione è possibile in quanto il firewall non necessita di interfaccia grafica. 

Il firewall ha usualmente due schede di rete, una che viene collegata verso l'esterno e una collegata con la nostra rete interna ed è quello che abbiamo creato con questi calcolatori che vedete qui sul palco. 

Il problema della sicurezza nella rete e il vantaggio di munirsi di un firewall.

Una rete aziendale può avere, per esempio, un server web canonico in quanto, l'azienda ha deciso di farsi pubblicità tramite il web. Dobbiamo quindi tenere conto anche di questo fatto. Chi cerca di accedere a questo sito web deve avere la possibilità di raggiungerlo quindi si può anche blindare totalmente la rete aziendale ma si deve comunque lasciare aperto l'accesso al server web.

Quindi, ovviamente, il calcolatore aziendale ove c'è il server web va protetto a livello software localmente; quindi installare le ultime versioni di software, tutte le ultime patch e, preferibilmente, scegliere una macchiana Linux.

Il firewall non può quindi proteggere il server web canonico perché quel servizio deve essere accessibile dall'esterno quindi quella macchina è, tra virgolette, sguarnita e aperta a possibili attacchi esterni. E' comunque sguarnita solo per quanto riguarda il servizio web perché gli altri servizi saranno disattivati lato firewall.

Comunque, per quanto detto, su questa macchina ho il solo server web sguarnito e lo proteggerò localmente mettendo tutti gli aggiornamenti più recenti.

Il problema sono tutte le altre macchine presenti nella rete aziendale per cui non posso andare macchina per macchina a controllare cosa vi è installato ora e nel futuro. Può anche essere che all'interno dell'azienda vi sia un programmatore che fa sviluppo di pagine web e che si sia caricato localmente un suo server web. Quindi oltre ad esserci un server web canonico che ho già protetto vi è ora un altro server web nella rete aziendale.

Ora il problema è che io, amministratore della rete, controllo il server web aziendale canonico e so che l'ho reso sicuro ma non posso stare dietro al tizio che si è installato per proprio conto un server web e non ha installato l'ultima patch disponibile. Come posso fare a risolvere questa cosa? La risolvo perché centralmente sul firewall blocco l'accesso dall'esterno a tutta la mia rete.

Quindi dall'esterno la mia rete è come se non esistesse. L'unica risorsa attiva e visibile dall'esterno è il server web canonico. Quindi il programmatore può anche avere il server web bacato tanto dall'esterno questo server non esiste, non è quindi raggiungibile ed attaccabile.

Una piccola rete locale per la simulazione di un attacco. 

Qui abbiamo simulato una rete aziendale e un cracker che, collegato ad Internet, tenterà di entrare nella nostra rete aziendale. 

Su questo PC, che vi ricordo è uno dei calcolatori interni ho installato, per comodità, un software che si chiama VNC e che serve per vedere i desktop degli altri computer di questa simulazione. 

Questa che vedete qui è invece una macchina Windows 2000 professional, che poi altri non è se non questo portatile, che farà le vedi della macchina su cui il programmatore ha installato il suo server web. 

Questa è una installazione standard di Windows 2000 professional con attivato l'IIS5 e con installato il service pack 1. Questa sarà la macchina su cui il cracker tenterà di entrare.

[INSERIRE IMG DESKTOP DEL FIREWALL]

Dopo di che ho questo che è il desktop di Linux del firewall che, per ora, non ha la funzione di firewall attivata ma fa solo le vedi di un router, di uno scambiatore di pacchetti IP tra la rete interna e quella su cui si trova il cracker.

La terza macchina è ovviamente il calcolatore del cracker che ho scelto essere una macchina Linux ma poteva essere benissimo una macchina windows.

Il problema di sicurezza in Internet Information Server 5.

Allora, come fa il cracker ad entrare sulla macchina dove c'è IIS installato? Entrare significa poter eseguire comandi sulla macchina remota. Vediamo quindi uno dei buchi di IIS 5 e cosa fa, che poteri assume un cracker quando riesce a bucare una delle macchine di una rete aziendale.

Come prima cosa vi faccio vedere il problema che questa macchina Win2000 con IIS ha. Il problema è questo: richiamando una pagina web con un indirizzo strano ma pur sempre leggittimo è il server web del portatile ha risposto

Questa è la versione del windows installato sul portatile. E' il risultato del comando DOS "ver" (versione) eseguito sul portatile. Infatti, se vado sul portatile e lancio un prompt di MS-DOS ed eseguo il comando "ver" il risultato è sostanzialmente identico.

Sono quindi riuscito dall'esterno, da Internet, a eseguire un comando remoto sul portatile. Ma questo è un comando. Voglio fare il dir

questo è il dir cioè l'elenco dei file presenti sulla cartella E:\Inetpub\scripts

Pensate, potrei dare  il comando un format c: e cancellare tutto il contenuto dell' hard-disk del mio portatile!!!

Scusa, ho capito cosa hai fatto, però non ci hai ancora spiegato come lo hai fatto.

Infatti, per ora vi ho fatto vedere soltanto qual'è il problema. Tra un po' cercherò di spiegarvi anche perché esiste questo problema.

Emiliano tu ci hai fatto vedere che riesci ad eseguire dei comandi da remoto sul portatile ma ce lo stai facendo vedere dalla rete interna.

Si, è vero, il browser che sto utilizzando per farvi vedere il problema appartiene alla rete interna, ma è solo una coincidenza dovuta al fatto che la macchina da cui controllo con il VNC le altre si trova sulla rete interna. Quando passerò sulla macchina del cracker, che si trova su Internet, vi farò vedere che anche in quel caso il problema persiste. Lì, per comodità, invece che dover digitare ogni volta questo indirizzo strano per poter eseguire i comandi remoti, mi sono fatto uno script nel linguaggio Perl che si prende carico di creare l'indirizzo esatto lasciando a me il compito di inserire soltanto il comando.

Vediamo, per capire qual'è il problema di IIS che ho sfruttato, di guardare un po' meglio l'indirizzo web che ho digitato per eseguire i comandi remoti.

Cosa è successo. Voi sapete che quando scrivete www.qualcosa, quella cosa che scrivete deve sottostare a certe regole sintattiche. Se io dovessi mettere nell'url uno spazio, per esempio, questo è errato in quanto negli indirizzi Internet non ci possono essere spazi. Gli spazi devo essere codificati con un'altra sintassi che si chiama esadecimale formata da la stringa % e due numeri in esadecimale che identificano il carattere che si cerca di immettere. Per esempio lo spazio si indica con la stringa %20. Allora quando un indirizzo che contiene questa codifica arriva sul server web, esso deve riconvertire questa stringa in un formato comprensibile ossia mettere, per esempio, gli spazi dove ce la stringa %20.

A questo livello il server IIS esegue anche un controllo di sicurezza che consiste nel controllare che il percorso che è stato richiesto sia ancora contenuto nel sottoinsieme delle directory accessibili via web. Il server web mostra, all'esterno, un sottoinsieme dell'hard-disk del server e solo se vengono effettuate richieste di acquisizione di file contenuti all'interno di questo sottoinsieme il server web vi deve consentire l'accesso. 

Se viene richiesto un documento non appartenente a questo sottoinsieme, per esempio, voi sapete che, nello spostamento da una directory all'altra la sintassi ".." indica la directory precedente, allora se voi mettete nell'indirizzo internet "/../" il server web capisce che l'elemento richiesto si trova nella cartella precedente. 

Quindi digitando come indirizzo Internet  http://www.pippo.it/ ottengo la home page del sito pippo.it contenuta nella prima directory accessibile via web. Da quel punto, aggiungendo ulteriori informazioni del tipo http://www.pippo.it/pluto/paperino/ entro in successive sottocartelle del sito web.

Se però io richiedessi la pagina http://www.pippo.it/../ e non ci fosse il controllo di sicurezza sopra accennato potremmo avere accesso alla cartella che contiene la prima cartella accessibile via web, quindi avrei accesso ad una cartella che non appartiene al sottoinsieme delle cartelle accessibili via web e mi troverei quindi in una zona in cui l'amministratore della rete crede che io non abbia accesso.

IIS ha questo controllo di errore e richiedere quell'indirizzo sopra non fa altro che visualizzare ancora il server web. E' come se sul vostro hard-disk, trovandovi in C:\ digitate il comando cd..; continuate a rimanere in C:\.

Ma ha un comportamento strano, arriva l'url, lui lo decodifica interamente mettendo, per esempio, gli spazi al posto della stringa %20. Dopo tale decodifica però, ricontrolla di nuovo l'url alla presenza di ulteriori stringhe da decodificare e se le trova, riparte di nuovo con una nuova decodifica di tale url ma stavolta non viene eseguito il controllo di sicurezza sulla compatibilità tra il percorso richiesto e l'eventuale accesso a zone disco estrerne a quelle riservate allo spazio web. 

Ora, consideriamo la stringa %255c contenuta nell'url che abbiamo usato; l'IIS decodifica con controllo di sicurezza il carattere esadecimale %25. Ora, il carattere in esadecimale %25 è il carattere %, scusate il gioco di parole, ma, in altri termini,  il carattere % convertito in esadecimale è la stringa %25.

Quindi, l'IIS dopo tale decodifica si trova con un url che contiene la stringa %5c avendo decodificato il %25 in %. Allora l'IIS assume che anche la stringa %5c vada decodificata. Che cos'è il %5c? E' il carattere "/". Quindi, guardando l'url come viene visto da IIS una volta decodificato, si vede che esso corrisponde a

http://server/scripts/../../../winnt/system32/cmd.exe?/c+ver

ossia dalla cartella script alla cartella superiore che è Inetpub, poi sale in E:\ poi entra in winnt, quindi in system32 e li ci trova il cmd.exe (che è il prompt di MSDOS) che può eseguire passandogli il parametro ver e quindi, ciò che mi torna è il risulato del comando ver sul portatile.

Ma c'è un motivo tecnico per cui l'IIS decodifica due volte l'URL?

No, lui esegue questa ricerca dei caratteri speciali più volte, non si sà perché.

Ma la specifica http dice questo?

No, la specifica http non dice questo. Dice solo come va codificato l'url, ma è ovvio che la decodifica vada fatta una sola volta e non più volte, come invece fa IIS.

Quindi qui il problema si è presentato perchè chi ha fatto il server IIS non ha previsto che gli si potesse passare un url che contiene una stringa codificata con il carattere "%" che decodificata ridà di nuovo il carattere "%". E' come nel programma delle moltiplicazioni di cui ho accennato sopra, lì l'errore era grossolano, non avevo verificato che quello che mi veniva passato era un numero, qui è più sottile e poteva, come in effetti è stato, non considerato e l'IIS continua a decodificare l'url finquando esso non presenti più il carattere "%" seguito da due numeri esadecimali.

L'attacco.

Passiamo quindi sulla macchina del cracker su cui, come ho detto, mi sono fatto un piccolo programmino in Perl che fa le veci di un browser ma è in realtà in modalità testuale e che mi semplifica l'inserimento dei comandi da lanciare sul server remoto.

Allora mettiamoci nei panni di un cracker e vediamo come si comporta. La prima cosa che fà è analizzare la nostra rete alla ricerca di porte aperte su cui cercare eventuali buchi di sistema.

La macchina soggetta all'attacco è una macchina Windows 2000 quindi voi vi potreste aspettare che come porte aperte, ci sia solo la porta web. Uso il software nmap per fare una scansione delle porte aperte sulla macchina soggetto all'attacco. E come vedete, ci sono molte più porte di quante ce ne saremmo potuti aspettare.

C'e' il server web sulla porta 80, altre porte necessarie a Windows per far funzionare la gestione delle "risorse di rete" più le porte necessarie a far funzionare il sistema di "remote desktop" che sto usando per vedere il desktop della macchina del cracker su questa macchina Win2000 tramite il software VNC.

Qual'e il comando che usi per fare la scansione delle porte?

Il comando si chiama nmap ed è un software presente sulla distribuzione RedHat. 

Tu stai agendo ora da una macchina che sta fuori dal firewall. 

Esattamente, ma attenzione che per ora il firewall è giù. Non sta agendo da firewall ma solo da router, da scambiatore di pacchetti tra la rete interna e Internet e viceversa.

Quindi in questo momento non c'è nessun blocco?

Adesso lo scopo della simulazione è mostrare cosa accade se non c'è un firewall attivo a protezione della rete interna.

Quindi abbiamo visto che il cracker ha scoperto che all'interno di questa rete aziendale, su quella macchina esiste un server web aperto. 

Poi questa situazione è abbastanza diffusa, perché non è ci sia sempre un firewall a protezione delle reti aziendali. 

Il problema è che chi installa le reti dovrebbe stimolare l'amministratore ad acquistare un firewall e dato che i firewall commerciali, vedi quelli Cisco che io conosco per esperienza, costano decine di milioni di lire... Avere invece un firewall  più potente al solo costo di un personal computer 486

e per di più gratis

infatti l'ho detto...al solo costo del PC!!!

Emiliano, ovviamente l'hacker deve avere l'indirizzo esatto del pc?

No perché l'nmap può fare la scansione di un range arbitrario di indirizzi IP. 

E l'nmap da il risultato della ricerca per ogni indirizzo IP richiesto?

Si, gli si chiede di trovare tutte le porte aperte da un dato indirizzo IP ad un altro e lui, dopo un po' di tempo, ti ritorna una lista di tutte le porte che ha trovato aperte.

Tra parentesi è perfettamente legale, quel comando legalmente non è vietato.

In realtà è perfettamente legale il portscanning di una singola porta su un singolo PC. Quello che non è legale ed anzi è perseguibile legalmente e ci sono già precedenti in Italia, è il "massive port-scanning"  ossia la scansione simultanea di più porte e su più calcolatori aziendali.

Ritornando al nostro problema abbiamo scoperto che in questa casa (il computer con Windows 2000) c'è una porta posteriore aperta e senza serratura. Questa porta io la devo murare.

Vediamo di lanciare un software che mi verifica effettivamente se su questo server web c'è il buco che io poi voglio usare per entrare nel sistema.

Questo software mi risponde "Wow! System is vulnerable.". Cosa fà questo software in realtà. Quello che ho fatto prima lanciando il browser Internet e lanciando il comando "ver". In pratica dentro a questo software c'è scritto quanto segue:

Apri un browser Internet e scrivi http://server/scripts/../../../winnt/system32/cmd.exe?/c+ver, se la pagina che ottieni contiene contiene la stringa "Microsoft Windows 2000 ...." allora vuole dire che sono riuscito a dare il comando "ver" e la macchina è vulnerabile. 

A questo punto mi sono creato un altro script che mi richiede un comando che poi verrà eseguito sul server sotto attacco. Eseguo il comando "dir":

Questo adesso è come se fosse un prompt di MS-DOS.

Scusatemi ma qui ci sono dei file di troppo. Ci sono dei file che poi dovrò creare nella successiva simulazione e che sono rimasti qui dalle prove che ho fatto ieri. Vediamo se riesco a cancellarli da remoto.

Eseguo i vari comandi di cancellazione "del ..." che chi ha usato il prompt di DOS  conosce come comandi perfettamente leciti. Il risultato è che i vari file sono spariti.

Non tenete conto di quel file cyrus.exe. Quello in realtà è il cmd.exe copiato qui dal mio script di controllo della presenza del bug per comodità. Potrei anche cancellarlo ma me lo ritroverei copiato qui di nuovo una volta rilanciato lo script.

Il comando che lanci viene eseguito con i diritti di amministratore?

No, viene eseguito sotto l'utente con cui è stato lanciato il server web. Ma vedrete che anche senza essere amministratori, riuscirò, da remoto, a fare una cosa carina: lo sniffing dei pacchetti che transitano nella rete.

Ma esiste la possibilità di rintracciare questi attacchi?

Beh, esiste il log; in questo caso dal log del server web si può recuperare l'indirizzo IP dell'attaccante. Però è anche vero che il cracker potrebbe cancellarlo!!!

Attiviamo il firewall !!

Comunque, prima di far vedere cosa può fare il cracker facciamo vedere come si blocca questo attacco cosi che non si dica che questo è un corso di cracking. Andiamo sul firewall; ora sono l'amministratore della rete e voglio configurare il firewall di modo che non debba più preoccuparmi dei possibili software attivi sulla mia rete aziendale. Voglio che dall'esterno la mia rete sia buia, non esista come se io avessi tranciato il cavo che mi collega a Internet e mi fossi scollegato da essa. Ovviamente però voglio che dall'interno della mia rete la cosa sia trasparente perché i miei utenti devono poter continuare a navigare, fare IRC, ICM e quant'altro.

Molto semplicemente ecco che accendo il firewall.

[IMMAGINE CON TERMINALE E COMANDO DI ATTIVAZIONE DEL FIREWALL]

Andiamo ora sulla macchina del cracker e facciamo ora un nmap per vedere cosa risulta ora aperto. Eseguo lo stesso comando di prima e...

[IMMAGINA CON RISPOSTA NMAP A FIREWALL ATTIVO]

...la risposta è: "Host is down" ossia il calcolatore è spento; quando invece vedete benissimo che esso è ancora acceso.

Adesso prova a anavigare dall'interno.

Ma, guarda, io sto già navigando perchè da questo terminale interno ho ancora accesso al collegamento VNC con il desktop del cracker che vedete funziona ancora perfettamente. Posso, per convincervi ulteriormente, eseguire un ping verso la macchina del cracker. Il ping è come il sonar di Internet; invia un impulso e attende dalla macchina remota un impulso di risposta.

Prima parlavi che internamente c'era una porta aperta sul server web dell'azienda

Certo, se c'è un server web aziendale canonico dovrò aprire sul firewall quella porta su quel server. Lo terrò comunque sempre a valle del firewall anche perché cosi posso proteggere le altre porte del server di modo che solo la porta 80 è aperta ma tutto i restanti servizi di questo server, anche se eventualmente attivi, risultano comunque scollegati dall'esterno.

Ricordate che il problema, nella sicurezza delle reti non è data dai software che voi sapete attivi sulla rete ma da quelli che non sapete o che avete inavvertitamente dimenticato attivi. Di solito, su alcuni documenti sulla configurazione dei firewall c'è scritto di aggiungere righe di configurazione per ogni servizio che volete disattivare. Questo è sbagliato perché si deve bloccare quello che non si conosce, quello che si conosce si spegne o si aggiorna. E' quindi proprio il contrario; si deve bloccare tutta la rete ed aprire solo quello si desidera sia visibile dall'esterno.

La configurazione di un firewall deve seguire sempre una filosofia di sicurezza pessimistica e mai ottimistica.

Solo per completezza vi faccio vedere la configurazione del firewall. Dapprima vi faccio vedere una configurazione ottimistica:

[IMG O CODICE DELLA CONF. OTTIMISTICA]

La prima parte è proprio quella che imposta una impostazione di sicurezza ottimistica. Dice al firewall che tutti i pacchetti che entrano dentro di esso, tutti i pacchetti che escono e tutti i pacchetti che lo attraversano sono permessi e quindi devo essere fatti transitare. Dopodiché vi è una riga che dice di bloccare la porta web sull'indirizzo del mio portatile. Ho, quindi, fatto passare tutti i pacchetti tranne quelli diretti sul server web del mio portatile...e cosi, magari, ho tralasciato altri cinque server web attivi "illegalmente" sulla mia rete su atri calcolatori aziendali.

Come mai allora nessuno utilizza linux come firewall?

Ignoranza, pura e semplice ignoranza. Credono che una cosa gratuita non possa essere efficiente tanto quanto una cosa che costa milioni. Qui lo dico e qui lo nego, un firewall linux è molto più potente di un qualsiasi blasonato firewall commerciale.


Questa pagina è copyright 2001 - Emiliano Bruni
Per informazioni contattami all'indirizzo e-mail: bruni@micso.it

Ultima modifica: Saturday 09 April 2005 15.42