[LinuxFocus-icon]
Home  |  Mappa  |  Indice  |  Cerca

News | Archivo | Link | Cose LF
[an error occurred while processing this directive]
convert to palmConvert to GutenPalm
or to PalmDoc

[Photo of the Author]
Georges Tarbouriech
<georges.t(at)linuxfocus.org>

L'autore:

Georges è un utente Unix da molto tempo. Egli pensa che la sicurezza informatica sia una delle più grosse sfide di questo secolo.



Tradotto in Italiano da:
Kikko <kikkoxyz(at)yahoo.it>

Contenuto:

 

Psionic Portsentry 1.1, il difensore delle porte

[illustration]

Premessa:

Psionic portsentry è uno strumento della suite dell'Abacus Project (oltre a portsentry, son compresi logcheck e hostsentry). E' un IDS (Intrusion Detection System) il quale si occupa di scovare eventuali portscan e di apprestare una difesa attiva. E' disponibile per varie piattaforme UNIX compreso Mac OS X. Il compito fondamentale di un IDS è di informare l'amministratore del sistema di ogni tentativo di intrusione. L'ultima versione (1.1) di questo grande strumento è disponibile per il download in http://www.psionic.com, e a proposito, la versione 1.0 fa parte integrante di qualche distibuzione ufficiale come Debian, Red Hat...



 

Perchè usare portsentry ?

Nell'ultimo decennio il networking è cresciuto ad una velocità incredibile. Lo scopo era di permettere comunicazioni tra macchine che usassero SO differenti. Così i sistemi proprietari di networking son stati ben presto rimpiazzati da TCP/IP. Internet ha fatto il resto! Oggi, la maggior parte delle reti si appoggia al TCP/IP e il TCP/IP dipende dalle porte.In breve, le porte son collegate ai programmi (clients o servers).I server stanno in ascolto finchè un client le contatta per cercare di stabilire una connessione. I servizi (programmi orora menzionati) son mappati per viaggiare su porte determinate. Sui sistemi Unix, questo schema di mapping si trova nel file /etc/services. Vale a dire, tutti possono sapere quale porta è dedicata a ciascun servizio. Se tutti possono saperlo, i crackers lo sanno ancora meglio! Se paragonassimo la porta del servizio alla porta di una abitazione, la porta del servizio aperta (listening) è come la porta di casa non chiusa a chiave. Come si entra in una casa? Solitamente attraverso la porta. Allo stesso modo il black hat (cracker NDT) entra nel tuo computer...
La prima cosa da fare per ridurre il rischio sarebbe chiudere quante più porte possibile, il che equivale a stoppare quel determinato servizio. Sarebbe meglio lasciare meno porte possibile in ascolto e di conseguenza meno servizi attivi. Ma in fin dei conti difficilmente potrai chiudere tutte le porte su una macchina connessa in rete: questo vorrebbe dire isolare la macchina stessa dalla rete.
Capire come limitare il numero dei servizi attivi o come chiudere le porte è lo scopo di questo articolo.Puoi trovare un sacco di scritti al proposito, per esempio navigando sul Linux Documentation Project o cercando negli articoli di LinuxFocus (per esempio quelli riguardanti , Bastille Linux o Security tools).
A questo punto si inserisce portsentry. Portsentry può monitorare e bloccare le porte se gli chiedi di farlo. Ti mette a disposizione verie modalità operative.
Portsentry può sfruttare il packet filtering utilizzando ipfwadm, ipchains o iptables a seconda del kernel Linux che hai sul tuo sistema.
Come gestire il Portsentry? Vediamolo insieme!

 

Come installare portsentry ?

