Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Nessus: guida all'installazione e all'uso

Breve guida all'installazione e all'uso di Nessus, il security scanner open source e gratuito in grado di rilevare le principali vulnerabilità di sistemi server
Breve guida all'installazione e all'uso di Nessus, il security scanner open source e gratuito in grado di rilevare le principali vulnerabilità di sistemi server
Link copiato negli appunti

Nella giungla dei security scanner, Nessus, è probabilmente lo strumento migliore in quanto ad efficacia ed estensibilità. Tra i migliori progetti della comunità open source questo programma si guadagna la palma d’oro nel campo degli scanner di vulnerabilità. Un tool capace di tenere testa, e surclassare, i diretti avversari più blasonati, come gli scanner commerciali RealSecure, CopScan, ISS, Retina e altri ancora. In quest’articolo vedremo cos’è un security scanner e conosceremo da vicino Nessus, le sue peculiarità, con cenni al suo linguaggio di scripting per la creazione dei nuovi plug-in.

Cos’è Nessus

Nessus è un analizzatore di rete gratuito, estremamente versatile e aggiornatissimo. Il progetto è stato fondato da Renaud Deraison ed è ormai portato avanti da migliaia di volontari sparsi in tutto il mondo.

Ma che cos’è un security scanner? In sintesi è un programma in grado di analizzare da remoto una o più macchine per determinare se queste sono vulnerabili agli attacchi conosciuti, e quindi potenzialmente esposte ad essere violatae da parte di cracker. Ciò che rende unico Nessus, rispetto ai suoi concorrenti, è il suo modo di operare. Il tool non segue la norma porta di default = servizio: se il nostro server aziendale ha un demone httpd (Apache) in ascolto sulla porta 90 anzichè sulla 80 (quella di default), Nessus è in grado di rilevare il servizio e di analizzarlo correttamente. Inoltre, lo scanner non si limita ad eseguire gli exploit basandosi solo sulla versione del servizio rilevato, ma tenta comunque di "exploitare" realmente tutte le eventuali vulnerabilità, a prescindere dai banner che il servizio gli mostra.

Attualmente Nessus è eseguibile su tutte le distribuzioni GNU/Linux, su WindowsNT e su gli altri sistemi operativi *nix like. Come altri programmi per la sicurezza, ad esempio SATAN, Nessus è un vero e proprio insieme di strumenti di analisi.

Il supporto di Nessus per i diversi attacchi avviene attraverso l’uso di plug-in. Questi sono piccoli moduli di codice che definiscono le regole e le procedure di reporting dei vari attacchi. Usando questo sistema è possibile espandere, in tempo reale, Nessus e intercettare qualsiasi nuovo attacco o manomissione. La particolare architettura a plug-in di Nessus permette di integrare velocemente i nuovi attacchi con requisiti minimi, sia di tempo sia di esperienza.

Nonostante la sua apparente complessità, Nessus, è sorprendentemente veloce ed offre un grado di attendibilità e precisione più che accettabile. La sua natura modulare unita alla filosofia open source gli permette di essere sempre aggiornato ed al passo con le scoperte di nuovi bug di sicurezza. Grazie al NASL, il linguaggio di script usato per creare i plug-in di Nessus, chiunque può scrivere i propri plug-in per testare un determinato bug e diffonderli in rete per far si che anche altri utenti possano trarne beneficio. Un altro punto di forza di Nessus è l’usabilità offerta dalla sua interfaccia grafica, una GUI attraente, ordinata ed intuitiva.

Figura 1: La GUI di NessusUtile e leggera la GUI di Nessus permette di effettuare il login e selezionare tutte le opzioni disponibili.

Ancora più importante è il fatto che Nessus prevede dettagliatissimi tutorial e complete spiegazioni per ciascuna vulnerabilità scoperta durante la scansione.

A cosa serve e chi deve usarlo

Gli analizzatori di vulnerabilità sono strumenti di sicurezza fondamentali. Questi particolari tipi di scanner, nello specifico Nessus, sono dei validi aiuti che possono farvi risparmiare ore ed ore di lavoro. Nessus è in grado di eseguire una serie di test notevoli in intervalli di tempo davvero brevi.

Ovviamente questo tipo di strumento non è la soluzione definitiva ai problemi di sicurezza, ma piuttosto rappresenta un punto di partenza importante per valutare l’affidabilità della vostra rete oppure dell’host del vostro cliente. Usando uno scanner come Nessus potrete ottenere una linea guida del sistema e accertarvi di paragonare questa linea guida con i risultati ottenuti dalle analisi successive. In questo modo, potete automatizzare il vostro primo step di assestamento della sicurezza in azienda e assicurarvi che i nuovi host che aggiungerete in futuro corrispondano ai vostri requisiti di base per la sicurezza.

