## page was renamed from Wireshark
#format wiki
#LANGUAGE it
<
>
<>
<>
= Introduzione =
'''Wireshark''' è un analizzatore in tempo reale di [[#Protocolli_di_rete_supportati|protocolli di rete]] per l'amministrazione, lo sviluppo di software e la sicurezza informatica. È in grado di monitorare tutti i pacchetti del traffico di una o più interfacce di rete.
Wireshark è uno strumento multipiattaforma, estremamente versatile e in continua evoluzione.
Questa guida mostra come installarlo e configurare correttamente i permessi necessari su '''Ubuntu'''.
{{{#!wiki note
In questa guida non viene indicato come interpretare i dati monitorati, in quanto è necessaria un'approfondita conoscenza dei [[https://it.wikipedia.org/wiki/Protocollo_di_rete|protocolli di rete e dei modelli ISO/OSI]], nonché del protocollo TCP/IP.
}}}
= Protocolli di rete supportati =
{{{#!wiki note
Il supporto per i [[https://it.wikipedia.org/wiki/Protocollo_di_rete|protocolli]] viene continuamente aggiornato e ampliato con le nuove versioni di Wireshark.
}}}
'''Wireshark''' supporta un'enorme quantità di protocolli (in pratica quasi tutti quelli utilizzati nel networking moderno). Di seguito una copiosa lista, non esaustiva, di protocolli che possono essere decodificati e analizzati; è inoltre possibile consultare la lista completa e aggiornata dei protocolli supportati sul sito di ufficiale o all'interno dell'applicazione stessa.
{{{#!wiki important
Wireshark può analizzare i metadati dei protocolli criptati (es. indirizzi IP, porte), ma non può decriptare il contenuto senza la chiave di decriptazione. Per esempio, può analizzare il traffico HTTPS, ma non vedere il contenuto delle pagine web a meno che non si forniscano le chiavi SSL/TLS.
}}}
* Protocolli di livello Applicazione (Layer 7):
* Web: HTTP, HTTPS (SSL/TLS), HTTP/2, HTTP/3, !WebSocket
* Email: SMTP, POP3, IMAP
* Trasferimento File: FTP, SFTP, TFTP
* Database: MySQL, PostgreSQL, MongoDB, Oracle
* VoIP: SIP, RTP, RTCP, H.323
* DNS: DNS, DNSSEC
* Autenticazione: LDAP, Kerberos, NTLM
* Streaming: RTSP, MMS
* Remote Access: SSH, Telnet, RDP, VNC
* Condivisione File: SMB/CIFS (Windows File Sharing), NFS
* Messaggistica: XMPP (Jabber), IRC
* Network Management: SNMP
* Blockchain: Molti protocolli blockchain custom, in base alla disponibilità di plugin.
* Vari: Modbus, BACnet (building automation), DLMS/COSEM (smart metering), MQTT (IoT)
* Protocolli di livello Trasporto (Layer 4):
* TCP (Transmission Control Protocol): Il protocollo principale per connessioni affidabili.
* UDP (User Datagram Protocol): Usato per comunicazioni veloci e senza connessione.
* SCTP (Stream Control Transmission Protocol): Meno comune, ma usato in telecomunicazioni.
* QUIC: Protocollo di trasporto moderno di Google, utilizzato da HTTP/3 e altro.
* Protocolli di livello Rete (Layer 3):
* IP (Internet Protocol): Il protocollo fondamentale di internet.
* IPv4 (Internet Protocol Version 4): La versione più comune.
* IPv6 (Internet Protocol Version 6): La versione successiva.
* ICMP (Internet Control Message Protocol): Usato per messaggi di errore e controllo (es. ping).
* IGMP (Internet Group Management Protocol): Usato per multicast.
* ARP (Address Resolution Protocol): Usato per trovare l'indirizzo MAC corrispondente a un indirizzo IP nella LAN.
* RARP (Reverse Address Resolution Protocol): L'opposto di ARP, obsoleto.
* OSPF (Open Shortest Path First): Protocollo di routing interno.
* BGP (Border Gateway Protocol): Protocollo di routing tra sistemi autonomi (internet).
* RIP (Routing Information Protocol): Vecchio protocollo di routing.
* Protocolli di livello Data Link (Layer 2):
* Ethernet: Il protocollo di rete locale più comune.
* Wi-Fi (802.11): Wireless networking.
* Token Ring: Obsoleto.
* Frame Relay: Obsoleto.
* ATM (Asynchronous Transfer Mode): Obsoleto in LAN, ma ancora usato in alcune WAN.
* PPP (Point-to-Point Protocol): Usato per connessioni dial-up e DSL.
* HDLC (High-Level Data Link Control): Protocollo generico per connessioni seriali.
* VLAN (Virtual LAN): Protocollo per segmentare reti Ethernet.
* LLDP (Link Layer Discovery Protocol): Usato per scoprire i dispositivi vicini.
* CDP (Cisco Discovery Protocol): Protocollo proprietario Cisco per scoprire i dispositivi vicini.
* Protocolli di livello Fisico (Layer 1): Wireshark non cattura dati a questo livello, ma può analizzare i dati catturati da altri strumenti che operano a livello fisico (es. analizzatori di spettro per Wi-Fi).
Di seguito sono citati ulteriori protocolli:
* VPN: PPTP, L2TP, IPSec, OpenVPN, !WireGuard
* Bluetooth: Molti protocolli Bluetooth.
* USB: Vari protocolli USB.
* CAN bus: Usato in automobili e altri sistemi embedded.
La lista completa dei protocolli supportati dall'applicazione può essere visualizzata o modificata. Consultare a tal proposito il [[#Abilitare_protocolli|paragrafo]] relativo alla configurazione. Inoltre si ricorda che '''Wireshark''' permette di scrivere dissettori personalizzati (plugin) per analizzare protocolli non supportati di default.
= Installazione =
{{{#!wiki note
Si consiglia di mantenere Wireshark aggiornato per beneficiare delle ultime correzioni di bug e funzionalità.<
>
L'installazione tramite [[#apt|apt]] è il metodo più semplice e consigliato per la maggior parte degli utenti.
}}}
== Da repository ==
[[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://wireshark|wireshark]]
Al termine dell'installazione sarà possible [[#Avvio|avviare]] '''Wireshark'''.
{{{#!wiki important
Durante l'installazione, verrà chiesto di [[#Configurare_i_permessi_per__la_cattura_dei_pacchetti|permettere]] agli utenti non-root di catturare pacchetti. È fortemente consigliato rispondere Sì a questa domanda.
}}}
== Snap ==
0. Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il comando:{{{
sudo snap install wireshark
}}}
0. Riavviare la sessione.
Al termine dell'installazione sarà possibile [[#Avvio|avviare]] '''Wireshark'''.
{{{#!wiki important
L'installazione [[#Snap|tramite Snap]] può avere limitazioni e introdurre leggeri overhead di prestazioni nella cattura del traffico di rete. Quindi non è generalmente raccomandata per uso professionale.
}}}
== Flatpak ==
0. Consultare [[AmministrazioneSistema/InstallareProgrammi/PacchettiFlatpak|questa guida]] per abilitare '''flatpak''' e '''Flathub'''.
0. Digitare in un [[AmministrazioneSistema/Terminale|terminale]] il comando:{{{
flatpak install flathub org.wireshark.Wireshark
}}}
Una volta installato, sarà possibile [[AmbienteGrafico/AvviareProgrammi|avviare]] il programma da menu oppure con il comando{{{
flatpak run org.wireshark.Wireshark
}}}
{{{#!wiki important
Potrebbero essere notificati degli errori relativi ai permessi durante l'utilizzo del programma. Questo poiché i flatpak possono essere installati senza privilegi di amministrazione, vengono eseguiti in sandbox, di default non godono di diversi permessi. In tal caso consultare [[AmministrazioneSistema/InstallareProgrammi/PacchettiFlatpak#Gestione_delle_applicazioni_dal_terminale|questa guida]] per modificare i permessi necessari e l'accesso all'hardware, oppure semplicemente utilizzare la versione [[#apt|nei repository]].<
>
Il pacchetto presente su !FlatHub è mantenuto dalla community.
}}}
= Avvio =
Per [[AmbienteGrafico/AvviareProgrammi|avviare]] '''Wireshark''', digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
wireshark
}}}
Si dovrebbe essere in grado di visualizzare le interfacce di rete e iniziare a catturare pacchetti senza utilizzare [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]].
= Configurazione =
== Configurare i permessi per la cattura dei pacchetti ==
Se durante l'installazione [[#apt|tramite apt]] è stato risposto '''No''' alla richiesta di permettere agli utenti non-root di catturare pacchetti, è possibile modificare tale scelta.
0. Eseguire nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo dpkg-reconfigure wireshark-common
}}}
0. Selezionare '''Sì''' quando richiesto.
== Aggiungere l'utente al gruppo wireshark ==
Per permettere all'utente di catturare pacchetti senza dover utilizzare [[AmministrazioneSistema/PrivilegiDiAmministrazione|sudo]], è necessario aggiungerlo al gruppo ''wireshark''.
0. Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo usermod -aG wireshark [nome_utente]
}}} sostituendo `[nome_utente]` con il nome utente desiderato.
0. Riavviare la sessione utente per applicare le modifiche al gruppo, oppure riavviare il sistema.
{{{#!wiki important
Il riavvio è essenziale affinché i nuovi permessi abbiano effetto.
}}}
== Connessione delle interfacce (solo snap) ==
Questa procedura si riferisce esclusivamente all'installazione di Wireshark tramite Snap. Infatti con [[#apt|apt]] la configurazione dei permessi per l'accesso alle interfacce di rete è gestita a livello di sistema tramite '''dpkg-reconfigure''' e l'appartenenza al gruppo ''wireshark''. Non è quindi necessario connettere le interfacce manualmente.<
>
Al contrario, le applicazioni installate in '''snap''' sono eseguite in un ambiente isolato (sandbox), di default senza accesso diretto alle interfacce di rete del sistema.
{{{#!wiki important
I comandi indicati di seguito potrebbero non essere sufficienti e le performance potrebbero non essere ottimali per garantire lo stesso livello di accesso all'installazione [[#apt|tramite apt]].
}}}
Se '''Wireshark''' è stato installato tramite [[#Snap|snap]] è necessario connettere manualmente le interfacce per permettere di accedere alla rete.<
>Digitare nel [[AmministrazioneSistema/Terminale|terminale]] i seguenti comandi:{{{
sudo snap connect wireshark:network-control
sudo snap connect wireshark:network-observe
sudo snap connect wireshark:raw-serial
}}}
Questi comandi vengono utilizzati per concedere esplicitamente le autorizzazioni, collegando così le interfacce necessarie al container Snap.
== Cattura e monitoraggio dei pacchetti ==
Una volta [[#Configurare_i_permessi_per_la_cattura_dei_pacchetti|configurato]] il programma, per avviare il monitoraggio dei pacchetti è sufficiente seguire il menu '''''Cattura → Avvia'''''.
Apparirà una finestra, dalla quale sarà possibile scegliere le singole interfacce per le quali avviare il monitoraggio.
== Abilitare protocolli ==
La lista completa dei protocolli supportati dall'applicazione si può visualizzare e modificare dal menù '''''Analizza → Abilita protocolli...'''''.
== Utilizzo dei filtri ==
Analizzare tutto il traffico di rete senza l'utilizzo di filtri equivale letteralmente a cercare un ago in un pagliaio. I filtri permettono di concentrarsi sui pacchetti di proprio interesse, rendendo l'analisi molto più efficiente.
Di seguito sono introdotti diversi tipi di filtri con loro sintassi e degli esempi pratici.
== Tipi di filtri ==
'''Wireshark''' offre due tipi principali di filtri:
* '''Filtri di Cattura (Capture Filters)''': Applicati prima che i pacchetti vengano catturati. Questi filtri riducono la quantità di dati catturati, risparmiando spazio su disco e riducendo il carico sulla CPU. Sono più performanti ma meno flessibili dei filtri di visualizzazione.
* '''Filtri di Visualizzazione (Display Filters)''': Applicati dopo che i pacchetti sono stati catturati. Permettono di nascondere nella vista principale i pacchetti che non interessano. Sono più flessibili ma meno performanti dei filtri di cattura.
== Sintassi dei filtri ==
La sintassi dei filtri è simile per entrambi i tipi, ma con alcune differenze.
* '''Protocolli''': Usa il nome del protocollo (es.: http, tcp, dns, ip).
* '''Campi''': Usa i nomi dei campi all'interno dei protocolli (es.: ip.src, tcp.port, http.request.method). Si possono trovare i nomi dei campi esplorando i dettagli di un pacchetto.
* '''Operatori di Confronto''':
* `==`: uguale a
* `!=`: diverso da
* `>`: maggiore di
* `<`: minore di
* `>=`: maggiore o uguale a
* `<=`: minore o uguale a
* `contains` contiene
* `matches` o `~=`: corrisponde a un'espressione regolare
* '''Operatori Logici''':
* `and` o `&&`: e
* `or` o `||`: o
* `not` o `!`: non
I filtri sono uno strumento essenziale per sfruttare appieno la potenza di Wireshark. Imparare ad usarli in modo efficace permetterà di analizzare il traffico di rete in modo più rapido e preciso.
== Impostare i Filtri di Cattura ==
{{{#!wiki note
I '''filtri di cattura''' supportano solo una sintassi limitata. Non è possibile usare tutti i campi e gli operatori disponibili nei filtri di visualizzazione.
Sono applicati a basso livello, quindi operano principalmente su indirizzi IP, porte e protocolli di base.
}}}
Per impostare filtri di cattura:
0. [[#Avvio|Avviare]] '''Wireshark'''.
0. Cliccare sull'icona '''Opzioni''' (a forma di ingranaggio) o seguire il menu '''''Cattura → Opzioni'''''.
0. Nella finestra '''Opzioni di cattura''' selezionare l'interfaccia di rete da monitorare.
0. Inserire il filtro di cattura nel campo '''Filtro di cattura per le interfacce selezionate:'''.
0. Cliccare su '''Avvia''' per avviare la cattura.
Nella seguente tabella sono riportati degli esempi:
||'''Filtro''' ||<:40%>'''Descrizione''' ||
|| tcp port 80 || Cattura solo il traffico HTTP ||
|| host 192.168.1.100 || Cattura il traffico da o verso un indirizzo IP specifico ||
|| tcp port 443 or tcp port 22 || Cattura il traffico TCP sulla porta 443 (HTTPS) o sulla porta 22 (SSH) ||
|| icmp || Cattura solo il traffico ICMP (ping) ||
== Impostare i Filtri di Visualizzazione (Display Filters) ==
Per impostare filtri di visualizzazione:
0. [[#Avvio|Avviare]] '''Wireshark'''.
0. Cliccare sull'icona '''Opzioni''' (a forma di ingranaggio) o seguire il menu '''''Cattura → Opzioni'''''.
0. Nella finestra '''Opzioni di cattura''' aprire un file di cattura esistente.
0. Inserire il filtro di visualizzazione nella barra dei filtri sopra la lista dei pacchetti.
0. Premere '''Invio''' per applicare il filtro.
'''Wireshark''' mostrerà solo i pacchetti che corrispondono al filtro.
Nella seguente tabella sono riportati degli esempi:
||'''Filtro''' ||<:40%>'''Descrizione''' ||
|| http || Mostra solo il traffico HTTP ||
|| ip.src == 192.168.1.100 || Mostra il traffico con un indirizzo IP sorgente specifico ||
|| ip.dst == 192.168.1.200 || Mostra il traffico con un indirizzo IP di destinazione specifico ||
|| tcp.srcport == 8080 || Mostra il traffico TCP con porta sorgente 8080 ||
|| tcp.dstport == 443 || Mostra il traffico TCP con porta di destinazione 443 (HTTPS) ||
|| tcp contains "password" || Mostra il traffico che contiene la stringa "password" nel payload (da __non__ eseguire su reti non sicure!) ||
|| tcp.analysis.flags || Mostra solo i pacchetti con errori TCP (es.: retransmission) ||
|| http.request.method == "GET" || Mostra le richieste HTTP GET ||
|| http.response.code == 404 || Mostra le risposte HTTP con codice di stato 404 (Not Found) ||
|| dns.flags.response == 1 && dns.qry.type == 1 || Mostra il traffico DNS con tipo di record A (indirizzo IPv4). (il dns.flags.response == 1 indica che è una risposta DNS). ||
|| frame.len > 1000 || Mostra i pacchetti che hanno una lunghezza maggiore di 1000 byte ||
|| !dns || Mostra il traffico che non è DNS ||
Di seguito degli esempi con filtri combinati:
||'''Filtro''' ||<:40%>'''Descrizione''' ||
|| http and ip.src == 192.168.1.100 || Mostra il traffico HTTP proveniente da un determinato IP ||
|| tcp.dstport == 80 or tcp.dstport == 443 || Mostra il traffico TCP con porta di destinazione 80 o 443 ||
Di seguito degli esempi con espressioni regolari:
||'''Filtro''' ||<:40%>'''Descrizione''' ||
|| http.user_agent matches "Mozilla.*Firefox" || Usa l'operatore `matches` o `~=` per confrontare un campo con un'espressione regolare ||
|| frame contains 0x48545450 || Trova pacchetti con un particolare valore esadecimale nel payload (corrisponde a "HTTP" in esadecimale) ||
|| ip.src == 192.168.1.0/24 || Trova il traffico proveniente da una rete specifica (subnet) ||
= Risoluzione dei problemi =
== Permessi insufficienti ==
Se si ricevono errori relativi ai permessi durante la cattura dei pacchetti, assicurarsi di aver seguito correttamente i passaggi per configurare i permessi e di aver riavviato la sessione utente.<
>
Per verificare che l'utente sia effettivamente nel gruppo ''wireshark'', digitare nel [[AmministrazioneSistema/Terminale|terminale]] il comando:{{{
groups
}}}
== Interfacce di rete non visualizzate ==
Se '''Wireshark''' non mostra le interfacce di rete, a seconda del tipo di installazione:
* [[#apt|tramite APT]]: controllare di aver configurato correttamente i permessi.
* [[#Snap|tramite Snap]]: provare a connettere le [[#Connessione_delle_interfacce_.28solo snap.29|interfacce di rete]] manualmente.
== Cattura in modalità monitor ==
Per catturare il traffico in modalità monitor (necessaria per analizzare il traffico wireless), potrebbe essere necessario configurare ulteriormente la scheda di rete Wi-Fi. Per maggiori informazioni consultare [[Hardware/DispositiviSenzaFili/GuidaWiFi|questa guida]].
== Filtro non valido ==
Controllare attentamente la sintassi del filtro. Wireshark verrà in ausilio evidenziando gli errori.
== Nessun pacchetto visualizzato ==
Assicurarsi che il filtro sia corretto e che ci siano pacchetti che corrispondano al filtro nel file di cattura.
== Prestazioni rallentate ==
Filtri molto complessi possono rallentare '''Wireshark''', soprattutto con file di cattura di grandi dimensioni. Cercare di semplificare i filtri quando possibile. Valutare l'utilizzo di filtri di cattura per ridurre la quantità di dati da analizzare.
= Ulteriori risorse =
* [[https://www.wireshark.org|Sito ufficiale del progetto]]
* [[https://www.wireshark.org/docs/wsug_html/|Guida ufficiale]]
* [[https://it.wikipedia.org/wiki/Suite_di_protocolli_Internet|Informazioni sui protocolli Internet]]
* [[https://it.wikipedia.org/wiki/Modello_ISO/OSI|Modello ISO/OSI]]
* [[https://it.wikipedia.org/wiki/TCP/IP|Modello TCP/IP]]
----
CategoryServer CategoryInternet