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
libpcapper eliminare la risoluzione delle dipendenze esterne in ambienti ridotti all'osso. Quando usarlo: Alpine,debian:slim, o immagini di build personalizzate doveldconfignon trova oggetti condivisi. Rischi: Binario più grande, aggiornamenti di sicurezza più lenti per i componentilibpcap. Output atteso: Singolo binarionmapportatile senza dipendenzelddsulibpcap.soesterna.
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
USERimpediscono l'esecuzione come root. Rischi: Qualsiasi utente con permesso di esecuzione sul binario ottiene accesso a socket raw; verificare congetcap. Output atteso:-sSha successo senzasudo; verificare connmap -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:
-iLlegge target delimitati da newline;--excludee--excludefileimpediscono 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:
.nmaprcelimina 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 invocazionenmapdovrebbe defaultare a parametri sicuri. Rischi: Le impostazioni predefinite nascoste creano lacune di audit—documentare i contenuti di.nmaprcnella metodologia di scansione. Output atteso:nmap --helpnon rivela le impostazioni.nmaprcattive; usare--datadiro-vverbose 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.