Votre serveur Linux est en cours d’exécution, et vous souhaitez maintenant vérifier si un port spécifique est ouvert afin d’y accéder à distance. Vérifier les ports ouverts est une tâche assez courante pour les administrateurs système, et il existe quelques façons différentes de le faire sous Linux.
Dans cet article, vous apprendrez plusieurs façons de vérifier si un port est ouvert sous Linux afin que vous puissiez choisir celles qui fonctionnent le mieux pour vous. Prêt ? Lisez la suite !
Prérequis
Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d’avoir ce qui suit.
- A Linux computer. This guide uses Ubuntu 20.04, but any recent Linux distribution should work.
- Accès à un terminal. Si vous utilisez un environnement de bureau graphique, recherchez un programme émulateur de terminal dans votre menu d’applications. Ou, si vous vous êtes connecté à un serveur distant via SSH,
- A user account with
sudo
privileges. For simplicity, this tutorial uses the root user.
Vérifiez si un port est ouvert sous Linux en utilisant netstat
La première méthode pour vérifier si un port est ouvert sous Linux consiste à exécuter la commande netstat
. Cette commande affiche les connexions réseau, les tables de routage et de nombreuses statistiques d’interface réseau.
La commande netstat
fait partie du package net-tools
, et ce package peut ne pas être installé par défaut sur votre distribution Linux. Sur Ubuntu, installez netstat
en exécutant les commandes suivantes dans le terminal.
Supposons que vous ayez un serveur web NGINX en cours d’exécution et que vous souhaitiez vérifier si le port 80
est ouvert. Vous pouvez le faire en exécutant la commande suivante. Remplacez 80
par le numéro de port que vous souhaitez vérifier.
Les drapeaux -tulpn
indiquent à netstat
d’afficher tous les ports en écoute. Le premier grep
trouve et filtre la ligne contenant le mot LISTEN
dans le résultat. Le deuxième grep
filtre les résultats pour afficher uniquement ceux correspondant à :80
.
Pour en savoir plus sur les drapeaux netstat, exécutez la commande netstat –help.
Si le port est ouvert, vous verrez la sortie suivante. Comme vous pouvez le constater, la sortie montre que le port 80 est ouvert sur le système. tcp est le type de protocole, et :::80
indique qu’il s’agit d’un port TCPv6. 0.0.0.0:80
signifie que le port est ouvert pour toutes les adresses IPv4. 80
est le port HTTP par défaut offrant l’accès au site web.

Vérification de l’ouverture d’un port à l’aide de ss
Le ss
commande est une autre utilité en ligne de commande pour vérifier les ports ouverts. Cette commande affiche des statistiques de socket, que vous pouvez utiliser pour confirmer si un port est ouvert ou non. La commande ss
affiche plus d’informations sur les ports ouverts que les autres outils.
Comme la commande netstat
, le drapeau -t
indique à ss
d’afficher uniquement les sockets TCP, -u
pour afficher uniquement les sockets UDP et -l
pour montrer uniquement les sockets d’écoute. Le drapeau -p
indique le nom du processus ou le PID utilisant le port.
Vous verrez la sortie suivante si le port est ouvert. Comme vous pouvez le voir, la sortie contient le nom du processus et le PID pour chaque port en écoute. Dans ce cas, le port 80 est ouvert, et le serveur web NGINX l’utilise.

Vérification de l’ouverture d’un port avec lsof
La commande lsof
est un autre outil pratique pour vérifier les ports ouverts. Le nom lsof
signifie list open files, qui affiche des informations sur les fichiers ouverts sur le système. Ces informations comprennent les descripteurs de fichiers, les identifiants de processus, les identifiants d’utilisateur, etc.
Comment la liste des fichiers ouverts vous aide-t-elle à déterminer si un port est ouvert ? Vous avez probablement déjà entendu l’expression « everything in Linux is a file, »— et cette phrase signifie ce qu’elle dit.
Par exemple, supposez que vous souhaitiez vérifier si le port 22 est ouvert et si vos utilisateurs peuvent se connecter en SSH à votre serveur. Exécutez la commande suivante pour répertorier les fichiers ouverts avec des connexions actives sur le port 22.
Le drapeau -i
indique à lsof
d’afficher tous les sockets Internet ouverts. Le drapeau -P
affiche les numéros de port au lieu des noms de service. Et le drapeau -n
supprime les recherches DNS et les noms de service, vous verrez donc les adresses IP à la place des noms d’hôtes distants.
Si le port est ouvert, vous verrez la sortie suivante. Comme vous pouvez le voir, la sortie contient des informations sur:
1027 est l'identifiant du processus du service sshd.
root est l'identifiant de l'utilisateur qui utilise le port.
3u et 4u sont les descripteurs de fichiers pour IPv4 et IPv6, respectivement.
31035 et 31037 sont les ports réseau pour IPv4 et IPv6, respectivement.
:22 indique que le port 22 est ouvert pour toutes les adresses IPv4 et IPv6.
- (LISTEN) montre que le port écoute les connexions entrantes.
0t0 est l'état du socket, ce qui signifie que le socket est dans l'état LISTEN.

