Comment vérifier si un port est ouvert sous Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous apprendrez les techniques essentielles pour vérifier l'état des ports réseau sur un système Linux. Comprendre quels ports sont ouverts est fondamental pour l'administration réseau, la résolution de problèmes et l'analyse de sécurité.

Vous commencerez par utiliser la commande netstat avec des options spécifiques pour lister tous les ports TCP et UDP ouverts qui sont en état d'écoute. Ensuite, vous confirmez l'état des ports en utilisant la commande plus moderne ss, qui fournit des statistiques réseau similaires. Enfin, vous utiliserez la commande nc (netcat) pour tester activement la connectivité à un port spécifique, vérifiant s'il est accessible et ouvert du point de vue d'un client. En effectuant ces étapes, vous acquerrez des compétences pratiques pour identifier et vérifier les ports ouverts dans votre environnement Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux/RemoteAccessandNetworkingGroup -.-> linux/nc("Networking Utility") linux/RemoteAccessandNetworkingGroup -.-> linux/netstat("Network Monitoring") subgraph Lab Skills linux/nc -.-> lab-558746{{"Comment vérifier si un port est ouvert sous Linux"}} linux/netstat -.-> lab-558746{{"Comment vérifier si un port est ouvert sous Linux"}} end

Lister les ports ouverts avec netstat -tuln

Dans cette étape, vous apprendrez à lister les ports ouverts sur votre système Linux en utilisant la commande netstat. Comprendre quels ports sont ouverts est crucial pour la résolution de problèmes réseau et la sécurité.

La commande netstat (statistiques réseau) est un outil en ligne de commande qui affiche les connexions réseau, les tables de routage, les statistiques des interfaces, les connexions de masquage et les appartenances multicast.

Nous allons utiliser les options suivantes avec netstat :

  • -t : Afficher les connexions TCP.
  • -u : Afficher les connexions UDP.
  • -l : Afficher les sockets en écoute (ports ouverts).
  • -n : Afficher les adresses numériques au lieu de résoudre les noms d'hôtes et les noms de services.

Ouvrez votre terminal s'il n'est pas déjà ouvert. Vous pouvez trouver l'icône Xfce Terminal sur le côté gauche de votre bureau.

Maintenant, tapez la commande suivante et appuyez sur Entrée :

netstat -tuln

Vous verrez une sortie similaire à celle-ci :

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN
udp        0      0 127.0.0.53:53           0.0.0.0:*
udp        0      0 0.0.0.0:68              0.0.0.0:*

Décortiquons la sortie :

  • Proto : Le protocole du socket (par exemple, tcp, udp).
  • Local Address : L'adresse IP locale et le numéro de port. Le format est Adresse_IP:Port. 0.0.0.0 signifie que le service écoute sur toutes les interfaces IPv4 disponibles, et ::: signifie qu'il écoute sur toutes les interfaces IPv6 disponibles.
  • Foreign Address : L'adresse IP distante et le numéro de port. 0.0.0.0:* ou :::* indique que le socket n'est pas connecté à une adresse distante spécifique (il est en écoute).
  • State : L'état du socket. LISTEN signifie que le port est ouvert et en attente de connexions entrantes.

Dans la sortie d'exemple, vous pouvez voir que le port 53 (DNS) et le port 22 (SSH) sont en état LISTEN pour IPv4 et IPv6.

Cette commande est très utile pour vérifier rapidement quels services sont en cours d'exécution et accessibles sur votre système.

Cliquez sur Continuer pour passer à l'étape suivante.

Confirmer l'état des ports avec ss -tuln

Dans l'étape précédente, vous avez utilisé netstat pour lister les ports ouverts. Maintenant, utilisons un outil plus moderne et souvent plus rapide appelé ss (statistiques des sockets) pour atteindre le même objectif. ss est conçu pour remplacer netstat et fournit des informations plus détaillées sur les sockets.

Nous allons utiliser des options similaires avec ss que nous avons utilisées avec netstat :

  • -t : Afficher les sockets TCP.
  • -u : Afficher les sockets UDP.
  • -l : Afficher les sockets en écoute (ports ouverts).
  • -n : Afficher les adresses numériques au lieu de résoudre les noms d'hôtes et les noms de services.

Ouvrez votre terminal s'il n'est pas déjà ouvert.

