# Lister les ports en écoute sous Linux Cette procédure présente la méthode recommendée pour lister les ports en écoute sur une machine Linux. Cela permet par exemple de : - Vérifier que le service apache2 (serveur HTTP) est bien en écoute sur le port TCP 80. - Identifier les ports ouverts pour identifier les services actuellement installés sur la machine. > [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> Vous devez disposer des privilèges "*root*" avec `su` ou avec `sudo`.</span> # La commande ss (socket statistics) La commande `ss` signifie “**s**ocket **s**tatistics” ou statistiques de socket en français. L'outil est conçu pour fournir des informations détaillées sur les sockets de manière plus efficace que son ancêtre déprécié `netstat`. Pour afficher tous les ports ouverts, vous pouvez exécuter : ``` sudo ss -tulnp ``` Pour filtrer les résultats sur un port spécifique, utilisez **grep**. Par exemple pour afficher le port "**80**" : ``` sudo ss -tulnp | grep :8080 ``` Voici la présentation des options utilisées et un exemple de sortie de commande : - `-t` : affiche les connexions TCP. - `-u` : affiche les connexions UDP. - `-l` : liste les ports en écoute (listening). - `-n` : force l’affichage des adresses et des ports en format numérique (pas de traduction) - `-p` : affiche le PID et le nom du processus. ![[_img-kb-lnx-lister-ports-tcp-udp-1.png]] # La commande lsof (list open files) > [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> Sous Linux tout est fichier ! Vous pouvez donc utiliser `lsof` en tant qu'alternative à `ss`.</span> La commande **lsof**, qui signifie "**l**i**s**t **o**pen **f**iles". C’est un outil polyvalent qui peut afficher des informations détaillées sur les fichiers ouverts par les processus, y compris les connexions réseau. Il traite les sockets et les périphériques comme des fichiers, ce qui le rend utile pour diagnostiquer les problèmes de réseau et surveiller l’utilisation des fichiers. Ouvrir un terminal et exécuter la commande suivante : ``` sudo lsof -nP -iTCP -sTCP:LISTEN ``` Pour vérifier un port spécifique : `sudo lsof -nP -i:<numéro de port>`, par exemple pour le port 80 : ``` sudo lsof -nP -i:80 ``` Voici la présentation des options utilisées et un exemple de sortie de commande : - `-nP` : désactive la résolution des noms d’hôte et la traduction des noms de ports (affiche 22 au lieu de SSH). - `-iTCP` : filtre les connexions réseau pour n’afficher que celles utilisant le protocole TCP. - `-sTCP:LISTEN` : avec un état de connexion "**LISTEN** pour filtrer uniquement sur les ports en écoutes (sans afficher les connexions actives). ![[_img-kb-lnx-lister-ports-tcp-udp.png]] # Commande netstat (deprecated) > [!danger] Attention !<span style="font-weight: normal; color: var(--text-normal)"> La commande `netstat` fait partie du paquet **net-tools** qui est déprécié sur la plupart des distributions Linux. Cette partie est disponible pour des raisons de rétrocompatibilité exclusivement.</span> > [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> Deprecated (déprécié) signifie que certaines fonctionnalités, commandes, ou méthodes sont considérées obsolètes. Elles restent fonctionnelles mais il n'est pas recommandé de les utiliser. </span> **Netstat**, qui signifie "**net**work **stat**istics", permet d'obtenir des **informations sur les connexions réseau**. Il permet d'identifier les ports TCP et UDP ainsi que les services associés. C'est un outil qui a connu un énorme succès mais il est obsolète à présent. Pour utiliser `netstat` il faut installer **net-tools** avec les commandes suivantes : ``` sudo apt update -y && sudo apt install net-tools -y ``` netstat utilise les même options que la commande `ss` : ``` sudo netstat -tulnp ``` Pour filtrer les résultats sur un port spécifique, utilisez **grep**. Par exemple pour afficher le port "**80**" : ``` sudo netstat -tulnp | grep :8080 ``` # Conclusion Nous vous recommandons d'utiliser la commande `ss` car cette commande est moderne et performantes. En alternative la commande `lsof` fait le job en s'appuyant sur l'état des fichiers ouverts. Enfin `netstat` est considéré comme obsolète, mais reste une commande encore utilisée. ## Références - IT-CONNECT : [Lister les ports en écoute sous Linux avec lsof, netstat et ss](https://www.it-connect.fr/lister-les-ports-en-ecoute-sous-linux-avec-lsof-netstat-et-ss/). - Liste de distribution Debian : Message des développeurs [net-tools fututre](https://lists.debian.org/debian-devel/2009/03/msg00780.html) (2009).