Pas Tout A Fait

Aller au contenu | Aller au menu | Aller à la recherche

Savoir quels programmes ou processus utilisent les ports TCP/UDP

Dernière mise à jour le 01 février 2013

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.

rj45-snake.jpg


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 -ni 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.

Matthieu Patout

Auteur: Matthieu Patout

Restez au courant de l'actualité et abonnez-vous au Flux RSS

ano nymous ano nymous ·  01 février 2013, 16:41

Ainsi pour un port : lsof -in tcp:9001
=> lsof -ni tcp:9001

Matthieu Patout Matthieu Patout ·  01 février 2013, 16:59

@ano nymous : Merci pour la correction. :-)

Ajouter un commentaire Fil des commentaires de ce billet

aucune annexe



Voir Aussi

android.jpg

Accéder aux fichiers d'une tablette Archos 101 G9 depuis Debian Squeeze

Android 3 Honeycomb utilise le protocole MTP (Media Transfer Protocol) pour gérer les connexions à...

Lire la suite

googleplus1.jpg

Améliorer la vitesse de chargement et valider le bouton Google +1

Le bouton Google +1 s'affiche partout sur le web depuis quelques semaines. En plus de permettre la...

Lire la suite