GNU/Linux >> Tutoriels Linux >  >> Linux

Comment trouver quel service écoute sur un port particulier

Ce guide explique différentes manières de trouver quel service écoute sur un port particulier sous Linux. La plupart d'entre vous connaissent le port par défaut des services ou processus populaires. Par exemple, le port par défaut d'Apache est 80, le port FTP par défaut est 21 et le port SSH par défaut est 22. Vous pouvez trouver les noms et numéros de port sous Linux comme décrit dans ce guide . Les numéros de port par défaut peuvent également être remplacés par n'importe quel port personnalisé pour sécuriser un serveur Linux. Par exemple, les guides suivants décrivent comment modifier le port par défaut d'Apache, FTP et SSH sur un port différent.

  • Comment changer le port par défaut d'Apache en un port personnalisé
  • Comment changer le port FTP par défaut en un port personnalisé
  • Comment changer le port SSH par défaut en un port personnalisé

Si le numéro de port par défaut est modifié, comment trouveriez-vous quel service écoute sur quel port ? C'est ce que nous allons découvrir maintenant !

Trouver quel service écoute sur un port particulier sous Linux

J'ai énuméré quatre méthodes ci-dessous pour vérifier quel service s'exécute dans un numéro de port particulier. Je continuerai à mettre à jour cette liste si je rencontre de nouvelles méthodes à l'avenir. Alors, ajoutez-le à vos favoris et vérifiez-le de temps en temps.

Méthode 1 - Utilisation de netstat

C'est le moyen le plus couramment utilisé pour trouver quel service écoute sur quel port. Netstat est un utilitaire de ligne de commande utilisé pour imprimer les connexions réseau, les tables de routage, les statistiques d'interface, les connexions masquées et les adhésions multidiffusion.

Netstat est disponible dans les dépôts par défaut de la plupart des distributions Linux.

Pour l'installer sur Arch Linux et ses variantes, faites :

$ sudo pacman -S net-tools

Sur CentOS, RHEL :

$ sudo yum install net-tools

Sur Fedora :

$ sudo dnf install net-tools

Sur Debian, Ubuntu :

$ sudo apt install net-tools

Une fois installé, exécutez la commande suivante pour trouver quels services écoutent sur quels ports :

$ sudo netstat -tulpn

Exemple de résultat :

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      665/systemd-resolve 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1026/sshd           
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      2068/python3        
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1072/mysqld         
tcp6       0      0 :::22                   :::*                    LISTEN      1026/sshd           
tcp6       0      0 :::80                   :::*                    LISTEN      1062/apache2        
udp        0      0 127.0.0.53:53           0.0.0.0:*                           665/systemd-resolve 
udp        0      0 192.168.225.22:68       0.0.0.0:*                           647/systemd-network 
udp        0      0 192.168.225.53:68       0.0.0.0:*                           647/systemd-network 
udp6       0      0 fe80::a00:27ff:feff:546 :::*                                647/systemd-network 
udp6       0      0 fe80::a00:27ff:fe7e:546 :::*                                647/systemd-network

Comme vous pouvez le voir, un service python (simpleHTTPserver dans ce cas) écoute sur le port numéro 8000, le service mysqld écoute sur le port 3306, le service ssh s'exécute sur le port numéro 22, apache2 s'exécute sur le port 80 et ainsi de suite.

Ici,

  • -t l'indicateur affiche les connexions tcp.
  • -u le drapeau montre les connexions udp.
  • -l flag affiche les sockets d'écoute.
  • -p flag affiche l'ID de processus (PID) et le nom de processus de tout ce qui utilise ce port.
  • -n flag affiche les adresses numériques.

La commande ci-dessus répertorie tous les services et les numéros de port sur lesquels ils écoutent. Et si vous voulez trouver quel service écoute sur un port particulier ? Voici où commande grep est très pratique! Nous pouvons combiner netstat et grep commande pour filtrer la sortie pour un service spécifique, par exemple mysqld , comme ci-dessous.

