Nmap rimane, nel 2026, lo strumento di riferimento assoluto per mappare reti, individuare porte aperte e misurare la superficie di attacco di un’infrastruttura. Dalla versione 7.99, rilasciata il 26 marzo 2026, la suite integra oltre 600 script NSE per il rilevamento di vulnerabilità, l’analisi SSL e la ricognizione avanzata. Questo tutorial vi guida dall’installazione fino a un audit completo della vostra rete domestica, in circa 30 minuti e 12 passi.

Regola fondamentale prima di iniziare: si scansiona solo ciò che si possiede o per cui si dispone di un’autorizzazione scritta esplicita. La sezione sulla legalità della scansione di rete in Italia dettaglia questo punto. Tutto il resto di questa guida parte da questo presupposto.

L’essenziale su Nmap 7.99

  • Nmap è gratuito, open source, e scansiona per impostazione predefinita le 1.000 porte TCP più comuni.
  • La versione di riferimento per questa guida è Nmap 7.99 (rilasciata il 26 marzo 2026). Controllare sempre la versione più recente su nmap.org prima di installare.
  • I comandi chiave si riducono a pochi flag: -sS (SYN scan), -sV (rilevamento versioni), -O (sistema operativo), -A (tutto combinato).
  • Il motore di script NSE aggiunge oltre 600 script per il rilevamento di vulnerabilità e la ricognizione automatizzata.
  • In Italia, scansionare un sistema di terzi senza autorizzazione espone a procedimenti penali ai sensi dell’articolo 615-ter del Codice Penale.

Cos’è Nmap e perché usarlo nel 2026

Nmap (Network Mapper) è uno strumento di esplorazione di rete e auditing della sicurezza creato da Gordon Lyon (alias Fyodor) nel 1997. Quasi trent’anni dopo, è parte integrante dei toolkit di amministratori di sistema, penetration tester e team di risposta agli incidenti in tutto il mondo. Il suo compito principale: inviare pacchetti costruiti con precisione verso uno o più sistemi, poi analizzare le risposte per dedurre quali macchine sono attive, quali porte sono aperte, quali servizi sono in esecuzione dietro di esse, e spesso quale sistema operativo è installato.

Una scansione Nmap risponde a tre domande concrete. Prima: chi è presente sulla rete (host discovery). Seconda: quali porte sono aperte su ogni macchina (port scan). Terza: cosa si nasconde dietro quelle porte (rilevamento di servizi e versioni). Per un difensore, questa fotografia rivela la superficie di attacco reale: un server SSH dimenticato sulla porta 22, un database esposto sulla porta 5432, o una telecamera IP che comunica in chiaro sulla porta 80.

Nmap non si riduce a un singolo eseguibile. Il progetto include un ecosistema completo: Ncat (lettura e scrittura di dati sulla rete, successore di Netcat), Nping (generazione di pacchetti e misurazione dei tempi di risposta), Ndiff (confronto di due scansioni nel tempo per identificare i cambiamenti) e Zenmap, l’interfaccia grafica multipiattaforma pensata per chi preferisce non usare la riga di comando. Su Windows, il driver di acquisizione Npcap è necessario per le scansioni a pacchetti grezzi. Windows è la seconda piattaforma più utilizzata per Nmap dopo Linux, secondo la documentazione ufficiale del progetto.

La popolarità di Nmap si deve alla sua precisione e flessibilità. Lo stesso strumento serve a inventariare 65.535 porte su un singolo host o a scansionare una rete /16 in pochi minuti con la giusta configurazione di velocità. Si integra perfettamente in script di automazione, esporta verso formati leggibili da altri strumenti (Metasploit, Nessus, SIEM aziendali), e la sua logica di rilevamento si basa su database di firme mantenuti attivamente dalla community. Il Nmap Scripting Engine (NSE) conta oltre 600 script ufficiali suddivisi per categoria: auth, brute, discovery, dos, exploit, malware, safe, version, vuln.

Un dato che chiarisce l’importanza dello strumento: il Rapporto CLUSIT 2025 documenta 507 attacchi cyber gravi contro organizzazioni italiane nel 2024, con un incremento del 14% rispetto all’anno precedente. Il 34% di questi attacchi ha sfruttato vulnerabilità note non patchate, le stesse che uno scanner come Nmap può rilevare preventivamente. L’uso proattivo di Nmap per verificare la superficie di attacco rientra tra le pratiche raccomandate dall’Agenzia per la Cybersicurezza Nazionale (ACN) nelle sue linee guida per la gestione dei rischi cyber.

Scansionare una rete è legale in Italia e in Europa?

Domanda centrale, troppo spesso elusa nei tutorial tecnici. La risposta breve: scansionare i propri sistemi o un sistema per cui si detiene un’autorizzazione scritta è legale. Scansionare sistemi di terzi senza accordo non lo è, e il rischio giuridico è concreto e immediato.

In Italia, le violazioni ai sistemi informatici sono disciplinate principalmente dall’articolo 615-ter del Codice Penale (accesso abusivo a un sistema informatico o telematico). La norma punisce chiunque si introduca abusivamente in un sistema protetto da misure di sicurezza. Anche la sola scansione di porte può essere interpretata come tentativo di accesso o atto preparatorio a un reato, soprattutto se seguita da tentativi di sfruttamento delle vulnerabilità individuate. Le pene variano da 1 a 5 anni di reclusione, con aggravanti in caso di danni o accesso a sistemi di pubblica utilità come ospedali, reti energetiche o infrastrutture bancarie.

A livello europeo, la Direttiva 2013/40/UE sugli attacchi contro i sistemi informativi armonizza queste infrazioni tra gli Stati Membri. Ogni paese conserva però le proprie sfumature di applicazione. Una scansione perfettamente legittima nel contesto di un audit contrattuale può diventare un reato se manca l’autorizzazione scritta o se questa è scaduta. L’Agenzia per la Cybersicurezza Nazionale (ACN) pubblica linee guida sui test di penetrazione e sull’audit di sicurezza conformi al quadro normativo italiano, inclusa la NIS2.

