Come monitorare l’attività di rete su un sistema Linux

Ci sono molte ragioni per cui potreste voler monitorare l’attività di rete sul vostro sistema Linux. Si potrebbe essere in fase di risoluzione di un problema di rete, si potrebbe voler controllare per assicurarsi che non ci siano applicazioni dannose che creano attività di rete sospette, o si potrebbe semplicemente voler sapere se qualche processo sta telefonando a casa. Qualunque sia la ragione, ecco alcuni metodi per vedere quali processi sul vostro sistema sono impegnati in attività di rete e con chi stanno comunicando.

In questo tutorial imparerete:

  • Come monitorare le connessioni di rete e i servizi in ascolto con netstat
  • Come monitorare le connessioni di rete e i servizi in ascolto con lsof
  • Come monitorare le connessioni di rete e i servizi in ascolto con ifconfig
  • Quali strumenti puoi usare per esaminare i dati che vengono inviati in rete

Come monitorare l’attività di rete su un sistema Linux

Requisiti software e convenzioni usate

Requisiti software e convenzioni linea di comando Linux
Categoria Requisiti, Convenzioni o versione del software usata
Sistema Distribuzione indipendente
Software netstat, lsof, ifconfig, wireshark, tcpdump
Altro Accesso privilegiato al tuo sistema Linux come root o tramite il comando sudo.
Convenzioni # – richiede che determinati comandi linux siano eseguiti con privilegi di root o direttamente come utente root o tramite il comando sudo
$ – richiede che determinati comandi linux siano eseguiti come un normale utente non privilegiato

Netstat

Netstat è una potente utility che può stampare le connessioni di rete, tabelle di routing, statistiche di interfaccia, connessioni masquerade e appartenenze multicast. Lo useremo per realizzare la prima cosa.

Installazione di Netstat

Su Debian e sistemi basati su Debian come Ubuntu, usate apt.

# apt install net-tools

Su Red Hat Enterprise Linux e sistemi basati su Red Hat, usate yum,

# yum install net-tools

Su sistemi basati su Arch, usate pacman.

# pacman -S net-tools
Cercasi Analista Sistemi Linux !
L’Istituto Geofisico UAF, è alla ricerca di un analista di sistemi Linux con esperienza per unirsi al loro team di analisti e ingegneri di infrastrutture informatiche di ricerca. LOCATION: Fairbanks, Alaska, USA
APPLY NOW
NOTA
Negli esempi seguenti stiamo usando un’installazione fresca di RHEL 8 in esecuzione in VirtualBox con aggiunte guest installate

Visualizza i processi in ascolto

Primo, visualizziamo i processi che sono in ascolto di connessioni. Per farlo, digitate il seguente comando.

$ sudo netstat -tulpen

In questo comando t visualizza TCP connessioni, u visualizza le connessioni UDP, l mostra solo i socket in ascolto, p mostra il programma a cui appartiene la connessione, e mostra informazioni estese, e n rappresenta indirizzi, utenti e porte numericamente.

netstat -tulpen output

Quando si considera il modello client server su cui si basa la maggior parte del software di rete, i processi in ascolto possono essere pensati come software che è in modalità “server”. Non c’è nulla di sorprendente nell’output, data la nostra configurazione. Questi sono tutti i processi che ci si aspetterebbe siano in ascolto per le connessioni di rete su un’installazione fresca di RHEL 8 che gira inVirtualBox.
Per ogni processo in ascolto puoi vedere il protocollo utilizzato, l’indirizzo locale e la porta su cui è in ascolto, l’utente con cui è in esecuzione e il PID/nome del programma. C’è una distinzione importante da notare qui. Per le connessionitcp4/udp4(elencate semplicemente cometcpeudp) dove ilLocal Addressè elencato come0.0.0.0il processo è in ascolto per connessioni da qualsiasi macchina che è in grado di connettersi ad esso sulla rete, mentre quando è elencato come127.0.0.1è solo in ascolto per connessioni sul localhost (la macchina su cui è in esecuzione o se stesso) e non può essere connesso da altri computer sulla rete. La stessa distinzione è vera pertcp6/udp6quando si confronta unLocal Addressdi::(di fronte alla rete) e::1(solo localhost).

Visualizza tutte le connessioni di rete

Ora diamo un’occhiata a tutte le connessioni di rete correnti. Per fare questo inserisci il seguente comando, che è simile al precedente tranne che usiamo -a per visualizzare tutti i socket invece di -l per visualizzare solo i socket in ascolto.

$ sudo netstat -atupen

Oltre a mostrarci quali software abbiamo in ascolto per le connessioni come “server”, questo comando ci mostra anche le connessioni attualmente stabilite con quel software e qualsiasi connessione di rete stabilita che abbiamo usando un software che agisce come “client” come un browser web.

netstat -atupen output

Nella schermata si notano 2 connessioni nello statoESTABLISHED. Ancora una volta, non ci sono sorprese qui. Una di esse appartiene a NetworkManager e funziona come un client DHCP per abilitare la rete dal server gateway (in questo caso, la macchina host). L’altra è una connessione SSH alla macchina che abbiamo fatto dopo il port forwarding del servizio ssh con VirtualBox. Se abbiamo visto qualcosa di inaspettato qui, allora potrebbe essere motivo di ulteriori indagini.