Tapez la commande suivante et appuyez sur Entrée :

ss -tuln

Vous verrez une sortie similaire à celle-ci :

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:*
udp    UNCONN     0      0      0.0.0.0:68                       0.0.0.0:*
tcp    LISTEN     0      128    127.0.0.53%lo:53                 0.0.0.0:*
tcp    LISTEN     0      128    0.0.0.0:22                       0.0.0.0:*
tcp    LISTEN     0      128    [::]:22                          [::]:*

La sortie est similaire à celle de netstat, affichant le protocole (Netid), l'état (State), l'adresse et le port locaux (Local Address:Port), ainsi que l'adresse et le port du pair (Peer Address:Port).

Vous pouvez voir les mêmes ports (53 et 22) listés en tant que LISTEN, confirmant les résultats de netstat.

Bien que le format de sortie soit légèrement différent, ss fournit des informations similaires sur les ports en écoute et est généralement préféré dans les systèmes Linux modernes en raison de ses performances et de ses fonctionnalités supplémentaires (que nous ne couvrirons pas dans ce laboratoire introductif).

Utiliser à la fois netstat et ss peut être utile pour croiser les informations et vous familiariser avec différents outils disponibles sous Linux.

Cliquez sur Continuer pour passer à l'étape suivante.

Tester la connectivité d'un port avec nc -zv

Dans les étapes précédentes, vous avez appris à lister les ports ouverts en utilisant netstat et ss. Maintenant, utilisons la commande nc (netcat) pour tester si vous pouvez réellement vous connecter à un port spécifique. nc est un utilitaire réseau polyvalent qui peut lire et écrire sur des connexions réseau en utilisant TCP ou UDP.

Nous allons utiliser nc avec les options suivantes :

  • -z : Spécifie que nc doit simplement scanner les démons en écoute sans leur envoyer de données. Cela est utile pour vérifier si un port est ouvert.
  • -v : Active la sortie détaillée, affichant plus de détails sur la tentative de connexion.

Nous allons tester la connectivité au port 22 (SSH), que nous avons vu être en écoute dans les étapes précédentes. Nous allons tester la connexion à la machine locale, qui peut être référencée par l'adresse IP 127.0.0.1 ou le nom d'hôte localhost.

Ouvrez votre terminal s'il n'est pas déjà ouvert.

Tapez la commande suivante et appuyez sur Entrée :

nc -zv 127.0.0.1 22

Vous devriez voir une sortie similaire à celle-ci :

Connection to 127.0.0.1 22 port [tcp/ssh] succeeded!

Cette sortie confirme que nc a pu se connecter avec succès au port 22 de votre machine locale.

Maintenant, essayons de tester un port qui n'est probablement pas ouvert, par exemple le port 80 (HTTP), car aucun serveur web n'est exécuté par défaut dans cet environnement.

Tapez la commande suivante et appuyez sur Entrée :

nc -zv 127.0.0.1 80

Vous verrez probablement une sortie indiquant un refus de connexion ou un délai d'attente, similaire à ceci :

nc: connect to 127.0.0.1 port 80 (tcp) failed: Connection refused

Cette sortie montre que nc n'a pas pu se connecter au port 80, ce qui est normal puisque aucun service n'est en écoute sur ce port.

L'utilisation de nc -zv est un moyen rapide et facile de vérifier si un port spécifique est accessible et ouvert depuis votre emplacement actuel.

Cliquez sur Continuer pour terminer ce laboratoire.

Résumé

Dans ce laboratoire, vous avez appris à vérifier si un port est ouvert sous Linux en utilisant des outils en ligne de commande. Vous avez commencé par utiliser la commande netstat -tuln pour lister tous les ports TCP et UDP ouverts qui sont en état d'écoute, en comprenant le format de sortie, y compris le protocole, l'adresse locale, l'adresse distante et l'état.

Ensuite, vous avez confirmé l'état des ports en utilisant la commande ss -tuln, qui fournit des informations similaires à netstat mais est souvent considérée comme une alternative plus moderne et plus rapide. Enfin, vous avez appris à tester la connectivité à un port spécifique en utilisant la commande nc -zv, qui tente d'établir une connexion et indique si le port est ouvert et accessible. Ces étapes fournissent des compétences essentielles pour la résolution de problèmes réseau et l'analyse de sécurité sur les systèmes Linux.