In una rete Linux provate ad eseguire una scansione ogni 20-30 giorni. Resterete stupiti di quanti cambiamenti possano avvenire in un ambiente multiutente, anche in un periodo molto breve. Nessus vi permetterà di creare una strategia efficace per rendere sicuro uno per uno i servizi presenti sul sistema. Un security scanner non potrà mai sostituire il lavoro di un esperto in sicurezza, figura che dovrebbe esistere in qualsiasi azienda, ma aiuta ad automatizzare molti step solitamente lenti o noiosi dal punto di vista umano.

A questo punto sorge quasi spontanea la domanda: a chi serve un security scanner, e Nessus in particolare? Uno strumento simile può risultare insostituibile per le aziende di sicurezza informatica che sono pagate per testare le reti dei clienti, poichè permette di farsi rapidamente un’idea dell’affidabilità e delle funzioni di una rete, oltre che delle possibili falle presenti sui suoi sistemi; altre figure che traggono beneficio dall’uso di Nessus sono i consulenti informatici in genere, è quasi d’obbligo per un Security Manager scansionare periodicamente la propria rete.

Caratteristiche tecniche di Nessus

Generalmente questi tipi di scanner possiedono un database interno, che dovrebbe essere sempre il più possibile aggiornato, contenente una raccolta di vulnerabilità conosciute. Questo database viene usato da un engine di scansione per effettuare un security probe automatizzato sulla rete bersaglio oppure su di una singola macchina.

Il database interno di Nessus è costituito da una serie di script realizzati nel linguaggio NASL, (il Nessus Attack Scripting Language) un linguaggio in grado di simulare un attacco reale ed esaminarne l’esito. L’operazione di probe può richiedere più o meno tempo a seconda della velocità della rete, delle opzioni scelte e dal numero di macchine da testare. Di seguito riporto le funzionalità principali offerte da Nessus:

  • Architettura Server/Client: Nessus è costituito da due componenti, un server (nessusd), che ha il compito di effettuare gli attacchi, ed un client che costituisce il front-end. È possibile eseguire server e client su macchine differenti, questo vi permette di esaminare tutta la rete stando comodamente seduti davanti al proprio laptop, mentre il demone di Nessus si occuperà di scansionare la rete.
  • Architettura a plug-in: come abbiamo già detto, ogni test è scritto come plug-in esterno. In questo modo è molto più semplice creare plug-in aggiuntivi senza dover studiare l’engine di Nessus.
  • Cooperazione tra i test: i security test effettuati da Nessus non hanno vita separata, ma comunicano e cooperano tra loro. Se, ad esempio, risulta che un host possiede un server FTP che non offre accessi anonimi, i test relativi a questo tipo di accesso non verranno eseguiti da Nessus.
  • Completezza dei risultati: Nessus non si limita solo a riportare le vulnerabilità scoperte nei servizi attivi, ma classifica a seconda della gravità i bugs assegnandogli delle priorità, seguendo una scala che va dal LOW (basso) al VERY HIGH. L’importanza del problema è inoltre indicata dal colore mostrato nel report, verde significa minore, rosso maggiore.
  • Database delle vulnerabilità aggiornatissimo: il database delle vulnerabilità di Nessus è aggiornato quotidianamente, cosa non sempre vera per i prodotti commerciali.
  • Documentazione: la documentazione di Nessus è abbastanza completa e ben fatta. Potete scaricare il necessario dal mirror italiano.
  • NASL: il semplicissimo linguaggio di scripting in cui sono scritti tutti i plug-in di Nessus.
  • Portabilità: Nessus supporta Linux, Solaris, FreeBSD e anche molti altri sistemi *nix like.
  • Riconoscimento avanzato dei servizi: Nessus non considera che l’host bersaglio rispetti lo standard IANA per l’assegnazione delle porte a determinati servizi. Come detto in precedenza Nessus è in grado di rilevare ogni tipo servizio anche se questi non utilizza la porta standard.
  • Reporting facilitato: i report creati da Nessus sono esportabili in diversi formati, tra cui il semplice formato testo, LaTEX e l’HTML.
  • Scansione in parallelo: a seconda della potenza del PC su cui gira il demone nessusd, è possibile testare più di un host alla volta, fino anche ad una cinquantina di macchine contemporaneamente.
  • Soluzioni ai bugs: gli host che contengono vulnerabilità vengono elencati nel report di Nessus. Dopo aver cliccato sull’host, l’elenco delle vulnerabilità viene mostrato in maniera dettagliata. Nessus suggerisce la soluzione migliore per risolvere ogni problema rilevato.

