{"id":280,"date":"2026-06-20T20:59:12","date_gmt":"2026-06-20T20:59:12","guid":{"rendered":"https:\/\/shattered.io\/it\/2026\/06\/20\/nmap-scansionare-rete-tutorial\/"},"modified":"2026-06-20T21:01:08","modified_gmt":"2026-06-20T21:01:08","slug":"nmap-scansionare-rete-tutorial","status":"publish","type":"post","link":"https:\/\/shattered.io\/it\/2026\/06\/20\/nmap-scansionare-rete-tutorial\/","title":{"rendered":"Nmap: Scansionare una Rete in 12 Step [2026]"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Nmap rimane, nel 2026, lo strumento di riferimento assoluto per mappare reti, individuare porte aperte e misurare la superficie di attacco di un&#8217;infrastruttura. Dalla versione 7.99, rilasciata il 26 marzo 2026, la suite integra oltre 600 script NSE per il rilevamento di vulnerabilit\u00e0, l&#8217;analisi SSL e la ricognizione avanzata. Questo tutorial vi guida dall&#8217;installazione fino a un audit completo della vostra rete domestica, in circa 30 minuti e 12 passi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Regola fondamentale prima di iniziare: si scansiona solo ci\u00f2 che si possiede o per cui si dispone di un&#8217;autorizzazione scritta esplicita. La sezione sulla legalit\u00e0 della scansione di rete in Italia dettaglia questo punto. Tutto il resto di questa guida parte da questo presupposto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"essenziale\">L&#8217;essenziale su Nmap 7.99<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Nmap \u00e8 gratuito, open source, e scansiona per impostazione predefinita le <strong>1.000 porte TCP<\/strong> pi\u00f9 comuni.<\/li>\n<li>La versione di riferimento per questa guida \u00e8 <strong>Nmap 7.99<\/strong> (rilasciata il 26 marzo 2026). Controllare sempre la versione pi\u00f9 recente su nmap.org prima di installare.<\/li>\n<li>I comandi chiave si riducono a pochi flag: <code>-sS<\/code> (SYN scan), <code>-sV<\/code> (rilevamento versioni), <code>-O<\/code> (sistema operativo), <code>-A<\/code> (tutto combinato).<\/li>\n<li>Il motore di script NSE aggiunge oltre 600 script per il rilevamento di vulnerabilit\u00e0 e la ricognizione automatizzata.<\/li>\n<li>In Italia, scansionare un sistema di terzi senza autorizzazione espone a procedimenti penali ai sensi dell&#8217;articolo 615-ter del Codice Penale.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"cos-e-nmap\">Cos&#8217;\u00e8 Nmap e perch\u00e9 usarlo nel 2026<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nmap (Network Mapper) \u00e8 uno strumento di esplorazione di rete e auditing della sicurezza creato da Gordon Lyon (alias Fyodor) nel 1997. Quasi trent&#8217;anni dopo, \u00e8 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\u00f9 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 \u00e8 installato.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una scansione Nmap risponde a tre domande concrete. Prima: chi \u00e8 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.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nmap non si riduce a un singolo eseguibile. Il progetto include un ecosistema completo: <strong>Ncat<\/strong> (lettura e scrittura di dati sulla rete, successore di Netcat), <strong>Nping<\/strong> (generazione di pacchetti e misurazione dei tempi di risposta), <strong>Ndiff<\/strong> (confronto di due scansioni nel tempo per identificare i cambiamenti) e <strong>Zenmap<\/strong>, l&#8217;interfaccia grafica multipiattaforma pensata per chi preferisce non usare la riga di comando. Su Windows, il driver di acquisizione <strong>Npcap<\/strong> \u00e8 necessario per le scansioni a pacchetti grezzi. Windows \u00e8 la seconda piattaforma pi\u00f9 utilizzata per Nmap dopo Linux, secondo la documentazione ufficiale del progetto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La popolarit\u00e0 di Nmap si deve alla sua precisione e flessibilit\u00e0. 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\u00e0. 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: <code>auth<\/code>, <code>brute<\/code>, <code>discovery<\/code>, <code>dos<\/code>, <code>exploit<\/code>, <code>malware<\/code>, <code>safe<\/code>, <code>version<\/code>, <code>vuln<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un dato che chiarisce l&#8217;importanza dello strumento: il <strong>Rapporto CLUSIT 2025<\/strong> documenta 507 attacchi cyber gravi contro organizzazioni italiane nel 2024, con un incremento del 14% rispetto all&#8217;anno precedente. Il 34% di questi attacchi ha sfruttato vulnerabilit\u00e0 note non patchate, le stesse che uno scanner come Nmap pu\u00f2 rilevare preventivamente. L&#8217;uso proattivo di Nmap per verificare la superficie di attacco rientra tra le pratiche raccomandate dall&#8217;Agenzia per la Cybersicurezza Nazionale (ACN) nelle sue linee guida per la gestione dei rischi cyber.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"legalita\">Scansionare una rete \u00e8 legale in Italia e in Europa?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Domanda centrale, troppo spesso elusa nei tutorial tecnici. La risposta breve: scansionare i propri sistemi o un sistema per cui si detiene un&#8217;autorizzazione scritta \u00e8 legale. Scansionare sistemi di terzi senza accordo non lo \u00e8, e il rischio giuridico \u00e8 concreto e immediato.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In Italia, le violazioni ai sistemi informatici sono disciplinate principalmente dall&#8217;<strong>articolo 615-ter del Codice Penale<\/strong> (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\u00f2 essere interpretata come tentativo di accesso o atto preparatorio a un reato, soprattutto se seguita da tentativi di sfruttamento delle vulnerabilit\u00e0 individuate. Le pene variano da 1 a 5 anni di reclusione, con aggravanti in caso di danni o accesso a sistemi di pubblica utilit\u00e0 come ospedali, reti energetiche o infrastrutture bancarie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">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\u00f2 le proprie sfumature di applicazione. Una scansione perfettamente legittima nel contesto di un audit contrattuale pu\u00f2 diventare un reato se manca l&#8217;autorizzazione scritta o se questa \u00e8 scaduta. L&#8217;<a href=\"https:\/\/www.acn.gov.it\" target=\"_blank\" rel=\"noopener noreferrer\">Agenzia per la Cybersicurezza Nazionale (ACN)<\/a> pubblica linee guida sui test di penetrazione e sull&#8217;audit di sicurezza conformi al quadro normativo italiano, inclusa la NIS2.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tre buone pratiche si impongono prima di qualsiasi scansione professionale. Prima: ottenere un&#8217;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 <strong>scanme.nmap.org<\/strong>, che il progetto Nmap autorizza esplicitamente a scansionare per test moderati.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"prerequisiti\">Prerequisiti: versioni e componenti necessari<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nmap funziona sui tre principali sistemi operativi. Di seguito le versioni e i componenti raccomandati per giugno 2026. Verificare sempre la <a href=\"https:\/\/nmap.org\/download.html\" target=\"_blank\" rel=\"noopener noreferrer\">pagina di download ufficiale<\/a> poich\u00e9 il numero di versione evolve con frequenza.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Componente<\/th><th>Versione di riferimento<\/th><th>Ruolo<\/th><th>Obbligatorio<\/th><\/tr><\/thead><tbody>\n<tr><td>Nmap<\/td><td>7.99 (marzo 2026) o superiore<\/td><td>Motore di scansione principale<\/td><td>S\u00ec<\/td><\/tr>\n<tr><td>Npcap (Windows)<\/td><td>1.79 o superiore<\/td><td>Acquisizione e invio di pacchetti grezzi<\/td><td>S\u00ec su Windows<\/td><\/tr>\n<tr><td>Zenmap<\/td><td>Incluso nell&#8217;installatore<\/td><td>Interfaccia grafica multipiattaforma<\/td><td>No<\/td><\/tr>\n<tr><td>Ncat \/ Nping<\/td><td>Inclusi con Nmap<\/td><td>Connessione di rete e generazione pacchetti<\/td><td>No<\/td><\/tr>\n<tr><td>Privilegi root\/admin<\/td><td>root \/ Amministratore<\/td><td>Scan SYN, UDP e rilevamento OS<\/td><td>Raccomandato<\/td><\/tr>\n<tr><td>Python 3.12+ (facoltativo)<\/td><td>3.12 o superiore<\/td><td>Parsing output XML di Nmap<\/td><td>No<\/td><\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">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\u00f9 stabili rispetto al Wi-Fi per le scansioni precise, poich\u00e9 la latenza variabile del wireless altera le misurazioni dei tempi di risposta e pu\u00f2 causare falsi positivi sullo stato delle porte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le scansioni pi\u00f9 complete (SYN stealth, UDP, rilevamento del sistema operativo) richiedono privilegi di superutente, perch\u00e9 manipolano pacchetti grezzi a livello di rete. Senza questi diritti, Nmap passa automaticamente a una scansione di connessione TCP completa (<code>-sT<\/code>), pi\u00f9 lenta, pi\u00f9 visibile nei log del server e meno furtiva. Prevedete quindi accesso <code>sudo<\/code> su Linux e macOS, o un prompt dei comandi aperto come Amministratore su Windows.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"passo-1-installare\">Passo 1: Installare Nmap su Linux, Windows e macOS<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;installazione varia in base al sistema operativo. Sulle distribuzioni Linux pi\u00f9 comuni, il gestore di pacchetti fa tutto il lavoro in pochi secondi. Su Windows e macOS, \u00e8 disponibile un programma di installazione ufficiale dalla pagina nmap.org.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Debian, Ubuntu e derivati (22.04 LTS, 24.04 LTS)\nsudo apt update &amp;&amp; sudo apt install -y nmap\n\n# Fedora, RHEL 9, Rocky Linux, AlmaLinux\nsudo dnf install -y nmap\n\n# Arch Linux\nsudo pacman -S nmap\n\n# openSUSE Leap \/ Tumbleweed\nsudo zypper install nmap\n\n# macOS con Homebrew\nbrew install nmap\n\n# Windows con winget (PowerShell come Amministratore)\nwinget install Insecure.Nmap\n\n# Kali Linux (preinstallato, aggiornare alla 7.99 se necessario)\nsudo apt update &amp;&amp; sudo apt upgrade nmap\n\n# Verifica versione dopo installazione\nnmap --version<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Su Windows, l&#8217;installatore grafico scaricato direttamente da nmap.org rimane l&#8217;opzione pi\u00f9 affidabile, perch\u00e9 installa automaticamente Npcap, senza il quale le scansioni a pacchetti grezzi (SYN, UDP, rilevamento OS) falliscono silenziosamente. Accettare sempre l&#8217;installazione di Npcap quando proposta durante il setup. Se si usa WSL (Windows Subsystem for Linux), installare la versione Linux tramite <code>apt<\/code> per beneficiare dei privilegi di rete nativi e delle performance migliori rispetto alla versione Windows.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Su macOS, Homebrew installa una versione recente di Nmap senza Zenmap. Se si vuole l&#8217;interfaccia grafica, preferire l&#8217;immagine disco <code>.dmg<\/code> scaricata dalla pagina ufficiale. Nota: macOS impone a volte autorizzazioni aggiuntive per l&#8217;acquisizione di pacchetti di rete, da validare in Impostazioni di Sistema, sezione Privacy e Sicurezza, alla voce &#8220;Monitoraggio della rete locale&#8221;.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"passo-2-verifica\">Passo 2: Verificare l&#8217;installazione e la sintassi di base<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Una volta installato Nmap, confermare la versione e familiarizzare con la struttura di un comando. La sintassi generale \u00e8 semplice e consistente: <code>nmap [tipo di scan] [opzioni] [target]<\/code>. L&#8217;ordine degli elementi \u00e8 flessibile: Nmap riconosce il target indipendentemente dalla posizione.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Verificare la versione installata\nnmap --version\n\n# Output atteso (estratto)\n# Nmap version 7.99 ( https:\/\/nmap.org )\n# Platform: x86_64-pc-linux-gnu\n# Compiled with: liblua-5.4.7 openssl-3.x libpcap-1.10.4 ...\n# NSE scripts: 634 in \/usr\/share\/nmap\/scripts\/\n\n# Aiuto rapido con elenco flag principali\nnmap -h | head -40\n\n# Prima scansione sul target di addestramento ufficiale autorizzato\nnmap scanme.nmap.org\n\n# Notazioni dei target accettate da Nmap:\n# - IP singolo:          192.168.1.10\n# - Nome dominio:        scanme.nmap.org\n# - Intervallo IP:       192.168.1.1-50\n# - Subnet CIDR:         192.168.1.0\/24\n# - Lista da file:       -iL \/path\/to\/target.txt\n# - Escludere IP:        --exclude 192.168.1.1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Un punto essenziale sui privilegi: eseguire <code>sudo nmap ...<\/code> su Linux e macOS per sbloccare le scansioni avanzate. Senza <code>sudo<\/code>, il comando funziona ugualmente, ma Nmap usa tecniche meno furtive e non pu\u00f2 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\u00e0 o per la quale si dispone di autorizzazione esplicita.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il primo scan su <code>scanme.nmap.org<\/code> produce tipicamente un output con porte come la 22 (SSH) e la 80 (HTTP) in stato <code>open<\/code>, la 9929 e la 31337 (porte usate dal progetto Nmap per i test). Questo conferma che l&#8217;installazione funziona e che si comprendono le basi della struttura dell&#8217;output: header con indirizzo e latenza, tabella delle porte con stato e servizio, footer con statistiche della scansione.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"passo-3-host-discovery\">Passo 3: Scoprire gli host attivi sulla rete (-sn)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Prima di scansionare le porte, identificare le macchine attive \u00e8 il primo passo di qualsiasi audit di rete. La scansione di scoperta (<code>-sn<\/code>, precedentemente chiamata <code>-sP<\/code>) esegue un ping sweep senza scansionare alcuna porta. \u00c8 l&#8217;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.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Elencare le macchine attive sulla rete locale (host discovery)\nsudo nmap -sn 192.168.1.0\/24\n\n# Output tipico\n# Starting Nmap 7.99 ( https:\/\/nmap.org ) at 2026-06-20 10:00 CEST\n# Nmap scan report for router.home (192.168.1.1)\n# Host is up (0.0021s latency).\n# MAC Address: 44:CE:7D:XX:XX:XX (Sagemcom)\n# Nmap scan report for 192.168.1.23\n# Host is up (0.018s latency).\n# MAC Address: B8:27:EB:XX:XX:XX (Raspberry Pi Foundation)\n# Nmap scan report for nas.home (192.168.1.40)\n# Host is up (0.0009s latency).\n# MAC Address: 00:11:32:XX:XX:XX (Synology)\n# Nmap done: 256 IP addresses (3 hosts up) scanned in 2.74 seconds\n\n# Salvataggio della lista host per le scansioni successive\nsudo nmap -sn 192.168.1.0\/24 -oG - | grep \"Up\" | awk '{print $2}' > host-attivi.txt<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Questa scansione combina pi\u00f9 tecniche di scoperta in automatico. Su reti locali usa richieste ARP (molto affidabili, rivelano anche l&#8217;indirizzo MAC e quindi il produttore del dispositivo), ping ICMP Echo, e sonde TCP SYN sulle porte 80 e 443. \u00c8 cos\u00ec che si identificano un router, un NAS, una stampante di rete, uno switch gestito o un dispositivo IoT sconosciuto collegato alla rete domestica.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se alcuni host bloccano il ping ICMP (pratica comune nei firewall aziendali e negli host Windows con firewall abilitato), aggiungere <code>-Pn<\/code> per considerare tutti i target come attivi e passare direttamente alla scansione delle porte. Attenzione: questa opzione rallenta notevolmente una sweep su un&#8217;intera subnet, perch\u00e9 Nmap testa ogni singolo indirizzo senza filtro preliminare. Riservare <code>-Pn<\/code> agli host specifici che si sa essere protetti da un firewall che blocca ICMP.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"passo-4-tcp\">Passo 4: Scansionare le porte TCP con SYN scan e connect scan (-sS, -sT)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Il cuore di Nmap \u00e8 la scansione delle porte TCP. Due tecniche dominano per il protocollo TCP. La scansione SYN (<code>-sS<\/code>), detta semi-aperta o stealth, invia un pacchetto SYN e, alla risposta SYN-ACK del server, invia immediatamente un RST invece di completare l&#8217;handshake: veloce, discreta, non appare nei log delle applicazioni, ma richiede i diritti di root. La scansione connect (<code>-sT<\/code>) stabilisce una connessione TCP completa tramite la chiamata di sistema del sistema operativo: pi\u00f9 lenta, pi\u00f9 visibile nei log, ma utilizzabile senza privilegi elevati.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Scansione SYN sulle 1000 porte predefinite (richiede sudo)\nsudo nmap -sS 192.168.1.1\n\n# Scansione connect (senza sudo, pi\u00f9 lenta e visibile)\nnmap -sT 192.168.1.1\n\n# Scansionare tutte le 65535 porte TCP (pi\u00f9 completo)\nsudo nmap -sS -p- 192.168.1.1\n\n# Scansione su porte specifiche\nsudo nmap -sS -p 22,80,443,3306,5432,8080,8443 192.168.1.1\n\n# Scansione veloce delle 100 porte pi\u00f9 comuni (ricognizione rapida)\nsudo nmap -sS -F 192.168.1.1\n\n# Scansione con verbosit\u00e0 aumentata per seguire il progresso\nsudo nmap -sS -v -p- 192.168.1.0\/24\n\n# Output di esempio\n# PORT     STATE  SERVICE\n# 22\/tcp   open   ssh\n# 80\/tcp   open   http\n# 443\/tcp  open   https\n# 3306\/tcp closed mysql\n# 8080\/tcp open   http-proxy<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Gli stati delle porte che Nmap pu\u00f2 riportare sono sei, ognuno con un significato preciso. <strong>open<\/strong>: la porta risponde attivamente a una connessione o pacchetto, un servizio \u00e8 in ascolto. <strong>closed<\/strong>: la porta \u00e8 raggiungibile (l&#8217;host risponde) ma nessun servizio ascolta in quel momento. <strong>filtered<\/strong>: un firewall o un packet filter blocca le sonde e Nmap non riesce a determinare lo stato. <strong>unfiltered<\/strong>: la porta \u00e8 raggiungibile, ma Nmap non riesce a determinare se \u00e8 aperta o chiusa (tipico delle scansioni ACK). <strong>open|filtered<\/strong>: Nmap non distingue tra aperta e filtrata (comune con scansioni UDP e FIN). <strong>closed|filtered<\/strong>: Nmap non distingue tra chiusa e filtrata. La presenza di molte porte <code>filtered<\/code> indica generalmente un firewall perimetrale attivo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"passo-5-udp\">Passo 5: Scansionare le porte UDP (-sU)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">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 (<code>-sU<\/code>) \u00e8 intrinsecamente pi\u00f9 lenta di quella TCP perch\u00e9 il protocollo UDP non prevede una risposta di conferma per le porte aperte. Nmap deve attendere il timeout per determinare se una porta \u00e8 filtrata.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Scansione UDP delle porte pi\u00f9 comuni (richiede sudo, pi\u00f9 lenta di TCP)\nsudo nmap -sU 192.168.1.1\n\n# Combinare UDP e TCP SYN in una sola scansione\nsudo nmap -sU -sS 192.168.1.1\n\n# Scansionare solo le porte UDP pi\u00f9 rilevanti (molto pi\u00f9 veloce)\nsudo nmap -sU -p 53,67,68,69,123,161,162,500,1194,4500,51820 192.168.1.1\n\n# Scansione con rilevamento versioni UDP\nsudo nmap -sU -sV 192.168.1.1\n\n# Output tipico\n# PORT    STATE         SERVICE  VERSION\n# 53\/udp  open          domain   dnsmasq 2.90\n# 123\/udp open          ntp      NTP v4\n# 161\/udp open|filtered snmp<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La scansione UDP completa su tutte le 65.535 porte pu\u00f2 impiegare ore su un singolo host perch\u00e9 Nmap deve aspettare i timeout per ogni porta non rispondente. Una strategia efficace \u00e8 scansionare prima le porte UDP pi\u00f9 rilevanti e solo poi, se necessario, eseguire una scansione completa su un sottoinsieme di host. Un servizio SNMP con community string &#8220;public&#8221; non modificata, ad esempio, espone l&#8217;intera configurazione del dispositivo di rete e rappresenta una delle vulnerabilit\u00e0 pi\u00f9 comuni nelle reti aziendali.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"passo-6-versioni\">Passo 6: Rilevare servizi e versioni dei software (-sV)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sapere che la porta 80 \u00e8 aperta \u00e8 utile, ma sapere che sta girando Apache 2.4.59 su Ubuntu 24.04 \u00e8 decisivo per l&#8217;analisi delle vulnerabilit\u00e0. La versione 2.4.58 di Apache, ad esempio, ha CVE noti che la versione 2.4.59 risolve. Il flag <code>-sV<\/code> 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).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Rilevamento di servizi e versioni\nsudo nmap -sV 192.168.1.1\n\n# Output intensit\u00e0 default (livello 7 su 9)\nsudo nmap -sV --version-intensity 7 192.168.1.1\n\n# Output esteso (massima intensit\u00e0, pi\u00f9 lento ma pi\u00f9 preciso)\nsudo nmap -sV --version-intensity 9 192.168.1.1\n\n# Output di esempio realistico\n# PORT     STATE SERVICE  VERSION\n# 22\/tcp   open  ssh      OpenSSH 9.7p1 Ubuntu 24.04 (protocol 2.0)\n# 80\/tcp   open  http     nginx 1.27.3\n# 443\/tcp  open  ssl\/http nginx 1.27.3\n# 3306\/tcp open  mysql    MySQL 8.4.3\n# 5432\/tcp open  postgresql PostgreSQL DB 16.4\n# 6379\/tcp open  redis    Redis key-value store 7.2.5<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Il livello di intensit\u00e0 (<code>--version-intensity<\/code>) va da 0 (solo probe leggere, pochi secondi) a 9 (tutte le probe disponibili, possono richiedere minuti per porta). Il default \u00e8 7. Un&#8217;intensit\u00e0 pi\u00f9 alta aumenta la probabilit\u00e0 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\u00e0.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"passo-7-os\">Passo 7: Rilevare il sistema operativo e usare la scansione aggressiva (-O, -A)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nmap pu\u00f2 dedurre il sistema operativo analizzando le caratteristiche dei pacchetti TCP\/IP restituiti dalla macchina target, una tecnica chiamata OS fingerprinting. Il flag <code>-O<\/code> attiva questa funzionalit\u00e0. Il flag <code>-A<\/code> combina in un solo comando rilevamento OS, rilevamento versioni, script NSE predefiniti e traceroute, ed \u00e8 il pi\u00f9 usato dai penetration tester nella fase di enumerazione.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Rilevamento solo del sistema operativo\nsudo nmap -O 192.168.1.1\n\n# Forza un'ipotesi anche con dati parziali\nsudo nmap -O --osscan-guess 192.168.1.1\n\n# Scansione aggressiva completa (OS + versioni + script + traceroute)\nsudo nmap -A 192.168.1.1\n\n# Scansione aggressiva su tutta la subnet locale\nsudo nmap -A 192.168.1.0\/24\n\n# Output OS (esempio)\n# OS details: Linux 6.6 - 6.10\n# Network Distance: 1 hop\n# OS CPE: cpe:\/o:linux:linux_kernel:6\n\n# Traceroute incluso in -A\n# TRACEROUTE (using port 80\/tcp)\n# HOP RTT     ADDRESS\n# 1   0.32 ms 192.168.1.1\n# 2   15.2 ms 10.0.0.1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">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 <code>--osscan-guess<\/code> forza Nmap a formulare un&#8217;ipotesi anche con dati parziali, con accuratezza ridotta. La scansione <code>-A<\/code> genera un traffico significativo e non \u00e8 furtiva: evitarla nei test in cui la discrezione \u00e8 prioritaria o dove si vogliono testare i sistemi di rilevamento intrusion.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"passo-8-nse\">Passo 8: Nmap Scripting Engine (NSE) per la rilevazione di vulnerabilit\u00e0<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Il Nmap Scripting Engine \u00e8 la funzionalit\u00e0 che trasforma Nmap da semplice scanner a strumento di analisi delle vulnerabilit\u00e0 e automazione della sicurezza. I <strong>600+ script ufficiali<\/strong> sono scritti in Lua e organizzati in categorie funzionali. La categoria <code>safe<\/code> contiene script che non producono effetti collaterali; la categoria <code>vuln<\/code> rileva vulnerabilit\u00e0 senza sfruttarle; la categoria <code>exploit<\/code> tenta di sfruttare le vulnerabilit\u00e0 trovate (da usare con estrema cautela).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Script predefiniti (categoria 'default', sicuri)\nsudo nmap -sC 192.168.1.1\n\n# Combinare versioni e script predefiniti (uso pi\u00f9 comune)\nsudo nmap -sC -sV 192.168.1.1\n\n# Eseguire tutti gli script di rilevamento vulnerabilit\u00e0 (categoria 'vuln')\nsudo nmap --script=vuln 192.168.1.1\n\n# Script specifici per SSL\/TLS (analisi certificati e cifrari)\nsudo nmap --script=ssl-cert,ssl-enum-ciphers,ssl-heartbleed -p 443 192.168.1.1\n\n# Script per SMB - rilevamento vulnerabilit\u00e0 Windows\nsudo nmap --script=smb-vuln-ms17-010,smb-security-mode -p 445 192.168.1.1\n\n# Script per HTTP - analisi applicazioni web\nsudo nmap --script=http-title,http-headers,http-methods,http-auth -p 80,8080 192.168.1.1\n\n# Script per SSH - metodi di autenticazione e chiavi host\nsudo nmap --script=ssh-auth-methods,ssh-hostkey -p 22 192.168.1.1\n\n# Script per rilevamento banner (fingerprinting servizi non standard)\nsudo nmap --script=banner 192.168.1.1\n\n# Cercare script per parola chiave\nnmap --script-help \"*ssl*\"\nnmap --script-help \"*http-vuln*\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Alcuni script NSE particolarmente rilevanti per audit di sicurezza nel 2026. Lo script <code>ssl-heartbleed<\/code> verifica la vulnerabilit\u00e0 Heartbleed (CVE-2014-0160) ancora presente in molti sistemi embedded non aggiornati. Lo script <code>smb-vuln-ms17-010<\/code> rileva EternalBlue, la vulnerabilit\u00e0 alla base di WannaCry, ancora presente su sistemi Windows non patchati. Lo script <code>ssl-enum-ciphers<\/code> 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 <code>http-vuln-cve2017-5638<\/code> controlla la vulnerabilit\u00e0 Apache Struts alla base della violazione Equifax.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per aggiornare il database degli script NSE: <code>sudo nmap --script-updatedb<\/code>. Gli script si trovano in <code>\/usr\/share\/nmap\/scripts\/<\/code> su Linux (o nel percorso di installazione su Windows\/macOS), dove \u00e8 possibile esaminarli prima dell&#8217;esecuzione. Ogni script include un&#8217;intestazione con descrizione, categoria, autore e licenza. La lettura dell&#8217;intestazione prima dell&#8217;esecuzione \u00e8 una buona pratica per capire esattamente cosa far\u00e0 lo script sul sistema target.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"passo-9-timing\">Passo 9: Modulare la velocit\u00e0 di scansione con i timing templates<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nmap offre sei template di timing predefiniti, da <code>-T0<\/code> (paranoide, un pacchetto ogni 5 minuti, pensato per eludere IDS) a <code>-T5<\/code> (insane, massima velocit\u00e0 senza limiti, per lab isolati). Il default \u00e8 <code>-T3<\/code> (Normal). La scelta dipende dall&#8217;obiettivo: velocit\u00e0 di completamento contro furtivit\u00e0 e accuratezza.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Template<\/th><th>Nome<\/th><th>Velocit\u00e0<\/th><th>Caso d&#8217;uso principale<\/th><\/tr><\/thead><tbody>\n<tr><td><code>-T0<\/code><\/td><td>Paranoid<\/td><td>1 pacchetto ogni 5 minuti<\/td><td>Evasione IDS estrema, sistemi critici<\/td><\/tr>\n<tr><td><code>-T1<\/code><\/td><td>Sneaky<\/td><td>15 secondi tra i probe<\/td><td>Furtivit\u00e0 su reti monitorate<\/td><\/tr>\n<tr><td><code>-T2<\/code><\/td><td>Polite<\/td><td>400ms tra i probe<\/td><td>Ridurre il carico sulla rete in produzione<\/td><\/tr>\n<tr><td><code>-T3<\/code><\/td><td>Normal<\/td><td>Default Nmap<\/td><td>Uso generale, reti stabili<\/td><\/tr>\n<tr><td><code>-T4<\/code><\/td><td>Aggressive<\/td><td>Timeout ridotti, pi\u00f9 parallelo<\/td><td>Reti veloci, lab, ambienti controllati<\/td><\/tr>\n<tr><td><code>-T5<\/code><\/td><td>Insane<\/td><td>Massima velocit\u00e0 possibile<\/td><td>Solo reti locali gigabit, pu\u00f2 perdere risultati<\/td><\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code># Scansione veloce su rete locale (T4 raccomandato per ambienti controllati)\nsudo nmap -T4 -sS -p- 192.168.1.1\n\n# Scansione discreta su target remoto autorizzato\nsudo nmap -T1 -sS -p 22,80,443 target-autorizzato.example.com\n\n# Controllo manuale del timing (per granularit\u00e0 massima)\nsudo nmap --min-rate 100 --max-retries 2 --max-rtt-timeout 200ms 192.168.1.1\n\n# Limitare il parallelismo (utile su reti instabili o congestionate)\nsudo nmap --max-parallelism 10 192.168.1.0\/24\n\n# Benchmark: scansione 65535 porte TCP con T4 su rete gigabit\n# Tempo atteso: 30-60 secondi su un singolo host locale<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Con <code>-T4<\/code> su una rete gigabit locale, Nmap pu\u00f2 scansionare tutte le 65.535 porte TCP di un singolo host in 30-60 secondi. Con <code>-T1<\/code> su un host remoto con latenza di 20ms, la stessa scansione richiederebbe diverse ore. Per audit di sicurezza professionali su reti aziendali in produzione, <code>-T3<\/code> con <code>--max-retries 2<\/code> \u00e8 il punto di partenza sicuro. Evitare <code>-T5<\/code> su reti reali: la velocit\u00e0 eccessiva porta a falsi negativi perch\u00e9 alcuni sistemi e firewall scartano semplicemente i pacchetti che arrivano troppo rapidamente, producendo pi\u00f9 porte <code>filtered<\/code> di quante ne esistano realmente.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"passo-10-output\">Passo 10: Salvare e analizzare i risultati in formato XML, testuale e grepable<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nmap supporta quattro formati di output principali. Il salvataggio sistematico dei risultati \u00e8 fondamentale per tre ragioni: documentare l&#8217;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.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Formato normale: leggibile da umani, ideale per documentazione\nsudo nmap -oN risultati-2026-06-20.txt 192.168.1.0\/24\n\n# Formato XML: leggibile da strumenti, standard per l'integrazione\nsudo nmap -oX risultati-2026-06-20.xml 192.168.1.0\/24\n\n# Formato grepable: per analisi rapida con grep\/awk\/sed\nsudo nmap -oG risultati-2026-06-20.gnmap 192.168.1.0\/24\n\n# Salvataggio in tutti e tre i formati in una sola esecuzione\nsudo nmap -oA audit-rete-2026-06-20 192.168.1.0\/24\n# Genera: audit-rete-2026-06-20.nmap, .xml, .gnmap\n\n# Analisi dell'output grepable: trovare tutti gli host con porta 22 aperta\ngrep \"22\/open\" audit-rete-2026-06-20.gnmap | awk '{print $2}'\n\n# Confrontare due scansioni nel tempo con Ndiff\nndiff scansione-precedente.xml audit-rete-2026-06-20.xml<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Il formato XML \u00e8 il pi\u00f9 potente per l&#8217;automazione. Metasploit Framework pu\u00f2 importarlo direttamente con il comando <code>db_import risultati.xml<\/code> 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.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"passo-11-evasione\">Passo 11: Tecniche di evasione di firewall e IDS<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Durante un penetration test autorizzato, pu\u00f2 essere necessario verificare se i sistemi di difesa perimetrale rilevano e bloccano la scansione. Nmap include diverse tecniche di evasione, utili per testare l&#8217;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.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Frammentazione dei pacchetti (rende difficile l'ispezione deep packet inspection)\nsudo nmap -f 192.168.1.1\n\n# Doppia frammentazione (8 byte per frammento, elude alcuni IDS pi\u00f9 vecchi)\nsudo nmap -ff 192.168.1.1\n\n# Scan con decoy IP (mascherare l'IP sorgente reale con indirizzi fasulli)\n# ME indica la posizione dell'IP reale nel traffico decoy\nsudo nmap -D 10.0.0.5,10.0.0.6,ME 192.168.1.1\n\n# Spoofing della porta sorgente (alcune ACL firewall ammettono traffico dalla 53)\nsudo nmap --source-port 53 192.168.1.1\n\n# Rallentare la scansione per eludere i rate-based IDS\nsudo nmap -T0 --scan-delay 2000ms 192.168.1.1\n\n# Randomizzare l'ordine di scansione degli host (meno prevedibile)\nsudo nmap --randomize-hosts 192.168.1.0\/24\n\n# Scan senza ping (by-passare i blocchi ICMP su firewall restrictivi)\nsudo nmap -Pn 192.168.1.1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">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&#8217;opzione <code>-D<\/code> (decoy) aggiunge indirizzi IP &#8220;esca&#8221; ai pacchetti, rendendo pi\u00f9 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 \u00e8 immediatamente riconoscibile come anomalia. Per verificare la resistenza del proprio WAF agli attacchi HTTP, consultare la guida al <a href=\"\/it\/web-application-firewall-modsecurity-nodejs\/\">WAF con ModSecurity e Node.js<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"passo-12-progetto\">Passo 12: Progetto completo &#8211; Audit della rete domestica<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">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\u00e0 rilevate. Tempo stimato: 15-25 minuti su una rete \/24 con 5-15 host attivi.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code\">#!\/bin\/bash\n# audit-rete-domestica.sh - Audit completo con Nmap 7.99\n# USO: sudo bash audit-rete-domestica.sh 192.168.1.0\/24\n# REQUISITI: Nmap 7.99+, sudo\n\nset -e\nSUBNET=\"${1:-192.168.1.0\/24}\"\nDATA=$(date +%Y-%m-%d)\nDIR=\"audit-$DATA\"\nmkdir -p \"$DIR\"\n\necho \"==============================\"\necho \"Audit rete: $SUBNET\"\necho \"Data: $DATA\"\necho \"==============================\"\n\n# FASE 1: Host discovery\necho \"[1\/4] Host discovery in corso...\"\nsudo nmap -sn \"$SUBNET\" -oG \"$DIR\/hosts.gnmap\" -oN \"$DIR\/hosts.txt\" > \/dev\/null\nHOSTS=$(grep \"Host:\" \"$DIR\/hosts.gnmap\" | grep \"Status: Up\" | awk '{print $2}')\nCOUNT=$(echo \"$HOSTS\" | grep -c . || true)\necho \"    -> $COUNT host attivi trovati\"\necho \"$HOSTS\" > \"$DIR\/host-attivi.txt\"\n\n# FASE 2: Scansione TCP completa con versioni e script default\necho \"[2\/4] Port scan TCP (65535 porte) + versioni + script...\"\nsudo nmap -sS -sV -sC -T4 -p- \\\n  --max-retries 2 \\\n  -iL \"$DIR\/host-attivi.txt\" \\\n  -oA \"$DIR\/full-scan\" > \/dev\/null 2>&amp;1\necho \"    -> Scansione TCP completata\"\n\n# FASE 3: Scan UDP delle porte critiche\necho \"[3\/4] Scan UDP porte critiche...\"\nsudo nmap -sU -T4 \\\n  -p 53,67,68,69,123,161,162,500,1194,4500,51820 \\\n  -iL \"$DIR\/host-attivi.txt\" \\\n  -oN \"$DIR\/udp-scan.txt\" > \/dev\/null 2>&amp;1\necho \"    -> Scan UDP completato\"\n\n# FASE 4: Script vulnerabilit\u00e0\necho \"[4\/4] Rilevamento vulnerabilit\u00e0 NSE...\"\nsudo nmap --script=vuln,ssl-heartbleed,ssl-enum-ciphers \\\n  -T3 \\\n  -iL \"$DIR\/host-attivi.txt\" \\\n  -oN \"$DIR\/vuln-report.txt\" > \/dev\/null 2>&amp;1\necho \"    -> Report vulnerabilit\u00e0 generato\"\n\n# Generazione report sintetico\necho \"\" > \"$DIR\/REPORT-SINTETICO.txt\"\necho \"=== AUDIT RETE $SUBNET ===\" >> \"$DIR\/REPORT-SINTETICO.txt\"\necho \"Data: $DATA\" >> \"$DIR\/REPORT-SINTETICO.txt\"\necho \"Host attivi: $COUNT\" >> \"$DIR\/REPORT-SINTETICO.txt\"\necho \"\" >> \"$DIR\/REPORT-SINTETICO.txt\"\necho \"PORTE APERTE PER HOST:\" >> \"$DIR\/REPORT-SINTETICO.txt\"\ngrep \"open\" \"$DIR\/full-scan.gnmap\" | while IFS= read -r line; do\n  host=$(echo \"$line\" | grep -oP 'Host: \\K[^\\s]+')\n  ports=$(echo \"$line\" | grep -oP '\\d+\/open\/tcp\/\/[^\/]*\/' | tr '\\n' ' ')\n  if [ -n \"$ports\" ]; then\n    echo \"  $host: $ports\" >> \"$DIR\/REPORT-SINTETICO.txt\"\n  fi\ndone\n\necho \"\"\necho \"==============================\"\necho \"Audit completato.\"\necho \"File in: $DIR\/\"\necho \"  REPORT-SINTETICO.txt  - riepilogo\"\necho \"  full-scan.xml         - dati XML (importabile in Metasploit)\"\necho \"  vuln-report.txt       - vulnerabilit\u00e0 rilevate NSE\"\necho \"==============================\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Eseguire con <code>sudo bash audit-rete-domestica.sh 192.168.1.0\/24<\/code>. Al termine, esaminare prima il file <code>REPORT-SINTETICO.txt<\/code> per avere una panoramica delle porte aperte. Poi aprire <code>vuln-report.txt<\/code> 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 &#8220;public&#8221; (porta 161), servizi HTTP\/HTTPS con certificati SSL scaduti o cifrari deboli, e qualsiasi versione software con CVE critici noti.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"errori-comuni\">7 errori comuni con Nmap e come evitarli<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Anche gli utenti esperti incappano in questi errori. Riconoscerli in anticipo risparmia ore di debug e previene falsi negativi nei report di audit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Errore 1: Dimenticare sudo.<\/strong> 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 (<code>-sT<\/code>) 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 &#8220;Initiating Connect Scan&#8221; invece di &#8220;Initiating SYN Stealth Scan&#8221;, si sta girando senza sudo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Errore 2: Fermarsi alle 1.000 porte predefinite.<\/strong> Nmap scansiona di default le 1.000 porte TCP pi\u00f9 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 <code>-p-<\/code> per scansionare tutte le 65.535 porte, almeno sull&#8217;host principale dell&#8217;infrastruttura.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Errore 3: Interpretare &#8220;filtered&#8221; come &#8220;sicuro&#8221;.<\/strong> Una porta <code>filtered<\/code> 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 (<code>-f<\/code>, <code>--source-port 53<\/code>) o con timing pi\u00f9 lento (<code>-T1<\/code>) per ottenere risultati pi\u00f9 accurati.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Errore 4: Usare -T5 su reti reali.<\/strong> Il template Insane genera cos\u00ec tanti pacchetti che molti sistemi e router li scartano semplicemente. Il risultato paradossale \u00e8 che una scansione troppo veloce produce pi\u00f9 porte <code>filtered<\/code> di una pi\u00f9 lenta, creando un report inaccurato. Usare <code>-T4<\/code> come massimo su reti reali e <code>-T5<\/code> solo in ambienti di lab su reti gigabit locali.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Errore 5: Eseguire script vuln senza verificarli prima.<\/strong> Alcuni script NSE nella categoria <code>exploit<\/code> o <code>dos<\/code> possono attivare exploit reali o causare crash su sistemi vulnerabili. Verificare sempre cosa fa uno script con <code>nmap --script-help nome-script<\/code> prima di eseguirlo. La categoria <code>safe<\/code> contiene solo script che non causano effetti collaterali e sono sicuri in qualsiasi contesto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Errore 6: Non salvare mai i risultati.<\/strong> Una scansione Nmap senza salvataggio \u00e8 una fotografia senza archivio. Usare sempre almeno <code>-oA nomefile<\/code> per salvare in tutti i formati. Senza storico delle scansioni, \u00e8 impossibile confrontare la superficie di attacco nel tempo o dimostrare la conformit\u00e0 con requisiti di audit come NIS2 o ISO 27001.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Errore 7: Scansionare solo IPv4.<\/strong> 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 <code>-6<\/code> per attivare la scansione IPv6 ed eseguirla in parallelo a quella IPv4. Un servizio esposto solo su IPv6 e ignorato nei controlli di sicurezza \u00e8 una superficie di attacco invisibile.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"troubleshooting\">Risoluzione dei problemi: 8 scenari comuni<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Problema<\/th><th>Causa probabile<\/th><th>Soluzione<\/th><\/tr><\/thead><tbody>\n<tr><td>Tutte le porte risultano <code>filtered<\/code><\/td><td>Firewall perimetrale blocca tutto il traffico in ingresso<\/td><td>Provare <code>-Pn -T1 --source-port 53<\/code> o verificare dall&#8217;interno della rete<\/td><\/tr>\n<tr><td>OS detection fallisce: &#8220;too few ports&#8221;<\/td><td>Non abbastanza porte aperte e chiuse per il fingerprinting<\/td><td>Aggiungere <code>--osscan-guess<\/code> per forzare una stima approssimativa<\/td><\/tr>\n<tr><td>Scansione molto lenta su subnet \/24<\/td><td>Risoluzione DNS inversa su ogni IP del range<\/td><td>Aggiungere <code>-n<\/code> per disabilitare completamente la risoluzione DNS<\/td><\/tr>\n<tr><td>Errore &#8220;socket creation failed&#8221; o &#8220;raw socket&#8221;<\/td><td>Mancanza dei privilegi di root\/admin<\/td><td>Eseguire con <code>sudo nmap ...<\/code> su Linux\/macOS, come Amministratore su Windows<\/td><\/tr>\n<tr><td>Risultati incompleti o nessun SYN scan su Windows<\/td><td>Npcap non installato o versione obsoleta<\/td><td>Reinstallare Npcap 1.79+ dalla pagina ufficiale nmap.org<\/td><\/tr>\n<tr><td>Script NSE &#8220;not found&#8221; o &#8220;failed to load&#8221;<\/td><td>Database script non aggiornato<\/td><td>Eseguire <code>sudo nmap --script-updatedb<\/code> per rigenerare il database<\/td><\/tr>\n<tr><td>Molti falsi positivi nel rilevamento versioni<\/td><td>Servizi dietro reverse proxy o load balancer<\/td><td>Aumentare <code>--version-intensity<\/code> a 9 o verificare il servizio manualmente<\/td><\/tr>\n<tr><td>Host risulta &#8220;down&#8221; ma \u00e8 sicuramente attivo<\/td><td>ICMP bloccato dal firewall dell&#8217;host<\/td><td>Aggiungere <code>-PS22,80,443 -PA80 -PE<\/code> per probe TCP\/UDP diversificate<\/td><\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Problema: file XML corrotto dopo interruzione della scansione.<\/strong> Se la scansione viene interrotta (Ctrl+C, crash, timeout), il file XML risulta incompleto e non parsabile da strumenti automatici. Soluzione: usare anche <code>-oG<\/code> in parallelo, poich\u00e9 il formato grepable viene scritto in tempo reale riga per riga e resta utilizzabile anche se la scansione \u00e8 incompleta. In alternativa, il file XML interrotto pu\u00f2 essere &#8220;riparato&#8221; manualmente aggiungendo il tag di chiusura <code>&lt;\/nmaprun&gt;<\/code> alla fine.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Problema: scansione di una rete \/16 che non finisce mai.<\/strong> Un \/16 contiene 65.536 indirizzi IP. Con <code>-T3<\/code> e rilevamento versioni attivo, la scansione completa richiederebbe giorni. Strategia corretta in due fasi: prima eseguire host discovery rapido (<code>-sn -T4<\/code>) per estrarre solo gli host attivi, poi scansionare solo quelli con <code>-iL host-attivi.txt -T4<\/code>. Questo riduce tipicamente il numero di target da decine di migliaia a qualche decina.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"consigli-avanzati\">Consigli avanzati per l&#8217;uso professionale<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Integrare Nmap con Metasploit Framework.<\/strong> Metasploit pu\u00f2 importare direttamente l&#8217;output XML di Nmap nel suo database interno con il comando <code>db_import \/path\/to\/scan.xml<\/code> dalla console msf. Da quel momento, i comandi <code>hosts<\/code> e <code>services<\/code> 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.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Automatizzare audit periodici con cron.<\/strong> 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&#8217;output XML con data nel nome file e invia una diff via email se ci sono differenze rispetto alla settimana precedente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Zenmap per visualizzazione topologica.<\/strong> Zenmap, l&#8217;interfaccia grafica inclusa nell&#8217;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&#8217;architettura di rete in un report formale, o per identificare visivamente cluster di sistemi con configurazioni simili da analizzare insieme.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Script NSE personalizzati in Lua.<\/strong> NSE permette di scrivere script personalizzati per verificare policy aziendali specifiche. Uno script che controlla &#8220;tutti i server HTTPS devono supportare TLS 1.3 e rifiutare TLS 1.1&#8221; pu\u00f2 essere integrato nella pipeline CI\/CD. La struttura base di uno script NSE richiede un blocco <code>portrule<\/code> (quando eseguire lo script) e una funzione <code>action<\/code> (cosa fare). La documentazione ufficiale su nmap.org include un tutorial completo con esempi progressivi dalla scrittura al debug.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Nmap e NIS2: documentare la gestione delle vulnerabilit\u00e0.<\/strong> 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\u00e0 (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\u00e0 alle autorit\u00e0 competenti e, in caso di violazione, a ridurre l&#8217;entit\u00e0 delle sanzioni previste dalla direttiva.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"copertura-correlata\">Copertura correlata<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Per approfondire la sicurezza dell&#8217;infrastruttura che avete scansionato con Nmap:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"\/it\/chiavi-ssh-ed25519-hardening-server\/\">Chiavi SSH Ed25519: Hardening Server in 12 Step<\/a> &#8211; Proteggere la porta 22 dopo averla identificata con Nmap<\/li>\n<li><a href=\"\/it\/ssh-keygen-gestione-chiavi-tutorial\/\">ssh-keygen: Gestire le Chiavi SSH in 12 Step<\/a> &#8211; Generare e ruotare chiavi SSH sicure<\/li>\n<li><a href=\"\/it\/openssl-certificati-chiavi\/\">OpenSSL 3.5 LTS: Chiavi e Certificati in 12 Step<\/a> &#8211; Analizzare i certificati SSL rilevati con ssl-enum-ciphers<\/li>\n<li><a href=\"\/it\/web-application-firewall-modsecurity-nodejs\/\">WAF con ModSecurity e Node.js: 12 Step<\/a> &#8211; Difendere i servizi HTTP e HTTPS individuati durante la scansione<\/li>\n<li><a href=\"\/it\/burp-suite-tutorial\/\">Burp Suite: Test di Sicurezza Web in 12 Step<\/a> &#8211; Approfondire l&#8217;analisi degli endpoint HTTP\/HTTPS trovati con Nmap<\/li>\n<li><a href=\"\/it\/owasp-top-10-nodejs-2026\/\">OWASP Top 10 2025 in Node.js: 12 Difese<\/a> &#8211; Proteggere le applicazioni web esposte<\/li>\n<li><a href=\"\/it\/security\/\">Hub Sicurezza<\/a> &#8211; Tutta la copertura sulla sicurezza informatica<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"faq\">FAQ su Nmap<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Nmap 7.99 \u00e8 compatibile con Windows 11?<\/strong><br>S\u00ec. Nmap 7.99 supporta Windows 11 a condizione di installare Npcap versione 1.79 o superiore. L&#8217;installatore ufficiale scaricabile da nmap.org include Npcap nel pacchetto. Per scansioni SYN stealth (<code>-sS<\/code>) e rilevamento OS su Windows, \u00e8 obbligatorio eseguire Nmap come Amministratore. Su Windows 11, la funzione &#8220;Controlled folder access&#8221; di Windows Defender non interferisce con Nmap, ma il firewall di Windows potrebbe bloccare alcune sonde in uscita verso la rete locale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Qual \u00e8 la differenza tra -sS e -sT?<\/strong><br>La scansione SYN (<code>-sS<\/code>) invia un pacchetto SYN e, alla risposta SYN-ACK del server, invia immediatamente un RST invece di completare il three-way handshake. \u00c8 pi\u00f9 veloce, pi\u00f9 furtiva (non appare nei log delle applicazioni, solo nei log di sistema di livello pi\u00f9 basso) e richiede privilegi di root. La scansione connect (<code>-sT<\/code>) usa la chiamata di sistema <code>connect()<\/code> del sistema operativo, completando l&#8217;handshake TCP: pi\u00f9 lenta, compare nei log del server come connessione stabilita e chiusa, ma non richiede root.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Posso usare Nmap per scansionare siti web pubblici?<\/strong><br>No, senza autorizzazione esplicita del proprietario del server. Anche se un sito web \u00e8 accessibile pubblicamente via browser, il server che lo ospita \u00e8 di propriet\u00e0 di qualcun altro. Scansionare un server remoto senza permesso viola l&#8217;articolo 615-ter del Codice Penale italiano. L&#8217;unico target remoto che il progetto Nmap autorizza esplicitamente \u00e8 <strong>scanme.nmap.org<\/strong>, destinato a test leggeri e dimostrativi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Come posso proteggermi dalla scansione Nmap?<\/strong><br>Un firewall correttamente configurato (UFW, iptables o nftables su Linux) che blocca i pacchetti SYN in entrata sulle porte non utilizzate \u00e8 la difesa principale, rendendo la maggior parte delle porte <code>filtered<\/code>. Fail2ban pu\u00f2 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&#8217;oscurit\u00e0 ma non la sicurezza reale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Nmap rileva le vulnerabilit\u00e0 o le sfrutta?<\/strong><br>Nmap con gli script NSE della categoria <code>vuln<\/code> rileva le vulnerabilit\u00e0, non le sfrutta. Verifica se i pattern di risposta di un servizio corrispondono a vulnerabilit\u00e0 note senza tentare di usarle per accedere al sistema. Gli script della categoria <code>exploit<\/code> possono invece tentare di sfruttare vulnerabilit\u00e0 specifiche, ma vanno usati con estrema cautela e solo su sistemi su cui si ha autorizzazione scritta per i test di intrusione.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Quanto tempo richiede una scansione Nmap su una rete \/24?<\/strong><br>Con <code>-T4 -sS -p-<\/code> (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 (<code>-T4 -sS<\/code>), la stessa rete richiede 2-5 minuti. Aggiungere <code>-sV<\/code> triplica circa il tempo per il rilevamento versioni. L&#8217;host discovery (<code>-sn<\/code>) su una \/24 completa richiede generalmente meno di 30 secondi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Nmap e NIS2: le aziende italiane sono obbligate a usarlo?<\/strong><br>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\u00e0 (articolo 21). Le linee guida ACN per la conformit\u00e0 NIS2 indicano la scansione periodica di vulnerabilit\u00e0 come pratica raccomandata. Nmap non \u00e8 menzionato esplicitamente, ma rientra nella categoria degli strumenti di vulnerability management idonei a soddisfare questo requisito.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Come aggiornare Nmap all&#8217;ultima versione disponibile?<\/strong><br>Su Linux tramite il gestore di pacchetti della distribuzione (<code>sudo apt upgrade nmap<\/code> su Debian\/Ubuntu, <code>sudo dnf upgrade nmap<\/code> su Fedora\/RHEL). Su macOS con Homebrew: <code>brew upgrade nmap<\/code>. Su Windows, scaricare e rieseguire l&#8217;installatore dalla <a href=\"https:\/\/nmap.org\/download.html\" target=\"_blank\" rel=\"noopener noreferrer\">pagina download ufficiale di nmap.org<\/a>: l&#8217;installatore aggiorna Nmap e Npcap preservando le configurazioni esistenti. Verificare sempre la versione dopo l&#8217;aggiornamento con <code>nmap --version<\/code>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nmap rimane, nel 2026, lo strumento di riferimento assoluto per mappare reti, individuare porte aperte e misurare la superficie di attacco di un&#8217;infrastruttura. Dalla versione 7.99, rilasciata il 26 marzo\u2026<\/p>\n","protected":false},"author":3,"featured_media":281,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-280","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-security"],"_links":{"self":[{"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/posts\/280","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/comments?post=280"}],"version-history":[{"count":1,"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/posts\/280\/revisions"}],"predecessor-version":[{"id":282,"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/posts\/280\/revisions\/282"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/media\/281"}],"wp:attachment":[{"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/media?parent=280"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/categories?post=280"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/shattered.io\/it\/wp-json\/wp\/v2\/tags?post=280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}