![[Photo of the Author]](../../common/images/Georges-Tarbouriech.jpg) 
 
    
original in en Georges Tarbouriech
en to it Kikko
Georges è un utente Unix da molto tempo. Egli pensa che la sicurezza 
  informatica sia una delle più grosse sfide di questo secolo.
    
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...
![[illustration]](../../common/images/illustration214.jpg) 
 
    
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/