Installare Nessus

Vediamo ora più da vicino come installare Nessus nel nostro sistema, per prima cosa collegatevi al sito del progetto e scaricate l’ultima versione disponibile.

Nessus non è molto esigente in fatto di prerequisiti, tutto ciò che occorre è incluso solitamente in qualsiasi distribuzione Linux. Per eseguire il frontend sono necessarie le sole librerie GTK (il GTK, acronimo di GIMP ToolKit, è un toolkit, cioè un insieme di strumenti, di cui il principale è la libreria libgtk, usati per la creazione di interfacce grafiche). Io ho scaricato l’RPM per Fedora Core 5; una volta in possesso del pacchetto procediamo con l’installazione, da root inserite il comando:

# rpm -ivh Nessus-3.0.3-fc5.i386.rpm

Dopo che il software è stato installato ed i plug-in sono stati processati, (vedi figura 2) dovete lanciare il server nessusd. Il software del server si occupa di gestire tutte le richieste di analisi della rete e può essere invocato da qualsiasi computer sul quale è installato il client. Poichè è disponibile un client scritto in Java, ci sono davvero pochi posti dove Nessus non può essere installato e avviato. Spostatevi nella directory /etc/init.d/ ed avviate il servizio con il seguente comando:

# ./nessusd start

Come indicato in fase di installazione del software, usate il comando nessus-adduser per aggiungere un nuovo utente al sistema:

# cd /opt/nessus/sbin/
# ./nessus-adduser

Terminate la procedura guidata e confermate la creazione del nuovo utente. Complimenti! Se tutto è andato come previsto (figura 3) avete installato Nessus e siete pronti per lavorare. Poichè il demone nessusd viene eseguito come processo appartenente alla root, qualsiasi utente potrebbe potenzialmente eseguire il client, sempre che sia stato creato un account per quell’utente specifico. In aggiunta, come amministratore, potete definire delle regole che limitano le risorse che un particolare utente di Nessus può scansionare durante la sessione di lavoro.

La prossima settimana verificheremo il funzionamento di Nessus e il suo utilizzo specifico.

Nella prima parte dell'articolo abbiamo introdotto il funzionamento e l'utilità di Nessus e abbiamo proceduto alla sua installazione. In questa seconda parte descriveremo in dettaglio il suo utilizzo.

Nessus al lavoro

Dopo aver creato l’utente per accedere al server avviate il client che risiede sulla vostra workstation per far partire l’attacco simulato. Se state eseguendo il server su un computer locale, le impostazioni predefinite dovrebbero funzionare senza problemi. Per lanciare l’applicazione client, aprite una console e digitate il comando nessus. Sarete avvisati per la password che avete creato e quindi accolti con la finestra di login mostrata qui sotto.

Figura 4: La GUI di NessusL'interfaccia di Nessus al primo avvio

Una volta loggati fate click sul tab Plugins e fate scorrere la lista per vedere l’elenco completo dei security test che potete eseguire.

Figura 5: I Plug-in di Nessus
I Plug-in con le vulnerabilità che è possibile identificare

Ricordatevi che potete sempre aggiornare gli script più recenti scaricandoli dal sito del progetto. Nella scelta dei plug-in prestate molta attenzione, può essere consigliabile deselezionare la sezione “Denial Of Service”, poichè gli host testati potrebbero, se vulnerabili ad un attacco di questo tipo, interrompere il loro funzionamento.

Assicuratevi sempre di voler eseguire un particolare test prima di avviare la scansione. Ad ogni modo, per facilitare la scelta dei test, cliccando su di un plug-in potete sempre ottenere una breve spiegazione di cosa fa. Alcuni plug-in permettono di impostare delle preferenze ed altri necessitano di alcuni parametri aggiuntivi per l’esecuzione.

Il passo successivo è la scelta del tipo di Port Scanner da utilizzare, cliccate sul tab Scan Options e scegliete lo scanner desiderato. In generale è bene usare il Nessus TCP Scanner, perchè più veloce e attendibile, ma nulla vi vieta di utilizzare gli altri presenti in elenco.

Figura 6: Gli scanner di Nessus
A seconda delle esigenze potete scegliere diversi tipi di scanner e configurare le opzioni di scansione