Tre buone pratiche si impongono prima di qualsiasi scansione professionale. Prima: ottenere un’autorizzazione scritta e datata, che precisi gli intervalli di indirizzi IP, le finestre temporali e i tipi di test autorizzati. Seconda: limitarsi strettamente al perimetro definito, senza espandere la scansione ad altri sistemi anche se tecnicamente raggiungibili. Terza: conservare i log delle scansioni, che dimostreranno di essere rimasti entro i limiti concordati in caso di contestazioni. Per esercitarsi senza rischi, usare la propria rete domestica, una macchina virtuale locale, o i target di addestramento ufficiali come scanme.nmap.org, che il progetto Nmap autorizza esplicitamente a scansionare per test moderati.

Prerequisiti: versioni e componenti necessari

Nmap funziona sui tre principali sistemi operativi. Di seguito le versioni e i componenti raccomandati per giugno 2026. Verificare sempre la pagina di download ufficiale poiché il numero di versione evolve con frequenza.

ComponenteVersione di riferimentoRuoloObbligatorio
Nmap7.99 (marzo 2026) o superioreMotore di scansione principale
Npcap (Windows)1.79 o superioreAcquisizione e invio di pacchetti grezziSì su Windows
ZenmapIncluso nell’installatoreInterfaccia grafica multipiattaformaNo
Ncat / NpingInclusi con NmapConnessione di rete e generazione pacchettiNo
Privilegi root/adminroot / AmministratoreScan SYN, UDP e rilevamento OSRaccomandato
Python 3.12+ (facoltativo)3.12 o superioreParsing output XML di NmapNo

Sul lato hardware, non ci sono requisiti particolari: Nmap gira su un notebook di fascia media come su un server. Contate pochi megabyte di spazio su disco. Una connessione di rete cablata offre risultati più stabili rispetto al Wi-Fi per le scansioni precise, poiché la latenza variabile del wireless altera le misurazioni dei tempi di risposta e può causare falsi positivi sullo stato delle porte.

Le scansioni più complete (SYN stealth, UDP, rilevamento del sistema operativo) richiedono privilegi di superutente, perché manipolano pacchetti grezzi a livello di rete. Senza questi diritti, Nmap passa automaticamente a una scansione di connessione TCP completa (-sT), più lenta, più visibile nei log del server e meno furtiva. Prevedete quindi accesso sudo su Linux e macOS, o un prompt dei comandi aperto come Amministratore su Windows.

Passo 1: Installare Nmap su Linux, Windows e macOS

L’installazione varia in base al sistema operativo. Sulle distribuzioni Linux più comuni, il gestore di pacchetti fa tutto il lavoro in pochi secondi. Su Windows e macOS, è disponibile un programma di installazione ufficiale dalla pagina nmap.org.

# Debian, Ubuntu e derivati (22.04 LTS, 24.04 LTS)
sudo apt update && sudo apt install -y nmap

# Fedora, RHEL 9, Rocky Linux, AlmaLinux
sudo dnf install -y nmap

# Arch Linux
sudo pacman -S nmap

# openSUSE Leap / Tumbleweed
sudo zypper install nmap

# macOS con Homebrew
brew install nmap

# Windows con winget (PowerShell come Amministratore)
winget install Insecure.Nmap

# Kali Linux (preinstallato, aggiornare alla 7.99 se necessario)
sudo apt update && sudo apt upgrade nmap

# Verifica versione dopo installazione
nmap --version

Su Windows, l’installatore grafico scaricato direttamente da nmap.org rimane l’opzione più affidabile, perché installa automaticamente Npcap, senza il quale le scansioni a pacchetti grezzi (SYN, UDP, rilevamento OS) falliscono silenziosamente. Accettare sempre l’installazione di Npcap quando proposta durante il setup. Se si usa WSL (Windows Subsystem for Linux), installare la versione Linux tramite apt per beneficiare dei privilegi di rete nativi e delle performance migliori rispetto alla versione Windows.

Su macOS, Homebrew installa una versione recente di Nmap senza Zenmap. Se si vuole l’interfaccia grafica, preferire l’immagine disco .dmg scaricata dalla pagina ufficiale. Nota: macOS impone a volte autorizzazioni aggiuntive per l’acquisizione di pacchetti di rete, da validare in Impostazioni di Sistema, sezione Privacy e Sicurezza, alla voce “Monitoraggio della rete locale”.

Passo 2: Verificare l’installazione e la sintassi di base

Una volta installato Nmap, confermare la versione e familiarizzare con la struttura di un comando. La sintassi generale è semplice e consistente: nmap [tipo di scan] [opzioni] [target]. L’ordine degli elementi è flessibile: Nmap riconosce il target indipendentemente dalla posizione.

# Verificare la versione installata
nmap --version

# Output atteso (estratto)
# Nmap version 7.99 ( https://nmap.org )
# Platform: x86_64-pc-linux-gnu
# Compiled with: liblua-5.4.7 openssl-3.x libpcap-1.10.4 ...
# NSE scripts: 634 in /usr/share/nmap/scripts/

# Aiuto rapido con elenco flag principali
nmap -h | head -40

# Prima scansione sul target di addestramento ufficiale autorizzato
nmap scanme.nmap.org

# Notazioni dei target accettate da Nmap:
# - IP singolo:          192.168.1.10
# - Nome dominio:        scanme.nmap.org
# - Intervallo IP:       192.168.1.1-50
# - Subnet CIDR:         192.168.1.0/24
# - Lista da file:       -iL /path/to/target.txt
# - Escludere IP:        --exclude 192.168.1.1

Un punto essenziale sui privilegi: eseguire sudo nmap ... su Linux e macOS per sbloccare le scansioni avanzate. Senza sudo, il comando funziona ugualmente, ma Nmap usa tecniche meno furtive e non può rilevare il sistema operativo della destinazione. Per questo tutorial, si parte dal presupposto di eseguire Nmap con i privilegi adeguati su una rete di proprietà o per la quale si dispone di autorizzazione esplicita.

