Installazione, Modelli di Autorizzazione e Specifica del Target

Installazione della Piattaforma e Trappole Pratiche

Nmap funziona su tutte le piattaforme principali, ma i percorsi di installazione presentano frizioni significativamente diverse. Su Linux, preferire i pacchetti della distribuzione per la risoluzione delle dipendenze, anche se gli ambienti container e sandbox introducono fallimenti prevedibili.

Piattaforma Metodo tipico Trappola nota
Linux (Debian/Ubuntu) apt install nmap I pacchetti Snap limitano CAP_NET_RAW; usare .deb o compilare dai sorgenti
Linux (RHEL/Fedora) dnf install nmap I contesti SELinux possono bloccare le operazioni su socket raw; vedi sotto
macOS brew install nmap Il firewall PF di macOS può scartare silenziosamente pacchetti craftati; verificare con tcpdump
Windows Installer ufficiale Npcap vs. WinPcap: Npcap è mantenuto attivamente; WinPcap è deprecato e fallisce su Windows moderni
Container/sistemi minimi Compilazione dai sorgenti Richiesto il linking statico di libpcap; header mancanti nelle immagini -slim

Per la compilazione dai sorgenti, la Nmap Install Guide fornisce la procedura canonica. Verificare l'integrità utilizzando le firme distaccate GPG fornite—gli hash SHA-1 sono disponibili, anche se potreste preferire validare direttamente la firma GPG.

Lab: Compilare con libpcap condivisa (standard, funziona su Debian/Ubuntu complete):

./configure && make && sudo make install

Produzione (container): Link statico per evitare dipendenze runtime mancanti in immagini minimali:

./configure --with-libpcap=included && make && make install

Cosa fa: Incorpora libpcap per eliminare la risoluzione delle dipendenze esterne in ambienti ridotti all'osso. Quando usarlo: Alpine, debian:slim, o immagini di build personalizzate dove ldconfig non trova oggetti condivisi. Rischi: Binario più grande, aggiornamenti di sicurezza più lenti per i componenti libpcap. Output atteso: Singolo binario nmap portatile senza dipendenze ldd su libpcap.so esterna.

Privilegi, Capabilities e Modelli di Permesso

Il comportamento predefinito di Nmap dipende fortemente dal livello di privilegio. Molti tipi di scansione richiedono l'accesso a socket raw per creare pacchetti o leggere risposte raw.

Livello di privilegio Tipi di scansione disponibili Limitazione
root / sudo Tutti (SYN stealth, UDP, rilevamento OS, frammentazione) Accesso completo a socket raw
Utente non privilegiato TCP Connect scan (-sT), alcuni script NSE SYN stealth (-sS) non disponibile; il kernel gestisce il completo handshake TCP
Capability CAP_NET_RAW SYN stealth, operazioni su pacchetti raw Non richiede root completo; funziona con file capabilities o ambient capabilities nei container

Su Linux, concedere file capabilities per evitare l'esecuzione come root:

sudo setcap cap_net_raw,cap_net_admin=eip $(which nmap)

Cosa fa: Allega le Linux capabilities al binario Nmap, permettendo operazioni su socket raw senza setuid o sudo. Quando usarlo: Pipeline CI/CD, shell restrittive, o scansioni containerizzate dove le direttive USER impediscono l'esecuzione come root. Rischi: Qualsiasi utente con permesso di esecuzione sul binario ottiene accesso a socket raw; verificare con getcap. Output atteso: -sS ha successo senza sudo; verificare con nmap -sS -p 80 192.0.2.1.

I contesti SELinux su RHEL/CentOS/Fedora possono bloccare i socket raw anche con privilegi root. Controllare i messaggi avc: denied in audit.log e applicare un boolean mirato o un modulo policy personalizzato se le operazioni su pacchetti raw sono necessarie per flussi di lavoro di scansione autorizzati.

Sintassi di Specificazione dei Target

Nmap accetta target in più formati. Il parser è flessibile ma implacabile con la notazione ambigua.

# Singolo host
nmap 192.0.2.1

# Range CIDR
nmap 192.0.2.0/24

# Target discreti multipli
nmap 192.0.2.1 192.0.2.10 198.51.100.5

# Lista host da file
nmap -iL targets.txt

# Escludere host (critico per la conformità dello scope)
nmap 192.0.2.0/24 --exclude 192.0.2.1,192.0.2.2

# Escludere da file
nmap 192.0.2.0/24 --excludefile protected_hosts.txt

Cosa fa: -iL legge target delimitati da newline; --exclude e --excludefile impediscono la scansione di sistemi fuori scope o fragili. Quando usarlo: Definizione dello scope di penetration test, subnet di produzione con host sensibili noti (SCADA legacy, dispositivi medici), o ambienti segmentati con esclusioni change-control. Rischi: --exclude è solo lato client; un errore di battitura nella sintassi di esclusione scansiona proprio l'host che intendevate saltare. Output atteso: Nmap elenca i target esclusi all'avvio; verificare nelle prime righe di output.