Portsentry si presenta come una tarball veramente di minime dimensioni. Dopo averlo decompresso il file tar.gz, avrete come risultato il codice sorgente e vari files di configurazione e di README. Ovviamente si raccomanda di leggere questa documentazione. Poichè parliamo di sicurezza, non dimentichiamo di scaricare anche i files PGP(signature e key).
Installare Portsentry è facile: make (il tuo sistema) e make install. [NDT. Ma per alcune distribuzioni GNU/Linux come Mandrake o Red Hat è possibile scaricare i files .rpm direttamente da rpmfind. In questo modo la installazione di portsentry risulterà notevolmente semplificata]. Prima di eseguire l'installazione vera e propria devi prepararla. Cioè, dovresti leggere la documentazione , modificare il file portsentry.conf a seconda delle tue esigenze, indi controllare il Makefile e così pure il file portsentry_config.h.
Perchè portsentry sia più efficiente, necessiti inoltre di TCPWrappers. Per lo meno, perchè sarebbe molto meglio usarlo accoppiato con uno strumento di packet filtering. Senza dubbio hai tutto quello che ti serve, se usi Linux. Ma riguardo agli altri sistemi operativi *nix?
Poichè abbiamo testato portsentry anche su altre piattaforme parleremo dei requisiti per questi altri SO.
Su MAC OS X, la situazione è analoga a quella di Linux : avremmo già tutto. Abbiamo TCPWrappers, e ipfw (la versione BSD ). Così raggiungiamo lo scopo finale semplicemente digitando "make osx" .
Su Solaris 2.6 (SPARC), non troverai TCPWrappers. Potrai scaricarlo da ftp://ftp.porcupine.org/pub/security. Potresti anche provare IPFilter disponibile su ftp://coombs.anu.edu.au/pub/net/ip-filter/ip-fil3.4.9.tar.gz (ma solo se hai il compilatore di Solaris !!!).
Nemmeno su Irix 6.5 troverai TCPWrappers . Potrai scaricarlo da http://freeware.sgi.com/index-by-alpha.html Per il packet filtering avrai a disposizione ipfilterd, arriverà con Irix ma non sarà installato di default.
Infine, ma non meno importante, finchè non troverai una versione funzionante di vsnprintf(), non potrai installare portsentry su NeXTSTEP... io non ne ho ancora trovato uno adatto!
Comunque, ripeto, prima di installare portsentry dovresti configurarlo. Sarebbe meglio capirne la filosofia prima di far qualsiasi aggiustamento... ma questa è solo un'opinione!

 

Come opera Portsentry ?

Bene, grazie!
Parlando seriamente, portsentry fa affidamento sui files di configurazione. il più importante è il portsentry.conf . Qui potrai dire a portsentry come reagire nelle varie situazioni.
Prima di occuparci di questo file, cerchiamo di capire in quali modalità opera portsentry e cosa fanno.
Portsentry può usare sei differenti modalità, che variano a seconda della modalità in cui hai inizializzato il programma.
- La prima modalità è "-tcp" che sarebbe anche la modalità di base. Con quest'opzione portsentry si impegnerà sulle porte TCP che troverà sul file di configurazione nella sezione "port configuration" . Potrà controllare fino a un massimo di 64 porte.
- La seconda è "-udp" e fa le stesse cose della precedente opzione ma per le porte UDP.
- La terza è "-stcp", la "s" significa stealth. Questa opzione e la successiva sono disponibili solo per Linux. Con l'opzione "-stcp" , portsentry usa una socket per monitorare i pacchetti in arrivo, in questo modo, cioè, la porta non è in binding con nulla.
- La quarta è "-sudp" e fa le stesse cose della precedente opzione ma per le porte UDP.
- La quinta e la sesta sono "-atcp" e "-audp". Queste son le opzioni maggiormente efficaci (la "a" sta per advanced). Usando queste opzioni, portsentry crea una lista delle porte in ascolto, TCP e UDP, se le selezionate entrambe, bloccate le connessioni a queste porte, a meno che l'host chiamante sia presente sul file portsentry.ignore.
Questo è meglio spiegato sul file di README di portsentry. Di conseguenza, non vogliamo scoprire l'acqua calda riscrivendo tale documentazione. Questi files di README son da leggersi obbligatoriamente (come al solito lasciate che sia un pò fascista!).

Come reagisce Portsentry ?