Il primo scan su scanme.nmap.org produce tipicamente un output con porte come la 22 (SSH) e la 80 (HTTP) in stato open, la 9929 e la 31337 (porte usate dal progetto Nmap per i test). Questo conferma che l’installazione funziona e che si comprendono le basi della struttura dell’output: header con indirizzo e latenza, tabella delle porte con stato e servizio, footer con statistiche della scansione.

Passo 3: Scoprire gli host attivi sulla rete (-sn)

Prima di scansionare le porte, identificare le macchine attive è il primo passo di qualsiasi audit di rete. La scansione di scoperta (-sn, precedentemente chiamata -sP) esegue un ping sweep senza scansionare alcuna porta. È l’ideale per creare un inventario rapido di una rete locale, scoprire dispositivi IoT non documentati, o preparare la lista di target per le fasi successive.

# Elencare le macchine attive sulla rete locale (host discovery)
sudo nmap -sn 192.168.1.0/24

# Output tipico
# Starting Nmap 7.99 ( https://nmap.org ) at 2026-06-20 10:00 CEST
# Nmap scan report for router.home (192.168.1.1)
# Host is up (0.0021s latency).
# MAC Address: 44:CE:7D:XX:XX:XX (Sagemcom)
# Nmap scan report for 192.168.1.23
# Host is up (0.018s latency).
# MAC Address: B8:27:EB:XX:XX:XX (Raspberry Pi Foundation)
# Nmap scan report for nas.home (192.168.1.40)
# Host is up (0.0009s latency).
# MAC Address: 00:11:32:XX:XX:XX (Synology)
# Nmap done: 256 IP addresses (3 hosts up) scanned in 2.74 seconds

# Salvataggio della lista host per le scansioni successive
sudo nmap -sn 192.168.1.0/24 -oG - | grep "Up" | awk '{print $2}' > host-attivi.txt

Questa scansione combina più tecniche di scoperta in automatico. Su reti locali usa richieste ARP (molto affidabili, rivelano anche l’indirizzo MAC e quindi il produttore del dispositivo), ping ICMP Echo, e sonde TCP SYN sulle porte 80 e 443. È così che si identificano un router, un NAS, una stampante di rete, uno switch gestito o un dispositivo IoT sconosciuto collegato alla rete domestica.

Se alcuni host bloccano il ping ICMP (pratica comune nei firewall aziendali e negli host Windows con firewall abilitato), aggiungere -Pn per considerare tutti i target come attivi e passare direttamente alla scansione delle porte. Attenzione: questa opzione rallenta notevolmente una sweep su un’intera subnet, perché Nmap testa ogni singolo indirizzo senza filtro preliminare. Riservare -Pn agli host specifici che si sa essere protetti da un firewall che blocca ICMP.

Passo 4: Scansionare le porte TCP con SYN scan e connect scan (-sS, -sT)

Il cuore di Nmap è la scansione delle porte TCP. Due tecniche dominano per il protocollo TCP. La scansione SYN (-sS), detta semi-aperta o stealth, invia un pacchetto SYN e, alla risposta SYN-ACK del server, invia immediatamente un RST invece di completare l’handshake: veloce, discreta, non appare nei log delle applicazioni, ma richiede i diritti di root. La scansione connect (-sT) stabilisce una connessione TCP completa tramite la chiamata di sistema del sistema operativo: più lenta, più visibile nei log, ma utilizzabile senza privilegi elevati.

# Scansione SYN sulle 1000 porte predefinite (richiede sudo)
sudo nmap -sS 192.168.1.1

# Scansione connect (senza sudo, più lenta e visibile)
nmap -sT 192.168.1.1

# Scansionare tutte le 65535 porte TCP (più completo)
sudo nmap -sS -p- 192.168.1.1

# Scansione su porte specifiche
sudo nmap -sS -p 22,80,443,3306,5432,8080,8443 192.168.1.1

# Scansione veloce delle 100 porte più comuni (ricognizione rapida)
sudo nmap -sS -F 192.168.1.1

# Scansione con verbosità aumentata per seguire il progresso
sudo nmap -sS -v -p- 192.168.1.0/24

# Output di esempio
# PORT     STATE  SERVICE
# 22/tcp   open   ssh
# 80/tcp   open   http
# 443/tcp  open   https
# 3306/tcp closed mysql
# 8080/tcp open   http-proxy

Gli stati delle porte che Nmap può riportare sono sei, ognuno con un significato preciso. open: la porta risponde attivamente a una connessione o pacchetto, un servizio è in ascolto. closed: la porta è raggiungibile (l’host risponde) ma nessun servizio ascolta in quel momento. filtered: un firewall o un packet filter blocca le sonde e Nmap non riesce a determinare lo stato. unfiltered: la porta è raggiungibile, ma Nmap non riesce a determinare se è aperta o chiusa (tipico delle scansioni ACK). open|filtered: Nmap non distingue tra aperta e filtrata (comune con scansioni UDP e FIN). closed|filtered: Nmap non distingue tra chiusa e filtrata. La presenza di molte porte filtered indica generalmente un firewall perimetrale attivo.

Passo 5: Scansionare le porte UDP (-sU)

Le porte UDP vengono spesso dimenticate negli audit di sicurezza, ma nascondono servizi critici: DNS (porta 53), DHCP (67/68), SNMP (161), NTP (123), soluzioni VPN come WireGuard (51820) e OpenVPN (1194). La scansione UDP (-sU) è intrinsecamente più lenta di quella TCP perché il protocollo UDP non prevede una risposta di conferma per le porte aperte. Nmap deve attendere il timeout per determinare se una porta è filtrata.

# Scansione UDP delle porte più comuni (richiede sudo, più lenta di TCP)
sudo nmap -sU 192.168.1.1

# Combinare UDP e TCP SYN in una sola scansione
sudo nmap -sU -sS 192.168.1.1

# Scansionare solo le porte UDP più rilevanti (molto più veloce)
sudo nmap -sU -p 53,67,68,69,123,161,162,500,1194,4500,51820 192.168.1.1

# Scansione con rilevamento versioni UDP
sudo nmap -sU -sV 192.168.1.1

# Output tipico
# PORT    STATE         SERVICE  VERSION
# 53/udp  open          domain   dnsmasq 2.90
# 123/udp open          ntp      NTP v4
# 161/udp open|filtered snmp