IPv6 richiede abilitazione esplicita e sintassi adattata:

nmap -6 2001:db8::1
nmap -6 2001:db8::/64

Gli ambienti dual-stack richiedono attenzione: -6 forza solo IPv6; senza di esso, Nmap risolve i nomi host in IPv4 per impostazione predefinita. Per audit dual-stack, scansionare separatamente ciascun protocollo o utilizzare i controlli di risoluzione dei nomi. La notazione CIDR IPv6 funziona identicamente a IPv4, ma assicurarsi che la shell esci le parentesi quadre se si incorporano indirizzi letterali negli script.

Errori comuni:

Errore Perché fa male
nmap 192.0.2.1-100 Parsa come 192.0.2.1 fino a 192.0.2.100; se intendevate porte, usare -p 1-100
nmap 192.0.2.1/24 -p- senza --exclude Scansiona tutte le 65535 porte su ogni host, inclusa l'infrastruttura di rete di cui non siete proprietari
Dimenticare -6 su host solo-IPv6 Appare come "host down" quando il target semplicemente non ha record A
Spazi bianchi nei file -iL Spazi finali causano tentativi di risoluzione DNS su nomi non validi, con perdita di dati e rallentamento delle scansioni

File di Configurazione e Ottimizzazione Ambientale

Il file .nmaprc nella home directory applica impostazioni predefinite persistenti. È qui che si impone la disciplina di scansione: limiti di rate, liste di esclusione e comportamento preferito di risoluzione DNS.

# Esempio ~/.nmaprc
max-retries 2
max-rtt-timeout 500ms
max-scan-delay 20ms
dns-servers 192.0.2.53
exclude 127.0.0.1,10.0.0.0/8

Le variabili d'ambiente integrano questo: NMAP_PRIVILEGED=1 forza Nmap ad assumere di avere le capability per socket raw (utile quando il rilevamento delle capability fallisce nei container); NMAP_UNPRIVILEGED=1 fa l'opposto.

Cosa fa: .nmaprc elimina flag ripetitivi e previene la sovra-scansione accidentale codificando impostazioni conservative predefinite. Quando usarlo: Host jump multi-utente, workstation di contractor, o qualsiasi ambiente dove una semplice invocazione nmap dovrebbe defaultare a parametri sicuri. Rischi: Le impostazioni predefinite nascoste creano lacune di audit—documentare i contenuti di .nmaprc nella metodologia di scansione. Output atteso: nmap --help non rivela le impostazioni .nmaprc attive; usare --datadir o -v verbose per ispezionare le impostazioni applicate.

Quadri di Autorizzazione Legale

La scansione non autorizzata viola lo U.S. Computer Fraud and Abuse Act (CFAA), lo UK Computer Misuse Act, e legislazioni analoghe nella maggior parte delle giurisdizioni. Le policy di acceptable use degli ISP espongono inoltre alla terminazione del servizio. La documentazione ufficiale su legal issues di Nmap documenta casi risultanti in cause legali, licenziamento, espulsione e carcerazione.

L'autorizzazione scritta è non negoziabile. Una lettera di autorizzazione valida contiene:

Elemento Scopo
Parti nominate Chi è autorizzato a scansionare (individuo o organizzazione)
Range IP, nomi host o blocchi CIDR Scope tecnico esatto; l'ambiguità non giova a nessuno
Intervallo date e restrizioni orarie Previene difese "era un'autorizzazione vecchia"; rispetta le finestre di manutenzione
Tecniche consentite Port scanning, rilevamento versione, script NSE, o controlli vulnerabilità
Contatto emergenza Chi notificare in caso di comportamento inatteso o interruzione
Firmatario con autorità Capacità legale di concedere accesso alla rete target

Confini bug bounty: Gli scope delle piattaforme (HackerOne, Bugcrowd, ecc.) definiscono dinamicamente i target consentiti. Un wildcard *.example.com non autorizza scansioni di infrastruttura contro le reti corporate di example.com se non esplicitamente elencate. Verificare sempre la lista degli asset in-scope al momento della scansione; i programmi mutano.

⚠️ Solo uso autorizzato, difensivo. Le opzioni di rate-limiting e timing trattate più avanti in questa guida esistono per la validazione dei rilevamenti e il troubleshooting di rete, non per aggirare i confini di autorizzazione.

Una porta marcata filtered non è un risultato pulito—è una domanda senza risposta. Avete inviato una sonda, ricevuto nessuna risposta o un errore ICMP ambiguo, e ora detenete spazio negativo dove dovrebbe esserci uno stato. Quell'ambiguità è dove i rischi legali e tecnici si compongono: il probing aggressivo ripetuto contro porte filtered per forzare una risposta scala da ricognizione a potenziale denial-of-service, e la clausola di scope della vostra lettera di autorizzazione è ciò che separa il testing autorizzato dal manomissione criminale di rete.

Approfondimenti