|
|
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: |
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...
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!
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!
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!).
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.
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:
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.
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?
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/
|
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:
|
2001-10-22, generated by lfparser version 2.19