La scansione UDP completa su tutte le 65.535 porte può impiegare ore su un singolo host perché Nmap deve aspettare i timeout per ogni porta non rispondente. Una strategia efficace è scansionare prima le porte UDP più rilevanti e solo poi, se necessario, eseguire una scansione completa su un sottoinsieme di host. Un servizio SNMP con community string “public” non modificata, ad esempio, espone l’intera configurazione del dispositivo di rete e rappresenta una delle vulnerabilità più comuni nelle reti aziendali.

Passo 6: Rilevare servizi e versioni dei software (-sV)

Sapere che la porta 80 è aperta è utile, ma sapere che sta girando Apache 2.4.59 su Ubuntu 24.04 è decisivo per l’analisi delle vulnerabilità. La versione 2.4.58 di Apache, ad esempio, ha CVE noti che la versione 2.4.59 risolve. Il flag -sV attiva il rilevamento di servizi e versioni, interrogando i servizi con probe specifiche e confrontando le risposte con il database delle firme di Nmap (oltre 11.000 firme di servizio).

# Rilevamento di servizi e versioni
sudo nmap -sV 192.168.1.1

# Output intensità default (livello 7 su 9)
sudo nmap -sV --version-intensity 7 192.168.1.1

# Output esteso (massima intensità, più lento ma più preciso)
sudo nmap -sV --version-intensity 9 192.168.1.1

# Output di esempio realistico
# PORT     STATE SERVICE  VERSION
# 22/tcp   open  ssh      OpenSSH 9.7p1 Ubuntu 24.04 (protocol 2.0)
# 80/tcp   open  http     nginx 1.27.3
# 443/tcp  open  ssl/http nginx 1.27.3
# 3306/tcp open  mysql    MySQL 8.4.3
# 5432/tcp open  postgresql PostgreSQL DB 16.4
# 6379/tcp open  redis    Redis key-value store 7.2.5

Il livello di intensità (--version-intensity) va da 0 (solo probe leggere, pochi secondi) a 9 (tutte le probe disponibili, possono richiedere minuti per porta). Il default è 7. Un’intensità più alta aumenta la probabilità di identificare correttamente il servizio quando questo non risponde in modo standard, ma aumenta anche il rumore generato e il rischio di attivare sistemi IDS/IPS. Per una scansione routinaria di inventario, il livello 5 o 6 offre un buon compromesso tra accuratezza e velocità.

Passo 7: Rilevare il sistema operativo e usare la scansione aggressiva (-O, -A)

Nmap può dedurre il sistema operativo analizzando le caratteristiche dei pacchetti TCP/IP restituiti dalla macchina target, una tecnica chiamata OS fingerprinting. Il flag -O attiva questa funzionalità. Il flag -A combina in un solo comando rilevamento OS, rilevamento versioni, script NSE predefiniti e traceroute, ed è il più usato dai penetration tester nella fase di enumerazione.

# Rilevamento solo del sistema operativo
sudo nmap -O 192.168.1.1

# Forza un'ipotesi anche con dati parziali
sudo nmap -O --osscan-guess 192.168.1.1

# Scansione aggressiva completa (OS + versioni + script + traceroute)
sudo nmap -A 192.168.1.1

# Scansione aggressiva su tutta la subnet locale
sudo nmap -A 192.168.1.0/24

# Output OS (esempio)
# OS details: Linux 6.6 - 6.10
# Network Distance: 1 hop
# OS CPE: cpe:/o:linux:linux_kernel:6

# Traceroute incluso in -A
# TRACEROUTE (using port 80/tcp)
# HOP RTT     ADDRESS
# 1   0.32 ms 192.168.1.1
# 2   15.2 ms 10.0.0.1

Il rilevamento del sistema operativo richiede almeno una porta aperta e una chiusa per raccogliere abbastanza firme TCP/IP. Se tutte le porte sono filtrate, il fingerprinting fallisce. In questi casi, aggiungere --osscan-guess forza Nmap a formulare un’ipotesi anche con dati parziali, con accuratezza ridotta. La scansione -A genera un traffico significativo e non è furtiva: evitarla nei test in cui la discrezione è prioritaria o dove si vogliono testare i sistemi di rilevamento intrusion.

Passo 8: Nmap Scripting Engine (NSE) per la rilevazione di vulnerabilità

Il Nmap Scripting Engine è la funzionalità che trasforma Nmap da semplice scanner a strumento di analisi delle vulnerabilità e automazione della sicurezza. I 600+ script ufficiali sono scritti in Lua e organizzati in categorie funzionali. La categoria safe contiene script che non producono effetti collaterali; la categoria vuln rileva vulnerabilità senza sfruttarle; la categoria exploit tenta di sfruttare le vulnerabilità trovate (da usare con estrema cautela).

# Script predefiniti (categoria 'default', sicuri)
sudo nmap -sC 192.168.1.1

# Combinare versioni e script predefiniti (uso più comune)
sudo nmap -sC -sV 192.168.1.1

# Eseguire tutti gli script di rilevamento vulnerabilità (categoria 'vuln')
sudo nmap --script=vuln 192.168.1.1

# Script specifici per SSL/TLS (analisi certificati e cifrari)
sudo nmap --script=ssl-cert,ssl-enum-ciphers,ssl-heartbleed -p 443 192.168.1.1

# Script per SMB - rilevamento vulnerabilità Windows
sudo nmap --script=smb-vuln-ms17-010,smb-security-mode -p 445 192.168.1.1

# Script per HTTP - analisi applicazioni web
sudo nmap --script=http-title,http-headers,http-methods,http-auth -p 80,8080 192.168.1.1

# Script per SSH - metodi di autenticazione e chiavi host
sudo nmap --script=ssh-auth-methods,ssh-hostkey -p 22 192.168.1.1

# Script per rilevamento banner (fingerprinting servizi non standard)
sudo nmap --script=banner 192.168.1.1

# Cercare script per parola chiave
nmap --script-help "*ssl*"
nmap --script-help "*http-vuln*"

