Come controllare la rete da terminale con Linux

by Jessica Lambiase on

Anche se non tutti fanno uso di pratiche del genere, monitorare lo stato della propria rete può rivelarsi utile in molteplici casi.

Ad esempio, se improvvisamente notate attività sospetta (ed inaspettata) di una o più applicazioni della vostra macchina, con una serie di comandi potrete rendervi conto delle applicazioni che si collegano alla rete per constatare se siete vittime di un rootkit o di un malware in generale.

O, ancora, potrebbe ritornare utile rendervi conto di quale programma usa maggiormente la banda di rete. Se siete sviluppatori e state scrivendo un’app che fa uso di Internet, inoltre, monitorare il tutto può essere molto utile ai fini di debug.

Di seguito mostreremo alcuni esempi di utilizzo tipico di quattro applicazioni da linea di comando – utili quindi anche per l’utilizzo da remoto – atte allo scopo.

Le applicazioni contrassegnate come “monitor” permetteranno di monitorare il sistema in real-time finché non verranno manualmente interrotte, quelle contrassegnate come “istantanee” restituiranno come output un’istantanea dello stato della rete. 

Controllare la rete da terminale con Linux

Nethogs (Monitor)

Indubbiamente uno dei tool dall’utilizzo più semplice e particolarmente adatto agli scopi prefissi: in poche parole nethogs permette di visualizzare il traffico di rete in transito tra le applicazioni eseguite in modalità grafica.

Richiede i privilegi di root per essere utilizzato. 

Tramite nethogs si possono ottenere informazioni quali il pid del processo, l’utente che lo esegue, il nome (ed eventualmente i parametri) del processo, l’interfaccia di rete e la velocità di invio e ricezione dei dati (in KB/s).

Per procedere, basterà digitare a terminale il comando

nethogs interfaccia_di_rete

(ad es. nethogs wlan0). E’ possibile uscire in qualsiasi momento dal monitor utilizzando il tasto “q”.

Nethogs potrebbe non essere installato di default sul sistema operativo: in tal caso potrete utilizzare il vostro gestore pacchetti (apt, dnf, yum, pacman, yaourt o quant’altro) per procedere al download e all’installazione.

Nel caso di Ubuntu e Debian potrete installare nethogs tramite il comando

sudo apt install nethogs

TCPDUMP (Monitor)

Come controllare la rete da terminale con Linux

TCPDump è indubbiamente uno degli applicativi più completi ed utili (forse qualche volta fin troppo) per sorvegliare del traffico di rete.

Esso permette di monitorare, visualizzare, analizzare e loggare qualsiasi cosa passi attraverso la rete, permettendo all’utente di prendere visione degli indirizzi di arrivo e destinazione, delle porte d’ascolto, dell’offset dei pacchetti, della tipologia dei pacchetti in transito, dell’header (o del contenuto completo) dei pacchetti, delle applicazioni locali che li gestiscono e tanto, tanto altro ancora.

Come avrete inteso tcpdump è particolarmente utile ai fini di low-level debugging e necessita dei permessi di root per funzionare. Un utilizzo di base di tcpdump potrebbe essere

tcpdump -bi interfaccia_di_rete

Volendo è possibile redirigere l’output in un file di testo, digitando

tcpdump -bi interfaccia_di_rete > logfile.txt

Per interrompere la scansione è possibile utilizzare in qualsiasi momento la combinazione di tasti CTRL+C.

LSOF (Istantanea)

Come controllare la rete da terminale con Linux

Il comando lsof (list open file) permette, nel suo utilizzo di base, di ottenere una lista dei file aperti dal sistema operativo.

Se invocato col parametro -i permette di ottenere informazioni sui processi (nomi e pid) che utilizzano la rete, sul loro stato (connessione stabilita, in chiusura, in listening), sul tipo di protocollo IP usato (ipv4/v6), sulla dimensione dei pacchetti, sulle porte locali in uso e sull’indirizzo di destinazione dei pacchetti in uscita (o l’indirizzo di arrivo dei pacchetti in entrata).

Quindi, per ottenre una lista di tutti i processi utente che interagiscono con la rete, bisognerà digitare:

lsof -i

Per ottenere una lista dei processi utente che stanno utilizzando la rete andremo a digitare

lsof -i | grep ESTABLISHED

Per ottenere una lista dei processi di tutti gli utenti (e del sistema operativo) che interagiscono con la rete dovremo eseguire gli stessi comandi da root (o utilizzando sudo).

Netstat (istantanea)

Come controllare la rete da terminale con Linux

Il comando netstat, nel suo utilizzo di base, permette di visualizzare diverse statistiche su tutte le connessioni (sia internet che di sistema, tramite socket).

Se raffinato con determinati parametri sarà possibile visualizzare informazioni sull’utilizzo della rete del tutto simili a quelle mostrate da lsof, con in più le code di invio e ricezione pacchetti.  

Quindi, per ottenre una lista di tutti i processi utente che interagiscono con la rete, bisognerà digitare:

netstat -tuapw --numeric-hosts --numeric-ports

Per ottenere una lista dei processi utente che stanno utilizzando la rete bisognerà digitare

netstat -tuapw --numeric-hosts --numeric-ports | grep ESTABLISHED

Chiaramente è possibile salvare in un file l’output del comando semplicemente utilizzando l’operatore di redirezione:

netstat -tuapw --numeric-hosts --numeric-ports | grep ESTABLISHED > log.txt

Per ottenere una lista dei processi di tutti gli utenti (e del sistema operativo) che interagiscono con la rete basterà eseguire gli stessi comandi da root (o utilizzando sudo).

L'articolo Come controllare la rete da terminale con Linux appare per la prima volta su Chimera Revo - News, guide e recensioni sul Mondo della tecnologia.

Leggi il contenuto originale su Linux – Chimera Revo – News, guide e recensioni sul Mondo della tecnologia

Written by: Jessica Lambiase