$ sudo netstat -tulpn | grep mysqld
[sudo] password for sk: 
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1076/mysqld

Voir? Le service mysqld écoute sur le port numéro 3306.

Si vous connaissez déjà le numéro de port, mais que vous ne savez pas quel service l'utilise actuellement, remplacez simplement le nom du service par le numéro de port, comme indiqué ci-dessous.

$ sudo netstat -tulpn | grep -w 3306
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1076/mysqld

Ici, -w flag affiche uniquement les lignes contenant des correspondances qui forment des mots entiers. En d'autres termes, -w L'option affiche la correspondance exacte de la chaîne donnée.

Vous pouvez également utiliser -i pour ignorer les distinctions de casse, de sorte que les caractères qui ne diffèrent que par la casse correspondent les uns aux autres

$ sudo netstat -tulpn | grep -i 3306

C'est aussi simple que cela.

Pour plus de détails, consultez les pages de manuel.

$ man netstat

Netstat est pour la plupart obsolète. L'alternative à netstat est "ss".

Méthode 2 - Utilisation de la commande "ss"

ss est un utilitaire de ligne de commande pour étudier les sockets. C'est une alternative à netstat et l'utilisation de "ss" est presque la même que "netstat". Il est préinstallé sur Ubuntu et ses variantes.

Pour trouver quels services écoutent sur quels ports, exécutez :

$ sudo ss -tulpn

Exemple de résultat :

Netid          State             Recv-Q            Send-Q                                            Local Address:Port                       Peer Address:Port                                                                                                                                                                                     
udp            UNCONN            0                 0                                                 127.0.0.53%lo:53                              0.0.0.0:*               users:(("systemd-resolve",pid=671,fd=12))                                                                                                                                
udp            UNCONN            0                 0                                         192.168.225.22%enp0s3:68                              0.0.0.0:*               users:(("systemd-network",pid=653,fd=17))                                                                                                                                
udp            UNCONN            0                 0                                         192.168.225.53%enp0s8:68                              0.0.0.0:*               users:(("systemd-network",pid=653,fd=25))                                                                                                                                
udp            UNCONN            0                 0                             [fe80::a00:27ff:fe7e:8a9c]%enp0s8:546                                [::]:*               users:(("systemd-network",pid=653,fd=24))                                                                                                                                
udp            UNCONN            0                 0                             [fe80::a00:27ff:feff:d2e0]%enp0s3:546                                [::]:*               users:(("systemd-network",pid=653,fd=22))                                                                                                                                
tcp            LISTEN            0                 80                                                    127.0.0.1:3306                            0.0.0.0:*               users:(("mysqld",pid=1076,fd=32))                                                                                                                                        
tcp            LISTEN            0                 128                                               127.0.0.53%lo:53                              0.0.0.0:*               users:(("systemd-resolve",pid=671,fd=13))                                                                                                                                
tcp            LISTEN            0                 128                                                     0.0.0.0:22                              0.0.0.0:*               users:(("sshd",pid=1015,fd=3))                                                                                                                                           
tcp            LISTEN            0                 128                                                           *:80                                    *:*               users:(("apache2",pid=1094,fd=4),("apache2",pid=1090,fd=4),("apache2",pid=1089,fd=4),("apache2",pid=1088,fd=4),("apache2",pid=1087,fd=4),("apache2",pid=1062,fd=4))      
tcp            LISTEN            0                 128                                                        [::]:22                                 [::]:*               users:(("sshd",pid=1015,fd=4))

Pour filtrer la sortie d'un service particulier (par exemple, mysqld), utilisez :

$ sudo ss -tulpn | grep -w mysqld
tcp LISTEN 0 80 127.0.0.1:3306 0.0.0.0:* users:(("mysqld",pid=1076,fd=32))

Pour plus de détails, consultez les pages de manuel.

$ man ss