Alcuni script NSE particolarmente rilevanti per audit di sicurezza nel 2026. Lo script ssl-heartbleed verifica la vulnerabilità Heartbleed (CVE-2014-0160) ancora presente in molti sistemi embedded non aggiornati. Lo script smb-vuln-ms17-010 rileva EternalBlue, la vulnerabilità alla base di WannaCry, ancora presente su sistemi Windows non patchati. Lo script ssl-enum-ciphers elenca tutti i cifrari supportati da un server TLS e li valuta (A/B/C/F) in base alla loro sicurezza, permettendo di identificare cifrari deboli come RC4 o DES. Lo script http-vuln-cve2017-5638 controlla la vulnerabilità Apache Struts alla base della violazione Equifax.

Per aggiornare il database degli script NSE: sudo nmap --script-updatedb. Gli script si trovano in /usr/share/nmap/scripts/ su Linux (o nel percorso di installazione su Windows/macOS), dove è possibile esaminarli prima dell’esecuzione. Ogni script include un’intestazione con descrizione, categoria, autore e licenza. La lettura dell’intestazione prima dell’esecuzione è una buona pratica per capire esattamente cosa farà lo script sul sistema target.

Passo 9: Modulare la velocità di scansione con i timing templates

Nmap offre sei template di timing predefiniti, da -T0 (paranoide, un pacchetto ogni 5 minuti, pensato per eludere IDS) a -T5 (insane, massima velocità senza limiti, per lab isolati). Il default è -T3 (Normal). La scelta dipende dall’obiettivo: velocità di completamento contro furtività e accuratezza.

TemplateNomeVelocitàCaso d’uso principale
-T0Paranoid1 pacchetto ogni 5 minutiEvasione IDS estrema, sistemi critici
-T1Sneaky15 secondi tra i probeFurtività su reti monitorate
-T2Polite400ms tra i probeRidurre il carico sulla rete in produzione
-T3NormalDefault NmapUso generale, reti stabili
-T4AggressiveTimeout ridotti, più paralleloReti veloci, lab, ambienti controllati
-T5InsaneMassima velocità possibileSolo reti locali gigabit, può perdere risultati
# Scansione veloce su rete locale (T4 raccomandato per ambienti controllati)
sudo nmap -T4 -sS -p- 192.168.1.1

# Scansione discreta su target remoto autorizzato
sudo nmap -T1 -sS -p 22,80,443 target-autorizzato.example.com

# Controllo manuale del timing (per granularità massima)
sudo nmap --min-rate 100 --max-retries 2 --max-rtt-timeout 200ms 192.168.1.1

# Limitare il parallelismo (utile su reti instabili o congestionate)
sudo nmap --max-parallelism 10 192.168.1.0/24

# Benchmark: scansione 65535 porte TCP con T4 su rete gigabit
# Tempo atteso: 30-60 secondi su un singolo host locale

Con -T4 su una rete gigabit locale, Nmap può scansionare tutte le 65.535 porte TCP di un singolo host in 30-60 secondi. Con -T1 su un host remoto con latenza di 20ms, la stessa scansione richiederebbe diverse ore. Per audit di sicurezza professionali su reti aziendali in produzione, -T3 con --max-retries 2 è il punto di partenza sicuro. Evitare -T5 su reti reali: la velocità eccessiva porta a falsi negativi perché alcuni sistemi e firewall scartano semplicemente i pacchetti che arrivano troppo rapidamente, producendo più porte filtered di quante ne esistano realmente.

Passo 10: Salvare e analizzare i risultati in formato XML, testuale e grepable

Nmap supporta quattro formati di output principali. Il salvataggio sistematico dei risultati è fondamentale per tre ragioni: documentare l’audit (requisito NIS2 e ISO 27001), confrontare le scansioni nel tempo per rilevare variazioni nella superficie di attacco, e integrare con altri strumenti come Metasploit, Nessus o piattaforme SIEM aziendali.

# Formato normale: leggibile da umani, ideale per documentazione
sudo nmap -oN risultati-2026-06-20.txt 192.168.1.0/24

# Formato XML: leggibile da strumenti, standard per l'integrazione
sudo nmap -oX risultati-2026-06-20.xml 192.168.1.0/24

# Formato grepable: per analisi rapida con grep/awk/sed
sudo nmap -oG risultati-2026-06-20.gnmap 192.168.1.0/24

# Salvataggio in tutti e tre i formati in una sola esecuzione
sudo nmap -oA audit-rete-2026-06-20 192.168.1.0/24
# Genera: audit-rete-2026-06-20.nmap, .xml, .gnmap

# Analisi dell'output grepable: trovare tutti gli host con porta 22 aperta
grep "22/open" audit-rete-2026-06-20.gnmap | awk '{print $2}'

# Confrontare due scansioni nel tempo con Ndiff
ndiff scansione-precedente.xml audit-rete-2026-06-20.xml

Il formato XML è il più potente per l’automazione. Metasploit Framework può importarlo direttamente con il comando db_import risultati.xml dalla console msfconsole, rendendo immediatamente disponibili gli host e i servizi scoperti per le fasi successive del penetration test. Ndiff analizza due file XML di Nmap e riporta le differenze: nuovi host apparsi, porte cambiate di stato, versioni software aggiornate. Eseguito settimanalmente tramite cron, permette di rilevare in anticipo variazioni non autorizzate nella superficie di attacco.

Passo 11: Tecniche di evasione di firewall e IDS

Durante un penetration test autorizzato, può essere necessario verificare se i sistemi di difesa perimetrale rilevano e bloccano la scansione. Nmap include diverse tecniche di evasione, utili per testare l’efficacia dei propri firewall e IDS prima che lo faccia un attaccante reale. Ogni tecnica descritta qui va usata esclusivamente su sistemi per cui si dispone di autorizzazione scritta esplicita.

# Frammentazione dei pacchetti (rende difficile l'ispezione deep packet inspection)
sudo nmap -f 192.168.1.1

# Doppia frammentazione (8 byte per frammento, elude alcuni IDS più vecchi)
sudo nmap -ff 192.168.1.1

