Savoir quels programmes ou processus utilisent les ports TCP/UDP
Publié le 01 mars 2010 - EnBref
Dernière mise à jour le 07 juin 2011
- Article
- |
- Commentaires (0)
- |
- Fichiers attachés (0)
Certaines situations demandent une connaissance précise des ports TCP et UDP ouverts sur une machine, un scan avec un outil comme nmap suffit alors. Mais il est parfois aussi nécessaire de savoir quels processus ou programmes utilisent ces ports. Deux commandes très utiles permettent de le découvrir, netstat et lsof.

NetStat
La commande netstat, pour "Network Statistics" permet d'obtenir de nombreuses informations sur les connexions réseaux et les tables de routage. Cette commande est commune aux systèmes Unix et Windows, bien que certaines options diffères.
Une utilisation simple et très informatives de netstat est netstat -ltunp :
$ netstat -ltunp (Tous les processus ne peuvent être identifiés, les infos sur les processus non possédés ne seront pas affichées, vous devez être root pour les voir toutes.) Connexions Internet actives (seulement serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name tcp 0 0 127.0.0.1:32000 0.0.0.0:* LISTEN 3053/i2psvc tcp 0 0 0.0.0.0:9001 0.0.0.0:* LISTEN 2753/tor tcp 0 0 127.0.0.1:7634 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN - tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN - tcp 0 0 127.0.0.1:9050 0.0.0.0:* LISTEN 2753/tor tcp 0 0 127.0.0.1:9051 0.0.0.0:* LISTEN 2753/tor tcp 0 0 127.0.0.1:57115 0.0.0.0:* LISTEN 2559/beam.smp udp 0 0 0.0.0.0:36919 0.0.0.0:* - udp 0 0 0.0.0.0:68 0.0.0.0:* - udp 0 0 0.0.0.0:5353 0.0.0.0:* - udp 0 0 192.168.5.9:137 0.0.0.0:* - udp 0 0 0.0.0.0:137 0.0.0.0:* - udp 0 0 192.168.5.9:138 0.0.0.0:* - udp 0 0 0.0.0.0:138 0.0.0.0:* -
On trouve via cette commande tous les ports en écoute grâce à l'option -l, et les processus qui utilisent ces ports grâce à l'utilisation de l'option -p. On veux les informations sur UDP et TCP grâce à -u et -t. L'option -n permet quand à elle de ne pas convertir les numéros de ports, adresses IP et utilisateurs en noms. C'est une commande formidable pour trouver les informations avant de configurer un firewall par exemple.
Une autre commande utile avec netstat est netstat -ntu :
$ netstat -ntu tcp 1 0 127.0.0.1:59108 127.0.0.1:57115 CLOSE_WAIT tcp 38 0 192.168.5.9:51572 174.36.30.67:443 CLOSE_WAIT tcp 0 0 192.168.5.9:9001 81.166.101.28:41343 ESTABLISHED tcp 0 0 192.168.5.9:9001 94.23.168.19:51030 TIME_WAIT tcp 0 0 192.168.5.9:53554 213.112.108.246:9001 ESTABLISHED tcp 0 0 192.168.5.9:46246 66.90.110.156:9001 ESTABLISHED tcp 0 0 192.168.5.9:44489 66.230.230.230:443 ESTABLISHED tcp 0 0 192.168.5.9:39149 192.251.226.206:443 ESTABLISHED tcp 0 0 192.168.5.9:40316 194.187.148.101:443 ESTABLISHED tcp 0 0 192.168.5.9:9001 149.9.0.59:45695 ESTABLISHED tcp 0 0 192.168.5.9:53182 212.117.166.26:9001 ESTABLISHED tcp 0 0 192.168.5.9:9001 85.25.137.16:49705 ESTABLISHED
Cette commande peut renvoyer un listing très long, il est donc plus sage d'envoyer le retour dans more ou less via un pipe, comme cela :
netstat -ntu | less
On obtient ici la totalité des communications en cours en TCP et UDP lors du lancement de la commande. L'état de la communication est également disponible, avec par exemple "CLOSE_WAIT" et "TIME_WAIT" pour les connexions en cours de fermeture ou "SYN_SENT" pour les connexions en cours d'ouverture. Il existe de nombreux états en TCP.
NetStat est vraiment magique pour savoir ce qui se passe au niveau TCP et UDP, alors n'hésitez pas à jeter un œil à la page de manuel pour découvrir l'étendu des possibilités :
man netstat
LSOF
La commande lsof permet de lister les fichiers ouverts sous un système Unix. Et comme sous Unix tout est fichier, on peux s'attaquer aux réseaux. Comparée à netstat, lsof fait un peu figure de bulldozer de par sa puissance, mais il s'agit tout de même d'une commande remarquable pour découvrir l'utilisation par les processus de la pile TCP/IP.
Pour afficher toutes les connexions ouvertes et les ports à l'écoute, on utilise lsof -ni :
$ lsof -ni ubuntuone 2309 mpatout 14u IPv4 11274 0t0 TCP 127.0.0.1:59108->127.0.0.1:57115 (CLOSE_WAIT) dropbox 2347 mpatout 12u IPv4 10791 0t0 TCP 192.168.5.9:51572->14.36.50.67:https (CLOSE_WAIT) dropbox 2347 mpatout 17u IPv4 10933 0t0 TCP 192.168.5.9:38553->218.43.22.11:www (ESTABLISHED) beam.smp 2559 mpatout 15u IPv4 11218 0t0 TCP 127.0.0.1:57115 (LISTEN) vidalia 2705 mpatout 34u IPv4 12070 0t0 TCP 127.0.0.1:58793->127.0.0.1:9051 (ESTABLISHED) claws-mai 2716 mpatout 25u IPv4 11940 0t0 TCP 192.168.5.9:36450->74.15.139.109:imaps (ESTABLISHED) claws-mai 2716 mpatout 31u IPv4 158927 0t0 TCP 192.168.5.9:57495->123.251.214.116:imap2 (ESTABLISHED) firefox 2719 mpatout 81u IPv4 157964 0t0 TCP 192.168.5.9:41510->109.85.227.101:www (ESTABLISHED) tor 2753 mpatout 7u IPv4 12066 0t0 TCP *:9001 (LISTEN) tor 2753 mpatout 9u IPv4 12067 0t0 TCP 127.0.0.1:9050 (LISTEN) tor 2753 mpatout 16u IPv4 12068 0t0 TCP 127.0.0.1:9051 (LISTEN) tor 2753 mpatout 21u IPv4 12074 0t0 UDP 192.168.5.9:58000->212.27.40.241:domain tor 2753 mpatout 22u IPv4 12075 0t0 UDP 192.168.5.9:38023->212.27.40.240:domain tor 2753 mpatout 24u IPv4 150239 0t0 TCP 192.168.5.9:9001->217.13.196.70:54680 (ESTABLISHED) tor 2753 mpatout 26u IPv4 12223 0t0 TCP 192.168.5.9:49444->115.84.182.227:www (ESTABLISHED) tor 2753 mpatout 27u IPv4 12224 0t0 TCP 192.168.5.9:47167->96.249.48.174:9011 (ESTABLISHED) tor 2753 mpatout 28u IPv4 12267 0t0 TCP 127.0.0.1:9051->127.0.0.1:58793 (ESTABLISHED) tor 2753 mpatout 56u IPv4 154047 0t0 TCP 192.168.5.9:55092->78.142.140.194:9001 (ESTABLISHED) tor 2753 mpatout 87u IPv4 156478 0t0 TCP 192.168.5.9:9001->82.80.248.177:46005 (ESTABLISHED) i2psvc 3053 mpatout 4u IPv4 16678 0t0 TCP 127.0.0.1:32000 (LISTEN) i2psvc 3053 mpatout 7u IPv4 16742 0t0 TCP 127.0.0.1:32000->127.0.0.1:52299 (ESTABLISHED) java 3055 mpatout 4u IPv4 16678 0t0 TCP 127.0.0.1:32000 (LISTEN) java 3055 mpatout 34u IPv6 16741 0t0 TCP 127.0.0.1:52299->127.0.0.1:32000 (ESTABLISHED) java 3055 mpatout 39u IPv6 16848 0t0 TCP 192.168.5.9:7652 (LISTEN) java 3055 mpatout 41u IPv6 16857 0t0 UDP *:1900 java 3055 mpatout 42u IPv6 16870 0t0 UDP *:7653 java 3055 mpatout 43u IPv6 16883 0t0 UDP *:8887 java 3055 mpatout 54u IPv6 16909 0t0 TCP [::1]:7657 (LISTEN) java 3055 mpatout 55u IPv6 16910 0t0 TCP 127.0.0.1:7657 (LISTEN) java 3055 mpatout 58u IPv6 16986 0t0 TCP 127.0.0.1:7654 (LISTEN) java 3055 mpatout 59u IPv6 16987 0t0 TCP 127.0.0.1:7654->127.0.0.1:39368 (ESTABLISHED) java 3055 mpatout 60u IPv6 89475 0t0 TCP 127.0.0.1:7656->127.0.0.1:60531 (ESTABLISHED) ssh 3221 mpatout 3u IPv4 17491 0t0 TCP 192.168.5.9:48288->68.138.226.89:62345 (ESTABLISHED) imule 7570 mpatout 9u IPv4 89130 0t0 TCP 127.0.0.1:60526->127.0.0.1:7656 (ESTABLISHED) imule 7570 mpatout 28u IPv4 89541 0t0 TCP 127.0.0.1:60531->127.0.0.1:7656 (ESTABLISHED)
Ici aussi, l'utilisation d'un pipe vers less est plus que recommandée. Il est de plus possible de cibler un port ou une adresse IP.
Ainsi pour un port : lsof -in tcp:9001
$ lsof -ni tcp:9001 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME tor 2753 mpatout 7u IPv4 12066 0t0 TCP *:9001 (LISTEN) tor 2753 mpatout 24u IPv4 166805 0t0 TCP 192.168.5.9:9001->216.224.124.114:38568 (ESTABLISHED) tor 2753 mpatout 25u IPv4 12220 0t0 TCP 192.168.5.9:49598->94.136.16.242:9001 (ESTABLISHED) tor 2753 mpatout 29u IPv4 151740 0t0 TCP 192.168.5.9:9001->82.94.251.204:49455 (ESTABLISHED) tor 2753 mpatout 30u IPv4 164563 0t0 TCP 192.168.5.9:9001->149.9.0.57:55959 (ESTABLISHED) tor 2753 mpatout 32u IPv4 157809 0t0 TCP 192.168.5.9:9001->62.241.240.82:40144 (ESTABLISHED) tor 2753 mpatout 33u IPv4 151747 0t0 TCP 192.168.5.9:9001->194.109.206.212:52770 (ESTABLISHED) tor 2753 mpatout 36u IPv4 135086 0t0 TCP 192.168.5.9:49694->195.184.125.162:9001 (ESTABLISHED) tor 2753 mpatout 38u IPv4 82466 0t0 TCP 192.168.5.9:9001->194.109.7.218:49629 (ESTABLISHED) tor 2753 mpatout 39u IPv4 157148 0t0 TCP 192.168.5.9:9001->213.239.206.110:49401 (ESTABLISHED) tor 2753 mpatout 40u IPv4 151991 0t0 TCP 192.168.5.9:9001->212.85.158.24:42398 (ESTABLISHED)
Et ainsi pour une adresse IP et un port sur cette adresse : lsof -ni tcp@87.236.199.73:9001
$ lsof -ni tcp@87.236.199.73:9001 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME tor 2753 mpatout 49u IPv4 161568 0t0 TCP 192.168.5.9:37354->87.236.199.73:9001 (ESTABLISHED)
Le retour contiendra alors uniquement les lignes faisant références au port ou à l'adresse spécifié.
lsof est un outil aux capacités très étendues, qui peut apporter des informations précieuses.

