Come faccio ad analizzare il traffico di rete sulla mia interfaccia?

Ritratto di admin

Un ottimo strumento per nalizi dettagliate è tcpick

# apt-get install tcpick

Permette di analizzare nel dettaglio le connessioni in ingresso e in uscita sulle interfacce di sistema, fornendo una completa visione degli stati della connesione (3 Way HandShake).
Questa sua peculiarità può aiutare a capire oltre alla provenienza delle connesioni anche il loro stato e se queste si chiudono correttamente oppure se vengono respinte o se restano appese.

Un suo utilizzo classico con lo switch per i colori diversi è:

# tcpick -C -i eth0
Starting tcpick 0.2.1 at 2010-02-22 12:32 CET
Timeout for connections is 600
tcpick: listening on eth0
1 SYN-SENT 192.168.0.21:51906 > 192.168.0.15:ircd
1 RESET 192.168.0.21:51906 > 192.168.0.15:ircd

In realtà è essenziale poter impostare dei filtri per poter selezionare le informazioni interessate che spesso sono troppe. Vediamone alcuni esempi:

Analizziamo il traffico di uno specifico protocollo
# tcpick -C -i eth0 "port 22"
Starting tcpick 0.2.1 at 2010-02-22 12:35 CET
Timeout for connections is 600
tcpick: listening on eth0
setting filter: "port 22"
1 SYN-SENT 192.168.17.152:1723 > 192.168.17.211:ssh
1 SYN-RECEIVED 192.168.17.152:1723 > 192.168.17.211:ssh
1 ESTABLISHED 192.168.17.152:1723 > 192.168.17.211:ssh

Analizziamo il traffico di uno specifico host
asterisk:~# tcpick -C -i eth0 "host 192.168.17.9"
Starting tcpick 0.2.1 at 2010-02-22 12:36 CET
Timeout for connections is 600
tcpick: listening on eth0
setting filter: "host 192.168.17.9"
1 SYN-SENT 192.168.17.9:36235 > 192.168.17.211:smtp
1 SYN-RECEIVED 192.168.17.9:36235 > 192.168.17.211:smtp
1 ESTABLISHED 192.168.17.9:36235 > 192.168.17.211:smtp

Escludiamo il traffico della porta 80 (web):
# tcpick -i eth2 -C -h "not port 80"
Starting tcpick 0.2.1 at 2006-10-23 17:52 CEST
Timeout for connections is 600
tcpick: listening on eth2
setting filter: "not port 80"
213.254.10.95:2521 AP > 84.211.1.95:18817 (173)
84.211.1.95:18817 AP > 213.254.10.95:2521 (4)
213.254.10.95:2521 A > 84.211.1.95:18817 (0)
213.254.10.95:8079 AP > 213.140.0.106:29478 (2)

Escludiamo un host specifico:
# tcpick -i eth2 -C -h "not host 192.168.0.150"
Starting tcpick 0.2.1 at 2006-10-23 17:57 CEST
Timeout for connections is 600
tcpick: listening on eth0
setting filter: "not host 192.168.0.133"
192.168.0.150:2531 AP > 192.168.0.155:ssh (40)
192.168.0.155:ssh AP > 192.168.0.150:2531 (176)
192.168.0.150:2531 A > 192.168.0.155:ssh (0)

Escludiamo un host specifico e una porta contemporaneamente:
# tcpick -i eth0 -C -h "not host 192.168.0.133 and not port 22"
Starting tcpick 0.2.1 at 2006-10-23 17:57 CEST
Timeout for connections is 600
tcpick: listening on eth0
setting filter: "not host 192.168.0.133 and not port 22"
Starting tcpick 0.2.1 at 2006-10-23 17:57 CEST
Timeout for connections is 600
tcpick: listening on eth0
setting filter: "not host 192.168.0.133"
192.168.0.150:2531 AP > 192.168.0.155:ssh (40)
192.168.0.155:ssh AP > 192.168.0.150:2531 (176)

Alcuni esempi avanzati:

Visualizzare il contenuto del pacchetto e una stringa riassuntiva
dell’header:
# tcpick -i eth0 -C -yP -h -a

Visualizzare le email inviate da un utente
# tcpick -i eth0 -C -bCU -T1 "port 25"

scaricare file in maniera passiva
# tcpick -i eth0 -wR "port ftp-data"

loggare i dati http in file unici (client e server sono mescolati):
# tcpick -i eth0 "port 80" -wRub

redirigere la prima connessione verso un software
# tcpick -i eth0 --pipe client "port 80" | gzip >
http_response.gz
# tcpick -i eth0 --pipe server "port 25" | nc foobar.net 25