# Scan con decoy IP (mascherare l'IP sorgente reale con indirizzi fasulli)
# ME indica la posizione dell'IP reale nel traffico decoy
sudo nmap -D 10.0.0.5,10.0.0.6,ME 192.168.1.1

# Spoofing della porta sorgente (alcune ACL firewall ammettono traffico dalla 53)
sudo nmap --source-port 53 192.168.1.1

# Rallentare la scansione per eludere i rate-based IDS
sudo nmap -T0 --scan-delay 2000ms 192.168.1.1

# Randomizzare l'ordine di scansione degli host (meno prevedibile)
sudo nmap --randomize-hosts 192.168.1.0/24

# Scan senza ping (by-passare i blocchi ICMP su firewall restrictivi)
sudo nmap -Pn 192.168.1.1

Le tecniche di evasione hanno efficacia variabile contro i sistemi di difesa moderni. I firewall di nuova generazione (NGFW) con deep packet inspection (DPI) e i sistemi IDS/IPS come Snort 3.x e Suricata riconoscono la frammentazione e i pattern di scansione anche rallentati. L’opzione -D (decoy) aggiunge indirizzi IP “esca” ai pacchetti, rendendo più difficile per chi monitora identificare il vero scanner tra i molti IP. Tuttavia, gli IP esca devono essere attivi sulla rete, altrimenti il pattern di indirizzi non raggiungibili è immediatamente riconoscibile come anomalia. Per verificare la resistenza del proprio WAF agli attacchi HTTP, consultare la guida al WAF con ModSecurity e Node.js.

Passo 12: Progetto completo – Audit della rete domestica

Mettere insieme tutte le tecniche apprese in un audit realistico della propria rete domestica. Questo script esegue una scansione completa in quattro fasi, salva i risultati in tutti i formati, e genera un report sintetico con le porte aperte e le potenziali vulnerabilità rilevate. Tempo stimato: 15-25 minuti su una rete /24 con 5-15 host attivi.

#!/bin/bash
# audit-rete-domestica.sh - Audit completo con Nmap 7.99
# USO: sudo bash audit-rete-domestica.sh 192.168.1.0/24
# REQUISITI: Nmap 7.99+, sudo

set -e
SUBNET="${1:-192.168.1.0/24}"
DATA=$(date +%Y-%m-%d)
DIR="audit-$DATA"
mkdir -p "$DIR"

echo "=============================="
echo "Audit rete: $SUBNET"
echo "Data: $DATA"
echo "=============================="

# FASE 1: Host discovery
echo "[1/4] Host discovery in corso..."
sudo nmap -sn "$SUBNET" -oG "$DIR/hosts.gnmap" -oN "$DIR/hosts.txt" > /dev/null
HOSTS=$(grep "Host:" "$DIR/hosts.gnmap" | grep "Status: Up" | awk '{print $2}')
COUNT=$(echo "$HOSTS" | grep -c . || true)
echo "    -> $COUNT host attivi trovati"
echo "$HOSTS" > "$DIR/host-attivi.txt"

# FASE 2: Scansione TCP completa con versioni e script default
echo "[2/4] Port scan TCP (65535 porte) + versioni + script..."
sudo nmap -sS -sV -sC -T4 -p- \
  --max-retries 2 \
  -iL "$DIR/host-attivi.txt" \
  -oA "$DIR/full-scan" > /dev/null 2>&1
echo "    -> Scansione TCP completata"

# FASE 3: Scan UDP delle porte critiche
echo "[3/4] Scan UDP porte critiche..."
sudo nmap -sU -T4 \
  -p 53,67,68,69,123,161,162,500,1194,4500,51820 \
  -iL "$DIR/host-attivi.txt" \
  -oN "$DIR/udp-scan.txt" > /dev/null 2>&1
echo "    -> Scan UDP completato"

# FASE 4: Script vulnerabilità
echo "[4/4] Rilevamento vulnerabilità NSE..."
sudo nmap --script=vuln,ssl-heartbleed,ssl-enum-ciphers \
  -T3 \
  -iL "$DIR/host-attivi.txt" \
  -oN "$DIR/vuln-report.txt" > /dev/null 2>&1
echo "    -> Report vulnerabilità generato"

# Generazione report sintetico
echo "" > "$DIR/REPORT-SINTETICO.txt"
echo "=== AUDIT RETE $SUBNET ===" >> "$DIR/REPORT-SINTETICO.txt"
echo "Data: $DATA" >> "$DIR/REPORT-SINTETICO.txt"
echo "Host attivi: $COUNT" >> "$DIR/REPORT-SINTETICO.txt"
echo "" >> "$DIR/REPORT-SINTETICO.txt"
echo "PORTE APERTE PER HOST:" >> "$DIR/REPORT-SINTETICO.txt"
grep "open" "$DIR/full-scan.gnmap" | while IFS= read -r line; do
  host=$(echo "$line" | grep -oP 'Host: \K[^\s]+')
  ports=$(echo "$line" | grep -oP '\d+/open/tcp//[^/]*/' | tr '\n' ' ')
  if [ -n "$ports" ]; then
    echo "  $host: $ports" >> "$DIR/REPORT-SINTETICO.txt"
  fi
done

echo ""
echo "=============================="
echo "Audit completato."
echo "File in: $DIR/"
echo "  REPORT-SINTETICO.txt  - riepilogo"
echo "  full-scan.xml         - dati XML (importabile in Metasploit)"
echo "  vuln-report.txt       - vulnerabilità rilevate NSE"
echo "=============================="

Eseguire con sudo bash audit-rete-domestica.sh 192.168.1.0/24. Al termine, esaminare prima il file REPORT-SINTETICO.txt per avere una panoramica delle porte aperte. Poi aprire vuln-report.txt per le segnalazioni NSE. I servizi che richiedono attenzione immediata sono: Telnet (porta 23, comunicazione non cifrata), FTP anonimo (porta 21), SNMP con community string “public” (porta 161), servizi HTTP/HTTPS con certificati SSL scaduti o cifrari deboli, e qualsiasi versione software con CVE critici noti.

7 errori comuni con Nmap e come evitarli