Infine, fate click sul tab Target ed inserite un elenco di host delimitato da virgole (oppure range di reti/netmask) da controllare. Se volete, ad esempio, controllare tutti gli indirizzi di una sottorete di classe C come 205.180.14.0 (che ha 24 bit significativi); dovreste inserire la riga 205.180.14.0/24 nel campo Target(s).

Dopo aver scelto il bersaglio non resta che cliccare sul pulsante Start the scan per avviare la scansione. Nessus inizierà quindi l’analisi della rete utilizzando il metodo di port scanning scelto in precedenza per determinare quali servizi girano sulle macchine bersaglio, prima di partire con i relativi test. Esso analizzerà host multipli in parallelo, inoltre vedrete lo stato delle diverse analisi che si stanno verificando durante il controllo. La scansione, a seconda del numero di host interrogati, può impiegare da pochi minuti a diverse ore.

Figura 7: La scansione in esecuzione
La scansione in esecuzione

 

Al termine dello scan avremo a nostra disposizione un report dettagliato delle vulnerabilità della rete, esportabile in diversi formati a seconda delle esigenze. Gli host che hanno delle vulnerabilità vengono elencati nel lato sinistro della schermata del Report. Potete espandere ciascuno dei servizi elencati per avere una descrizione testuale del problema ed una possibile soluzione.

Figura 8: I risultati della scansione
I risultati della scansione

Il NASL (Nessus Attack Scripting Language)

Insieme all’engine di scansione, che rappresenta il cuore di Nessus, troviamo il linguaggio NASL. Questo linguaggio permette la creazione di plug-in per l’esecuzione dei test in pochi minuti. I test creati sono validi per tutti i sistemi operativi, non c’è bisogno di particolari conversioni per adattarli (non dobbiamo quindi preoccuparci della portabilità del codice). Ogni script generato si limita solo ed esclusivamente a testare la vulnerabilità per la quale è stato creato, senza fare null’altro.

Per far questo il NASL permette, con estrema facilità, l’invio di pacchetti IP standard e di pacchetti IP creati ad hoc; fornisce inoltre delle funzioni progettate per rendere più agevole la scrittura dei test per i servizi più comuni come quelli web, di posta e ftp. Il NASL è un linguaggio di scripting che non permette l’esecuzione di codice sulla macchina dove risiede il client, si limita solo ad inviare pacchetti IP agli host bersaglio per effettuare i security test.

Teniamo presente che il NASL non è un linguaggio di scripting molto evoluto alla stregua di Perl e Python, quindi non potremo mai creare un test per rilevare un Trojan (Cavallo di troia) all’interno di un sistema bersaglio. Un altro grande vantaggio di NASL è l’esigua richiesta di risorse di memoria, questo permette a Nessus di eseguire contemporaneamente un gran numero di test.

La sintassi di NASL è molto simile a quella di Perl: quindi non è particolarmente difficile da apprendere specie per chi ha già familiarità con questo linguaggio. Per ovvi motivi di spazio non posso scendere nei dettagli del linguaggio e della sua sintassi, ma dal sito del progetto potete scaricare un’ottima guida scritta dal creatore di NASL. Ogni plug-in di Nessus è in genere diviso in due parti distinte:

  1. Parte descrittiva;
  2. Parte di probing.

La prima parte è dedicata alla descrizione della vulnerabilità, con una classificazione della sua gravità ed una soluzione suggerita. La seconda parte, invece, si occupa di eseguire il “probe” (il test, per intenderci) vero è proprio utilizzando delle funzioni appositamente create.

Figura 9: L’anatomia di uno script NASL
L’anatomia di uno script NASL per Nessus

 

Un classico esempio di script NASL è quello visto in figura 11, il plug-in usato per il check della versione di Postfix; il tutto è veramente molto intuitivo, le righe presenti sono praticamente autoesplicative e non è necessario analizzare riga per riga il listato; è sufficiente la semplice osservazione. Questo test controlla il banner (o messaggio) restituito dall’MTA Postfix, in sintesi controlla e confronta la versione del demone di posta attivo sulla porta 25. Se la versione di Postfix è inferiore alla 2.0 il test suggerisce l’upgrade: Solution: Upgrade to Postfix 2.0 or higher. Tutto qui.

Conclusioni

Nel corso di quest’articolo abbiamo conosciuto molto velocemente il Nessus Security Scanner. Consiglio di provare assolutamente questo strumento per testarne la validità, la completezza e la versatilità. Grazie a tool come Nessus anche i Sysadmin meno esperti possono esaminare, gratuitamente, la propria rete e correre ai ripari se necessario.

Ti consigliamo anche