Monitorare la rete con ngrep su Linux

Monitorare la rete con ngrep su Linux

Possiamo considerare ngrep come una estensione di grep per monitorare il traffico di rete.

Dovrebbe essere presente nei repo di praticamente tutte le distro; per installarlo su Archlinux:

# pacman -Sy ngrep

Ricordate che bisogna lanciarlo con privilegi elevati.

Se lo avviamo senza parametri, inizierà a catturare la qualunque.

Ma la cosa migliore di questo programma, è che supporta praticamente la sintassi di grep.

Per fare un esempio:

# ngrep -q '^GET .* HTTP/1.[01]'
interface: enp3s0 (192.168.1.0/255.255.255.0)
match: ^GET .* HTTP/1.[01]

T 192.168.1.30:47766 -> 62.149.140.166:80 [AP]
  GET / HTTP/1.1..Host: www.mattepuffo.com..User-Agent: Mozilla/5.0 
(X11; Linux x86_64; rv:53.0) Gecko/20100101 Firefox/53.0..
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8..
Accept-Langu
  age: en-US,en;q=0.5..Accept-Encoding: gzip, deflate..DNT: 1..
Connection: keep-alive..Upgrade-Insecure-Requests: 1....

In pratica intercettiamo i valori passati in GET su protocollo HTTP.

Possiamo anche decidere di intercettare solo il traffico passante per una porta o un host:

# ngrep -q '^GET .* HTTP/1.[01]' 'port 80'
# ngrep -q '^GET .* HTTP/1.[01]' 'host mattepuffo.com'

Date un'occhiata alla pagina man per ulteriori esempi!

Enjoy!