<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: manhtml.xml 2940 2006-05-28 19:31:00Z lgrespan $ -->
<article id="man">
  <artheader>
    <title>Guida di riferimento di Nmap (pagina di manuale)</title>
  </artheader>

  <refentry id="man-nmap1">
    <refmeta>
      <refentrytitle>nmap</refentrytitle>

      <manvolnum>1</manvolnum>
    </refmeta>

    <refnamediv id="man-name">
      <refname>nmap</refname>

      <refpurpose>Strumento di network exploration e security / port
      scanner</refpurpose>
    </refnamediv>

    <!-- body begins here -->

    <refsynopsisdiv id="man-synopsis">
      <cmdsynopsis sepchar=" ">
        <command moreinfo="none">nmap</command>

        <arg choice="opt" rep="repeat">
          <replaceable>Tipo di Scansione</replaceable>
        </arg>

        <arg choice="opt" rep="norepeat">
          <replaceable>Opzioni</replaceable>
        </arg>

        <arg choice="req" rep="norepeat">
          <replaceable>Obbiettivo</replaceable>
        </arg>
      </cmdsynopsis>
    </refsynopsisdiv>

    <refsect1 id="man-description">
      <title>Descrizione</title>

      <para>Nmap (<quote>Network Mapper</quote>) e` uno strumento open source
      per la network exploration e l'auditing. E` stato progettato per
      scansionare rapidamente reti di grandi dimensioni, ma e` indicato anche
      per l'utilizzo verso singoli host. Nmap usa pacchetti IP raw (grezzi,
      non formattati) in varie modalita` per determinare quali host sono
      disponibili su una rete, che servizi (nome dell'applicazione e versione)
      vengono offerti da questi host, che sistema operativo (e che versione
      del sistema operativo) e` in esecuzione, che tipo di firewall e packet
      filters sono usati, e molte altre caratteristiche. Nonostante Nmap sia
      comunemente usato per audits di sicurezza, molti sistemisti e
      amministratori di rete lo trovano utile per tutte le attivita`
      giornaliere come ad esempio l'inventario delle macchine presenti in
      rete, per gestire gli aggiornamenti programmati dei servizi, e per
      monitorare gli host o il loro uptime.</para>

      <para>L'output di Nmap e` uno scan di un elenco di obbiettivi, con
      informazioni supplementari per ognuno a seconda delle opzioni usate. Tra
      queste informazioni e` vitale la <quote>tabella delle porte interessanti
      </quote>. Questa tabella elenca il numero della porta e il protocollo,
      il nome del servizio, e lo stato attuale. Lo stato puo` essere <literal
      moreinfo="none">open (aperto)</literal>, <literal
      moreinfo="none">filtered (filtrato)</literal>, <literal
      moreinfo="none">closed (chiuso)</literal>, o <literal
      moreinfo="none">unfiltered (non filtrato)</literal>. Aperto significa
      che vi e` sulla macchina obbiettivo un'applicazione in ascolto su quella
      porta per connessioni o pacchetti in entrata. <literal
      moreinfo="none">Filtrato</literal> significa che un firewall, un filtro
      o qualche altro ostacolo di rete sta bloccando la porta al punto che
      Nmap non riesce a distinguere tra <literal
      moreinfo="none">aperta</literal> o <literal
      moreinfo="none">chiusa</literal>. Le porte <literal
      moreinfo="none">chiuse</literal> non hanno alcuna applicazione in
      ascolto, anche se potrebbero aprirsi in ogni momento. Le porte vengono
      classificate come <literal moreinfo="none">non filtrate</literal> quando
      rispondono ad una scansione di Nmap, ma non e` stato possibile
      determinare se sono aperte o chiuse. Nmap mostra le combinazioni
      <literal moreinfo="none">aperta|filtrata</literal> e <literal
      moreinfo="none">chiusa|filtrata</literal> quando non puo` determinare
      quale dei due stati descrive una porta. La tabella delle porte puo`
      anche includere dettagli quali le versioni dei software disponibili se
      e` stata usata l'opzione appropriata. Quando viene richiesto una
      scansione IP (<option>-sO</option>), Nmap fornisce informazioni sui
      protocolli IP supportati anziche` sulle porte in ascolto.</para>

      <para>In aggiunta alla tabella delle porte notevoli, Nmap puo` fornire
      ulteriori informazioni sugli obbiettivi come ad esempio i nomi DNS
      risolti (reverse DNS names), il probabile sistema operativo in uso, il
      tipo di device e l'indirizzo fisico (MAC address).</para>

      <para>Una tipica scansione con Nmap e` mostrata su <xref
      linkend="man-ex-repscan" />. Le uniche opzioni usate di Nmap in questo
      esempio sono <option>-A</option>, per abilitare il detection del sistema
      operativo e della versione , <option>-T4</option> per un'esecuzione piu`
      rapida e infine i due host obbiettivi</para>

      <example id="man-ex-repscan">
        <title>Una scansione di esempio</title>

        <screen>
# nmap -A -T4 scanme.nmap.org playground

Starting nmap ( http://www.insecure.org/nmap/ )
Interesting ports on scanme.nmap.org (205.217.153.62):
(The 1663 ports scanned but not shown below are in state: filtered)
PORT    STATE  SERVICE VERSION
22/tcp  open   ssh     OpenSSH 3.9p1 (protocol 1.99)
53/tcp  open   domain
70/tcp  closed gopher
80/tcp  open   http    Apache httpd 2.0.52 ((Fedora))
113/tcp closed auth
Device type: general purpose
Running: Linux 2.4.X|2.5.X|2.6.X
OS details: Linux 2.4.7 - 2.6.11, Linux 2.6.0 - 2.6.11
Uptime 33.908 days (since Thu Jul 21 03:38:03 2005)

Interesting ports on playground.nmap.org (192.168.0.40):
(The 1659 ports scanned but not shown below are in state: closed)
PORT     STATE SERVICE       VERSION
135/tcp  open  msrpc         Microsoft Windows RPC
139/tcp  open  netbios-ssn
389/tcp  open  ldap?
445/tcp  open  microsoft-ds  Microsoft Windows XP microsoft-ds
1002/tcp open  windows-icfw?
1025/tcp open  msrpc         Microsoft Windows RPC
1720/tcp open  H.323/Q.931   CompTek AquaGateKeeper
5800/tcp open  vnc-http      RealVNC 4.0 (Resolution 400x250; VNC TCP port: 5900)
5900/tcp open  vnc           VNC (protocol 3.8)
MAC Address: 00:A0:CC:63:85:4B (Lite-on Communications)
Device type: general purpose
Running: Microsoft Windows NT/2K/XP
OS details: Microsoft Windows XP Pro RC1+ through final release
Service Info: OSs: Windows, Windows XP

Nmap finished: 2 IP addresses (2 hosts up) scanned in 88.392 seconds
</screen>
      </example>
    </refsect1>

    <refsect1 id="man-briefoptions">
      <title>Elenco delle opzioni</title>

      <para>Questo elenco delle possibili opzioni viene stampato quando Nmap
      viene eseguito senza argomenti; una versione aggiornata di questo elenco
      e` sempre disponibile sul sito <ulink
      url="http://www.insecure.org/nmap/data/nmap.usage.txt" />. E` utile per
      ricordarsi le opzioni piu` comuni ma non dev'essere inteso come
      un'alternativa alla documentazione approfondita presente in questa
      pagina di manuale. Alcune opzioni "oscure" non sono neanche incluse
      qui.</para>

      <para>
        <literallayout class="normal">Usage: nmap [Scan Type(s)] [Options] {target specification}
TARGET SPECIFICATION:
  Can pass hostnames, IP addresses, networks, etc.
  Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0-255.0-255.1-254
  -iL &lt;inputfilename&gt;: Input from list of hosts/networks
  -iR &lt;num hosts&gt;: Choose random targets
  --exclude &lt;host1[,host2][,host3],...&gt;: Exclude hosts/networks
  --excludefile &lt;exclude_file&gt;: Exclude list from file
HOST DISCOVERY:
  -sL: List Scan - simply list targets to scan
  -sP: Ping Scan - go no further than determining if host is online
  -P0: Treat all hosts as online -- skip host discovery
  -PS/PA/PU [portlist]: TCP SYN/ACK or UDP discovery probes to given ports
  -PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes
  -n/-R: Never do DNS resolution/Always resolve [default: sometimes resolve]
SCAN TECHNIQUES:
  -sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
  -sN/sF/sX: TCP Null, FIN, and Xmas scans
  --scanflags &lt;flags&gt;: Customize TCP scan flags
  -sI &lt;zombie host[:probeport]&gt;: Idlescan
  -sO: IP protocol scan
  -b &lt;ftp relay host&gt;: FTP bounce scan
PORT SPECIFICATION AND SCAN ORDER:
  -p &lt;port ranges&gt;: Only scan specified ports
    Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080
  -F: Fast - Scan only the ports listed in the nmap-services file)
  -r: Scan ports consecutively - don't randomize
SERVICE/VERSION DETECTION:
  -sV: Probe open ports to determine service/version info
  --version_light: Limit to most likely probes for faster identification
  --version_all: Try every single probe for version detection
  --version_trace: Show detailed version scan activity (for debugging)
OS DETECTION:
  -O: Enable OS detection
  --osscan_limit: Limit OS detection to promising targets
  --osscan_guess: Guess OS more aggressively
TIMING AND PERFORMANCE:
  -T[0-6]: Set timing template (higher is faster)
  --min_hostgroup/max_hostgroup &lt;msec&gt;: Parallel host scan group sizes
  --min_parallelism/max_parallelism &lt;msec&gt;: Probe parallelization
  --min_rtt_timeout/max_rtt_timeout/initial_rtt_timeout &lt;msec&gt;: Specifies
      probe round trip time.
  --host_timeout &lt;msec&gt;: Give up on target after this long
  --scan_delay/--max_scan_delay &lt;msec&gt;: Adjust delay between probes
FIREWALL/IDS EVASION AND SPOOFING:
  -f; --mtu &lt;val&gt;: fragment packets (optionally w/given MTU)
  -D &lt;decoy1,decoy2[,ME],...&gt;: Cloak a scan with decoys
  -S &lt;IP_Address&gt;: Spoof source address
  -e &lt;iface&gt;: Use specified interface
  -g/--source_port &lt;portnum&gt;: Use given port number
  --data_length &lt;num&gt;: Append random data to sent packets
  --ttl &lt;val&gt;: Set IP time-to-live field
  --spoof_mac &lt;mac address, prefix, or vendor name&gt;: Spoof your MAC address
OUTPUT:
  -oN/-oX/-oS/-oG &lt;file&gt;: Output scan results in normal, XML, s|&lt;rIpt kIddi3,
     and Grepable format, respectively, to the given filename.
  -oA &lt;basename&gt;: Output in the three major formats at once
  -v: Increase verbosity level (use twice for more effect)
  -d[level]: Set or increase debugging level (Up to 9 is meaningful)
  --packet_trace: Show all packets sent and received
  --iflist: Print host interfaces and routes (for debugging)
  --append_output: Append to rather than clobber specified output files
  --resume &lt;filename&gt;: Resume an aborted scan
  --stylesheet &lt;path/URL&gt;: XSL stylesheet to transform XML output to HTML
  --no_stylesheet: Prevent Nmap from associating XSL stylesheet w/XML output
MISC:
  -6: Enable IPv6 scanning
  -A: Enables OS detection and Version detection
  --datadir &lt;dirname&gt;: Specify custom Nmap data file location
  --send_eth/--send_ip: Send packets using raw ethernet frames or IP packets
  --privileged: Assume that the user is fully privileged
  -V: Print version number
  -h: Print this help summary page.
EXAMPLES:
  nmap -v -A scanme.nmap.org
  nmap -v -sP 192.168.0.0/16 10.0.0.0/8
  nmap -v -iR 10000 -P0 -p 80
</literallayout>
      </para>
    </refsect1>

    <refsect1 id="man-target-specification">
      <title>Target Specification</title>

      <para>Ogni cosa sulla linea di comando di Nmap che non e` un'opzione (o
      un argomento di un'opzione) e` considerato come una specifica di un host
      obbiettivo. Il caso piu` semplice consiste nello specificare
      semplicemente un indirizzo IP o un nome di host per la scansion</para>

      <para>A volte puo` essere utile scansionare un'intera rete di host
      adiacenti. Per questo, Nmap supporta l'indirizzamento CIDR. Si possono
      aggiungere /<replaceable>numero di bit</replaceable> a un indirizzo IP o
      a un nome di host e Nmap eseguira` la scansione su ogni indirizzo IP per
      il quale i primi <replaceable>numero di bit</replaceable> e` identico a
      quello specificato nell'IP o nel nome di host fornito. Ad esempio,
      192.168.10.0/24 eseguira` la scansione sui primi 256 host tra
      192.168.10.0 (in binario: <literal moreinfo="none">11000000 10101000
      00001010 00000000</literal>) e 192.168.10.255 (in binario: <literal
      moreinfo="none">11000000 10101000 00001010 11111111</literal>), estremi
      inclusi. 192.168.10.40/24 fa esattamente la stessa cosa. Dato che l'host
      scanme.nmap.org corrisponde all'indirizzo IP 205.217.153.62, la
      specifica scanme.nmap.org/16 eseguirebbe la scansione sui 65,536
      indirizzi IP tra 205.217.0.0 e 205.217.255.255. Il piu` piccolo valore
      permesso e` /1, che effettua la scansione su meta` Internet. Il valore
      maggiore e` 32, che effettua la scansione solo sull'host o sull'IP
      specificato poiche` tutti i bit di indirizzo sono fissati.</para>

      <para>La notazione CIDR e` breve ma non sempre abbastanza flessibile. Ad
      esempio, si potrebbe voler controllare 192.168.0.0/16 ma saltando
      qualsiasi IP termini con .0 o con .255 perche` sono usati generalmente
      come indirizzi di broadcast. Nmap supporta questa funzione attraverso
      l'indirizzamento per intervalli di ottetti. Anziche` specificare un
      normale indirizzo IP e` possibile speficiare una lista di valori o
      intervalli di valori separati da virgola. Ad esempio,
      192.168.0-255.1-254 saltera` tutti gli indirizzi nell'intervallo che
      termina per .0 o .255. Gli intervalli non devono necessariamente essere
      limitati agli ottetti finali: una specifica come 0-255.0-255.13.37
      effettuera` una scansione su tutta Internet per ogni indirizzo IP che
      termina per 13.37. Questa tipologia di campionamento puo` essere utile
      per ricerche e sondaggi su tutta la rete Internet.</para>

      <para>Indirizzi IPV6 possono essere indicati solo mediante il loro
      indirizzo IPv6 completo o il loro hostname. L'indirizzamento CIDR e gli
      intervalli di ottetti non sono supportati per IPv6 poiche` non vengono
      quasi mai usati.</para>

      <para>Nmap accetta piu` indirizzi di obbiettivi sulla linea di comando,
      ed essi non devono essere necessariamente indicati nello stesso modo. Il
      comando <command moreinfo="none">nmap scanme.nmap.org 192.168.0.0/8
      10.0.0,1,3-7.0-255</command> fa esattamente cio` che ci si
      aspetta.</para>

      <para>Mentre gli obbiettivi sono generalmente indicate sulla linea di
      comando, le seguenti opzioni sono disponibili per la selezione degli
      obbiettivi:</para>

      <variablelist>
        <varlistentry>
          <term><option>-iL &lt;inputfilename&gt;</option> (Input from
          list)</term>

          <listitem>
            <para>Legge gli obbiettivi da
            <replaceable>inputfilename</replaceable>. Inserire una grossa
            lista di host e` spesso scomodo sulla linea di comando, anche se
            spesso e` una necessita` comune. Ad esempio, un server DHCP
            potrebbe esportare un elenco di 10.000 leases che si potrebbero
            voler controllare. Oppure si vogliono controllare tutti gli
            indirizzi IP di una rete <emphasis>tranne</emphasis> quelli
            presenti nel DHCP per individuare eventuali IP statici non
            autorizzati. E` sufficiente generare la lista di host da
            controllare e passarla a Nmap come argomento dell'opzione
            <option>-iL</option>. Ogni elemento puo` essere in uno qualsiasi
            dei formati accettati da Nmap sulla linea di comando (indirizzo
            IP, nome dell'host, notazione CIDR, IPv6 o intervalli di
            indirizzi). Ogni elemento dev'essere separato da uno o piu` spazi,
            indentazioni (tabulazioni) o caratteri di a-capo. Si puo` usare un
            trattino (o segno di sottrazione) (<literal
            moreinfo="none">-</literal>) come nome di file se si vuole che
            Nmap legga gli host dallo standard input piuttosto che da un file
            esistente.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-iR &lt;num hosts&gt;</option> (Choose random
          targets)</term>

          <listitem>
            <para>Durante certe indagini su tutta Internet o altri tipi di
            ricerca si potrebbe desiderare di scegliere le obbiettivi in
            maniera casuale. L'argomento <replaceable>num hosts</replaceable>
            indica a Nmap quanti indirizzi IP generare. Gli indirizzi privati,
            multicast o in pool di indirizzi non allocati vengono
            automaticamente saltati. Si puo` specificare l'argomento <literal
            moreinfo="none">0</literal> per una scansione senza fine. Va
            ricordato che alcuni amministratori di rete non apprezzano
            scansioni non autorizzate delle loro reti e potrebbero lamentarsi.
            Usare questa opzione a proprio rischio e pericolo. Se in un
            pomeriggio piovoso ci si trova ad essere annoiati, si puo` provare
            questo comando <command moreinfo="none">nmap -sS -PS80 -iR 0 -p
            80</command> per trovare in maniera casuale dei server web sui
            quali navigare.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--exclude &lt;host1[,host2][,host3],...&gt;</option>
          (Exclude hosts/networks)</term>

          <listitem>
            <para>Questa opzione specifica un elenco, separato da virgola, di
            obbiettivi da escludere dalla scansione anche se sono parte
            dell'intervallo di rete specificato. La lista va specificata nella
            notazione usuale di Nmap, ovvero puo` includere nomi di host,
            blocchi di indirizzi specificati mediante notazione CIDR,
            intervalli di ottetti, etc. Questo puo` essere utile quando la
            rete che si vuole controllare include server intoccabili o di
            vitale importanza, sistemi che sono conosciuti per reagire in
            maniera negativa ad eventuali scansioni, o sottoreti amministrate
            da altra gente.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--excludefile &lt;exclude_file&gt;</option> (Exclude
          list from file)</term>

          <listitem>
            <para>Questa opzione offre le stesse funzionalita`
            dell'opzione<option>--exclude</option>, con la differenza che gli
            obbiettivi da escludere dalla scansione sono elencate in un
            <replaceable>exclude_file</replaceable> (separate da spazi
            bianchi, a-capo o tabulazioni) anziche` sulla linea di
            comando.</para>
          </listitem>
        </varlistentry>
      </variablelist>
    </refsect1>

    <refsect1 id="man-host-discovery">
      <title>Host Discovering (Ricerca di host)</title>

      <para>Uno dei primi passi in qualsiasi approccio di mappatura di una
      rete e` quello di ridurre un intervallo di indirizzi IP (talvolta di
      notevoli dimensioni) ad una lista di host attivi o interessanti. Uno
      scan di ogni porta di ogni singolo indirizzo IP e` lento e generalmente
      non necessario. Ovviamente cio` che rende un host interessante dipende
      in larga misura dalle motivazioni della scansione. Amministratori di
      rete possono essere interessati solo a host sui quali e` in esecuzione
      uno specifico servizio, mentre chi fa auditing di sicurezza e` piu`
      interessato a ogni singola periferica dotata di un indirizzo IP. Un
      sistemista puo` accontentarsi di semplici ping ICMP per trovare gli host
      sulla propria rete, ma un penetration tester esterno puo` dover usare un
      insieme di molti differenti probing (tentativi di scansione) per cercare
      di evitare le restrizioni imposte da un firewall.</para>

      <para>Poiche` le necessita` di host discovering sono cosi` diverse, Nmap
      offre una notevole varieta` di opzioni per la customizzazione delle
      tecniche usate. Il semplice host discovery e` spesso chiamato "ping
      scan", anche se va molto oltre il semplice pacchetto ICMP di echo
      request associato con il famoso strumento di <application
      moreinfo="none">ping</application>. Un utete puo` evitare il passaggio
      per l'utility "ping" usando una list scan (scansione di tipo lista:
      (<option>-sL</option>) o disabilitando il ping degli host
      (<option>-P0</option>), oppure mettendo alla prova la rete usando
      combinazioni arbitrarie di probe TCP SYN/ACK, UDP e ICMP su differenti
      porte. Lo scopo di questi approcci e` quello di sollecitare una risposta
      che dimostri l'esistenza di un host o di un apparecchio di rete con
      quell'indirizzo IP. In molte reti solo una piccola percentuale di
      indirizzi IP e` attiva in ogni momento, specialmente negli spazi di
      indirizzamento privati previsti dall'RFC1918 come ad esempio 10.0.0.0/8.
      Una rete di questo tipo ha 16 milioni di possibili IP, anche se e` di
      uso comune in aziende con meno di un migliaio di macchine. L'host
      discovery puo` trovare queste macchine in un mare di indirizzi IP non
      consecutivi.</para>

      <para>Se non viene fornita alcuna opzione di host discovery, Nmap manda
      di default un pacchetto TCP ACK alla porta 80 e una richiesta ICMP Echo
      Request ad ogni macchina obbiettivo. Un'eccezione a questo comportamento
      consiste nel fatto che uno scan ARP e` usato per tutti gli obbiettivi
      che sono in una rete ethernet locale. Se Nmap viene lanciato da un
      utente non privilegiato all'interno di un ambiente UNIX verra` usato un
      pacchetto SYN al posto dell'ACK mediante la chiamata di sistema
      <function moreinfo="none">connect()</function>. Queste opzioni di
      default sono equivalenti alle opzioni <option>-PA -PE</option>. Questo
      tipo di host discovery e` spesso sufficiente quando si deve effettuare
      una scansione su reti locali, anche se per un security auditing si
      raccomanda di usare un set di opzioni piu` avanzato.</para>

      <para>L'opzione <option>-P*</option> (che permette di scegliere il tipo
      di ping) puo` essere combinata. Si possono inoltre aumentare le
      probabilita` di bypassare firewall particolarmente restrittivi mandando
      molti tipi di probe diversi usando porte o flag TCP differenti e
      svariati codici ICMP. Inoltre si tenga presente che l'ARP discovery
      (<option>-PR</option>) viene effettuata di default all'interno di una
      rete locale, anche se vengono specificate altre opzioni
      <option>-P*</option>, poiche` e` quasi sempre piu` veloce ed
      efficiente.</para>

      <para>Di default Nmap lancia un host discovery e in seguito un port scan su tutti gli host che sono online. Questo approccio viene tenuto anche quando si specificano metodi non standard per l'host discovery come i probe UDP (<option>-PU</option>). Si consulti la spiegazione per l'opzione <option>-sP</option> per sapere come effettuare <emphasis>solo</emphasis> host discovery; si usi <option>-P0</option> per evitare l'host discovery e fare un portscan di tutti gli host di destinazione. Le seguenti opzioni controllano il comportamento dell'host
      discovery:</para>

      <variablelist>
        <varlistentry>
          <term><option>-sL</option> (List Scan)</term>

          <listitem>
            <para>La list scan e` una forma banale di host discovery che
            semplicemente elenca ogni host delle reti specificate, senza
            inviare alcun pacchetto agli host obbiettivo. Di default Nmap
            effettua una risoluzione inversa mediante DNS sugli host per
            ottenerne il nome completo. Spesso e` sorprendente vedere quante
            informazioni utili possono fornire dei semplici hostname. Ad
            esempio, <literal moreinfo="none">fw.chi.playboy.com</literal> e`
            il firewall per l'ufficio di Chicago della Playboy Enterprises.
            Nmap mostra anche il numero totale di indirizzi IP alla fine della
            scansione. La lista scan e` un buon controllo per essere sicuri di
            avere gli indirizzi IP corretti per la propria scansione. Se gli
            host mostrano nomi di dominio non conosciuti, vale la pena
            indagare oltre per evitare di scansionare la rete dell'azienda
            sbagliata.</para>

            <para>Poiche` l'idea e` quella di stampare semplicemente una lista
            di obbiettivi, le opzioni per funzionalita` di livello piu` alto
            (come ad esempio il port scanning, le indagini sul tipo di sistema
            operativo in esecuzione o il ping scan non possono essere
            combinate con questa. Se si vuole disabilitare il ping scan e
            mantenere allo stesso tempo la possibilita` di utilizzare
            funzionalita` di alto livello, si legga la sezione sull'opzione
            <option>-P0</option>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-sP</option> (Ping Scan)</term>

          <listitem>
            <para>Questa opzione indica a Nmap di effettuare
            <emphasis>solo</emphasis> un ping scan (ovvero un host discovery)
            e di mostrare gli host che hanno risposto. Nessun test aggiuntivo
            (come ad esempio port scan o OS detection) viene effettuato.
            Quest'azione e` un gradino piu` invadente della list scan, e puo`
            essere usata spesso per lo stesso scopo. Essa permette una
            mappatura di una rete obbiettivo senza attrarre molta attenzione.
            Sapere quanti host sono attivi e` piu` utile ad un attaccante
            rispetto ad una semplice list scan di ogni indirizzo IP e nome di
            host.</para>

            <para>&gt;Gli amministratori di sistemi trovano spesso questa
            opzione utile allo stesso modo. Puo` essere usata facilmente per
            enumerare le macchine disponibili in una rete o tenere sotto
            osservazione la disponibilita` di un singolo server. Questo
            approccio viene anche chiamato "ping sweep", ed e` piu` affidabile
            di un ping all'indirizzo broadcast poiche` molti host non
            rispondono alle richieste di questa categoria.</para>

            <para>L'opzione <option>-sP</option> invia di default un echo
            request ICMP e un pacchetto TCP alla porta 80. Quando viene
            eseguita da un utente non privilegiato, viene inviato un pacchetto
            SYN (usando la chiamata <function
            moreinfo="none">connect()</function> ) alla porta 80
            dell'obbiettivo. Quando invece un utente privilegiato prova ad
            effettuare una scansione all'interno di una rete locale, vengono
            usate richieste ARP (<option>-PR</option>) a meno che non venga
            specificata l'opzione <option>--send_ip</option>. L'opzione
            <option>-sP</option> puo` essere usata in combinazione con
            qualsiasi tipo di discovery probe (ovvero la famiglia di opzioni
            <option>-P*</option>, tranne <option>-P0</option>) per avere una
            migliore flessibilita`. Se viene usato uno qualsiasi di questi
            probe con opzioni sul numero di porta, allora i probe di default
            (ovvero ACK ed echo request) vengono annullati. Si raccomanda di
            usare queste tecniche evolute se ci sono dei firewall restrittivi
            tra l'host che lancia Nmap e le reti di destinazione, altrimenti
            le destinazioni potrebbero non essere raggiunte nel caso in cui il
            firewall dovesse bloccare i probe o le risposte a questi
            ultimi.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-P0</option> (No ping)</term>

          <listitem>
            <para>Questa opzione evita del tutto il passaggio di ricerca degli
            host di Nmap. Normalmente Nmap usa questo passaggio per trovare le
            macchine attive da sottoporre ad una scansione piu` approfondita.
            Di default, Nmap esegue un probing approfondito (come ad esempio
            un port scan, una version detection dei servizi o un Operating
            System detection) solo su quegli host che sono trovati attivi.
            Disabilitare l'host discovery attraverso l'opzione
            <option>-P0</option> obbliga Nmap a tentare la scansione richiesta
            su <emphasis>tutti</emphasis> gli host destinazione specificati.
            Quindi se si specifica sulla linea di comando una rete di
            destinazione di classe B (in CIDR /16) verranno sottoposti a
            scansione tutti i 65 535 indirizzi IP. Il secondo carattere
            nell'opzione <option>-P0</option> e` uno zero, non la lettera O. A
            differenza del list scan, nel quale l'host discovery viene
            saltato, anziche` interrompersi e mostrare la lista di
            destinazioni Nmap continua ad eseguire le funzioni richieste come
            se ogni IP di destinazione fosse attivo.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-PS [portlist]</option> (TCP SYN Ping)</term>

          <listitem>
            <para>Questa opzione invia un pacchetto TCP vuoto con il flag SYN
            attivo. La porta di destinazione di default e` la 80
            (configurabile durante la compilzione cambiando il parametro di
            define DEFAULT_TCP_PROBE_PORT nel file <filename
            moreinfo="none">nmap.h</filename>), ma in questo caso si puo`
            specificare un'altra porta come parametro. Si puo` anche
            specificare una lista di porte separata da virgola (ad esempio
            <option>-PS22,23,25,80,113,1050,35000</option>), nel cuo caso si
            tentera` un probe verso ogni porta in parallelo.</para>

            <para>Il flag SYN indica al sistema remoto che si sta tentando di
            stabilire una connessione. Normalmente la porta di destinazione
            dovrebbe essere chiusa, e un pacchetto di RST (reset) viene
            mandato indietro. Se la porta fosse aperta, il destinatario
            effettuera` il secondo passo della connessione TCP a tre vie
            (3-way-handshake) rispondendo con un pacchetto TCP SYN/ACK. La
            macchina che sta eseguendo Nmap interrompera` la connessione
            inviando un pacchetto RST al posto di mandare l'usuale pacchetto
            RST che completerebbe l'handshake e stabilirebbe una connessione
            completa. Il paccheto RST viene mandato dal kernel della macchina
            che sta eseguendo Nmap, non da Nmap stesso.</para>

            <para>A Nmap non interessa se la porta e` aperta o chiusa. In ogni
            caso l'RST o il SYN/ACK ricevuti indicano che l'host e`
            disponibile e risponde alle connessioni.</para>

            <para>Nelle macchine UNIX solo l'utente privilegiato <literal
            moreinfo="none">root</literal> generalmente e` abilitato all'invio
            e alla ricezione di pacchetti TCP "raw" (non formattati, grezzi).
            Per quanto riguarda gli utenti non privilegiati si deve ricorrere
            alla system call connect(), la quale viene lanciata su ogni porta
            di destinazione. Questo ha l'effetto di inviare pacchetti SYN
            all'host di destinazione come per stabilire una connessione. Se la
            connect() ritorna rapidamente con un messaggio di successo o con
            un messaggio di errore ECONNREFUSED significa che lo stack TCP
            sottostante deve aver ricevuto un SYN/ACK o un RST e l'host viene
            marcato come disponibile. Se il tentativo di connessione viene
            lasciato in sospeso fino al raggiungimento di un certo timeout
            l'host e` marcato come down o non disponibile. Questa scorciatoia
            si usa anche per le connessioni IPv6, poiche` la costruzione di
            pacchetti IPv6 raw non e` ancora supportata in Nmap.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-PA [portlist]</option> (TCP ACK Ping)</term>

          <listitem>
            <para>Il ping TCP ACK e` molto simile al ping SYN appena discusso.
            La differenza, come si puo` facilmente indovinare, consiste nel
            fatto che viene sollevato il flag TCP ACK al posto del SYN. Un
            tale paccketto ACK finge di confermare dei dati inviati in una
            connessione TCP gia` stabilita, anche se tale connessione non
            esiste. In questo modo un host remoto rispondera` sempre con un
            pacchetto RST, svelando cosi` la propria esistenza e il fatto che
            siano attivi.</para>

            <para>L'opzione <option>-PA</option> usa la stessa porta di
            default del SYN probe (ovvero la porta 80) e puo` ricevere in
            input un elenco di porte di destinazione nello stesso formato. Se
            un utente non privilegiato tenta quest'approccio, o se viene
            specificato un target IPv6, si usa la scorciatoia della connect()
            spiegata in precedenza. Questa strategia della connect() non e`
            ottimale perche` in ogni caso la connect() invia un paccketto SYN
            e non un ACK.</para>

            <para>La ragione per offrire entrambi i tipi di probe (SYN e ACK)
            e` quella di massimizzare le possibilita` di bypassare firewall.
            Molti amministratori configurano router e semplici firewall per
            bloccare pacchetti SYN in arrivo tranne quelli destinati a servizi
            pubblici come il sito web aziendale o il mail server. Questo
            impedisce ogni altro tipo di connessione in entrata garantendo al
            tempo stesso agli utenti di effettuare connessioni verso l'esterno
            senza incontrare ostacoli. Questo approccio "non-stateful"
            utilizza poche risorse sul firewall/router ed e` largamente
            supportato da filtri software e hardware. (per "non-stateful" si
            intende in questo caso la capacita` di un firewall di tenere
            traccia delle connessioni che lo attraversano, NdT). Il firewall
            di GNU/Linux conosciuto come Netfilter/iptables offre l'opzione
            <option>--syn</option> per implementare questo approccio
            "stateless". Quando un firewall implementa regole di questo tipo,
            un probe SYN (<option>-PS</option>) viene facilmente bloccato
            quando viene mandato ad una porta chiusa. In tali casi un probe
            ACK passa indisturbato come se non vi fossero quelle
            regole.</para>

            <para>Un altro tipo comune di firewall utilizza regole "stateful"
            che lasciano cadere ("drop") pacchetti non attesi. Questa
            caratteristica era inizialmente disponibile solo su firewall di
            fascia alta, anche se e` diventata sempre piu` comune nel corso
            degli anni. Il sistema Netfilter/iptables supporta questa mediante
            l'opzione <option>--state</option>, la quale marca pacchetti a
            seconda dello stato della connessione. Un probe SYN funzionera`
            piu` facilmente verso un tale sistema, poiche` pacchetti ACK non
            attesi sono generalmente riconosciuti come non validi e lasciati
            cadere. Una soluzione a questa situazione poco piacevole e` quella
            di inviare emtrambe le tipologie di probe specificando le opzioni
            <option>-PS</option> e <option>-PA</option>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-PU [portlist]</option> (UDP Ping)</term>

          <listitem>
            <para>Un'altra opzione di host discovery e` il ping UDP, il quale
            manda un pacchetto UDP vuoto alle porte indicate(a meno che non
            venga specificata l'opzione <option>--data_length</option>).
            L'elenco di porte va specificato nello stesso formato gia`
            discusso in precedenza nelle opzioni <option>-PS</option> e
            <option>-PA</option>. Se non si specifica alcuna porta viene usata
            la 31338 di default. Questo valore puo` essere impostato durante
            la compilazione cambiando il parametro DEFAULT_UDP_PROBE_PORT nel
            file <filename moreinfo="none">nmap.h</filename>. Si usa di
            default una porta poco comune perche` inviare dati ad una porta
            gia` aperta e` spesso non desiderabile per questo tipo particolare
            di scansione.</para>

            <para>Una volta raggiunta una porta UDP chiusa sulla macchina di
            destinazione, il probe UDP dovrebbe provocare un pacchetto ICMP di
            "port unreachable" (porta irraggiungibile). Questo indica a Nmap
            che l'host e` funzionante e disponibile. Altri tipi di pacchetti
            ICMP di errore, come ad esempio host o rete "unreachable" (non
            disponibile) o "TTL exceeded" (superato il tempo di vita del
            pacchetto) indicano un host non funzionante o irraggiungibile. Una
            mancanza di risposta viene interpretata alla stessa maniera. Se si
            raggiunge una porta aperta la maggior parte dei servizi
            semplicemente ignorano il pacchetto vuoto e non rimandano alcuna
            risposta. Questo spiega perche` il probe di default e` la porta
            31338, la quale si usa molto raramente. Pochi servizi, tra i quali
            "chargen", rispondono a un pacchetto UDP vuoto, rivelando cosi` a
            Nmap la disponibilita` della macchina in questione.</para>

            <para>Il vantaggio primario di questo tipo di scansione e` che
            riesce a bypassare firewall e filtri che controllano solo
            pacchetti TCP. Ad esempio, una volta avevo un router a banda larga
            wireless Linksys BEFW11S4. L'interfaccia esterna di questa
            periferica filtrava tutte le porte TCP di default, ma i probee UDP
            provocavano messaggi di "port unreachable" rivelando cosi`
            l'esistenza della device.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-PE</option>; <option>-PP</option>;
          <option>-PM</option> (ICMP Ping Types)</term>

          <listitem>
            <para>In aggiunta ai meno comuni tipi di host discovery TCP e UDP
            discussi in precedenza, Nmap puo` anche mandare i pacchetti
            standard come il famoso programma <application
            moreinfo="none">ping</application>. Nmap manda un pacchetto ICMP
            type 8 ("echo request") all'indirizzo IP di destinazione,
            aspettandosi un type 0 ("echo reply") di ritorno dagli host
            disponibili. Sfortunatamente per chi deve scoprire la topologia di
            una rete, molti host e firewall ora bloccano questo tipo di
            pacchetti anziche` rispondere come richiesto dall'<ulink
            url="http://www.rfc-editor.org/rfc/rfc1122.txt">RFC 1122</ulink>.
            Per questa ragione le scansione basate solo su ICMP sono raramente
            abbastanza affidabili nei riguardi di destinzioni sconosciute su
            Internet. Tuttavia per i sistemisti di rete che devono tenere
            sotto controllo una rete interna, esse possono essere un approccio
            pratico ed efficiente. Si usi l'opzione <option>-PE</option> per
            abilitare questo comportamento di echo request.</para>

            <para>Mentre la "echo request" e` la richiesta standard del ping
            ICMP, Nmap non si ferma qui. Lo standard ICMP (<ulink
            url="http://www.rfc-editor.org/rfc/rfc792.txt">RFC 792</ulink>)
            specifica inoltre i pacchetti "timestamp request", "information
            request" e "address mask request" (rispettivamente "richiesta di
            timestamp", ovvero data e ora, "richiesta di informazioni" e
            "richiesta della maschera di rete") mediante i codici ICMP 13, 15
            e 17. Mentre lo scopo dichiarato di questo tipo di richieste e`
            quello di sapere informazioni quali la maschera di rete e l'ora
            corrente, essi possono facilmente essere usati per l'host
            discovery. Un sistema che risponde e` funzionante e disponibile.
            Nmap non implementa allo stato attuale pacchetti di information
            request, poiche` in genere non sono supportati comunemente. L'RFC
            1122 specifica che <quote>un host NON DOVREBBE implementare questi
            messaggi</quote>. (il maiuscolo negli RFC indica comportamenti
            precisi). Il timestamp (data e ora) e le richieste di maschera di
            rete possono essere inviate rispettivamente mediante le opzioni
            <option>-PP</option> e <option>-PM</option>. Una risposta di tipo
            timestamp (codice ICMP 14) o di tipo address mask (codice 18)
            rivela che un host e` disponibile. Queste due richieste possono
            essere utili qualora un amministratore dovesse bloccare i
            pacchetti di "echo request" ma dimenticarsi che altre query ICMP
            possono essere usate per lo stesso scopo.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-PR</option> (ARP Ping)</term>

          <listitem>
            <para>Una delle situazioni piu` comuni di utilizzo di Nmap e` la
            scansione di una LAN ethernet. Nella maggior parte delle LAN,
            specialmente quelle in cui viene usato il benedetto intervallo di
            indirizzi privati specificato dall'RFC1918, la maggior parte degli
            indirizzi IP e` inutilizzato. Quando Nmap prova ad inviare
            pacchetti IP raw come le "echo request" ICMP, il sistema operativo
            deve determinare l'indirizzo hardware (ARP) corrispodente
            all'indirizzo IP di destinzione, in modo da poter indirizzare
            correttamente il frame Ethernet. Questo e` spesso lento e
            problematico, in quanto i sistemi operativi non sono stati scritti
            prevedendo di dover fare milioni di richieste ARP verso host
            inesistenti in un breve lasso di tempo.</para>

            <para>L'ARP scan lascia a Nmap e ai suoi algoritmi ottimizzati
            l'incarico delle richieste ARP. Nel caso in cui si riceva una
            risposta, Nmap non si deve neanche preoccupare dei ping basati su
            ICMP perche` a questo punto sa gia` che l'host e` raggiungibile.
            Questo rende l'ARP scan molto veloce e molto piu` affidabile delle
            normali scansioni basate su IP. Questo e` il comportamento di
            default quando si deve effettuare uno scan su host che Nmap
            riconosce come presenti nella rete locale. Anche se vengono
            specificati differenti tipi di ping (come <option>-PI</option> o
            <option>-PS</option>), Nmap usa comunque ARP per ogni target che
            e` sulla stessa LAN. Se non si vuole assolutamente un ARP scan,
            specificare l'opzione <option>--send_ip</option>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-n</option> (No DNS resolution)</term>

          <listitem>
            <para>Indica a Nmap di <emphasis>non effettuare mai</emphasis> una
            risoluzione inversa del nome mediante DNS sull'indirizzo IP
            rilevato. Poiche` il DNS e` spesso lento, questo rende l'intero
            processo di scansione piu` veloce.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-R</option> (DNS resolution for all targets)</term>

          <listitem>
            <para>Indica a Nmap di effettuare <emphasis>sempre</emphasis> la
            risoluzione inversa dei nomi mediante DNS. Generalmente questo
            viene effettuato solo quando un host viene rilevato come
            attivo.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--system-dns</option> (Use system DNS resolver)</term>

          <listitem>
            <para>Di default Nmap risolve gli indirizzi IP mandando richieste
            direttamente ai name servers (server dei nomi) configurati sulla
            macchina su cui e` in esecuzione Nmap. Molte richieste (spesso
            dell'ordine delle dozzine) sono effettuate in parallelo per
            migliorare le performance. Si specifichi quest'opzione se si vuole
            usare il proprio DNS (richiedendo un indirizzo IP alla volta
            usando la system call getnameinfo() ). Questo e` piu` lento e
            raramente utile a meno che non ci sia un bug nel codice di
            risoluzione dei nomi di Nmap -- per favore si contattino gli
            sviluppatori se questo e` il caso. Il resolver di sistema e`
            sempre usato per le scansioni su IPv6.</para>
          </listitem>
        </varlistentry>



<varlistentry>
        <term>
          <option>--dns-servers &lt;server1[,server2],...&gt;
          </option> (Server da usare per le reverse DNS query)
        </term>
        <listitem>
          <indexterm significance="normal"><primary>--dns-servers</primary></indexterm>

          <para>Di default Nmap cerchera` di determinare i server DNS da usare per le reverse query usando il file resolv.conf (UNIX) o il registro (Win32). In alternativa si puo` usare quest'opzione per indicare server alternativi. Tuttavia quest'opzione viene ignorata nel caso si specifichi anche <option>--system-dns</option> o una scansione IPv6. L'uso di piu` server DNS e` spesso piu` veloce e meno visibile rispetto all'uso di un unico server DNS. Le performance migliori si ottengono spesso specificando tutti i server DNS authoritative per lo spazio IP di destinazione.</para>

        </listitem>
      </varlistentry>


	
      </variablelist>
    </refsect1>

    <refsect1 id="man-port-scanning-basics">
      <title>Fondamenti di port scanning</title>

      <para>Nonostante Nmap nel corso degli anni abbia ampliato le proprie
      funzionalita`, inizio` come un port scanner e tale resta la sua funzione
      di base. Il semplice comando <command moreinfo="none">nmap
      <replaceable>target</replaceable></command> effettua una scansione si
      piu` di 1660 porte TCP sull'host <replaceable>target</replaceable>.
      Mentre molti port scanner considerano tutte le porte chiuse o aperte,
      Nmap e` molto piu` preciso. Divide le porte in sei categorie o stati:
      <literal moreinfo="none">open</literal> (aperta), <literal
      moreinfo="none">closed</literal> (chiusa), <literal
      moreinfo="none">filtered</literal> (filtrata), <literal
      moreinfo="none">unfiltered</literal> (non filtrata), <literal
      moreinfo="none">open|filtered</literal> (aperta|filtrata), o <literal
      moreinfo="none">closed|filtered</literal> (chiusa|filtrata).</para>

      <para>Questi stati non sono proprieta` intrinseche delle porte stesse,
      ma descrivono come Nmap le vede. Ad esempio, uno scan Nmap proveniente
      dalla stessa rete nella quale risiede l'obbiettivo puo` mostrare la
      porta 135/tcp come aperta, mentre una scansione nello stesso momento con
      gli stessi parametri ma proveniente da Internet puo` mostrare quella
      stessa porta come <literal moreinfo="none">filtered</literal>.</para>

      <variablelist>
        <title>I sei stati nei quali Nmap classifica le porte</title>

        <varlistentry><term>open</term> (aperta) <listitem>
            <para>Un'applicazione accetta attivamente su questa porta
            connessioni TCP o UDP. La ricerca di questo tipo di porte e`
            spesso l'obbiettivo primario del port scanning. Chi si dedica alla
            sicurezza sa che ogni porta aperta e` una strada verso un attacco.
            Gli attaccanti e i tester di sicurezza (penetration testers,
            conosciuti anche come "pen-testers", NdT) hanno come obbiettivo
            quello di trovare e trarre vantaggio dalle porte aperte, mentre
            d'altro canto gli amministratori di rete e i sistemisti provano a
            chiuderle o a proteggerle con firewall senza limitare gli utenti
            autorizzati al loro uso. Le porte aperte sono anche interessanti
            per le tutta una serie di scansioni non indirizzate unicamente
            alla sicurezza, perche` mostrano che servizi sono disponibili in
            una rete.</para>
          </listitem></varlistentry>

        <varlistentry><term>closed</term> (chiusa) <listitem>
            <para>Una porta chiusa e` accessibile (riceve e risponde ai
            pacchetti di probe di Nmap) ma non vi e` alcuna applicazione in
            ascolto su di essa. Esse possono rendersi utili nel mostrare che
            un host e` attivo su un indirizzo IP (durante l'host discovery o
            il ping scanning) o in quanto parte integrante dell'Operating
            System discovery. Poiche` una porta chiusa e` raggiungibile, puo`
            essere interessante effettuare una scansione piu` tardi nel caso
            alcune vengano aperte. Chi amministra una macchina o una rete puo`
            voler bloccare tali porte con un firewall - ed in questo caso esse
            apparirebero come filtrate, come mostrato in seguito.</para>
          </listitem></varlistentry>

        <varlistentry><term>filtered</term> (filtrata) <listitem>
            <para>In questo caso Nmap non puo` determinare con esattezza se la
            porta sia aperta o meno, perche` un filtro di pacchetti impedisce
            ai probe di raggiungere la porta. Questo filtro puo` esser dovuto
            a un firewall dedicato, alle regole di un router, o a un firewall
            software installato sulla macchina stessa. Queste porte forniscono
            poche informazioni e rendono frustrante il lavoro dell'attaccante.
            A volte esse rispondono con un messaggio ICMP del tipo 3, codice
            13 ("destination unreachable: communication administratively
            prohibited", ovvero "destinazione non raggiungibile: comunicazione
            impedita da regole di gestione"), ma in genere sono molto piu`
            comuni i filtri di pacchetti che semplicemente ignorano i
            tentativi di connessione senza rispondere. Questo obbliga Nmap a
            riprovare diverse volte, semplicemente per essere sicuri che il
            pacchetto non sia stato perduto a causa di una congestione di rete
            o di problemi simili piuttosto che dal firewall o dal filtro
            stesso. Questo riduce drammaticamente la velocita` della
            scansione.</para>
          </listitem></varlistentry>

        <varlistentry><term>unfiltered</term> (non filtrata) <listitem>
            <para>Lo stato "unfiltered" indica che una porta e` accessibile,
            ma che Nmap non e` in grado di determinare se sia aperta o chiusa.
            Solo la scansione di tipo ACK, usata per trovare e classificare le
            regole di un firewall, posiziona una porta in questo stato. Una
            scansione di porte in questo stato ("non filtrate") mediante altri
            tipi di scansione come il Window scan (scan per finestre di
            connessione), il SYN scan o il FIN scan aiuta a determinare se la
            porta sia aperta o chiusa.</para>
          </listitem></varlistentry>

        <varlistentry><term>open|filtered</term> (aperta|filtrata) <listitem>
            <para>Nmap posiziona le porte in questo stato quando non e` in
            grado di determinare se una porta sia aperta o filtrata. Questo
            accade in quelle scansioni per le quali una porta aperta non
            risponde in alcun modo. La mancanza di informazioni puo`
            significare inoltre che un filtro di pacchetti ha lasciato cadere
            ("drop") il probe o qualsiasi risposta sia stata generata in
            seguito a questo. Scansioni che classificano porte in questo stato
            sono le scansioni IP, UDP, FIN, Null, e Xmas.</para>
          </listitem></varlistentry>

        <varlistentry><term>closed|filtered</term> (chiusa|filtrata) <listitem>
            <para>Questo stato e` usato quando Nmap non e` in grado di
            determinare se una porta sia chiusa o filtrata. Esso viene usato
            solo per l'IPID Idle scan.</para>
          </listitem></varlistentry>
      </variablelist>
    </refsect1>

    <refsect1 id="man-port-scanning-techniques">
      <title>Tecniche di Port Scanning</title>

      <para>Un neofita inesperto che cerca di aggiustarsi l'automobile puo`
      arrovellarsi per ore cercando di usare i pochi strumenti che ha
      (martello, nastro isolante, pinza, eccetera) per cio` che deve fare. Una
      volta che si e` arreso dopo l'ennesimo fallimento e si e` deciso a
      portare il proprio veicolo da un vero meccanico, ecco che questi
      inevitabilmente si mette a cercare in una gigantesca cassetta degli
      attrezzi estraendone il "coso" perfetto per fare quel lavoro senza
      alcuno sforzo. L'arte del port scanning e` molto simile. Chi e` esperto
      capisce e conosce tutte le tecniche e sceglie quella appropriata (o una
      combinazione appropriata) per un certo lavoro. Utenti inesperti o script
      kiddes, d'altro canto, provano a risolvere ogni problema con la
      scansione SYN di default. Poiche` Nmap e` free (in lingua inglese
      significa sia "libero" che "gratuito", e per questo e` lasciato
      inalterato, NdT) l'unico limite alla capacita` di fare port scanning e`
      solo la conoscenza. Questo lo rende sicuramente piu` accessibile del
      mondo delle automobili, dov'e` richiesta non solo una notevole abilita`
      per sapere che serve uno specifico strumento, ma e` anche necessario
      andarselo a comprare.</para>

      <para>La maggior parte delle scansioni e` disponibile solo per gli
      utenti privilegiati. Questo e` dovuto al fatto che esse inviano e
      ricevono pacchetti "raw" (non formattati o "grezzi", ovvero semplici
      stringhe di bit), i quali richiedono accesso di root su sistemi UNIX.
      L'uso di un account di amministrazione su Windows e` raccomandato,
      nonostante Nmap a volte funzioni anche per gli utenti non privilegiati
      quando WinPcap e` gia` stato caricato nel sistema operativo. Nel 1997,
      quando Nmap venne rilasciato, la necessita` di avere privilegi di root
      era una seria limitazione perche` molti utenti avevano solo accesso ad
      account su macchine che davano semplici shell non privilegiate. Ora il
      mondo e` cambiato: i computer sono piu` economici, molta piu` gente ha
      una connessione a Internet diretta e sempre attiva, e i sistemi UNIX per
      desktop (includendo tra questi macchine Linux o OS X) sono ormai la
      maggioranza tra gli UNIX. Per tutte queste ragioni gli utenti hanno
      sempre meno necessita` di usare Nmap da account limitati - il che non fa
      che migliorare la situazione, poiche` le opzioni privilegiate fanno di
      Nmap uno strumento molto piu` potente e flessibile.</para>

      <para>Nonostante Nmap faccia del proprio meglio per produrre risultati
      accurati, si tenga in mente che tutte le sue conclusioni sono basate su
      pacchetti che tornano indietro dalle macchine di destinazione (o dai
      firewall che le proteggono). Tali host possono essere inaffidabili o
      ritornare risposte mirate proprio a confondere e sviare Nmap. Sono molto
      piu` comuni inoltre host che non rispettano gli RFC e che non rispondono
      come dovrebbero ai tentativi di connessione di Nmap. Scansioni come FIN,
      Null e Xmas sono particolarmente suscettibili a questo problema. Tali
      problematiche sono specifiche a certi tipi di scansione ed in quanto
      tali vengono discusse nelle sezioni individuali ad esse dedicate.</para>

      <para>Questa sezione documenta le molteplici tecniche di port scanning
      supportate da Nmap. Si puo` usare solo un metodo per volta, a parte
      l'UDP scan (<option>-sU</option>) che puo` essere combinato con con uno
      qualsiasi dei TCP scan. Per ricordarsi le varie opzioni di port scan,
      esse sono della forma <option>-s<replaceable>C</replaceable></option>,
      dove <replaceable>C</replaceable> e` un carattere significativo del nome
      della scansione - in genere il primo. L'unica eccezione a questa regola
      generale e` il cosiddetto "FTP bounce scan" che viene tuttavia
      sconsigliato (opzione <option>-b</option>). Di default Nmap effettua un
      SYN scan, usando la syscall connect() se l'utente non ha privilegi
      sufficienti per mandare pacchetti raw (che richiede accesso di root su
      UNIX), o se e` stato richiesto uno scan su obbiettivi su IPv6. Di tutte
      le scansioni elencate di seguito, gli utenti non privilegiati possono
      solo effettuare scansioni mediante connect() e "FTP bounce".</para>

      <variablelist>
        <varlistentry>
          <term><option>-sS</option> (TCP SYN scan)</term>

          <listitem>
            <para>La SYN scan e` l'opzione di default ed e` la piu` usata per
            buone ragioni. Puo` essere effettuata velocemente: effettua la
            scansione su migliaia di porte al secondo su una rete veloce non
            limitata da firewall intrisivi. La SYN scan e` relativamente poco
            invasiva e nascosta, poiche` non completa mai connessioni TCP
            complete. Funziona inoltre con ogni stack TCP compatibile e non
            dipende sulle idiosincrasie di piattaforme specifiche come fanno
            gli altri tipi di scan di Nmap quali Fin/Null/Xmas, Maimon e Idle
            scan. Inoltre permette una differenziazione chiara ed affidabile
            tra le porte appartenenti agli stati <literal
            moreinfo="none">open</literal> (aperta) , <literal
            moreinfo="none">closed</literal>, e <literal
            moreinfo="none">filtered</literal> (filtrata).</para>

            <para>Questa tecnica e` spesso indicata come "scanning
            semi-aperto" (tradotto letteralmente per esigenze di comprensione,
            da "half-open scanning", NdT), perche` non viene aperta una
            connessione TCP completa. Viene mandato un pacchetto SYN come se
            si fosse sul punto di aprire una connessione reale e si attende
            una risposta. Un SYN/ACK indica che la porta e` in ascolto
            (aperta), mentre un RST (reset) indica che la porta non e` in
            ascolto. Se non viene ricevuta nessuna risposta dopo diverse
            ritrasmissioni la porta viene marcata come filtrata. La porta
            viene marcata come tale anche se viene ricevuto un pacchetto di
            errore "ICMP unreachable" (tipo 3, codici 1, 2, 3, 9, 10,
            13).</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-sT</option> (TCP connect() scan)</term>

          <listitem>
            <para>La scansione di tipo TCP connect() e` la scansione TCP di
            default dove la scansione SYN non e` un'opzione viabile. Questo e`
            il caso in cui un utente non ha privilegi sull'invio di pacchetti
            "raw" o se si sta lavorando su reti IPv6. Anziche` scrivere
            pacchetti "raw" come in molti altri tipi di scansioni, Nmap
            richiede al sistema operativo sottostante di stabilire una
            connessione con la macchina di destinazione invocando la chiamat
            di sistema <literal moreinfo="none">connect()</literal>. Questo e`
            la stessa chiamata di alto livello invocata per stabilire una
            connessione da browser web, client p2p e molte altre applicazioni
            orientate all'utilizzo in rete. Essa e` parte dell'interfaccia di
            programmazione conosciuta come Berkeley Sockets API. Anziche`
            inviare pacchetti "raw" direttamente sul cavo, Nmap usa questa API
            per ottenere informazioni sullo stato di ogni tentativo di
            connessione.</para>

            <para>Quand'e` possibile il SYN scan e` generalmente una scelta
            migliore. Nmap ha meno controllo sulla syscall <literal
            moreinfo="none">connect()</literal> rispetto ai pacchetti "raw",
            rendendolo quindi piu` efficiente in quest'ultimo caso. La syscall
            completa le connessioni alle porte aperte specificate anziche`
            limitarsi al reset dovuto alla scansione semi-aperta del SYN scan.
            Non solo questo approccio mediante connect() richiede un tempo
            maggiore e piu` pacchetti per ottenere le stesse informazioni, ma
            le macchine obbiettivo sono piu` propense a memorizzare la traccia
            (log) della connessione. Inoltre un IDS (Intrusion Detection
            System, sistema di controllo delle intrusioni) decente se ne
            accorgera`. Tuttavia la maggior parte delle macchine non hanno
            tali sistemi di allarme. Molti servizi sui propri sistemi UNIX
            standard aggiungeranno una nota al syslog, e a volte un messaggio
            di errore criptico, quando Nmap si connette e chiude la
            connessione senza inviare dati di alcun tipo. Solo alcuni patetici
            servizi andranno in crash in queste condizioni, nonostante non sia
            comune. Un amministratore che dovesse vedere un insieme di
            tentativi di connessioni provenienti da un singolo sistema sapra`
            infine che e` vittima di un connect scan.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-sU</option> (UDP scans)</term>

          <listitem>
            <para>Mentre i servizi piu` comuni su Internet girano attraverso
            il protocollo TCP, i servizi <ulink
            url="http://www.rfc-editor.org/rfc/rfc768.txt">UDP</ulink> sono
            altrettanto diffusi. DNS, SNMP e DHCP (sulle porte registrate 53,
            161/162 e 67/68) sono tre dei piu` comuni. Poiche` lo scan su UDP
            e` generalmente piu` lento e piu` difficoltoso di quello su TCP,
            alcuni esaminatori di sicurezza ("security auditors") ignorano
            questo tipo di porte. Cio` e` un errore, poiche` i servizi UDP
            vulnerabili sono abbastanza comuni e un attaccante sicuramente non
            ignorera` completamente questo protocollo. Fortunatamente Nmap
            puo` aiutare ad enumerare le porte UDP.</para>

            <para>Lo scan UDP si attiva con l'opzione <option>-sU</option>.
            Esso puo` essere combinato con uno scan di tipo TCP come ad
            esempio un SYN scan (<option>-sS</option>) per controllare
            entrambi i protocolli nel corso della stessa sessione.</para>

            <para>Lo scan UDP funziona inviando pacchetti UDP vuoti (senza
            dati ma formati solo dall'intestazione) ad ogni porta di
            destinazioe. Se viene ritornato un errore ICMP di "port
            unreachable" (tipo 3, codice 3) significa che la porta e` <literal
            moreinfo="none">closed</literal> (chiusa). Altri errori ICMP di
            tipo "unreachable" (irraggiungibile) come quelli del tipo 3,
            codici 1, 2, 9, 10 o 13 andranno ad identificare la porta come
            <literal moreinfo="none">filtered</literal> (filtrata). Talvolta
            un servizio rispondera` con un pacchetto UDP, dimostrando quindi
            che lo stato della porta e` <literal
            moreinfo="none">open</literal> (aperta). Se non viene ricevuta
            alcuna risposta dopo alcune ritrasmissioni, la porta viene
            classificata come <literal moreinfo="none">open|filtered</literal>
            (aperta|filtrata). Questo significa che la porta puo` essere
            aperta o che probabilmente un filtro di pacchetti sta bloccando la
            comunicazione. I version scan (<option>-sV</option>) possono
            essere usati per aiutare a differenziare le porte veramente aperte
            da quelle che sono filtrate.</para>

            <para>La sfida maggiore con l'UDP scan e` la velocita`. Le porte
            aperte e filtrate raramente inviano qualche risposta, lasciando
            Nmap in timeout e facendolo ritrasmettere per evitare il caso in
            cui il probe o la risposta sia andato perduto. Le porte chiuse
            sono spesso un problema ancora maggiore: esse generalmente
            rimandano un pacchetto ICMP di "port unreachable error", ma a
            differenza dei pacchetti RST rimandati dalle porte chiuse TCP come
            rispota ad un SYN o Connect scan, molti host limitano il tasso di
            invio di tali pacchetti di default. Linux e Solaris sono
            particolarmente restrittivi da questo punto di vista. Ad esempio,
            il kernel 2.4.20 limita i messaggi di "destination unreachable" a
            uno al secondo (definito in <filename
            moreinfo="none">net/ipv4/icmp.c</filename>).</para>

            <para>Nmap si accorge di questi limiti sulla frequenza di invio e
            rallenta l'invio dei probe in maniera dinamica, per evitare di
            intasare la rete con pacchetti inutili che la macchina di
            destinazione ignorera` comunque. Sfortunatamente, un limite come
            quello di Linux di un pacchetto al secondo rende una scansione su
            65 535 porte di una durata teorica di piu` di 18 ore. Suggerimenti
            per rendere piu` veloce gli UDP scan sono quelli di effettuare
            scansioni su piu` host in parallelo, o di fare uno scan veloce
            preliminare sulle porte piu` usate, o ancora di effettuare la
            scansione dall'interno del firewall, e infine di usare l'opzione
            <option>--host_timeout</option> per evitare host troppo lenti nel
            rispondere.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-sN</option>; <option>-sF</option>;
          <option>-sX</option> (TCP Null, FIN, and Xmas scans)</term>

          <listitem>
            <para>Queste tre tipologie di scansione (e molte altre sono
            possibili con l'opzione <option>--scanflags</option> descritta
            nella prossima sezione) sfruttano una piccola vulnerabilita` nell'
            <ulink url="http://www.rfc-editor.org/rfc/rfc793.txt">RFC del
            protocollo TCP</ulink> per distinguere tra le porte <literal
            moreinfo="none">open</literal> (aperte) e <literal
            moreinfo="none">closed</literal> (chiuse). A pagina 65 si dice che
            <quote> se lo stato della porta [di destinazione] e` CHIUSO ... un
            segmento in arrivo che non contiene un RST causera` l'invio di un
            RST in risposta. </quote> La pagina successiva discute di
            pacchetti inviati a porte aperte senza i bit di SYN, RST o ACK
            impostati, indicando che: <quote>questa situazione e` decisamente
            improbabile, ma se dovesse capitare i segmenti vanno ignorati e si
            deve ritornare [alla funzione chiamante, NdT] </quote></para>

            <para>Quando si scansionano sistemi aderenti a questo testo RFC,
            qualunque pacchetto che non contenga i bit di SYN, RST, o ACK
            causera` un RST di ritorno se la porta e` chiusa e nessuna
            risposta se la porta e` aperta. Finche` questi tre bit sono
            inclusi, qualunque combinazione di questi tre bit (FIN, PSH, e
            URG) va bene. Nmap sfrutta questi tre tipi di scan:</para>

            <variablelist>
              <varlistentry>
                <term>Null scan (<option>-sN</option>)</term>

                <listitem>
                  <para>Non manda nessun bit (il tcp flag header e` 0)</para>
                </listitem>
              </varlistentry>

              <varlistentry>
                <term>FIN scan (<option>-sF</option>)</term>

                <listitem>
                  <para>Setta solo il FIN.</para>
                </listitem>
              </varlistentry>

              <varlistentry>
                <term>Xmas scan (<option>-sX</option>)</term>

                <listitem>
                  <para>setta FIN, PSH, e URG, accendendo il pacchetto come un
                  albero di natale.</para>
                </listitem>
              </varlistentry>
            </variablelist>

            <para>Questi tre tipi di scan sono esattamente identici nel
            comportamento ad eccezione delle attivazioni dei tre bit nei
            pacchetti TCP usati per la verifica delle porte. Se viene ricevuto
            un pacchetto RST, la porta e` considerata chiusa, mentre l'assenza
            di risposta indica che la porta e` aperta o filtrata. La porta e`
            marcata come filtrata se viene ricevuto un pacchetto ICMP
            unreachable (tipo 3, codice 1, 2, 3, 9, 10, o 13).</para>

            <para>Il vantaggio sostanziale di questi tipi di scan e` che
            possono penetrare in certi non-stateful firewalls e packet
            filtering routers. Un altro vantaggio e` che questi tipi di
            scansione sono un po` piu' invisibili anche dei SYN scan. In ogni
            caso non e` corretto fare cieco affidamento su questo, gran parte
            dei moderni prodotti IDS possono essere configurati in modo da
            rilevarli. Il grande svantaggio e` che non tutti i sistemi seguono
            alla lettera la RFC 793. Un buon numero di sistemi manda risposte
            RST ai pacchetti di controllo indipendentemente dal fatto che le
            porte siano aperte o chiuse. Questo causa il fatto che tutte le
            porte appaiano come chiuse. I piu' diffusi sistemi operativi che
            fanno questo sono Microsoft Windows, molti apparati Cisco, BSDI, e
            IBM OS/400. Questo scan funziona applicato alla maggior parte dei
            sistemi UNIX. Un altro svantaggio di questi scan e` che non
            riescono a distinguere una porta aperta da quelle filtrate, dando
            la risposta di <literal
            moreinfo="none">open|filtered</literal>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-sA</option> (TCP ACK scan)</term>

          <listitem>
            <para> Questo scan e` diverso dagli altri scan discussi fino ad
            ora dal momento che non serve per determinare se le porte sono
            aperte (o aperte|filtrate). E' usato per mappare le regole di
            firewalling determinando se sono stateful o no e quali porte sono
            filtrate.</para>

            <para>I pacchetti dell' ACK scan hanno soltanto la flag ACK
            abilitata (a meno che non si usi <option>--scanflags</option>).
            Mentresi scansionano sistemi non filtrati, sia le porte aperte che
            le porte chiuse manderanno pacchetti RST. Nmap poi le cataloga
            come non filtrate, nel senso che e` possibile raggiungerle con un
            pacchetto ACK, ma che siano aperte o chiuse non e` determinabile.
            Le porte che non rispondono, o mandano certi errori ICMP (tipo 3,
            codice 1, 2, 3, 9, 10, o 13), sono etichettate come
            filtrate<literal moreinfo="none" />.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-sW</option> (TCP Window scan)</term>

          <listitem>
            <para>Il window scan e` esattamente la stessa cosa di ACK scan, ad
            eccezione del fatto che sfrutta un dettaglio di implementazione di
            certi sistemi per differenziare le porte aperte e quelle chiuse,
            invece di scrivere sempre non filtrata quando ritorna un RST. Lo
            fa esaminando il campo TCP Windowdel pacchetto RST che ritorna. In
            alcuni sistemi le porte aperte usano una grandezza della finestra
            positiva (anche per i pacchetti RST), mentre nelle porte chiuse la
            grandezza della finestra e` zero. Quindi, invece di catalogare
            sempre le porte come non filtrate quando si riceve un RST di
            ritorno, il Window scan lista le porte come aperte o chiuse a
            seconda che il valore in quel RST (reset) e` positivo o pari a
            zero rispettivamente.</para>

            <para>Questo scan fa affidamento a un dettaglio implementativo di
            una minoranza di sistemi presenti in internet, segue che questo
            non e` sempre affidabile. Nei sistemi in cui questo dettaglio
            implementativo non sussiste, di norma lo scan segnalera` tutte le
            porte chiuse. Sicuramente sara` possibile che la macchina non
            abbia realmente nessuna porta aperta. Se la maggior parte delle
            porte e` chiusa, e alcune porte comuni appaiono filtrate, il
            sistema e` quasi sicuramente suscettibile a questo tipo di scan.
            Occasionalmente, alcuni altri sistemi presenteranno un
            comportamento esattamente opposto. Se lo scan risulta in 1000
            porte aperte e 3 chiuse, allora quelle saranno con ogni
            probabilita` proprio quelle aperte.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-sM</option> (TCP Maimon scan)</term>

          <listitem>
            <para>Il Maimon scan e` stato nominato cosi` in onore al suo
            scopritore, Uriel Maimon. Egli descrisse questa tecnica
            nell'articolo #49 della rivista Phrack (Novembre 1996). Nmap, che
            incluse questa tecnica, fu rilasciato due articoli dopo. Questa
            tecnica esattamente uguale ai Null, FIN e Xmas scan, ad eccezione
            del fatto che i pacchetti di scansione sono FIN/ACK. In accordo
            con la RFC 793 (TCP), un pacchetto RST dovrebbe venir generato in
            risposta a tale stimolo. Ad ogni modo, Uriel noto` che in molti
            sistemi derivati da BSD il pacchetto veniva scartato se la porta
            era aperta.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--scanflags</option> (Custom TCP scan)</term>

          <listitem>
            <para>Gli utilizzattori molto avanzati di Nmap hanno necessita` di
            non limitarsi semplicemente ad utiulizzare le scansioni tipiche
            offete. L'opzione <option>--scanflags</option> consente di
            designare una scansione personalizzata specificando
            arbitrariamente i flag TCP necessari. Liberate la vostra
            inventiva, ed evitate cosi` che i vendor di Intrusion Detection
            Systems trovino nuove regole da aggiungere ai loro sistemi
            semplicemente sfogliando la "Man Page" di Nmap!</para>

            <para>I parametri dell'opzione <option>--scanflags</option>
            possono essere un valore numerico indicante i falg TCP, come ad
            esepio 9 (PSH e FIN). L'utilizzo di nomi simbolici risulta
            comunque piu` semplice. Una combinazione di <literal
            moreinfo="none">URG</literal>, <literal
            moreinfo="none">ACK</literal>, <literal
            moreinfo="none">PSH</literal>, <literal
            moreinfo="none">RST</literal>, <literal
            moreinfo="none">SYN</literal>, e <literal
            moreinfo="none">FIN</literal>. Per esempio, <option>--scanflags
            URGACKPSHRSTSYNFIN</option> imposta tutti i flag, anche se non
            risulta multo utilie al fine della scansione. L'ordine con cui
            vengono specificati non e` rilevante.</para>

            <para>Oltre allo specificare i falg desidearti, e` possibile
            indicare uno tipo di scansione TCP (come <option>-sA</option> o
            <option>-sF</option>). Questo specifica come Nmap deve
            interpretare le risposte. Per esempio, un "SYN scan" considera la
            mancanza di risposta come una ad indicare la porta <literal
            moreinfo="none">filtered</literal>, mentre un "FIN scan"
            interpreta lo stesso comportamento per identificare una porta
            <literal moreinfo="none">open|filtered</literal>. Nmap si
            comportera` nello stesso modo che per la scansione normale, tranne
            che per il fatto di interpretare i flag TCP che sono stati
            diveramente specificarti. Se non viene indicata una diverso tipo
            di cansione, viene automaticamente utilizzata la "SYN
            scan".</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-sI &lt;zombie host[:probeport]&gt;</option>
          (Idlescan)</term>

          <listitem>
            <para>Questo metodo di scansione avanzato permette di effettuare
            una scansione TCP completamente invisibile dell'obiettivo (ovvero
            nessun pacchetto viene inviato dall'indirizzo IP reale da cui si
            sta effettuando la scansione.) Viene diversamente utilizzato un
            unico attacco parallelo che utilizza la predicibilita` dell'ID
            relativo alla sequanza di frammentazione generato dallo "Zombie"
            per ottenere informazioni sulle porte aperte. I sistemi IDS
            intrepreteranno la scansione come se provenisse dalla macchina
            "Zombie" specificata (e che deve rispondere a certi criteri).
            Questa affascinante tecnica di scansione e` troppo complessa per
            essere descritta a fondo in questa guida, per questa ragione ho
            scritto e reso pubblico un documento informale contenente tutti i
            dettagli al seguente url: <ulink
            url="http://nmap.org/book/idlescan.html" />.</para>

            <para>Oltre che essere straodrinariamente nascosto (grazie alla
            sua natura "invisibile"), questo tipo di scansione permette di
            creare una mappa indicante le relazioni tra le macchine da un
            punto di vista dell'indirizzo IP. I risultati dalla scansione
            mostrano le porte aperte <emphasis>dalla prospettiva
            dell'indirizzo IP della macchina "Zombie".</emphasis> Risulta
            cosi` possibile effettuare scansioni utilizzando diversi "Zombie"
            che si ritiene possano attraversare router o sistemi con packet
            filter.</para>

            <para>E' possibile aggiungere i due punti seguiti dal numero di
            porta per l'host Zombie, se si vuole sondare una particolare porta
            per vedere i cambiamenti nell'IPID. Diversamente Nmap utilizzera`
            the porta che utilizza di default per i ping TCP (80).</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-sO</option> (IP protocol scan)</term>

          <listitem>
            <para>"IP Protocol" permette di determinare che protocolli IP
            (TCP, ICMP, IGMP, etc.) sono supportati dalla macchine su cui
            viene effettuata la scansione. Non e` "Tecnicamente" un port scan,
            dato che utilizza i numeri indicanti il protocollo IP e non i
            numeri di porta TCP o UDP. Utilizza comunque ancora l'opzione
            <option>-p</option> per scegliere il protocollo da scansionare e
            riporta i risultati nel normale formato della tabella delle porte,
            ed utilizza lo stesso engine sottostante al port scanning reale.
            Per questo motivo e` profondamente analogo ad un port scan e viene
            trattato in questa sezione.</para>

            <para>Oltre che essere intrinsicamente utile, il protocol scan
            dimostra la potenza del software open source. Per quanto l'idea
            fondamentale e` abbastanza semplice, non immaginavo di aggiungerla
            fino a quando non avessi ricevuto richieste per questa
            funzionalita`, Nell'estate del 2000, Gerhard Rieger concepi`
            l'idea e scrisse un'eccellente patch che la implementasse,
            spedendola poi alla mailing list nmap-hackers. Io incorporai
            questa patch in Nmap e ne rilasciai una nuova versione il giorno
            seguente. Alcuni software commerciali ebbero clienti talmente
            soddisfatti da contribuire allo sviluppo di questa tecnica con i
            loro miglioramenti!</para>

            <para>La "Protocol Scan" funziona in modo simile all'UDP Scan.
            Invece di agire sul campo "port number" del pacchetto UDP, invia
            un pacchetto contenente negli 8 bit dell'header IP relativi al
            protocollo. Questi headers sono tipicamente vuoti, non contengo
            dati e nemmeno l'header proprietario del protocollo dichiarato. Le
            tre eccezioni sono: TCP, UDP e ICMP. Un header valido per queste
            eccezioni viene incluso perche`, diversamente, alcuni sistemi non
            li invierebbero e perche` Nmap e` gia` provvisto di funzioni per
            crearli. Invece che cercare un messaggio di "ICMP port
            unreachable", la "Protocol Scan" e` alla ricerca di un messaggio
            "ICMP <emphasis>protocol</emphasis> unreachable". Se Nmap riceve
            una qualunque risposta di qualunque protocollo dall'Host
            scansionato, Nmap lo indica tale protocollo come <literal
            moreinfo="none">open</literal>. Un errore "ICMP protocol
            unreachable" (tipo 3, codice 2) fa si` che il protocollo sia
            indicato come <literal moreinfo="none">closed</literal>. Altri
            errori di tipo "ICMP unreachable" (tipo 3, codice 1, 3, 9, 10, or
            13) fanno classificare il protocollo come <literal
            moreinfo="none">filtered</literal> (Denotando, contestualmente,
            che il protocollo ICMP e` <literal
            moreinfo="none">open</literal>). Se non viene ricevuta alcuna
            risposta, il protocollo e` identificato come <literal
            moreinfo="none">open|filtered</literal>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-b &lt;ftp relay host&gt;</option> (FTP bounce
          scan)</term>

          <listitem>
            <para>Un'interessante caratteristica del protocollo FTP (<ulink
            url="http://www.rfc-editor.org/rfc/rfc959.txt">RFC 959</ulink>) e`
            il supporto per le cosi` chiamate "proxy ftp connections". Cio`
            permette all'utente di connettersi al server FTP e richiedere che
            il file sia inviato ad un differente FTP server. Tale
            caratteristica si presta per vare tipologie di abuso, cosicche`
            molti server hanno smesso di supportarla. Uno degli abusi
            nell'utilizzo di questa peculiarita` e` la possibilita` far
            effettuare al server FTP un port scan verso altri host. Basta
            semplicemente richiedere al server FTP di inviare un file ad
            ognuna delle porte che vogliamo scansionare Il messaggio di errore
            ci permettera` di dedurre se la porta e` aperta o meno. Questo e`
            un'ottimo modo per aggiare i firewall in quanto gli FTP aziendali
            sono spesso posizionati nella rete cosi` da poter accedere a piu`
            host interni di quanto sia possibile fare da Internet. Nmap
            supporta la "ftp bounce scan" attraverso l'optione
            <option>-b</option>. I parametri per tale opzione devono
            rispettare il formato:
            <replaceable>username</replaceable>:<replaceable>password</replaceable>@<replaceable>server</replaceable>:<replaceable>port</replaceable>.
            Dove: <replaceable>Server</replaceable> e` l'hostname o
            l'indirizzo IP di un FTP server vulnerabile a questo attacco. Come
            in una URL normale, e` possibile omettere
            <replaceable>username</replaceable>:<replaceable>password</replaceable>,
            ed in tal caso verranno utilizzate credinziali anonime (user:
            <literal moreinfo="none">anonymous</literal> password:<literal
            moreinfo="none">-wwwuser@</literal>). Il numero di porta (ed i due
            punti che lo precedono) possono essere altresi` omessi, in tal
            caso viene utilizzata la porta FTP di default (21) per la
            connessione al <replaceable>server</replaceable>.</para>

            <para>Questa vulnerabilita` e` stata diffusa nel 1997 quando Nmap
            e` stato rilasciato, ma e` stata risolta su gran parte dei
            sistemi. Esistno alcuni server ancora vulnerabili, ed ha senso
            provare ad utilizzarla quando ogni altra cosa fallisce. Se
            l'obiettivo e` oltrepassare un firewall, e` necessario effettuare
            una scansione sulla rete cercando di trovare la porta 21 aperta (o
            anche cercando un servizio FTP su di una qualsiasi porta,
            utilizzando la "Version Detection") e provare quindi un "FTP
            Bounce Scan" su ognuno dei server individuati. Nmap sara` in grado
            di evidenziare se un host e` vulnerabile o meno a questa tecnica.
            Se si sta cercando semplicemente di nascondere le tracce, non vi
            e` bisogno (e di fatto non si dovrebbe) di limitare la scansione
            alla rete che realmente ci interessa. Prima di iniziare ad
            effettuare scansioni su indirizzi Internet casuali e` bene tenere
            presente che gli amministratori di sistema potrebbero non
            apprezzare che i loro server siano soggetti a tali abusi.</para>
          </listitem>
        </varlistentry>
      </variablelist>
    </refsect1>

    <refsect1 id="man-port-specification">
      <title>Port Specification e Scan Order</title>

      <para>Oltre a tutti i metodi discussi in precedenza, Nmap offre la
      possibilita` di specificare che porte devono essere scansionati e se
      l'ordine delle porte da scansionare deve essere casuale oppure
      sequenziale. Per defalult Nmap effettua la scansione di tutte le porte
      fino alla 1024 inclusa e le porte superiori indicate nel file <filename
      moreinfo="none">nmap-services</filename> relative ai protocolli
      interessati dalla scansione.</para>

      <variablelist>
        <varlistentry>
          <term><option>-p &lt;port ranges&gt;</option> (Only scan specified
          ports)</term>

          <listitem>
            <para>Questa opzione permette di ignorare le impostazioni di
            default e di specificare quali porte si vogliono scansionare. E'
            possibile indicare i singoli numeri delle porte, cosi` come gli
            intervalli, indicati da un trattino (per esempio 1-1023). I primo
            e/o l'ultimo valore di un intervallo puo` essere omesso, facendo
            si` che Nmap utilizzi rispettivamente 1 e 65535. E' quindi
            possibile utilizzare l'opzione <option>-p-</option> per effettuare
            la scansione delle porte da 1 a 65535. E' possibile effettuare
            scansioni sulla porta zero se viene espressamente specificato. Nel
            caso di un "IP Protocol Scan" (<option>-sO</option>), questa
            opzione indica il numero di protocollo che si desidera scansionare
            (0-255).</para>

            <para>Quando si effettua una scansione di porte sia TCP che UDP,
            e` possibile specificare un protocollo particolare anteponendo al
            numero di porta <literal moreinfo="none">T:</literal> o <literal
            moreinfo="none">U:</literal>. Tale indicazione risulta valida sino
            a che non ne viene indicata un'altra. Per esempio, l'opzione
            <option>-p U:53,111,137,T:21-25,80,139,8080</option> effettua una
            scansione delle porte 53, 111 e 137, sia per il protocollo UDP che
            TCP. Si noti che per effettuare una scansione su entrambi i
            protocolli UDP &amp; TCP, e` necessario specificare l'opzione
            <option>-sU</option> e almeno un metodo di "TCP Scan" (Come
            <option>-sS</option>, <option>-sF</option>, o
            <option>-sT</option>). Se non viene indicato nulla, i numeri di
            porta vengono aggiunti a tutte le liste dei protocolli.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-F</option> (Fast (limited port) scan)</term>

          <listitem>
            <para>Indica che si intende effettuare la scansione delle sole
            porte indicate nel file <filename
            moreinfo="none">nmap-services</filename> che viene fornito con
            Nmap. (Oppure utilizzando i file di protocollo indicati con
            l'opzione <option>-sO</option>). Questo risulta molto piu` rapido
            che non controllare tutte le 65535 porte su di un Host. Dato che
            la lista contine comunque molte porte TCP (piu` di 1200) non vi e`
            molta differenza rispetto ad una scansione TCP di defalut (circa
            1650 porte). La differenza risulta essere enorme se si utilizza un
            file <filename moreinfo="none">nmap-services</filename> creato
            appositamente. Per indicare tale file si utilizza l'opzione
            <option>--datadir</option>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-r</option> (Don't randomize ports)</term>

          <listitem>
            <para>Per default, Nmap effettua la scansione delle porte in
            ordine casuale, (eccetto che per certe porte comuni che vengono
            controllate tra le prime per motivi di efficenza). La scansione
            delle porte in ordine casuale e` tipicamente un vantaggio, ma e`
            possibile utilizzare l'opzione <option>-r</option> cosi` da
            effettuare i controlli in ordine sequenziale.</para>
          </listitem>
        </varlistentry>
      </variablelist>
    </refsect1>

    <refsect1 id="man-version-detection">
      <title>Service e Version Detection</title>

      <para>Utilizzando Nmap e dirigendo la scansione su una macchina remota
      e` possible scoprire che le porte 25/tcp 80/tcp, and 53/udp sono aperte.
      Utilinzando il suo database di circa 2200 servizi noti, contenuto nel
      file <filename moreinfo="none">nmap-services</filename>, Nmap
      probabilmente sara` in grado di indicare che ti tratta rispettivamente
      di un Mail Server (SMTP), si un web server (HTTP), e di un name server
      (DNS). Tale riconoscimento e` solitamente accurato -- la maggior parte
      di demoni in ascolto sulla porta 25 sono, in effetti, Mail Server. Non
      si comunuqe opportuno fidarsi ciecamente di tali indicazioni! E' infatti
      possibile erogare servizi su porte non convenzionali.</para>

      <para>Anche se le indicazioni di Nmap sono corrette, e gli ipotetici
      server sopracitati sono effettivamente SMTP, HTTP e DNA, queste
      informazioni non sono esaustive. Quando si eseguono dei "vulnerability
      assessments" (o anche semplicemente un inventario della rete) della
      vostra societa` o di clienti, e` interessante sapere esattamente di che
      mail e DNS server si tratta e quale versione e` in uso. Conoscere
      accuratamente la versione del software e` di fondamentale importanza per
      derminare a quali exploits e` vulnerabile il server. "Version Detection"
      e` di grande aiuta nel ricercare queste informazioni.</para>

      <para>Al momento dell'identificazione delle porte TCP e/o UDP da parte
      di uno dei vari metodi di scansione, il "Version Detection" interroga
      queste porte per rilevare ulteriori dati sui servizi erogati. Il
      database contenuto nel file <filename
      moreinfo="none">nmap-service-probes</filename> contiene instruzioni per
      interrogare i vari servizi e per intepretarne le risposte. Nmap cerca
      quindi di terminare di che servizio si tratta (Es.: ftp, ssh, telnet,
      http), di che applicazione (Es.: ISC, Bind, Apache httpd, Solaris
      telnetd), la versione, l'hostname, il tipo di device, la famiglia del
      sistema operativo (Es.: Windows, Linux...) e spesso altri dettagli come
      l'apertura di un X server alle connessioni, la versione del protocollo
      SSH, o l'untenza utilizzata da KaZaA. Ovviamente la maggior parte dei
      serivizi non rilasciano tutte queste informazioni, ma se NMap viene
      copilato il supporto per OpenSSL, sara` in grado di connettersi ai
      server SSL per dudurre quale tipo di servizio viene offerto dietro al
      suo "Encryption Layer". Quando i servizi RPC vengono identificati, Nmap
      e` in grado di raffinare quanto rilevato (<option>-sR</option>) cosi` da
      riconoscere versione e nome del servizio RPC. Alcune delle porte UDP
      vengono indicate come <literal moreinfo="none">open|filtered</literal>
      se un "UDP Port Scan" non e` in grado di derminare con precisione se la
      porta e` open o filtered. "Version Detection" cerchera` di ottenere una
      risposta da queste porte (esattamente come per le porte aperte), e
      modifichera` lo stato in "Open" se ci riuscira`. Le porte <literal
      moreinfo="none">open|filtered</literal> vengono trattate nello stesso
      modo. Bisogna tener presente che l'opzione <option>-A</option> abilita,
      fra le varie cose, il Version Detection. E' disponibile un documento sul
      funzionamento e sull'utilizzo nonche` sulla personalizzazione del
      "Version Detection" e` disponibile al seguente indirizzo: <ulink
      url="http://www.insecure.org/nmap/vscan/" />.</para>

      <para>Quando Nmap riceve delle risposte da un Servizio ma non e` in
      grado di trovarne una iterpretazione nel suo database, visualizza una
      particolare "FingerPrint" e una URL per permettere di inviare quanto
      rilevato nel caso si conosca a priori che cosa sta effettivamente
      girando su quella porta. E' importante perdere qualche minuto per
      effettuare l'invio di questi dati quando possibile perche` cosi` facendo
      chiunque in futuro potra` benificiare dei dati raccolti e riconoscere
      anche questo serizio. Grazie a questo sistema Nmap e` in grado di
      identificare circa 3.000 differenti varianti per piu` di 350 protocolli
      come smtp, ftp, http, ecc.</para>

      <para>"Version Detection" viene attivato e controllato dalle seguenti
      opzioni:</para>

      <variablelist>
        <varlistentry>
          <term><option>-sV</option> (Version detection)</term>

          <listitem>
            <para>Abilita il "Version Detection", come precedentemente
            illustrato. In alternativa, e` possibile utilizzare l'opzione
            <option>-A</option> per attivare sia "OS Detection" che "Version
            Detection".</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--allports</option> (Non esclude alcuna porta dal
          Version Detection)</term>

          <listitem>
            <para>Normalmente, il Version Detection di Nmap non invia
            pacchetti alla porta TCP 9100 poiche` alcune stampanti accettano e
            stampano direttamente qualunque dato ricevuto su questa porta. Se
            tale porta fosse sottoposta a scansione, verrebbero stampate
            decine di pagine contenenti richieste HTTP get, puri dati binari,
            sessioni SSL e via discorrendo. E' possibile cambiare il
            comportamento del Version Detection di NMap con la modifica o la
            rimozione della direttiva <literal
            moreinfo="none">Exclude</literal> nel file <filename
            moreinfo="none">nmap-service-probes</filename> oppure specificando
            l'opzione <option>--allports</option> cosi` da effettuare la
            scansione di tutte le porte, indipendentemente da quanto indicato
            nella direttiva <literal moreinfo="none">Exclude</literal>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--version_intensity &lt;intensity&gt;</option>
          (Imposta l'accuratezza del Version Scan)</term>

          <listitem>
            <para>Quando si effettua un Version Scan (<option>-sV</option>),
            NMap invia una serie di pacchetti-sonda, ognuno delle quali ha
            assegnato un valore compreso tra 1 e 9. I pacchetti con valore
            piu` basso sono in grado di riconoscere i servizi comunemente
            diffusi, mentre quelli con valori piu` alti sono raramente
            necessari. Il livello di accuratezza specifica quali
            pacchetti-sonda devono essere impiegati; piu` alto e` il livello,
            piu` e` probabile che il servizio venga correttamente
            identificato. D'altro canto, piu` una scansione e` accurata e piu`
            tempo sara` necessario. I valori devono essere compresi tra 1 e 9;
            il valore di default e` 7. Quando viene assegnato direttamente un
            pacchetto-sonda ad una porta utilizzando la direttiva <literal
            moreinfo="none">ports</literal> nel file <filename
            moreinfo="none">nmap-service-probes</filename>, esso viene
            utilizzato indipendentemente dal valore indicato per l'accuratezza
            del Version Scan. Questo garantisce, per esempio, che ogni volta
            che viene trovata la porta 53 aperta vengano effettuati i
            controlli specifici per il DNS; cosi` come in caso di porta 443
            vengano invece utilizzati quelli per l'SSH e cosi` via.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--version_light</option> (Attiva la modalita`
          Light)</term>

          <listitem>
            <para>Questa opzione e` equivalente alla
            <option>--version_intensity 2</option>. Questa modalita` rende il
            Version Scanning drasticamente piu` veloce, riducendone pero` la
            capacita` di identificare accuratamente i servizi.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--version_all</option> (Prova ogni singolo
          pacchetto-sonda)</term>

          <listitem>
            <para>Questa opzione e` equivalente alla
            <option>--version_intensity 9</option>, assicurando che ogni
            singolo pacchetto-sonda venga utilizzato su ogni singola
            porta.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--version_trace</option> (Evidenzia l'attivita` del
          Version Scan)</term>

          <listitem>
            <para>Indica a Nmap di visualizzare informazioni di debug estese
            relative all'attivita` del Version Scanning. E' un subset di
            quanto si ottiene con l'opzione
            <option>--packet_trace</option>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>-sR</option> (RPC scan)</term>

          <listitem>
            <para>Questo metodo lavora in congiuntamente agli altri metodi di
            scansione delle porte, riversando su ogni singola porta TCP o UDP
            trovata aperta i comandi NULL di SunRPC, cercando cosi` di
            determinare se le porte analizzate sono RPC o meno e, nel caso,
            quale programma e versione utilizzano. E' cosi` possibile ottenere
            le stesse informazioni rilevate dal comando <command
            moreinfo="none">rpcinfo -p</command> anche se l'host indagato e`
            dietro un firewall (o protetto da TCP wrappers). Al momento la
            scansione Decoys non funziona con l'RPC Scan Viene automaticamente
            abilitato come parte del Version Scan (<option>-sV</option>) se
            indicato. Visto che Version Detection impiega tale sistema, che e`
            molto piu` completo, l'opzione <option>-sR</option> e` raramente
            necessaria.</para>
          </listitem>
        </varlistentry>
      </variablelist>
    </refsect1>

    <refsect1 id="man-os-detection">
      <title>OS Detection</title>

      <para>Una delle piu` famose caratteristiche di NMap e` la possibilita`
      di identificare remotamente il sistema operativo di un host attraverso
      il "Fingerprint" dello stack TCP/IP. Nmap invia una serie di pacchetti
      TCP ed UDP all'Host Remoto ed esamina ogni bit ricevuto in risposta.
      Dopo aver effettuato decine di test come il "TCP ISN sampling", il "TCP
      option support and ordering", il "IPID Sampling" ed il controllo del
      Window Size iniziale, NMap compara i risultati con il suo database
      (<filename moreinfo="none">nmap-os-fingerprints</filename>) contenente
      piu` di 1500 "OS Fingreprints" conosciuti e ne visualizza i dettagli se
      ne trova riscontro. Ogni fingerprint comprendo una descrizione del
      sistema operativo ed una classificazione che tale da indicare il Vendor
      (per esempio Sun), il sistema operativo (per esempio Solaris), la
      versione (per esempio 10) ed il tipo di device (per esempio "general
      purpose", router, switch, "game console" ecc).</para>

      <para>Se NMap non e` in grado di indovinare il sistema operativo di una
      macchina e le condizioni sono propizie (almeno una porta trovata aperta
      ed una trovata chiusa), NMap fornira` una URL che potra` essere
      utilizzata per inviare la FingerPrint (nel solo caso che si conosca con
      certezza il sistema operativo dell'host in questione) Inviando queste
      FingerPrint e` possibile contribuire ad ampliare la gamma di sistemi
      operativi conosciuti da NMap, cosi` da rendelo piu` accurato per
      tutti.</para>

      <para>OS Detection abilita diversi altri test che utlizzano le
      informazioni che sono state ottenute durante questo processo. Una di
      queste e` la misura dell'UpTime, che sfrutta l'opzione TimeStamp (RFC
      1323) per indovinare quando una macchina ha effettuato l'ultimo reboot.
      Questo e` riportato solo per quelle macchine che forniscono tale
      informazione. Un'altra e` la "TCP Sequence Predictability
      Classification", che misura approssimativamente quanto e` stato
      complesso stabilire una "Forged TCP Connection" verso un host remoto. E'
      utile per sfruttare exploit basati sul controllo del SourceIP (rlogin,
      filtri firewall, ecc.) o per nascondere la sorgente di un attacco.
      Questo tipo di spoofing e` attualmente utilizzato di rado, ma molte
      macchine sono tuttora vulnerabili ad esso. Il numero indicante la
      "difficulty" e` basato su campionamenti statistici e puo` fluttuare. E'
      generalmente preferibile utilizzare la classificazione verbale, come
      <quote>worthy challenge</quote> oppure <quote>trivial joke</quote>. Tale
      indicazione e` riportata nel normale output in modalita` "Verbose"
      (<option>-v</option>) Quando la modailita` "Vervose" e` utilizzata
      congiuntamente all'opzione <option>-O</option>, anche la sequenza di
      generazione dell'IPID viene riportata. La maggior parte delle macchine
      e` nella classe <quote>incremental</quote>, il che significa che
      incrementano il campo ID dell'Header IP per ogni pacchetto inviato. Cio`
      le rende vulnerabili a diversi attacchi avanzati di spoofing ed
      "Information Gathering".</para>

      <para>Un documento riguardante il funzionamento, l'utilizzo e la
      personalizzazione del "Version Detection" e` disponibile tradotto in
      oltre una dozzina di lingue: <ulink
      url="http://www.insecure.org/nmap/osdetect/" />.</para>

      <para>OS detection viene attivato e controllato dalle le seguenti
      opzioni:</para>

      <variablelist>
        <varlistentry>
          <term><option>-O</option> (Enable OS detection)</term>

          <listitem>
            <para>Abilita l'OS detection, come descritto sopra. In
            alternativa, e` possibile utilizzare l'opzione <option>-A</option>
            per attivare sia l'OS detection che il version detection.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--osscan_limit</option> (Limit OS detection to
          promising targets)</term>

          <listitem>
            <para>L'OS detection e` molto piu` efficace se vengono rilevate
            almeno una porta aperta ed una chiusa. Utilizzando questa opzione
            NMap non cerchera` di effettuare la OS Detection su quegli host
            che non rispondo a questo criterio. E' cosi` possibile un
            sensibile risparmio di tempo, specialmente se si utilizza anche
            l'opzione <option>-P0</option> su molti host. E' importante
            unicamente quando l'OS Detection e` richiesto attravero le opzioni
            <option>-O</option> o <option>-A</option>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--osscan_guess</option>; <option>--fuzzy</option>
          (Guess OS detection results)</term>

          <listitem>
            <para>Quando NMap non e` in grado di rilevare una corrispondenza
            esatta dell'OS, propone come possibilita` gli OS piu` vincini alla
            rilevazione. La corrispondenza pero` deve essere molto simile
            perche` NMap lo faccia per default. Entrambe queste opzioni
            (equivalenti) fanno si che NMap proceda con il riconoscimento
            dell'OS in modo piu` aggressivo.</para>
          </listitem>
        </varlistentry>
	</variablelist>
	</refsect1>

        <refsect1 id="man-performance">
          <title>Performance</title>

          <para>Le performance sono sempre state una delle principali
          priorita` durante lo sviluppo di Nmap. Una scansione
          default(<command moreinfo="none">nmap
          <replaceable>hostname</replaceable></command>) di un host in una
          rete locale richiede circa un quinto di secondo, poco piu` di un
          battito di ciglia. Tuttavia esso aumenta quando si sta effettuando
          una scansione di decine o centinaia di migliaia di host. Inoltre
          alcune opzioni di scan (come lo scan UDP e il version detection) o
          alcune configurazioni di firewall (in particolare quelle che
          limitano la frequenza delle risposte, conosciute come "response
          rating") tendono ad aumentare decisamente il tempo di scansione.
          Anche se Nmap usa tecniche di scansione in parallelo e molti altri
          algoritmi piu` avanzati per diminuire il tempo totale impiegato,
          l'utente ha comunque il controllo finale slle modalita` in cui Nmap
          viene eseguito. Un utente esperto usera` quindi comandi specifici
          per ottenere solo le informazioni di cui ha bisogno, restando pero`
          all'interno della finestra temporale minima.</para>

          <para>Alcune tecniche per migliorare i tempi di scansione sono
          l'omissione di test non rilevanti e l'aggiornamento all'ultima
          versione di Nmap (questo perche` spesso gli aggiornamenti includono
          miglioramenti delle performances). Anche ottimizzare i parametri di
          timing e` un'ottima strategia per ottenere sostanziali differenze;
          queste opzioni sono elencate di seguito.</para>



<para>Alcune opzioni accettano il parametro <literal moreinfo="none">time</literal>. Questo indica una quantita` di tempo in millisecondi (di default), ma e` possibile aggiungere 's', 'm' o 'h' per indicare secondi, minuti oppure ore. Ad esempio, per il parametro <option>--host-timeout</option> gli argomenti <literal moreinfo="none">900000</literal>, <literal moreinfo="none">900s</literal> e <literal moreinfo="none">15m</literal> hanno tutti lo stesso effetto.</para>
	  

          <variablelist>
            <varlistentry>
              <term><option>--min-hostgroup &lt;millisecondi&gt;</option>;
              <option>--max-hostgroup &lt;millisecondi&gt;</option> (Regola le
              dimensioni dei gruppi per la scansione in parallelo)</term>

              <listitem>
                <para>Nmap ha l'abilita` di effettuare port scan o version
                scan su piu` host in parallelo. Lo spazio degli indirizzi IP
                di destinazione viene diviso in gruppi e viene scansionato un
                gruppo per volta. In genere gruppi di dimensioni maggiori
                porta ad una migliore efficienza. Il lato negativo di tutto
                cio` e` i risultati non possono essere mostrati all'utente
                fino a quando l'intero gruppo non e` stato esplorato
                completamente. Quindi, se si lancia Nmap impostando la
                dimensione del gruppo a 50, l'utente non vedra` alcun
                risultato fino a quando i primi 50 host non sono stati
                completati (a meno che non selezioni la modalita`
                verbose).</para>

                <para>Di default, Nmap usa un compromesso per ovviare a questa
                difficolta`. Inizialmente utilizza una dimensione di cinque
                host in modo da mostrare i primi risultati velocemente,
                dopodiche` incrementa la dimensione fino ad un massimo di
                1024. Il numero esatto dipende dalle opzioni che vengono
                passate. Per ragioni di efficienza Nmap usa gruppi di
                dimensione maggiore per UDP o per scansioni di porte TCP di
                piccole dimensioni.</para>

                <para>nel caso in cui una dimensione massima del gruppo sia
                specificata con <option>--max_hostgroup</option>, Nmap non
                oltrepassera` mai questo limite. Specificando invece una
                dimensione minima con <option>--min_hostgroup</option>
                obblighera` Nmap a usare dimensioni almeno equivalenti. Nmap
                potrebbe tuttavia dover usare gruppi piu` piccoli di quelli
                indicati se non ci dovessero essere abbastanza host di
                destinazione rimanenti per un'interfaccia per raggiungere la
                minima quota specificata. Entrambe le opzioni possono essere
                impostate per mantenere la dimensione del gruppo all'interno
                di un certo limite, anche se questo succede raramente.</para>

                <para>L'utilizzo principale di queste opzioni e` quello di
                specificare una dimensione minima di una certa dimensione in
                modo da rendere piu` veloce la scansione globale. Una scelta
                piuttosto comune e` 256 per una scansione di una rete di
                classe C. Per una scansione con piu` porte, una dimensione di
                2048 o piu` puo` essere d'aiuto.</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><option>--min_parallelism &lt;milliseconds&gt;</option>;
              <option>--max_parallelism &lt;milliseconds&gt;</option>
              (Modifica il probe in parallelo)</term>

              <listitem>
                <para>Queste opzioni controllano il numero totale di probe che
                puo` uscire dalla macchina sorgente per un host group. Esse
                sono usate per port scanning e host discovery. Di default,
                Nmap calcola un parallelismo ideale in continuo cambiamento a
                seconda delle performance della rete. Se c'e` un elevato
                numero di pacchetti che viene scartato, Nmap rallenta e lavora
                su un numero minore di probe in uscita. Il numero ideale di
                probe in uscita incrementa poi gradualmente fintantoche` la
                rete lo permette. Di default, il parallelismo puo` arrivare ad
                un minimo di 1 se la rete si dimostra essere poco affidabile;
                puo` invece aumentare a diverse centinaia per una rete in
                condizioni ottimali.</para>

                <para>L'uso piu` comune consiste nell'impostare
                <option>--min_parallelism</option> ad un valore maggiore di 1
                per accelerare le scansioni di reti o host che rispondono in
                maniera non adeguata. E` abbastanza rischioso giocare con
                quest'opzione, in quanto impostandola ad un valore troppo alto
                puo` influire negativamente sull'accuratenzza. Impostandola
                manualmente inoltre riduce l'abilita` di Nmap di controllare
                dinamicamente il parallelismo, basandosi sulle condizioni
                della rete. Un valore di 10 e` abbastanza ragionevole, anche
                se in genere le modifiche a questo parametro vengono usate
                come ultima risorsa.</para>

                <para>L'opzione <option>--max_parallelism</option> viene
                impostata a volte sul valore 1 per impedire a Nmap di inviare
                piu` di un probe alla volta verso un determinato host. Questo
                puo` essere d'aiuto quando usato insieme all'opzione
                <option>--scan_delay</option> (discussa in seguito), anche se
                quest'ultima in genere e` piu` che sufficiente da sola per lo
                scopo.</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><option>--min_rtt_timeout &lt;milliseconds&gt;</option>,
              <option>--max_rtt_timeout &lt;milliseconds&gt;</option>,
              <option>--initial_rtt_timeout &lt;milliseconds&gt;</option>
              (Modifica i timeout dei probe)</term>

              <listitem>
                <para>Nmap mantiene un valore di timeout aggiornato per
                determinare quanto ci vorra` per un probe response prima di
                ritrasmettere il probe. Questo viene calcolato basandosi sui
                tempi di response degli ultimi probe inviati. Se la latenza
                della rete dovesse oscillare troppo questo timeout puo`
                crescere fino ad un valore di diversi secondi. Inoltre esso e`
                impostato inizialmente ad un valore abbastanza alto e potrebbe
                restare su quel valore per tutto il tempo in cui Nmap effettua
                la scansione su host che non rispondono.</para>

                <para>Le seguenti opzioni prendono come parametro un valore
                espresso in millisecondi. Specificando limiti di
                <option>--max_rtt_timeout</option> e di
                <option>--initial_rtt_timeout</option> inferiori ai valori di
                default e` possibile ridurre di molto i tempi di scansione.
                Questo e` vero in particolare per scansioni di tipo "pingless"
                (opzione <option>-P0</option>, ovvero senza effettuare un ping
                preliminare) e nei confronti di reti particolarmente protette.
                Tuttavia, e` bene non esagerare; infatti la scansione puo`
                addirittura richiedere piu` tempo del previsto nel caso in cui
                si specifichi un valore talmente basso da resettare il timeout
                dei probe (e forzarne un nuovo invio) mentre la risposta sta
                ancora arrivando.</para>

                <para>Se tutti gli host sono su una rete locale, 100
                millisecondi e` un valore ragionevolmente aggressivo per
                l'opzione <option>--max_rtt_timeout</option>. Se nella
                scansione e` coinvolto qualche routing, sarebbe meglio
                effettuare un ping preliminare dell'host (con l'utility ICMP
                ping o con un generatore di pacchetti come hping2 che puo`
                penetrare un firewall piu` facilmente), e osservare poi il
                valore massimo di andata/ritorno ("round trip") per un numero
                di pacchetti non inferiore a 10. E` quindi consigliato
                raddoppiare questo valore per l'opzione
                <option>--initial_rtt_timeout</option> e triplicarlo o
                quadruplicarlo per l'opzione
                <option>--max_rtt_timeout</option>. In genere si preferisce
                non impostare il maximum rtt al di sotto di 100 millisecondi,
                indipendentemente dai tempi di ping. E nemmeno al di sopra di
                1000 millisecondi.</para>

                <para>L'opzione <option>--min_rtt_timeout</option> e` usata
                molto raramente; essa puo` essere utile nel caso in cui una
                rete sia talmente poco affidabile che anche il default di Nmap
                e` troppo aggressivo. Poiche` Nmap riduce il timeout fino al
                valore minimo quando la rete sembra affidabile, questa
                esigenza di solito non e` necessaria e dovrebbe essere
                indicata come bug alla mailing list nmap-dev.</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><option>--host_timeout &lt;milliseconds&gt;</option>
              (Abbandona in caso di host di destinazione troppo lenti nel
              rispondere)</term>

              <listitem>
                <para>Alcuni host a volte richiedono un tempo estremamente
                <emphasis>lungo</emphasis> per portare a termine una
                scansione. Questo puo` essere dovuto a hardware o software
                poco performante o inaffidabile o a firewall troppo
                restrittivi. La minoranza degli host sottoposti a scansione
                puo` richiedere la maggior parte del tempo di scansione. A
                volte e` preferibile risparmiare sul tempo ed evitare questi
                host fin dal principio. Questo comportamento viene forzato
                dall'opzione <option>--host_timeout</option> seguito dal
                numero di millisecondi dopo i quali non si vuole piu`
                aspettare. In genere si specifica un valore di 1800000 per
                avere la garanzia che Nmap non sprechi piu` di mezz'ora su un
                singolo host. Si noti che Nmap puo` nel frattempo effettuare
                la scansione su altri host durante quella mezz'ora, per cui
                non si tratta di tempo completamente sprecato. Un host che
                dovesse andare in timeout viene semplicemente saltato. Non
                vengono mostrati l'elenco delle porte, il detection del
                sistema operativo ne` risultati di version detection per
                quell'host.</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><option>--scan_delay &lt;milliseconds&gt;</option>;
              <option>--max_scan_delay &lt;milliseconds&gt;</option> (Modifica
              il ritardo tra probe differenti)</term>

              <listitem>
                <para>Quest'opzione obbliga Nmap ad aspettare almeno il tempo
                indicato (in millisecondi) tra i probe inviati ad un
                determinato host. Questo risulta particolarmente utile nel
                caso di limitazioni sulla frequenza dell'invio ("rate
                limiting"). Tra gli altri, in particolare le macchine Solaris
                in genere rispondono a scansioni UDP con un solo messaggio
                ICMP al secondo. Qualsiasi altro probe inviato da Nmap durante
                questo intervallo di tempo sarebbe quindi sprecato. Un'opzione
                di <option>--scan_delay</option> di 1000 manterra` Nmap al di
                sotto di questa particolare frequenza di invio di probe. Nmap
                comunque cerchera` di capire eventuali limiti sulla frequenza
                e modifichera` i ritardi sui probe di conseguenza, tuttavia
                non e` cattiva abitudine specificarlo sulla linea di comando
                quando dovesse essere noto a priori il valore ottimale.</para>

                <para>Un'altro uso dell'opzione<option>--scan_delay</option>
                e` quello in cui si desidera evitare sistemi anti-intrusione
                (IDS/IPS, "intrusion-detection" e "intrusion-prevention
                system").</para>
              </listitem>
            </varlistentry>

<varlistentry>
        <term><option>--defeat-rst-ratelimit</option></term>
        <listitem>

<indexterm significance="normal"><primary>--defeat-rst-ratelimit</primary></indexterm>

<para>Molti host usano da tempo delle funzionalita` di "rate limiting" (limitazioni alla frequenza) per ridurre il numero di messaggi di errore ICMP che mandano (ad esempio gli errori su "port-unreachable", porta non raggiungibile). Alcuni sistemi hanno iniziato ad applicare le stesse tecniche all'invio di pacchetti RST (reset). Queste tecniche possono rallentare di molto Nmap poiche` esso continuera` a calibrare la gestione dei timing per gestire queste limitazioni di frequenza. Si puo` quindi indicare a Nmap di ignorare questi rate limits (per i port scan come il SYN scan, che <emphasis>non</emphasis> considerano le porte silenziose come <literal moreinfo="none">aperte</literal>) mediante l'opzione <option>--defeat-rst-ratelimit</option>.</para>

<para>L'uso di questa opzione puo` ridurre la precisione di uno scan, poiche` alcune porte potrebbero ritornare uno stato di non-risposta (Nmap non e` rimasto in attesa abbastanza a lungo a causa di meccanismi di rate-limiting dei pacchetti RST). Con una scansione di tipo SYN le porte "mute" (dalle quali non si e` ricevuto un RST) in questo caso vengono indicate con <literal moreinfo="none">filtered</literal> piuttosto che <literal moreinfo="none">chiuse</literal>. Quest'opzione e` utile solo quando si e` interessati alle porte aperte, e la distinzione tra porte <literal moreinfo="none">open</literal> e <literal moreinfo="none">closed</literal> non e` di alcun interesse rispetto al tempo che richiede.</para>
        </listitem>
      </varlistentry>

            <varlistentry>
              <term><option>-T
              &lt;Paranoid|Sneaky|Polite|Normal|Aggressive|Insane&gt;</option>
              (Imposta un template di temporizzazione)</term>

              <listitem>
                <para>Mentre le opzioni mostrate nella precedente sezione sono
                molto utili ed effettive nel caso in cui si voglia avere il
                controllo piu` preciso possibile sul comportamento di Nmap,
                alcuni potrebbero trovarle troppo complicate da usare.
                Inoltre, la scelta dei valori piu` appropriati puo` a volte
                richiedere piu` tempo della scansione che si sta cercando di
                ottimizzare. Nmap offre quindi un approccio piu` semplice
                mediante sei "timing templates", ovvero opzioni pre-impostate
                per regolare l'aggressivita` della scansione. Esse si
                specificano mediante l'opzione <option>-T</option> seguita dal
                numero del template corrispondente o dal suo nome. Essi sono:
                paranoico (0), furtivo (1), educato (2), normale (3),
                aggressivo (4) e folle (5). I primi due vengono usati per
                evitare i sopracitati sistemi anti-intrusione (IDS). La
                modalita` "gentile" rallenta la scansione in modo da usare
                meno banda e risorse sulla macchina bersaglio. La modalita`
                "normale" e` di default (e pertanto l'opzione
                <option>-T3</option> non modifica nulla). La modalita`
                "aggressiva" incrementa la velocita` assumendo che si e` su
                una rete veloce ed affidabile. Infine la modalita` "folle" da`
                per scontato che si e` su una rete estremamente veloce ed
                affidabile o che si vuole sacrificare l'accuratezza in nome
                della velocita`.</para>

                <para>Questi template consentono all'utente di specificare
                quanto aggressivi si desidera essere, lasciando al tempo
                stesso a Nmap il compito di scegliere i valori piu`
                appropriati. I template inoltre effettuano piccoli
                aggiustamenti sui timing per i quali non esistono opzioni che
                ne consentono il controllo. Ad esempio, l'opzione
                <option>-T4</option> impedisce al ritardo dinamico per una
                scansione di andare al di sotto della soglia dei 10
                millisecondi per le porte TCP, e l'opzione
                <option>-T5</option> limita questo valore a 5 millisecondi. I
                template possono essere usati insieme a controlli piu` precisi
                a patto che il template venga specificato per primo.
                Altrimenti i valori impostati dal template potrebbero
                sovrascrivere quelli specificati dall'utente. Si raccomanda di
                usare l'opzione <option>-T4</option> nel caso in cui si
                desideri effettuare scansioni di reti abbastanza recenti e
                affidabili; inoltre e` consigliabile mantenere quell'opzione
                (intesa come inserita all'inizio dei comandi) anche qualora si
                dovessero aggiungere controlli piu` precisi in modo da
                beneficiare da tutti i piccoli miglioramenti che dovessero
                intervenire.</para>

                <para>Se la propria connessione e` a banda larga o di tipo
                ethernet, si raccomanda di usare sempre l'opzione
                <option>-T4</option>. Alcuni prediligono anche l'opzione
                <option>-T5</option>, nonostante per i piu` sia troppo
                aggressiva. Altri a volte usano l'opzione <option>-T2</option>
                perche` credono che sia meno propensa a mandare in crash un
                host o perche` si considerano persone educate. Spesso essi non
                si rendono conto di quanto e` lenta l'opzione <option>-T
                Polite</option>; una scansione di questo tipo puo` impiegare
                anche dieci volte il tempo richiesto per una scansione di
                default. Crash di host e problemi di banda sono rari con le
                opzioni di timing di default (opzione <option>-T3</option>) e
                pertanto e` l'opzione consigliata a chi deve effettuare
                scansioni senza dare troppo nell'occhio. Omettere una
                scansione di tipo version detection e` molto piu` efficiente
                del giocare con i valori di timing per ridurre i problemi
                sopracitati.</para>

                <para>Mentre le opzioni <option>-T0</option> e
                <option>-T1</option> potrebbero essere utili per evitare gli
                allarmi di un IDS (sensore anti-intrusione), esse
                richiederanno un tempo estremamente lungo per portare a
                termine una scansione di migliaia di host o di porte. In una
                situazione di questo tipo si suggerisce di lavorare sui valori
                esatti di timing richiesti piuttosto che avvalersi delle
                opzioni preimpostate nelle opzioni <option>-T0</option> e
                <option>-T1</option>.</para>

                <para>Gli effetti principali dell'opzione <option>T0</option>
                sono quello di serializzare la scansione in modo da affrontare
                una sola porta alla volta, e al tempo stesso quello di
                attendere cinque minuti tra l'invio di un probe e il
                successivo. Le opzioni <option>T1</option> e
                <option>T2</option> sono simili ma attendono rispettivamente
                15 secondi e 0.4 secondi tra un probe e l'altro. L'opzione
                <option>T3</option> e` il comportamento di default di Nmap
                (che include il parallelismo). L'opzione <option>T4</option>
                ha lo stesso risultato dell'impostare
                <option>--max_rtt_timeout 1250 --initial_rtt_timeout
                500</option> e di impostare il ritardo massimo per una
                scansione TCP a 10 millisecondi. Infine l'opzione
                <option>T5</option> e` equivalente a <option>--max_rtt_timeout
                300 --min_rtt_timeout 50 --initial_rtt_timeout 250
                --host_timeout 900000</option> e ad impostare il massimo
                ritardo TCP (maximum delay) a 5 millisecondi.</para>
              </listitem>
            </varlistentry>
          </variablelist>
        </refsect1>

        <refsect1 id="man-bypass-firewalls-ids">
          <title>Bypassing e Spoofing di Firewall e Intrusion Detection System
          (Firewall/IDS Evasion and Spoofing)</title>

          <para>Tanti pionieri dell'epoca di Internet immaginarono una rete
          globale aperta con uno spazio di indirizzi IP universale, che
          potesse consentire connessioni virtuali tra qualsiasi coppia di
          nodi. Questo permette ad ogni host di diventare allo stesso tempo
          fruitore e fornitore di informazioni da e per l'altro. Chiunque
          poteva accedere dal lavoro a tutti i propri sistemi di casa,
          regolando il termostato o aprendo la porta per un visitatore che
          dovesse arrivare in anticipo. Questa visione di connettivita`
          universale e` stata soffocata da carenze nello spazio di
          indirizzamento e da preoccupazioni legate alla sicurezza. Nei primi
          anni novanta le compagnie iniziarono a sviluppare firewall con lo
          scopo di ridurre la connettivita`. Enormi reti vennero tagliate
          fuori dall'Internet non filtrato da application proxy, NAT (Network
          Address Translation) e packet filter (filtri di pacchetto). Il
          flusso incontrollato delle informazioni lascio` il posto a regole
          stringenti sui canali di comunicazione approvati e sul contenuto che
          puo` transitare su di essi.</para>

          <para>Ostruzioni di rete come i firewall possono rendere la stesura
          della topografia di una rete un lavoro fin troppo difficile. E non
          migliorera` mai, perche` limitare le differenze che permettono di
          distinguere tra un apparecchio e un altro e` spesso lo scopo
          primario nella loro costruzione. Nondimeno, Nmap offre molte
          caratteristiche che possono aiutare a capire tali reti complesse e a
          verificare che i filtri impostati stiano funzionando come previsto.
          Nmap inc