Avanti Indietro Indice

25. Nessus e nmap

25.1 Introduzione

Per effettuare un controllo sul grado di sicurezza e affidabilità della propria rete è possibile utilizzare i programmi Nessus e nmap.

25.2 nmap

Nmap è un'utility per l'esplorazione e l'auditing della propria rete. Disponibile per quasi tutte i sistemi UNIX (Linux, FreeBSD, NetBSD, OpenBSD, Solaris ...) attualmente non ne esiste una versione per Windows.

Supporta ping scanning (determina quali host sono attivi), diverse tecniche di port scanning (determinano quali servizi offrono gli host presenti nella rete) e TCP/IP fingerprinting (identificazione del sistema operativo utilizzato dall'host remoto). Inoltre offre specificazione delle porte, obiettivi flessibili, decoy scanning, sunRPC scanning, reverse-identd scanning, ... E' disponibile sia in versione per X sia per terminale (Nmap). In particolare per X esistono due front-end grafici:

Nominato "Security Product of the Year" dalla Info World e Codetalker Digest.

Dove si trova ?

nmap è reperibile alla pagina www.insecure.org/nmap/. Nel momento in cui scrivo sono disponibili, sia in formato tgz che rpm, la versione stabile 2.53 e la beta 1 della nuova versione 2.54.

Installazione

Per installare il formato tarball (.tgz) e necessario eseguire i seguenti comandi:

# gzip -cd nmap-VERSION.tgz | tar -xvf  # NOTA: al posto di VERSION inserire la versione di nmap utilizzata es. nmap-2.53.tgz
# cd nmap-VERSION
# ./configure
# make
# su root
# make install

Per installare la versione x86/rpm utilizzare:

# rpm -vhU ftp://ftp.server51.freshmeat.net/pub/nmap/nmap-2.53-1.rpm
# rpm -vhU ftp://ftp.server51.freshmeat.net/pub/nmap/nmap-frontend-0.2.53-1.i386.rpm

Nota: il primo comando installa nmap, la seconda installa l'interfaccia
      grafica che fa uso di X e della libreria GTK+.

Esecuzione

Per eseguire un semplice test sulla propria macchina utilizzare il comando da terminale:

# nmap -v -sS -O 127.0.0.1

Starting nmap V. 2.30BETA17 by fyodor@insecure.org ( www.insecure.org/nmap/ )
Host localhost.localdomain (127.0.0.1) appears to be up ... good.
Initiating SYN half-open stealth scan against localhost.localdomain (127.0.0.1)
Adding TCP port 21 (state Open).
Adding TCP port 514 (state Open).
Adding TCP port 513 (state Open).
Adding TCP port 98 (state Open).
Adding TCP port 23 (state Open).
Adding TCP port 79 (state Open).
Adding TCP port 113 (state Open).
Adding TCP port 6000 (state Open).
The SYN scan took 180 seconds to scan 1517 ports.
For OSScan assuming that port 21 is open and port 30938 is closed and neither are firewalled
sendto in send_tcp_raw: sendto(3, packet, 60, 0, 127.0.0.1, 16) => Operazione non permessa
For OSScan assuming that port 21 is open and port 32223 is closed and neither are firewalled
sendto in send_tcp_raw: sendto(3, packet, 60, 0, 127.0.0.1, 16) => Operazione non permessa
For OSScan assuming that port 21 is open and port 40569 is closed and neither are firewalled
sendto in send_tcp_raw: sendto(3, packet, 60, 0, 127.0.0.1, 16) => Operazione non permessa
Interesting ports on localhost.localdomain (127.0.0.1):
(Ports scanned but not shown below are in state: filtered)
Port       State       Service
21/tcp     open        ftp                     
23/tcp     open        telnet                  
79/tcp     open        finger                  
98/tcp     open        linuxconf               
113/tcp    open        auth                    
513/tcp    open        login                   
514/tcp    open        shell                   
6000/tcp   open        X11                     

TCP Sequence Prediction: Class=random positive increments
                         Difficulty=750295 (Good luck!)

Sequence numbers: 6B85B59E 6B85B59E 6B6DA5EE 6B6DA5EE 6B844A25 6B844A25
No OS matches for host (If you know what OS is running on it, 
  see http://www.insecure.org/cgi-bin/nmap-submit.cgi).

TCP/IP fingerprint:
TSeq(Class=RI%gcd=1%SI=B69A5)
TSeq(Class=RI%gcd=1%SI=B72D1)
TSeq(Class=RI%gcd=1%SI=B72D7)
T1(Resp=Y%DF=Y%W=2D24%ACK=S++%Flags=AS%Ops=MNNTNW)
T2(Resp=N)
T3(Resp=Y%DF=Y%W=2D24%ACK=S++%Flags=AS%Ops=MNNTNW)
T4(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=)
T5(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=)
T6(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=)
T7(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=)
PU(Resp=Y%DF=Y%TOS=C0%IPLEN=164%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=134%DAT=E)

Documentazione

La documentazione di nmap si trova sempre al sito citato precedentemente www.insecure.org/nmap/ sono disponibili la man page (formato HTML), un articolo su nmap e il port scanning e una guida.

25.3 Nessus

Nessus è un progetto che ha come scopo quello di fornire alla comunità uno strumento potente, facile, free per analizzare e scoprire le vulnerabilità di una rete.

Nessus è composto da due parti: un server (nessusd) e un client (nessus). Per il corretto funzionamento è necessario installarli entrambi. Il suo funzionamento è semplice, attraverso il client (nessus) è possibile impostare gli host (computer) della rete da sottoporre ai test, quali e che tipo di test effettuare, oltre ad altre opzioni (es. dove salvare i risultati, in quale formato, ...). Il client (nessus) una volta ricevute queste informazioni contatta il server nessusd che si occuperà di effettuare i vari test selezionati. Il client (nessus) e il server (nessusd) possono essere installati nella stessa macchina oppure su macchine diverse. Esistono inoltre client grafici per Windows, Posix/GTK+ (Linux, Solaris, ...) e JAVA.

Dove si trova ?

Nessus è reperibile all'indirizzo www.nessus.org/download.html, esiste anche un sito dedicato in italiano all'indirizzo url="http://www.it.nessus.org" "name="www.it.nessus.org.">. Sono presenti due link per Windows e Java, questi link permetteno di prelevare i rispettivi CLIENT grafici. Non sono invece disponibile per questi sistemi il server nessusd, è necessario per forza usare Linux o altro sistema Unix.

E' raccomandato inoltre installare anche nmap in quanto Nessus è in grado di rilevarne la presenza e di utilizzarlo per effettuare ulteriori controlli.

Per Linux, FreeBSD, Solaris selezionare il link Posix download page quindi se si ha una distribuzione Linux che supporta il formato rpm prelevare il file .rpm da uno dei siti ftp indicati, altrimenti prelevare i tarball (sempre da uno dei siti ftp indicati):

libsnal-1.0.3.tar.gz              (218Kb)
nessus-core-1.0.3.tar.gz          (497Kb)
nessus-libraries-1.0.3.tar.gz    (1512Kb)
nessus-plugins-1.0.3.tar.gz       (365Kb)

L'installazione dei pacchetti .rpm è semplice e rapida, mentre per installare i tarball è necessario un po' di lavoro in più. Prima di tutto si devono scompattare i file:

tar -zxvf nessus-libraries-x.x.tar.gz
tar -zxvf libsnal-x.x.tar.gz
tar -zxvf nessus-core.x.x.tar.gz
tar -zxvf nessus-plugins.x.x.tar.gz

Poi ci si deve assicurare che nel PATH sia presente /usr/local/bin altrimenti usare il comando:

# export PATH=$PATH:/usr/local/bin

Altro passo necessario è verificare che /usr/local/lib sia presente nel file /etc/ld.so.conf, altrimenti impartire i seguenti comandi:

# echo "/usr/local/lib" >> /etc/ld.so.conf
# ldconfig

nessus-libraries

Completate le fasi precedenti è necessario compilare i sorgenti cominciando da nessus-libraries. Nota: se si pensa di utilizzare i client grafici di Windows o Java allora non si avrà bisogno del cypher quindi si potranno usare i seguenti comandi:

# cd nessus-libraries
# ./configure --disable-cipher
# make
# make install

Altrimenti, se si desidera utilizzare esclusivamente Linux, usare:

# cd nessus-libraries
# ./configure
# make
# make install

Il passo successivo è quello di compilare libnasl:

cd nessus-libnasl
# ./configure
# make
# make install

nessus-core

A questo punto è necessario accedere alla directory nessus-core e poi specificare se si intende utilizzare l'interfaccia grafica (richiede la libreria GTK+ e X!) o il terminale.

Se la libreria GTK+ è installata (se GNOME o gimp sono installati l'avete) potete usare i seguenti comandi:

cd nessus-core
# ./configure 
# make
# make install

Altrimenti è sempre possibile utilizzare nessus dalla linea comando del terminale:

cd nessus-core
# ./configure --disable-gtk
# make
# make install

nessus-plugins

Infine compilare nessus-plugins:

cd nessus-plugins
# ./configure
# make
# make install

A questo punto se tutto è stato eseguito correttamente dovrebbero essere presenti nella directory /usr/local/bin i seguenti comandi: nasl, nasl-config, nessus, nessus-build, nessus-config. Se non c'è nessus allora è stato sbagliato qualcosa, ripetere la compilazione di nessus-core e fare attenzione al messaggio visualizzato alla fine.

Il passo successivo consiste nel configurare nessusd, a questo scopo è necessario impostare il file /usr/local/etc/nessus/nessusd.conf. Se si hanno dei dubbi è possibile leggere e prelevare il file nessusd.conf.txt all'indirizzo www.nessus.org/demo/nessusd.conf.txt

Non resta quindi che aggiungere un utente con il comando:

# nessus-adduser

E avviare il server nessusd:

# nessusd -D

A questo punto si può eseguire un client windows, java oppure se si usa Linux e X il comando:

# nessus

Se si è compilato con l'opzione --disable-gtk allora è necessario innanzi tutto leggere l'help:

# nessus --help 

L'help è abbastanza chiaro, comunque un esempio di utilizzo può essere il seguente:

# nessus 192.168.0.154 3001 marco myhosts.txt result.txt

Nota: 192.168.0.154 è l'indirizzo della macchina che esegue nessusd
      3001 è la porta di default usata da nessusd per i test
      marco è il nome dell'utente che ho creato precedentemente
      myhosts.txt è un file di testo in cui ho inserito gli indirizzi IP delle macchine da sottoporre ai test 
      result.txt è il file in cui voglio che siano memorizzati i risultati dei test

Se si desidera che il file con i risultati sia in formato html è possibile specificare l'opzione '-T html'. Altri formati disponibili sono: text, tex, nsr.

Segue un esempio di output (html) ottenuto:

                           127.0.0.1

      Repartition of the level of the security problems : 


[Back to the index]

List of open ports :

            ftp (21/tcp) 
            telnet (23/tcp) 
            finger (79/tcp) 
            linuxconf (98/tcp) (Security warnings found) 
            auth (113/tcp) 
            login (513/tcp) 
            shell (514/tcp) 
            printer (515/tcp) 
            unknown (1027/tcp) 
            unknown (1032/tcp) 
            unknown (1033/tcp) 
            unknown (1035/tcp) 
            unknown (1036/tcp) 
            unknown (3001/tcp) 
            unknown (6000/tcp) 
            general/tcp (Security notes found) 
            general/udp (Security notes found) 

                                                          [ back to the list of ports ]

Warning found on port linuxconf (98/tcp)

      Linuxconf is running on this port

                                                          [ back to the list of ports ]

Information found on port general/tcp

      Nmap found that this host is running Linux 2.1.122 - 2.2.14

                                                          [ back to the list of ports ]

Information found on port general/udp

      For your information, here is the traceroute to 127.0.0.1 : 
      127.0.0.1


This file was generated by Nessus, the open-sourced security scanner. 

Per ulteriori informazioni vedere www.nessus.org/demo/first.html

Per selezionare i plugin e apportare altre modifiche riguardanti il funzionamento del programma nessus, modificare il file '.nessusrc'.

Sono disponibili inoltre numerosi script in grado di effettuare altri controlli riguardanti la sicurezza. E' possibile reperirli alla pagina www.nessus.org/scripts.html. Dopo il download è sufficiente copiarli nella directory /usr/local/lib/nessus/plugins/ o quella usata (vedi nessusd.conf), quindi riavviare nessusd. Se il file ha suffisso .tar.gz è necessario "scompattare" il file nella directory sopra indicata.

Esiste anche un metodo più semplice per scaricarli e installarli, ossia eseguire il programma (da root):

nessus-update-plugins

Documentazione

La documentazione di Nessus è reperibile all'indirizzo www.nessus.org/documentation.html sono disponibili istruzioni su come effettuare l'installazione, pagine dimostrative con immagini, una FAQ, le man pages e altro.


Avanti Indietro Indice