Home / Network & Sniffing / Network & Sniffing / Controllare la rete con lsof su Linux
Mattepuffo

Controllare la rete con lsof su Linux

Controllare la rete con lsof su Linux

Ho già parlato di lsof in questo articolo.

Qui rivediamo il comando, usandolo però solo per i controlli di rete.

Ovviamente, con lsof, i controlli si possono fare solo sul pc da dove viene lanciato; ed occorre avere privilegi elevati.

Questo un primo esempio:

# lsof -i
COMMAND     PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rpcbind     526     root    6u  IPv4  11099      0t0  UDP *:sunrpc
rpcbind     526     root    7u  IPv4  11102      0t0  UDP *:701
rpcbind     526     root    8u  IPv4  11103      0t0  TCP *:sunrpc (LISTEN)
rpcbind     526     root    9u  IPv6  11104      0t0  UDP *:sunrpc
rpcbind     526     root   10u  IPv6  11105      0t0  UDP *:701
rpcbind     526     root   11u  IPv6  11106      0t0  TCP *:sunrpc (LISTEN)
rpc.statd   535    statd    5u  IPv4  11321      0t0  UDP localhost:711
rpc.statd   535    statd    8u  IPv4  11177      0t0  UDP *:44965
rpc.statd   535    statd    9u  IPv4  11179      0t0  TCP *:50511 (LISTEN)
rpc.statd   535    statd   10u  IPv6  11181      0t0  UDP *:46095
rpc.statd   535    statd   11u  IPv6  11183      0t0  TCP *:44720 (LISTEN)
mongod      553  mongodb    9u  IPv4  12107      0t0  TCP localhost:27017 (LISTEN)
mongod      553  mongodb   10u  IPv4  14086      0t0  TCP localhost:28017 (LISTEN)
..............................................

Questo ottiene tutti i file di rete internet.

Come vedete ci sono varie colonne, molto utili per poter usare dei filtri.

Ad esempio:

# lsof -u mysql | grep -i LISTEN
mysqld  1199 mysql   10u  IPv4              14425       0t0     TCP localhost:mysql (LISTEN)

Così prendiamo tutti i processi di MySQL in ascolto.

Possiamo anche identificare le connessione da o verso un indirizzo IP:

# lsof -i @192.168.1.133
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    4087 root    3u  IPv4 346513      0t0  TCP casa.local:ssh->192.168.1.133:46020 (ESTABLISHED)
sshd    4172 casa    3u  IPv4 346513      0t0  TCP casa.local:ssh->192.168.1.133:46020 (ESTABLISHED)

La connessione SSH dal mio pac al serverino casalingo da cui sto lanciando i comandi.

Infine, il comando per identificare tutte le connessioni attive su TCP:

# lsof -nP -iTCP -sTCP:LISTEN
COMMAND     PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rpcbind     526     root    8u  IPv4  11103      0t0  TCP *:111 (LISTEN)
rpcbind     526     root   11u  IPv6  11106      0t0  TCP *:111 (LISTEN)
rpc.statd   535    statd    9u  IPv4  11179      0t0  TCP *:50511 (LISTEN)
rpc.statd   535    statd   11u  IPv6  11183      0t0  TCP *:44720 (LISTEN)
mongod      553  mongodb    9u  IPv4  12107      0t0  TCP 127.0.0.1:27017 (LISTEN)
mongod      553  mongodb   10u  IPv4  14086      0t0  TCP 127.0.0.1:28017 (LISTEN)
memcached   555   nobody   26u  IPv4  13139      0t0  TCP 127.0.0.1:11211 (LISTEN)
sshd        559     root    3u  IPv4  11643      0t0  TCP *:22 (LISTEN)
sshd        559     root    4u  IPv6  11645      0t0  TCP *:22 (LISTEN)
postgres   1143 postgres    6u  IPv6  14767      0t0  TCP [::1]:5432 (LISTEN)
postgres   1143 postgres    7u  IPv4  14768      0t0  TCP 127.0.0.1:5432 (LISTEN)
mysqld     1199    mysql   10u  IPv4  14425      0t0  TCP 127.0.0.1:3306 (LISTEN)
sendmail-  1201     root    4u  IPv4  12095      0t0  TCP 127.0.0.1:25 (LISTEN)
sendmail-  1201     root    5u  IPv4  12096      0t0  TCP 127.0.0.1:587

Enjoy!