Ovviamente, portsentry può produrre files di log. Se appartenete alla specie dei sysadmin che non leggono questi files di log (vergognatevene!), potrete usare logcheck e portsentry accoppiati. In tal modo, portsentry vi invia una mail per informarvi dei tentativi di intrusione rilevati.
Può scrivere gli host bersagli sul file /etc/hosts.deny , in modo da essere analizzati con TCPWrappers.
Il localhost può redirigere il traffico di rete su un dead host . Inoltre il localhost può droppare (far rimbalzare) i pacchetti su uno tool locale di filtraggio dei pacchetti.
Ora sai qualcosa in più sulla filosofia di portsentry, e puoi iniziare a configurare il tuo portsentry.conf .
- La prima sezione del file di configurazione riguarda le porte. Qui, puoi scegliere le porte su cui dovrà stare in ascolto il portsentry. Stai attento alle porte (per esempio, non settare la porta 6000 se usi il server X).
- La seconda sezione si occupa delle opzioni avanzate di rilevamento. Di default saranno monitorate le porte sotto la 1024, sia in TCP che in UDP. Qui potrai escludere le porte che vuoi non siano monitorate. Questo è molto importante se si vogliono evitare i falsi allarmi e se si vuole evitare di avere enormi files di log, specialmente se nella rete interna avete delle macchine con un SO Windos. Ad esempio, sorveglia la porta 111 se viene usato portmap e se gli host non son menzionati nel file portsentry.ignore . Sicuramente potrebbe essere da pazzi, poichè portmap si rivolge a server RPMC come NFS. Cioè, NFS non è sicuro con le macchine UNIX, figuriamoci con quelle Windos.
Apro una piccola parentesi: quando scrivo "Windos" non è un errore di stampa: insisto solo sul fatto che Windows è un desktop environment che gira su DOS (D sta per dirty ?)... inoltre ho una lettera in meno da digitare (che poltrone che sono !). Fine parentesi.
- La sezione dei files di configurazione riguarda i files usati da portsentry per scopi di history o per definire gli hosts da ignorare. Se eseguite un'installazione default, non cambiateli.
- La sezione di configurazione "miscellaneous" ti permette di attivare o disattivare il DNS lookup.
- La sezione "response" si trova al centro della configurazione. Qui dovrai stabilire in che modo portsentry reagirà nelle varie situazioni.
Innanzitutto ci son le opzioni di "ignore". Puoi scegliere di bloccare gli scan, non bloccarli o far partire un comando esterno.
Successivamente, nella sezione "dropping routes", potrai dire a portsentry dove droppare i pacchetti o quali programmi di packet filtering son sulla tua macchina. Ci son numerosi esempi per molte piattaforme. Seleziona quella (e solo quella) che fa al caso tuo.
- La sezione TCPWrappers è necessaria se hai in mente di modificare il file /etc/hosts.deny .
- La sezione sui comandi esterni ti permette di definire un comando da eseguire quando un host tenta la connessione.
- La sezione sui valori dello "scan trigger" ti permette, invece, di definire il tempo di reazione di portsentry. di defalut abbiamo un valore "0" che è il più immediato dato che emette un segnale d'allarme al primo tentativo di connessione.
- L'ultima sezione riguarda la visualizzazione di un banner in caso di tentativo di intrusione. Non è possibile attivare questa possibilità se si è in stealth mode.
Fatto questo, abbiamo quasi finito. Ancora. Per evitare falsi allarmi e immensi files di log, controlla il file portsentry.ignore. Qui potrai aggiungere gli indirizzi della tua rete locale con le rispettive netmask o gli indirizzi IP di ogni macchina.
Questo è quanto ! Ora puoi eseguire i comandi make (tuosistema) e make install. Lo script di installazione farà tutto il lavoro Ora, potrai avviare portsentry con le opzioni da te scelte. Controlla nei files di log per vedere cosa sta succendendo. Se tutto è andato per il verso giusto, portsentry ha rafforzato le difese del tuo sistema.

 

Che succede?

Con strumenti come nmap, potete simulare un portscanning sugli host che avete appena fortificato. (Trovate qualcosa in più su nmap qui). Potreste ricevere un report simile:

portsentry is
running on the scanned host

In altri termini, questa macchina non fornisce molte informazioni al cracker !
Solitamente, questo tentativo dovrebbe fornirti la versione del Sistema Operativo e le porte aperte dell'host scansionato. Questo tipo di informazioni son utilissime per un cracker che sappia come e dove attaccare. Se portsentry è in esecuzione con un valore di trigger 0 in modalità avanzata, lo bloccherebbe immediatamente. Se invece il valore di trigger è settato a 1 in modalità normale, l'attaccante potrebbe ottenere la lista delle porte aperte e probabilmente il tipo di SO in esecuzione sulla macchina. ma allora, provando a riconnettersi a una porta che sa essere aperta, incorrerà in un diniego del sistema all'accesso. Semplice ma molto efficace!
Questo significa che se si usa solo TCPWrappers, l'IP dell'attaccante è stato memorizzato sul file /etc/hosts.deny. Se decidi, invece, di reindirizzare i pacchetti su un dead host, portsentry sarà altrettanto efficace ma probabilmente non starai al sicuro da tutti gli attacchi via UDP.
Se utilizzi qualche strumento di packet filtering, l'host attaccato dirotterà i pacchetti in arrivo dall'attaccante verso tale tool di packet filtering.Certo, sarebbe la cosa migliore da fare per sfruttare portsentry in tutte le sue potenzialità.
Ripeto, usare la modalità avanzata su un sistema Linux sarebbe l'ideale. Ciò non significa che portsentry non sia efficace anche con gli altri SO, è solo un pò meno performante... ma non tanto in realtà!
Per capirlo meglio, controlla i files di log che contengono i tentativi di intrusione effettuati su diversi sistemi operativi. Parlano da soli !
A seconda della modalità usata, questi log potrebbero contenere anche i falsi allarmi. Per verificare la qualità delle informazioni contenute, dovreste operare delle modifiche sul file di configurazione. dopo qualche test, otterrete esattamente le informazioni nel verso in cui volete.

 