Anche gli utenti esperti incappano in questi errori. Riconoscerli in anticipo risparmia ore di debug e previene falsi negativi nei report di audit.

Errore 1: Dimenticare sudo. Eseguire Nmap senza privilegi di root su Linux/macOS disabilita silenziosamente le scansioni SYN, UDP e il rilevamento del sistema operativo. Nmap torna al TCP connect scan (-sT) senza avvisare chiaramente con un messaggio di errore esplicito. Risultato: scansioni incomplete che sembrano complete. Verificare sempre il tipo di scan nel primo output: se riporta “Initiating Connect Scan” invece di “Initiating SYN Stealth Scan”, si sta girando senza sudo.

Errore 2: Fermarsi alle 1.000 porte predefinite. Nmap scansiona di default le 1.000 porte TCP più comuni, che coprono circa il 93% dei servizi reali. Ma il 7% rimanente include spesso servizi di amministrazione, pannelli di controllo, backdoor e servizi su porte alte. In audit professionali, usare sempre -p- per scansionare tutte le 65.535 porte, almeno sull’host principale dell’infrastruttura.

Errore 3: Interpretare “filtered” come “sicuro”. Una porta filtered non significa che il servizio non esiste: un firewall sta bloccando le sonde. Il servizio potrebbe essere attivo e raggiungibile da altri percorsi di rete. Provare con tecniche di evasione (-f, --source-port 53) o con timing più lento (-T1) per ottenere risultati più accurati.

Errore 4: Usare -T5 su reti reali. Il template Insane genera così tanti pacchetti che molti sistemi e router li scartano semplicemente. Il risultato paradossale è che una scansione troppo veloce produce più porte filtered di una più lenta, creando un report inaccurato. Usare -T4 come massimo su reti reali e -T5 solo in ambienti di lab su reti gigabit locali.

Errore 5: Eseguire script vuln senza verificarli prima. Alcuni script NSE nella categoria exploit o dos possono attivare exploit reali o causare crash su sistemi vulnerabili. Verificare sempre cosa fa uno script con nmap --script-help nome-script prima di eseguirlo. La categoria safe contiene solo script che non causano effetti collaterali e sono sicuri in qualsiasi contesto.

Errore 6: Non salvare mai i risultati. Una scansione Nmap senza salvataggio è una fotografia senza archivio. Usare sempre almeno -oA nomefile per salvare in tutti i formati. Senza storico delle scansioni, è impossibile confrontare la superficie di attacco nel tempo o dimostrare la conformità con requisiti di audit come NIS2 o ISO 27001.

Errore 7: Scansionare solo IPv4. Molte reti moderne hanno entrambi i protocolli attivi (dual-stack), ma i tool di monitoraggio e gli amministratori si concentrano spesso solo su IPv4. Aggiungere -6 per attivare la scansione IPv6 ed eseguirla in parallelo a quella IPv4. Un servizio esposto solo su IPv6 e ignorato nei controlli di sicurezza è una superficie di attacco invisibile.

Risoluzione dei problemi: 8 scenari comuni

ProblemaCausa probabileSoluzione
Tutte le porte risultano filteredFirewall perimetrale blocca tutto il traffico in ingressoProvare -Pn -T1 --source-port 53 o verificare dall’interno della rete
OS detection fallisce: “too few ports”Non abbastanza porte aperte e chiuse per il fingerprintingAggiungere --osscan-guess per forzare una stima approssimativa
Scansione molto lenta su subnet /24Risoluzione DNS inversa su ogni IP del rangeAggiungere -n per disabilitare completamente la risoluzione DNS
Errore “socket creation failed” o “raw socket”Mancanza dei privilegi di root/adminEseguire con sudo nmap ... su Linux/macOS, come Amministratore su Windows
Risultati incompleti o nessun SYN scan su WindowsNpcap non installato o versione obsoletaReinstallare Npcap 1.79+ dalla pagina ufficiale nmap.org
Script NSE “not found” o “failed to load”Database script non aggiornatoEseguire sudo nmap --script-updatedb per rigenerare il database
Molti falsi positivi nel rilevamento versioniServizi dietro reverse proxy o load balancerAumentare --version-intensity a 9 o verificare il servizio manualmente
Host risulta “down” ma è sicuramente attivoICMP bloccato dal firewall dell’hostAggiungere -PS22,80,443 -PA80 -PE per probe TCP/UDP diversificate

Problema: file XML corrotto dopo interruzione della scansione. Se la scansione viene interrotta (Ctrl+C, crash, timeout), il file XML risulta incompleto e non parsabile da strumenti automatici. Soluzione: usare anche -oG in parallelo, poiché il formato grepable viene scritto in tempo reale riga per riga e resta utilizzabile anche se la scansione è incompleta. In alternativa, il file XML interrotto può essere “riparato” manualmente aggiungendo il tag di chiusura </nmaprun> alla fine.

Problema: scansione di una rete /16 che non finisce mai. Un /16 contiene 65.536 indirizzi IP. Con -T3 e rilevamento versioni attivo, la scansione completa richiederebbe giorni. Strategia corretta in due fasi: prima eseguire host discovery rapido (-sn -T4) per estrarre solo gli host attivi, poi scansionare solo quelli con -iL host-attivi.txt -T4. Questo riduce tipicamente il numero di target da decine di migliaia a qualche decina.

Consigli avanzati per l’uso professionale

Integrare Nmap con Metasploit Framework. Metasploit può importare direttamente l’output XML di Nmap nel suo database interno con il comando db_import /path/to/scan.xml dalla console msf. Da quel momento, i comandi hosts e services permettono di filtrare per porta, servizio o sistema operativo e lanciare moduli di exploit mirati sui servizi vulnerabili identificati. Per chi lavora in ambito di red team o penetration test, questa integrazione riduce significativamente i tempi di escalation dopo la fase di ricognizione.

Automatizzare audit periodici con cron. Schedulare una scansione settimanale della propria rete e confrontare automaticamente i risultati con Ndiff permette di rilevare nuovi servizi esposti o variazioni nella superficie di attacco prima che lo faccia un attaccante. Un cronjob tipico salva l’output XML con data nel nome file e invia una diff via email se ci sono differenze rispetto alla settimana precedente.

