GNU/Linux >> Tutoriels Linux >  >> Linux

Comment vérifier les ports d'écoute sous Linux (ports utilisés)

Lors du dépannage de problèmes de connectivité réseau ou de problèmes spécifiques à une application, l'une des premières choses à vérifier doit être quels ports sont réellement utilisés sur votre système et quelle application écoute sur un port spécifique.

Cet article explique comment utiliser le netstat , ss et lsof commandes pour savoir quels services écoutent sur quels ports. Les instructions s'appliquent à tous les systèmes d'exploitation basés sur Linux et Unix, tels que macOS.

Qu'est-ce que le port d'écoute #

Le port réseau est identifié par son numéro, l'adresse IP associée et le type de protocole de communication, tel que TCP ou UDP.

Le port d'écoute est un port réseau sur lequel une application ou un processus écoute, agissant comme point de terminaison de communication.

Chaque port d'écoute peut être ouvert ou fermé (filtré) à l'aide d'un pare-feu. En termes généraux, un port ouvert est un port réseau qui accepte les paquets entrants provenant d'emplacements distants.

Vous ne pouvez pas avoir deux services écoutant le même port sur la même adresse IP.

Par exemple, si vous exécutez un serveur Web Apache qui écoute sur les ports 80 et 443 et que vous essayez d'installer Nginx, ce dernier ne démarrera pas car les ports HTTP et HTTPS sont déjà utilisés.

Vérifier les ports d'écoute avec netstat #

netstat est un outil en ligne de commande qui peut fournir des informations sur les connexions réseau.

Pour répertorier tous les ports TCP ou UDP en cours d'écoute, y compris les services utilisant les ports et l'état du socket, utilisez la commande suivante :

sudo netstat -tunlp

Les options utilisées dans cette commande ont la signification suivante :

  • -t - Afficher les ports TCP.
  • -u - Afficher les ports UDP.
  • -n - Afficher les adresses numériques au lieu de résoudre les hôtes.
  • -l - Afficher uniquement les ports d'écoute.
  • -p - Afficher le PID et le nom du processus de l'auditeur. Ces informations s'affichent uniquement si vous exécutez la commande en tant que root ou sudouser.

La sortie ressemblera à ceci :

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      445/sshd            
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      929/master          
tcp6       0      0 :::3306                 :::*                    LISTEN      534/mysqld          
tcp6       0      0 :::80                   :::*                    LISTEN      515/apache2         
tcp6       0      0 :::22                   :::*                    LISTEN      445/sshd            
tcp6       0      0 :::25                   :::*                    LISTEN      929/master          
tcp6       0      0 :::33060                :::*                    LISTEN      534/mysqld          
udp        0      0 0.0.0.0:68              0.0.0.0:*                           966/dhclient  

Les colonnes importantes dans notre cas sont :

  • Proto - Le protocole utilisé par le socket.
  • Local Address - L'adresse IP et le numéro de port sur lequel le processus écoute.
  • PID/Program name - Le PID et le nom du processus.

Si vous voulez filtrer les résultats, utilisez le grep commande. Par exemple, pour trouver quel processus écoute sur le port TCP 22, vous tapez :

sudo netstat -tnlp | grep :22

La sortie montre que sur cette machine le port 22 est utilisé par le serveur SSH :

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      445/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      445/sshd

Si la sortie est vide, cela signifie que rien n'écoute sur le port.

Vous pouvez également filtrer la liste en fonction de critères, par exemple, PID, protocole, état, etc.

netstat est obsolète et remplacé par ss et ip , mais c'est toujours l'une des commandes les plus utilisées pour vérifier les connexions réseau.

Vérifier les ports d'écoute avec ss #

ss est le nouveau netstat . Il manque une partie du netstat fonctionnalités, mais expose plus d'états TCP et est légèrement plus rapide. Les options de commande sont pour la plupart les mêmes, donc la transition de netstat à ss n'est pas difficile.

Pour obtenir une liste de tous les ports d'écoute avec ss vous taperiez :

sudo ss -tunlp

La sortie est presque la même que celle rapportée par netstat :

