Nmap (Network Mapper) è uno degli strumenti più utilizzati per la scansione e la mappatura di reti. Nmap può identificare host attivi, porte aperte, servizi in esecuzione e versioni software, rendendolo uno strumento tanto semplice quanto indispensabile per chiunque lavori nella sicurezza delle informazioni.

Installare Nmap su Linux

Sulle distribuzioni basate su Debian/Ubuntu:

sudo apt update
sudo apt install nmap

Sulle distribuzioni basate su Fedora/CentOS:

sudo dnf install nmap
# or on older versions
sudo yum install nmap

Dopo l'installazione, è possibile verificare la versione con:

nmap --version

Per chi cerca soprattutto i comandi di installazione sulle distribuzioni più diffuse, è disponibile anche la guida rapida a Nmap su Ubuntu, Fedora e Linux Mint.

Scansione di base

Il comando più semplice per iniziare è:

nmap <ip_address>

Ad esempio:

nmap 192.168.1.1

Questo comando rileva le porte aperte più comuni sull'host target.

Scansione di porte specifiche

Per limitare la scansione a porte specifiche:

nmap -p 22,80,443 192.168.1.1
  • -p specifica le porte da scansionare
  • È possibile utilizzare intervalli, ad esempio -p 1-1024 per le prime 1024 porte

Scansione avanzata e identificazione dei servizi

Nmap può anche rilevare i servizi in esecuzione e le versioni software:

nmap -sV 192.168.1.1
  • -sV tenta di identificare il servizio e la versione sulle porte aperte

Per una scansione più aggressiva che includa anche il rilevamento del sistema operativo:

sudo nmap -A 192.168.1.1
  • -A abilita: rilevamento OS, rilevamento versione, scansione script e traceroute

Utilizzo degli script Nmap (NSE)

Nmap dispone di un motore di scripting (Nmap Scripting Engine - NSE) per test di sicurezza avanzati:

nmap --script vuln 192.168.1.1
  • --script vuln esegue script per trovare vulnerabilità note
  • È possibile eseguire anche script specifici, ad esempio:
nmap --script http-enum 192.168.1.1

Salvataggio dei risultati

Per un'analisi successiva, è utile salvare l'output:

nmap -oN results.txt 192.168.1.1
  • -oN salva in formato leggibile dall'uomo (normale)
  • Altri formati disponibili: -oX per XML, -oG per grepable

Interpretare gli stati delle porte e scegliere la tecnica

Prima di iniziare definisci l’indirizzo IP e le porte autorizzate. Una porta classificata come open risponde a una sonda compatibile con un servizio in ascolto; closed indica che la destinazione è raggiungibile, ma non risulta aperta; filtered significa che un filtro o la mancanza di risposta impedisce di stabilirne con certezza lo stato. Non interpretare automaticamente filtered come “sicura” e non dedurre che un servizio sia vulnerabile soltanto perché una porta è aperta.

Per una verifica TCP su un host di laboratorio, con le autorizzazioni appropriate, puoi confrontare queste due modalità:

# TCP connect: funziona senza privilegi di pacchetti raw
nmap -sT -p 22,80,443 --reason 192.168.1.10

# TCP SYN: richiede privilegi per inviare pacchetti raw
sudo nmap -sS -p 22,80,443 --reason 192.168.1.10

La modalità -sT usa le normali connessioni del sistema operativo; -sS invia sonde SYN senza completare il normale handshake TCP. L’opzione --reason riporta il motivo della classificazione della porta, utile per interpretare il comportamento di firewall e host. Il progetto Nmap documenta le differenze nella guida ufficiale alle tecniche di scansione.

UDP e falsi positivi: controlli aggiuntivi

I servizi UDP, come DNS o SNMP, non sono coperti da una normale scansione TCP. Nelle reti che sei autorizzato a verificare, una scansione mirata evita il costo di interrogare inutilmente tutte le porte:

sudo nmap -sU -p 53,123,161 --reason 192.168.1.10

Per UDP, uno stato open|filtered è ambiguo: l’assenza di risposta non permette di distinguere con certezza tra servizio attivo e pacchetti filtrati. Anche i rate limit ICMP possono rallentare notevolmente il test. Prima di segnalare un problema, confronta l’esito con la configurazione del firewall e con le evidenze raccolte sull’host.

Conservare evidenze e riprodurre il risultato

Per un controllo TCP limitato a porte concordate, puoi salvare output leggibile, XML e formato compatibile con gli strumenti di analisi in un’unica esecuzione:

nmap -sV --version-light -p 22,80,443 --reason -oA verifica-servizi 192.168.1.10

L’opzione -sV prova a identificare i servizi; --version-light limita l’intensità di rilevamento e -oA produce file con lo stesso prefisso in tre formati. Salva con i risultati anche data, versione di Nmap, indirizzo di partenza e perimetro autorizzato: sono informazioni necessarie per ripetere la misura senza confondere una variazione di rete con una vulnerabilità. Le opzioni di esportazione sono descritte nella documentazione ufficiale di Nmap.

L’identificazione di una versione software non dimostra automaticamente una vulnerabilità: un vendor può mantenere patch retroportate senza cambiare il numero di versione riportato dal servizio. Confronta sempre le evidenze con gli advisory del produttore e con verifiche autorizzate.

Best practices

  • Usa Nmap solo su reti di tua proprietà o per le quali sei autorizzato a eseguire test. L'uso non autorizzato può essere illegale.
  • Combina Nmap con altri strumenti di sicurezza per ottenere un quadro completo della rete.
  • Aggiorna regolarmente Nmap e i suoi script per rilevare nuove vulnerabilità.

Risorse utili

Con Nmap, i professionisti della sicurezza possono identificare rapidamente le vulnerabilità e comprendere meglio la topologia di rete, elementi essenziali per proteggere i sistemi e i dati sensibili.