Puoi vivere senza portsentry ?

Mai e poi MAI! Ci son molti IDS, free e non. Molti di loro son altrettanto buoni. Ci riferiamo al famoso SNORT, reperibile su http://www.snort.org.
Solitamentem questi IDS hanno una protensione ad essere passivi. Cioè, son usati solo per informare l'amministratore di un'eventuale intrusione. Son progettati solo per questo scopo. Per esempio, Snort è piuttosto sofisticato, piochè fa affidamento sugli scripts delle rules permettendovi di settarlo da voi stessi. Il sito di Snort fornisce un database pieno di rules [NDT. regole da applicare a Snort in esecuzione]. E, a proposito, se non ti spiace avere spropositati files di log, potrai anche avviare contemporaneamente sia portsentry che snort. Ciò non sarebbe da stupidi!
Comunque, il punto forte di portsentry è che è un IDS attivo. Può reagire in un battito d'occhio. Usandolo in combinazione con un qualche strumento di packet filtering si avrà una buona arma. Ma potremmo domandarci: portsentry sarebbe un complemento del packet filter o il packet filter complemento di portsentry?
Ad ogni modo, ci son tante altre cose che dovremmo sapere su portsentry. Per esempio, che dobbiamo andare cauti con il rilevamento di scan UDP in modalità avanzata. Si deve leggere la documentazione (ancora!) per capire i problemi legati all'UDP. Con Solaris si dovrebbero verificare dei problemi, dato che usa porte alte tipo 32700 (sia in TCP che in UDP). Ma quest'articolo vuol essere solo un rapido scorcio e non intende esaurire tutto il discorso su questo grande prodotto software che è protsentry.
La sicurezza informatica dà grattacapi e non solo agli amministratori di sistema. Ad aggravare le cose ci pensa l'incredibile sviluppo di internet. In altri termini, il pericolo di un'intrusione è ogni giorno maggiore. La comunità del free software ci aiuta con grandi strumenti: portsentry è uno di questi. Ma si deve ricordare che questi strumenti possono solo ridurre il rischio e non rendere sicuro al 100% il nostro sistema. Questa è un'altra ragione che ci porta a conoscere sempre più sul mondo degli strumenti dedicati alla sicurezza.
Ultima cosa (ma non per importanza), gli operatori di Psionic stanno lavorando ad un prodotto commerciale di cui dicono "we won't be disappointed". Allora non ci resta che attendere e vedere!
Nel frattempo, scarichiamo portsentry 1.1, non ne resterete delusi. Quelli di Psionic hanno fatto un gran lavoro. Ah... a proposito anche hostsentry merita di essere provato ... e usato. Viviamo proprio in una bella era, non pensate?

 

Riferimenti

Per quanto riguarda la sicurezza ci si dovrà assolutamente rivolgere ai seguenti siti. Inoltre essi conterranno dei rimandi al altri siti, questi ultimi ad altri ancora... Conoscete per caso le Matrioska? Il brutto è che se si volesse leggere tutto sto ben di dio non si avrebbe abbastanza da vivere!!!
http://www.linuxsecurity.com
http://www.sans.org
http://www.infosyssec.org
http://www.securityfocus.com
http://www.cs.purdue.edu/coast/hotlist/

 

Discussioni su quest'articolo

ogni articolo possiede una sua pagina di discussione, da questa pagina puoi inviare un commento o leggere quelli degli altri lettori:
 pagina di discussione 

Webpages maintained by the LinuxFocus Editor team
© Georges Tarbouriech, FDL
LinuxFocus.org

Click here to report a fault or send a comment to LinuxFocus
Translation information:
en --> -- : Georges Tarbouriech <georges.t(at)linuxfocus.org>
en --> it: Kikko <kikkoxyz(at)yahoo.it>

2001-10-22, generated by lfparser version 2.19