State    Recv-Q   Send-Q     Local Address:Port      Peer Address:Port                                                                                        
LISTEN   0        128              0.0.0.0:22             0.0.0.0:*      users:(("sshd",pid=445,fd=3))                                                        
LISTEN   0        100              0.0.0.0:25             0.0.0.0:*      users:(("master",pid=929,fd=13))                                                     
LISTEN   0        128                    *:3306                 *:*      users:(("mysqld",pid=534,fd=30))                                                     
LISTEN   0        128                    *:80                   *:*      users:(("apache2",pid=765,fd=4),("apache2",pid=764,fd=4),("apache2",pid=515,fd=4))   
LISTEN   0        128                 [::]:22                [::]:*      users:(("sshd",pid=445,fd=4))                                                        
LISTEN   0        100                 [::]:25                [::]:*      users:(("master",pid=929,fd=14))                                                     
LISTEN   0        70                     *:33060                *:*      users:(("mysqld",pid=534,fd=33))

Vérifier les ports d'écoute avec lsof #

lsof est un puissant utilitaire de ligne de commande qui fournit des informations sur les fichiers ouverts par les processus.

Sous Linux, tout est un fichier. Vous pouvez considérer un socket comme un fichier qui écrit sur le réseau.

Pour obtenir une liste de tous les ports TCP en écoute avec lsof saisissez :

sudo lsof -nP -iTCP -sTCP:LISTEN

Les options utilisées sont les suivantes :

  • -n - Ne convertissez pas les numéros de port en noms de port.
  • -p - Ne résolvez pas les noms d'hôte, affichez les adresses numériques.
  • -iTCP -sTCP:LISTEN - Afficher uniquement les fichiers réseau avec l'état TCP ÉCOUTER.
COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd      445     root    3u  IPv4  16434      0t0  TCP *:22 (LISTEN)
sshd      445     root    4u  IPv6  16445      0t0  TCP *:22 (LISTEN)
apache2   515     root    4u  IPv6  16590      0t0  TCP *:80 (LISTEN)
mysqld    534    mysql   30u  IPv6  17636      0t0  TCP *:3306 (LISTEN)
mysqld    534    mysql   33u  IPv6  19973      0t0  TCP *:33060 (LISTEN)
apache2   764 www-data    4u  IPv6  16590      0t0  TCP *:80 (LISTEN)
apache2   765 www-data    4u  IPv6  16590      0t0  TCP *:80 (LISTEN)
master    929     root   13u  IPv4  19637      0t0  TCP *:25 (LISTEN)
master    929     root   14u  IPv6  19638      0t0  TCP *:25 (LISTEN)

La plupart des noms de colonnes de sortie sont explicites :

  • COMMAND , PID , USER - Le nom, le pid et l'utilisateur exécutant le programme associé au port.
  • NAME - Le numéro de port.

Pour trouver quel processus écoute sur un port particulier, par exemple, le port 3306 vous utiliseriez :

sudo lsof -nP -iTCP:3306 -sTCP:LISTEN

La sortie montre que le serveur MySQL utilise le port 3306 :

COMMAND PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  534 mysql   30u  IPv6  17636      0t0  TCP *:3306 (LISTEN)

Pour plus d'informations, visitez la page de manuel lsof et découvrez toutes les autres options puissantes de cet outil.

Conclusion #

Nous vous avons montré plusieurs commandes que vous pouvez utiliser pour vérifier quels ports sont utilisés sur votre système et comment trouver quel processus écoute sur un port spécifique.

Si vous avez des questions ou des remarques, veuillez laisser un commentaire ci-dessous.


Linux
  1. Comment j'utilise cron sous Linux

  2. Comment utiliser rsync avancé pour les sauvegardes Linux volumineuses

  3. Comment utiliser systemd-nspawn pour la récupération du système Linux

  4. Comment utiliser la commande Su sous Linux

  5. Comment vérifier les ports ouverts sous Linux avec netstat, lsof et nmap

Comment faire une analyse de port sous Linux

Comment vérifier les ports ouverts sous Linux

Comment vérifier qu'un port est ouvert sur un système Linux distant

Comment rechercher et fermer des ports ouverts sous Linux

Comment utiliser Netcat pour analyser les ports ouverts sous Linux

Comment vérifier les ports ouverts sous Linux ?