Méthode 3 - Utilisation de lsof

Comme son nom l'indique, lsof est un utilitaire en ligne de commande pour lister tous les fichiers ouverts appartenant à tous les processus actifs.

Pour l'installer sur Linux, utilisez les commandes suivantes en fonction du type de distribution que vous utilisez.

Sur Arch Linux :

$ sudo pacman -S lsof

Sur Debian, Ubuntu :

$ sudo apt install lsof

Sur CentOS, RHEL :

$ sudo yum install lsof

Sur Fedora :

$ sudo dnf install lsof

Pour trouver quels processus s'exécutent sur quels ports, spécifiez simplement le numéro de port comme indiqué dans la commande suivante :

$ sudo lsof -i :80

Exemple de sortie :

COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
apache2 1062     root    4u  IPv6  20452      0t0  TCP *:http (LISTEN)
apache2 1087 www-data    4u  IPv6  20452      0t0  TCP *:http (LISTEN)
apache2 1088 www-data    4u  IPv6  20452      0t0  TCP *:http (LISTEN)
apache2 1089 www-data    4u  IPv6  20452      0t0  TCP *:http (LISTEN)
apache2 1090 www-data    4u  IPv6  20452      0t0  TCP *:http (LISTEN)
apache2 1094 www-data    4u  IPv6  20452      0t0  TCP *:http (LISTEN)

Pour plus de détails, consultez les pages de manuel.

$ man lsof

Méthode 4 - Utilisation de la commande fuser

fuseur est encore un autre utilitaire de ligne de commande pour identifier les processus utilisant des fichiers ou des sockets. Il affiche les PID des processus utilisant les fichiers ou systèmes de fichiers spécifiés.

Il est également disponible dans les dépôts par défaut de la plupart des distributions Linux.

Pour l'installer sur Arch Linux, exécutez :

$ sudo pacman -S psmisc

Sur Debian, Ubuntu :

$ sudo apt install psmisc

Sur CentOS, RHEL :

$ sudo yum install psmisc

Sur Fedora :

$ sudo dnf install psmisc

Nous devons d'abord trouver le PID d'un service ou d'un processus en écoute sur un port particulier. Par exemple, je vais trouver le PID d'un processus écoutant sur le port 3306 en utilisant la commande :

$ sudo fuser 3306/tcp

Vous verrez une sortie comme ci-dessous.

3306/tcp: 1076

Ici, 1076 est le PID.

Et puis découvrez le processus réel à l'aide du PID en utilisant la commande :

$ ps -p 1076 -o comm=
mysqld

Alternativement, vous pouvez utiliser -v flag pour afficher tous les détails en une seule commande.

$ sudo fuser -v 3306/tcp
                     USER        PID ACCESS COMMAND
3306/tcp:            mysql      1076 F.... mysqld

Pour plus de détails, consultez les pages de manuel.

$ man fuser

Vous connaissez maintenant quatre outils différents pour trouver quels processus écoutent sur quels ports. Tous les quatre sont faciles à utiliser et disponibles dans la plupart des distributions Linux. Si vous connaissez d'autres outils, faites-le nous savoir dans la section des commentaires ci-dessous. Je vérifierai et mettrai à jour cette liste en conséquence.


Linux
  1. Vérifier quel service écoute sur un port Linux donné

  2. Comment trouver quel port série est utilisé ?

  3. Shell - Comment trouver le répertoire d'une commande ?

  4. Comment trouver l'espace de noms d'un processus particulier?

  5. Comment trouver quelle version de Java dans le dossier installé Java ?

Comment trouver le numéro de port d'un service sous Linux

Comment savoir à quels groupes un utilisateur appartient sous Linux

Découvrez quels processus écoutent sur un port particulier sous Linux

Debian :découvrez sur quel numéro de port un processus écoute

Comment tuer le processus Linux en cours d'exécution sur un port particulier

Linux :Découvrez sur quel numéro de port un processus écoute