Vérification de l’ouverture d’un port à l’aide de nmap
Jusqu’à présent, vous avez vu comment vérifier si un port est ouvert sur Linux en utilisant la ligne de commande. Mais que faire si vous voulez vérifier si un port est ouvert sur une machine distante ? Dans ce cas, vous pouvez utiliser l’outil nmap
.
Mais avant d’exécuter nmap
, sachez que cet outil peut ne pas faire partie des paquets par défaut de votre distribution Linux. Dans ce cas, vous devez d’abord installer nmap
en exécutant la commande ci-dessous.
Maintenant, exécutez la commande suivante pour vérifier si un port est ouvert sur une machine distante. Cette commande teste si le port 22
est ouvert sur 159.89.176.25
afin que votre utilisateur puisse se connecter en SSH à votre serveur. Remplacez l’adresse IP par la vôtre si nécessaire.
Comme vous pouvez le voir, la sortie contient des informations sur :
- L’heure de début du scan de ports (2022-06-30 16:58 UTC).
- L’adresse IP de la machine distante (159.89.176.25).
- L’état du port (ouvert).
- Le service utilisant le port (ssh).
- L’état de l’hôte (actif).

Le résultat confirme que les utilisateurs peuvent se connecter en SSH à l’ordinateur en utilisant l’adresse IP et le port.
La capture d’écran ci-dessous montre une connexion SSH réussie au serveur, prouvant que le port 22 est ouvert.

Vérification de l’ouverture d’un port à partir d’un script Shell
L’automatisation est toujours une bonne idée. Vérifier les ports ouverts en exécutant un script shell est une excellente façon de tester plusieurs ports. Vous pouvez utiliser n’importe quelle méthode précédente pour vérifier si un port est ouvert. Mais, pour cet exemple, vous écrirez un script shell de base qui exécute la commande Netcat nc
.
1. Créez un fichier nommé check_port.sh dans votre répertoire personnel en utilisant votre éditeur de texte préféré. Cet exemple utilise nano.
2. Copiez le code d’exemple ci-dessous dans votre éditeur. Remplacez 80 par le numéro de port que vous souhaitez vérifier.
La condition if vérifie si le port 80 est ouvert en utilisant la commande nc. Les 2>&1 et >/dev/null redirigent respectivement les messages d’erreur et de sortie vers /dev/null. Le fichier /dev/null est un fichier spécial qui ignore tout ce qu’il reçoit.
Si le port est ouvert, le script check_port.sh affichera En ligne sur la console. Sinon, le script affichera Hors ligne.
Le fichier de script devrait ressembler à la capture d’écran ci-dessous. Enregistrez le script et quittez l’éditeur.

3. Exécutez le script shell pour commencer à vérifier les ports ouverts que vous avez spécifiés dans le script.
Vous verrez l’un des résultats suivants en fonction de la disponibilité du port. Dans ce cas, le port est ouvert, ce que le message En ligne
confirme.

Vous pouvez utiliser ce script shell pour vérifier si un port est ouvert à un intervalle ou à une tâche planifiée. Le scriptage est particulièrement utile lorsque vous devez vérifier plusieurs serveurs. Vous avez seulement besoin de copier ce script check_port.sh sur tous les serveurs que vous souhaitez vérifier et l’exécuter à l’aide d’outils CI/CD tels que Jenkins ou Ansible.
Vérifier si un port est ouvert en utilisant PowerShell
PowerShell dispose d’une cmdlet intégrée pour tester les connexions réseau appelée Test-NetConnection
— mais cette cmdlet n’est disponible que sur les systèmes Windows. Ne vous inquiétez pas ; vous pouvez toujours utiliser PowerShell dans Linux pour vérifier les ports ouverts et les connexions en utilisant la classe TcpClient.
Si votre ordinateur Linux n’a pas encore PowerShell, installez-le en suivant les instructions de cette documentation Microsoft : Installer PowerShell sur Linux.
1. Lancez PowerShell en exécutant la commande ci-dessous.

2. Ensuite, créez un fichier appelé Test-Port.ps1 en utilisant votre éditeur de texte. Cet exemple utilise nano.
3. Ensuite, copiez le code ci-dessous dans votre éditeur. Enregistrez le fichier et quittez l’éditeur par la suite.
Note: Ce code est un extrait de Un outil de test de port tout-en-un PowerShell.
4. Après avoir enregistré le script Test-Port.ps1, exécutez la commande ci-dessous pour tester les ports 22, 80, 443 et 53.
Le paramètre -NomOrdinateur accepte la liste des noms d’hôtes, FQDN ou adresses IP de(s) machine(s) cible(s).
Le paramètre -Port accepte un tableau d’un ou plusieurs numéros de port à tester.
Comme vous pouvez le voir ci-dessous, le résultat montre que les ports 22 et 80 sont ouverts (True), tandis que le port 443 ne l’est pas (False).

Pour exécuter le même script contre plusieurs points d’extrémité cibles et ports, modifiez le code ci-dessous pour ajouter tous les ordinateurs cibles dans le paramètre NomOrdinateur et les numéros de port dans le paramètre Port.

Conclusion
Dans cet article, vous avez appris comment vérifier si un port est ouvert ou non sous Linux. Vous avez également appris à vérifier si un port est ouvert à partir d’un script shell et de PowerShell. Maintenant, vous pouvez utiliser l’une de ces méthodes pour vérifier si un port est ouvert sur votre machine ou sur une machine distante.
Mais ne vous arrêtez pas là. Consultez d’autres articles de dépannage pour continuer à perfectionner vos compétences d’administrateur système !
Source:
https://adamtheautomator.com/check-if-a-port-is-open-in-linux/