Visualizza le connessioni stabilite

Potresti trovarti in una situazione in cui vuoi visualizzare solo le connessioni ESTABLISHED. Questo è facile come pipettare l’output di netstat a grep in questo modo.

$ sudo netstat -atupen | grep ESTABLISHED

sudo netstat -atupen | grep ESTABLISHED output

Abbiamo inserito il comando di cui sopra dopo aver navigato su wikipedia.com in firefox e lo screenshot cattura le connessioni stabilite da firefox quando raggiunge il sito. Come potete vedere ci sono quattro server a cui firefox si è collegato; 91.198.174.192, 172.217.23.100, 216.58.215.67 e 104.111.215.142. Per vedere a chi appartengono questi server possiamo interrogare gli indirizzi ip con whois in questo modo.

$ whois 91.198.174.192| less

Facendo questo per ognuno di loro si scopre che appartengono rispettivamente a Wikimedia, Google, Google e Akamai. Questo ha senso considerando che Wikimedia possiede e ospita wikipedia ed è molto comune per i siti caricare risorse che sono ospitate su server di proprietà di Google e Akamai. Infatti, esaminando il codice sorgente della homepage di wikipedia rivela che carica l’app-badge di Google Play Store da google.com e l’app-badge di Apple AppStore da apple.com.
Seguendo gli URL di queste 2 app badge individualmente ed emettendo il comando netstat di cui sopra si verifica effettivamente che sono ospitate su server di proprietà di Google e Akamai rispettivamente.

Se questo ha acceso il tuo interesse per netstat allora abbiamo un articolo che puoi leggere per saperne di più sull’uso del comando netstat

ss

Il comando netstat è stato a lungo uno dei preferiti dai sysadmin, tuttavia è stato recentemente sostituito dal comando ss che si vanta di essere più veloce, facile e più leggibile di netstat. Vediamo come realizzare le stesse azioni eseguite sopra usando ss. Ss ha anche un’opzione -e per visualizzare informazioni estese, ma questa opzione è stata omessa dagli esempi seguenti perché produce informazioni aggiuntive che possono risultare in un output meno leggibile.

Visualizza i processi in ascolto

Per visualizzare tutti i processi in ascolto inserire quanto segue.

$ sudo ss -tlunp

In questo comando t visualizza TCP connessioni, l mostra solo i socket in ascolto, u visualizza le connessioni UDP, n rappresenta indirizzi, utenti e porte numericamente, e p mostra il programma cui appartiene la connessione.

Visualizza tutte le connessioni di rete

Per visualizzare tutte le connessioni di rete digitare quanto segue, dove a sostituisce l e mostra tutti i socket di rete non solo quelli in ascolto.

$ sudo ss -taunp

Visualizza le connessioni stabilite

Se -a o -l non sono inclusi allora ss mostrerà solo le connessioni stabilite. Per visualizzare solo le connessioni stabilite inserisci quanto segue.

$ sudo ss -tunp

lsof

Solo nel caso in cui netstat e ss non fossero abbastanza per te, presentiamo lsof. Lsof è usato per elencare i file aperti. GNU/Linux ha ereditato il principio di progettazione UNIX che tutto è un file; questo include le connessioni di rete. Di conseguenza, lsof può essere usato per visualizzare l’attività di rete in modo simile ai comandi sopra citati.

Visualizza tutte le connessioni di rete

Per visualizzare tutte le connessioni di rete inserire quanto segue.

$ sudo lsof -nP -i

In questo comando n rappresenta gli indirizzi numericamente, P rappresenta le porte numericamente, e i sopprime l’elenco di tutti i file aperti che non sono considerati file di rete.

Visualizza le connessioni stabilite

Per visualizzare solo le connessioni stabilite inserire il seguente dove gli switch aggiuntivi elencano tutte le connessioni stabilite TCP.

$ sudo lsof -nP -iTCP -sTCP:ESTABLISHED

Visualizza i processi in ascolto

Per visualizzare i processi in ascolto usando lsof inserisci quanto segue.

$ sudo lsof -nP -iTCP -sTCP:LISTEN

Questo mancherà qualsiasi processo che è in ascolto su UDP, quindi può essere desiderabile inserire invece quanto segue per includere anche quelli.

$ sudo lsof -nP -i | grep 'LISTEN\|UDP'

Monitoraggio dei dati inviati in rete

Abbiamo visto come netstat, ss e ifconfig possono essere usati per monitorare quali connessioni di rete vengono effettuate e a chi, ma spesso è auspicabile vedere esattamente quali dati vengono inviati in rete. Per raggiungere questo obiettivo abbiamo bisogno di applicazioni che siano capaci di sniffare i pacchetti. Due programmi specializzati in questo settore sono tcpdump e wireshark.
Abbiamo già scritto guide su come installare wireshark su RHEL 8, Le basi dell’analizzatore di protocollo di rete Wireshark su Linux, Filtrare i pacchetti in Wireshark su Kali Linux, e la sezione Network Monitoring del sistema Linux e del monitoraggio hardware reso efficiente include una bella introduzione a tcpdump.

Conclusione

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.