Zenmap per visualizzazione topologica. Zenmap, l’interfaccia grafica inclusa nell’installatore ufficiale di Nmap, include una funzione di visualizzazione topologica della rete che rappresenta graficamente gli host e le loro connessioni. Particolarmente utile per presentare i risultati di un audit a un pubblico non tecnico, per documentare l’architettura di rete in un report formale, o per identificare visivamente cluster di sistemi con configurazioni simili da analizzare insieme.

Script NSE personalizzati in Lua. NSE permette di scrivere script personalizzati per verificare policy aziendali specifiche. Uno script che controlla “tutti i server HTTPS devono supportare TLS 1.3 e rifiutare TLS 1.1” può essere integrato nella pipeline CI/CD. La struttura base di uno script NSE richiede un blocco portrule (quando eseguire lo script) e una funzione action (cosa fare). La documentazione ufficiale su nmap.org include un tutorial completo con esempi progressivi dalla scrittura al debug.

Nmap e NIS2: documentare la gestione delle vulnerabilità. Il Decreto Legislativo 138/2024, che recepisce la Direttiva NIS2 in Italia, impone alle organizzazioni dei settori critici di adottare misure per la gestione dei rischi cyber, inclusa la gestione delle vulnerabilità (articolo 21). Conservare i risultati delle scansioni Nmap con timestamp, confrontarli nel tempo tramite Ndiff, e documentare le azioni correttive intraprese costruisce una traccia di audit completa per dimostrare la conformità alle autorità competenti e, in caso di violazione, a ridurre l’entità delle sanzioni previste dalla direttiva.

Copertura correlata

Per approfondire la sicurezza dell’infrastruttura che avete scansionato con Nmap:

FAQ su Nmap

Nmap 7.99 è compatibile con Windows 11?
Sì. Nmap 7.99 supporta Windows 11 a condizione di installare Npcap versione 1.79 o superiore. L’installatore ufficiale scaricabile da nmap.org include Npcap nel pacchetto. Per scansioni SYN stealth (-sS) e rilevamento OS su Windows, è obbligatorio eseguire Nmap come Amministratore. Su Windows 11, la funzione “Controlled folder access” di Windows Defender non interferisce con Nmap, ma il firewall di Windows potrebbe bloccare alcune sonde in uscita verso la rete locale.

Qual è la differenza tra -sS e -sT?
La scansione SYN (-sS) invia un pacchetto SYN e, alla risposta SYN-ACK del server, invia immediatamente un RST invece di completare il three-way handshake. È più veloce, più furtiva (non appare nei log delle applicazioni, solo nei log di sistema di livello più basso) e richiede privilegi di root. La scansione connect (-sT) usa la chiamata di sistema connect() del sistema operativo, completando l’handshake TCP: più lenta, compare nei log del server come connessione stabilita e chiusa, ma non richiede root.

Posso usare Nmap per scansionare siti web pubblici?
No, senza autorizzazione esplicita del proprietario del server. Anche se un sito web è accessibile pubblicamente via browser, il server che lo ospita è di proprietà di qualcun altro. Scansionare un server remoto senza permesso viola l’articolo 615-ter del Codice Penale italiano. L’unico target remoto che il progetto Nmap autorizza esplicitamente è scanme.nmap.org, destinato a test leggeri e dimostrativi.

Come posso proteggermi dalla scansione Nmap?
Un firewall correttamente configurato (UFW, iptables o nftables su Linux) che blocca i pacchetti SYN in entrata sulle porte non utilizzate è la difesa principale, rendendo la maggior parte delle porte filtered. Fail2ban può bloccare automaticamente gli IP che generano molte connessioni rifiutate in breve tempo. Sistemi IDS come Snort 3.x o Suricata rilevano i pattern di scansione e possono attivare blocchi automatici o alert. Port knocking e spostamento delle porte predefinite (es. SSH da 22 a una porta alta) aumentano l’oscurità ma non la sicurezza reale.

Nmap rileva le vulnerabilità o le sfrutta?
Nmap con gli script NSE della categoria vuln rileva le vulnerabilità, non le sfrutta. Verifica se i pattern di risposta di un servizio corrispondono a vulnerabilità note senza tentare di usarle per accedere al sistema. Gli script della categoria exploit possono invece tentare di sfruttare vulnerabilità specifiche, ma vanno usati con estrema cautela e solo su sistemi su cui si ha autorizzazione scritta per i test di intrusione.

Quanto tempo richiede una scansione Nmap su una rete /24?
Con -T4 -sS -p- (tutte le 65.535 porte TCP) su una rete /24 locale con 10-20 host attivi, contare tra 20 e 45 minuti. Con solo le 1.000 porte predefinite (-T4 -sS), la stessa rete richiede 2-5 minuti. Aggiungere -sV triplica circa il tempo per il rilevamento versioni. L’host discovery (-sn) su una /24 completa richiede generalmente meno di 30 secondi.

Nmap e NIS2: le aziende italiane sono obbligate a usarlo?
La Direttiva NIS2, recepita in Italia con il D.Lgs. 138/2024, impone alle organizzazioni nei settori essenziali e importanti di adottare misure per la gestione dei rischi cyber che includono la gestione delle vulnerabilità (articolo 21). Le linee guida ACN per la conformità NIS2 indicano la scansione periodica di vulnerabilità come pratica raccomandata. Nmap non è menzionato esplicitamente, ma rientra nella categoria degli strumenti di vulnerability management idonei a soddisfare questo requisito.

Come aggiornare Nmap all’ultima versione disponibile?
Su Linux tramite il gestore di pacchetti della distribuzione (sudo apt upgrade nmap su Debian/Ubuntu, sudo dnf upgrade nmap su Fedora/RHEL). Su macOS con Homebrew: brew upgrade nmap. Su Windows, scaricare e rieseguire l’installatore dalla pagina download ufficiale di nmap.org: l’installatore aggiorna Nmap e Npcap preservando le configurazioni esistenti. Verificare sempre la versione dopo l’aggiornamento con nmap --version.