Dimensione: 6324
Commento:
|
← Versione 37 del 26/05/2025 18.24.40 ⇥
Dimensione: 18887
Commento: copia da ivantu/Server/Wireshark
|
Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
Linea 2: | Linea 2: |
#format wiki | |
Linea 3: | Linea 4: |
#format wiki [[BR]] ||<tablestyle="float:right; font-size: 0.9em; width:25%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Indice''' [[TableOfContents(1)]]|| |
<<BR>> <<Indice(depth=2)>> <<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?t=80325"; rilasci="24.04 22.04")>> |
Linea 9: | Linea 10: |
||<style="border:none ;">attachment:logo.jpg ||<style="border:none ;">'''Wireshark''' è un analizzatore di protocolli (''packet sniffer''), che permette di monitorare e filtrare tutti i pacchetti che passano attraverso una o più interfacce di rete || ||<tablestyle="text-align: justify; width:75%; " style="border:none;" 5%>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''In questa guida non viene indicato come interpretare i dati monitorati, in quanto è necessaria un'approfondita conoscenza dei protocolli di rete e dei modelli ISO/OSI, nonchè del protocollo TCP/IP.'' || |
'''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. |
Linea 15: | Linea 86: |
'''Wireshark''' è disponibile nel [:Repository/Componenti:componente] '''universe''' dei [:Repository:repository] ufficiali. Dopo aver abilitato tale componente è sufficiente [:AmministrazioneSistema/InstallareProgrammi:installare] il pacchetto ''wireshark''. | {{{#!wiki note Si consiglia di mantenere Wireshark aggiornato per beneficiare delle ultime correzioni di bug e funzionalità.<<BR>> 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]].<<BR>> 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]]. |
Linea 19: | Linea 140: |
[[Immagine(Wireshark/Opzioni.png,500,right)]] Per configurare il monitoraggio della scheda di rete è utile cliccare su '''''Caption -> Options...'''''. Per esempio, nel menù a tendina è possibile scegliere l'interfaccia di rete che si desidera monitorare. A seconda della propria scheda di rete scelta, è inoltre possibile vedere il relativo indirizzi IP. All'interno della sezione «'''Capture file(s)'''» è possibile salvare in un file di testo tutto ciò che verrà ''loggato'' dall'applicazione. In «'''Stop capture'''» è invece possibile impostare delle condizioni che, quando verificate, comporteranno l'immediato arresto delle operazioni di cattura. In «'''Name Rosolution'''» è possibile attivare la risoluzione dei nomi della rete. {{{ #!frame align=clear }}} = Cattura = Una volta configurato il programma, per avviare il monitoraggio dei pacchetti, è sufficiente cliccare su '''''Capture -> Start'''''. In alternativa, è possibile selezionare le interfacce desiderate dalla voce '''''Capture -> Interfaces...'''''. Apparità la seguente finestra, dalla quale sarà possibile scegliere le singole interfacce per le quali avviare il monitoraggio: attachment:interfaccia.png Una volta cliccato su «'''Start'''», '''wireshark''' inizierà a [http://it.wikipedia.org/wiki/Sniffing sniffare] i pacchetti. attachment:cattura2.png Per terminare le operazioni è sufficiente cliccare su «'''Stop'''». Terminata la cattura, verrà mostrato il log contenente tutti i pacchetti inviati e ricevuti attraverso la propria rete. attachment:log.png = Filtri = '''Wireshark''' consente di impostare dei filtri: con il programma ve vengono offerti alcuni già preimpostati, è inoltre possibile crearne altri personalizzati. Di seguito vengono elencati i filtri più comuni: ||<style="background-color:#E95E5E ;":>'''Nome''' ||<style="background-color:#E95E5E ;":>'''Filtro''' ||<style="background-color:#E95E5E ;":>'''Descrizione''' || || IP address 192.168.0.1 || ip.addr == 192.168.0.1 || Filtrare tutte le righe che hanno a che fare con l'IP 192.168.0.1 || || No ARP || not arp || Visualizzare tutti i protocolli tranne ARP || || TCP only || tcp || Visualizzare solo il protocollo TCP || || No ARP and no DNS || not arp and !(udp.port == 53) || Non visualizza le informazioni riguardanti il protocollo ARP e tutte le porte UDP 53 || == Creare un filtro == È possibile creare dei filtri personalizzati: '''wireshark''' visualizzerà solo i dati rientreranno nelle condizioni del filtro. A tale scopo si può procedere cliccando su '''''Analyze -> Display Filters...'''''. Verrà visualizzata una finestra, all'interno della quale si trovano tutti i filtri già configurati. Per creare un nuovo filtro è sufficiente assegnargli un nome e cliccare su «'''Nuovo'''». Per configurare i parametri relativi ai pacchetti e agli indirizzi da filtrare, cliccare su «'''Expression...'''»: si aprirà una finestra dalla quale sarà possibile scegliere il tipo di pacchetto e i relativi parametri. Per esempio, si potrebbe decidere di creare un filtro che mostri il traffico dei pacchetti solo esclusivamente per la porta TCP 60754. All'interno di '''Wireshark Dsplay Filter''', digitare il seguente testo all'interno della casella «'''Filter name'''»: {{{ TCP porta 60754 }}} Infine cliccare su «'''Nuovo'''», dunque su «'''Expression...'''». All'interno della finestra '''Wireshark Filter Expression''' scegliere la voce '''''TCP -> tcpsrcport - Source Port''''', dunque selezionare «'''=='''» all'interno di «'''Relation'''», infine, in «'''Value'''», impostare 60754 come numero della porta. Una volta applicato il filtro ecco il risultato: attachment:filtro.png = Protocolli supportati = Wireshark è in grado di leggere un grosso numero di protocolli, i principali sono: * '''TCP:''' (Transmission Control Protocol) è un protocollo corrispondente al livello 4 (trasporto) del modello di riferimento OSI. * '''UDP:''' (User Datagram Protocol) è un protocollo di trasporto a pacchetto. È usato di solito in combinazione con il protocollo IP. * '''ICMP:''' (Internet Control Message Protocol) è un protocollo di servizio che si preoccupa di trasmettere informazioni riguardanti malfunzionamenti. * '''ARP:''' (Address Resolution Protocol) è un protocollo che fornisce la "mappatura" tra l'indirizzo IP di un calcolatore e il suo MAC address. La lista completa dei protocolli supportati dall'applicazione si può visualizzare da '''''Analyze -> enabled protocols...'''''; dallo stesso menu è possibile anche scegliere quali protocolli abilitare e quali disabilitare. attachment:protocollo.png |
== 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.<<BR>> 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.<<BR>>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: ||<tablestyle="width:80%;" :20%>'''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: ||<tablestyle="width:80%;" :20%>'''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: ||<tablestyle="width:80%;" :20%>'''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: ||<tablestyle="width:80%;" :20%>'''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.<<BR>> 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. |
Linea 87: | Linea 319: |
* [http://www.wireshark.org/ Sito ufficiale Wireshark] * [http://www.wireshark.org/docs/wsug_html/ Guida ufficiale Wireshark] * [http://it.wikipedia.org/wiki/Suite_di_protocolli_Internet Informazioni sui protocolli Internet] * [http://it.wikipedia.org/wiki/Modello_ISO/OSI Modello ISO/OSI] * [http://it.wikipedia.org/wiki/TCP/IP Modello TCP/IP] |
* [[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]] |
Indice
- Introduzione
- Protocolli di rete supportati
- Installazione
- Avvio
-
Configurazione
- Configurare i permessi per la cattura dei pacchetti
- Aggiungere l'utente al gruppo wireshark
- Connessione delle interfacce (solo snap)
- Cattura e monitoraggio dei pacchetti
- Abilitare protocolli
- Utilizzo dei filtri
- Tipi di filtri
- Sintassi dei filtri
- Impostare i Filtri di Cattura
- Impostare i Filtri di Visualizzazione (Display Filters)
- Risoluzione dei problemi
- Ulteriori risorse
Guida verificata con Ubuntu: 22.04 24.04
Problemi in questa pagina? Segnalali in questa discussione
Introduzione
Wireshark è un analizzatore in tempo reale di 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.
In questa guida non viene indicato come interpretare i dati monitorati, in quanto è necessaria un'approfondita conoscenza dei protocolli di rete e dei modelli ISO/OSI, nonché del protocollo TCP/IP.
Protocolli di rete supportati
Il supporto per i 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.
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 paragrafo relativo alla configurazione. Inoltre si ricorda che Wireshark permette di scrivere dissettori personalizzati (plugin) per analizzare protocolli non supportati di default.
Installazione
Si consiglia di mantenere Wireshark aggiornato per beneficiare delle ultime correzioni di bug e funzionalità.
L'installazione tramite apt è il metodo più semplice e consigliato per la maggior parte degli utenti.
Da repository
Installare il pacchetto wireshark
Al termine dell'installazione sarà possible avviare Wireshark.
Durante l'installazione, verrà chiesto di permettere agli utenti non-root di catturare pacchetti. È fortemente consigliato rispondere Sì a questa domanda.
Snap
Digitare nel terminale il comando:
sudo snap install wireshark
- Riavviare la sessione.
Al termine dell'installazione sarà possibile avviare Wireshark.
L'installazione 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
Consultare questa guida per abilitare flatpak e Flathub.
Digitare in un terminale il comando:
flatpak install flathub org.wireshark.Wireshark
Una volta installato, sarà possibile avviare il programma da menu oppure con il comando
flatpak run org.wireshark.Wireshark
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 questa guida per modificare i permessi necessari e l'accesso all'hardware, oppure semplicemente utilizzare la versione nei repository.
Il pacchetto presente su FlatHub è mantenuto dalla community.
Avvio
Per avviare Wireshark, digitare nel terminale il seguente comando:
wireshark
Si dovrebbe essere in grado di visualizzare le interfacce di rete e iniziare a catturare pacchetti senza utilizzare privilegi di amministrazione.
Configurazione
Configurare i permessi per la cattura dei pacchetti
Se durante l'installazione tramite apt è stato risposto No alla richiesta di permettere agli utenti non-root di catturare pacchetti, è possibile modificare tale scelta.
Eseguire nel terminale il seguente comando:
sudo dpkg-reconfigure wireshark-common
Selezionare Sì quando richiesto.
Aggiungere l'utente al gruppo wireshark
Per permettere all'utente di catturare pacchetti senza dover utilizzare sudo, è necessario aggiungerlo al gruppo wireshark.
Digitare nel terminale il seguente comando:
sudo usermod -aG wireshark [nome_utente]
sostituendo [nome_utente] con il nome utente desiderato.
- Riavviare la sessione utente per applicare le modifiche al gruppo, oppure riavviare il sistema.
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 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.
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 tramite apt.
Se Wireshark è stato installato tramite snap è necessario connettere manualmente le interfacce per permettere di accedere alla rete.
Digitare nel 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 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
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:
Avviare Wireshark.
Cliccare sull'icona Opzioni (a forma di ingranaggio) o seguire il menu Cattura → Opzioni.
Nella finestra Opzioni di cattura selezionare l'interfaccia di rete da monitorare.
Inserire il filtro di cattura nel campo Filtro di cattura per le interfacce selezionate:.
Cliccare su Avvia per avviare la cattura.
Nella seguente tabella sono riportati degli esempi:
Filtro |
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:
Avviare Wireshark.
Cliccare sull'icona Opzioni (a forma di ingranaggio) o seguire il menu Cattura → Opzioni.
Nella finestra Opzioni di cattura aprire un file di cattura esistente.
- Inserire il filtro di visualizzazione nella barra dei filtri sopra la lista dei pacchetti.
Premere Invio per applicare il filtro.
Wireshark mostrerà solo i pacchetti che corrispondono al filtro.
Nella seguente tabella sono riportati degli esempi:
Filtro |
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 |
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 |
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 terminale il comando:
groups
Interfacce di rete non visualizzate
Se Wireshark non mostra le interfacce di rete, a seconda del tipo di installazione:
tramite APT: controllare di aver configurato correttamente i permessi.
tramite Snap: provare a connettere le 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 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.