Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code : Skills Commencer
Sections
Linux Sécurité

Vérification des ports ouverts et à l’écoute sur Linux à l’aide de netstat et ss

La surveillance des ports ouverts et à l’écoute sur un système Linux est l’une des pratiques les plus critiques pour maintenir la sécurité du serveur, diagnostiquer les problèmes réseau et gérer votre infrastructure efficacement. En auditant régulièrement quels ports sont ouverts et quels services y sont liés, vous pouvez identifier de manière proactive les tentatives d’accès non autorisé, détecter les erreurs de configuration et éliminer les surfaces d’attaque inutiles avant qu’elles ne deviennent des vulnérabilités graves.

Que vous exécutiez une application à fort trafic sur un plan VPS Hosting ou que vous gériez une flotte de machines bare-metal, comprendre l’exposition réseau de votre serveur Linux est non négociable. Ce guide fournit une procédure pas à pas complète et techniquement précise sur la façon d’utiliser à la fois netstat et ss — les deux outils en ligne de commande les plus largement utilisés pour l’inspection des ports sur Linux — ainsi que des outils supplémentaires et des bonnes pratiques du monde réel.

1. Comprendre les ports et leurs types

Avant de plonger dans les outils eux-mêmes, il est important d’établir une compréhension claire de ce que sont les ports, comment ils sont catégorisés et pourquoi leur surveillance est importante.

Qu’est-ce qu’un port réseau ?

Un port réseau est un point de terminaison de communication logique associé à un processus ou un service spécifique sur un hôte. Les ports permettent à un serveur unique avec une adresse IP à exécuter plusieurs services réseau simultanément — par exemple, un serveur web sur le port 80, un daemon SSH sur le port 22 et une base de données sur le port 3306.

Catégories de ports

PlageCatégorieDescription
0–1023Ports bien connusRéservés aux services système standard (HTTP, SSH, FTP, etc.)
1024–49151Ports enregistrésUtilisés par les applications et les intergiciels (MySQL, PostgreSQL, etc.)
49152–65535Ports dynamiques/éphémèresAttribués temporairement pour les connexions client sortantes

États de port que vous rencontrerez

  • LISTEN — Le port est ouvert et un service attend activement les connexions entrantes.
  • ESTABLISHED — Une connexion active existe entre deux points de terminaison.
  • TIME_WAIT — La connexion se ferme ; le système attend pour s’assurer que l’extrémité distante a reçu l’accusé de réception final.
  • CLOSE_WAIT — L’extrémité distante a fermé la connexion ; l’application locale n’a pas encore fermé son côté.

Protocoles de transport

  • TCP (Transmission Control Protocol) : Orienté connexion, fiable, avec vérification des erreurs et livraison garantie. Utilisé par HTTP, HTTPS, SSH, FTP et la plupart des protocoles de couche application.
  • UDP (User Datagram Protocol) : Sans connexion, plus rapide, mais sans garanties de livraison. Utilisé par DNS, NTP, DHCP et les services de streaming.

2. Vérification des ports avec netstat

Qu’est-ce que netstat ?

netstat (statistiques réseau) est un utilitaire classique de ligne de commande qui affiche les connexions réseau actives, les tables de routage, les statistiques d’interface et les ports en écoute. Bien qu’il ait été officiellement déprécié en faveur de ss sur les distributions Linux modernes, netstat reste largement déployé — en particulier sur les systèmes hérités et dans les environnements où les administrateurs connaissent bien sa syntaxe.

Installation de netstat

netstat fait partie du paquet net-tools, qui n’est plus installé par défaut sur de nombreuses distributions modernes. Installez-le comme suit :

Debian / Ubuntu :

sudo apt update && sudo apt install net-tools -y

CentOS / RHEL / AlmaLinux / Rocky Linux :

sudo yum install net-tools -y
# or on newer versions:
sudo dnf install net-tools -y

Arch Linux :

sudo pacman -S net-tools

Syntaxe de base de netstat

sudo netstat [options]

Vérification de tous les ports TCP et UDP en écoute

sudo netstat -tuln

Détail des drapeaux :

DrapeauSignification
-tAfficher les connexions TCP et les ports
-uAfficher les connexions UDP et les ports
-lAfficher uniquement les sockets en écoute (ports en attente de connexions)
-nAfficher les adresses IP et les numéros de port en format numérique (ignorer la résolution DNS pour la rapidité)

Exemple de sortie :

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

Lecture de la sortie :

  • Proto — Le protocole utilisé (tcp, udp, tcp6, udp6).
  • Local Address — L’adresse IP et le numéro de port sur lequel le service est en écoute. 0.0.0.0 signifie que le service écoute sur toutes les interfaces disponibles ; 127.0.0.1 signifie qu’il n’est accessible que localement.
  • Foreign Address — L’adresse du client distant (affichée comme 0.0.0.0:* pour les ports en écoute sans connexion active).
  • State — L’état de la connexion (LISTEN, ESTABLISHED, TIME_WAIT, etc.).

Inclusion des informations de processus

Pour voir quel processus possède chaque port en écoute, ajoutez le drapeau -p :

sudo netstat -tulnp

Exemple de sortie avec informations de processus :

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  1023/sshd
tcp        0      0 0.0.0.0:80       0.0.0.0:*        LISTEN  2847/nginx
tcp        0      0 127.0.0.1:3306   0.0.0.0:*        LISTEN  3102/mysqld

> Remarque : Vous devez exécuter cette commande avec sudo pour voir les noms de processus pour tous les utilisateurs, pas seulement les vôtres.

Filtrage de la sortie pour des ports ou services spécifiques

Utilisez grep pour affiner les résultats à un port ou service spécifique :

# Check if anything is listening on port 80
sudo netstat -tuln | grep ":80"

# Check for SSH (port 22)
sudo netstat -tuln | grep ":22"

# Check for MySQL (port 3306)
sudo netstat -tuln | grep ":3306"

# Check for HTTPS (port 443)
sudo netstat -tuln | grep ":443"

Affichage de toutes les connexions actives (pas seulement celles en écoute)

Pour voir toutes les connexions actives, y compris les connexions établies, supprimez le drapeau -l :

sudo netstat -tunp

Affichage de la table de routage

sudo netstat -r

Affichage des statistiques d’interface réseau

sudo netstat -i

3. Vérification des ports avec ss

Qu’est-ce que ss ?

ss (statistiques de socket) est le remplaçant moderne de netstat, développé dans le cadre du paquet iproute2. Il communique directement avec le noyau Linux via les sockets Netlink, ce qui le rend considérablement plus rapide et plus efficace que netstat — particulièrement sur les systèmes avec des milliers de connexions simultanées.

ss est installé par défaut sur pratiquement toutes les distributions Linux modernes, y compris Ubuntu 18.04+, CentOS 7+, Debian 9+, et leurs dérivés.

Syntaxe de base de ss

ss [options] [filter]

Vérification de tous les ports TCP et UDP en écoute

ss -tuln

Les drapeaux ont la même signification que netstat :

DrapeauSignification
-tAfficher les sockets TCP
-uAfficher les sockets UDP
-lAfficher uniquement les sockets en écoute
-nAfficher les adresses numériques (pas de résolution DNS)

Exemple de sortie :

Netid  State   Recv-Q  Send-Q   Local Address:Port    Peer Address:Port
tcp    LISTEN  0       128      0.0.0.0:22             0.0.0.0:*
tcp    LISTEN  0       511      0.0.0.0:80             0.0.0.0:*
tcp    LISTEN  0       128      127.0.0.1:3306         0.0.0.0:*
tcp    LISTEN  0       511         [::]:443            [::]:*
udp    UNCONN  0       0        0.0.0.0:68             0.0.0.0:*

Inclusion des informations de processus

sudo ss -tulnp

Exemple de sortie :

Netid  State   Recv-Q  Send-Q  Local Address:Port  Peer Address:Port  Process
tcp    LISTEN  0       128     0.0.0.0:22           0.0.0.0:*          users:(("sshd",pid=1023,fd=3))
tcp    LISTEN  0       511     0.0.0.0:80           0.0.0.0:*          users:(("nginx",pid=2847,fd=6))
tcp    LISTEN  0       128     127.0.0.1:3306       0.0.0.0:*          users:(("mysqld",pid=3102,fd=21))

Filtrage par protocole

Afficher uniquement les ports TCP en écoute :

ss -tl

Afficher uniquement les ports UDP en écoute :

ss -ul

Afficher toutes les connexions TCP (y compris établies) :

ss -t

Filtrage avancé avec ss

L’une des fonctionnalités les plus puissantes de ss est son filtrage basé sur des expressions intégrées, qui vous permet de filtrer par port, adresse, état, et bien plus — sans dépendre de grep.

Filtrer par numéro de port spécifique :

ss -tuln sport = :80
ss -tuln sport = :443
ss -tuln sport = :22

Filtrer par port de destination :

ss -tuln dport = :3306

Afficher tous les sockets en état ESTABLISHED :

ss -t state established

Afficher tous les sockets en état LISTEN :

ss -t state listening

Filtrer par adresse IP source :

ss -tuln src 192.168.1.100

Afficher les connexions vers un hôte distant spécifique :

ss -t dst 203.0.113.50

Combiner plusieurs filtres :

ss -t state established '( dport = :443 or sport = :443 )'

Affichage de l’utilisation de la mémoire des sockets

ss peut également afficher l’utilisation détaillée de la mémoire par socket, ce qui est utile pour diagnostiquer les problèmes de performance :

ss -tm

Affichage des informations de minuterie

ss -to

Cela affiche les minuteries de retransmission et les minuteries de maintien de connexion pour les connexions TCP, ce qui est inestimable pour diagnostiquer les problèmes de stabilité de connexion.

4. Comparaison netstat vs. ss

Les deux outils accomplissent le même objectif fondamental, mais il existe des différences significatives qui doivent guider votre choix :

Fonctionnaliténetstatss
Paquetnet-tools (souvent non pré-installé)iproute2 (pré-installé sur les distributions modernes)
VitessePlus lent (lit depuis /proc/net/)Plus rapide (utilise l’interface noyau Netlink)
Performance à grande échelleSe dégrade avec des milliers de connexionsGère efficacement les grands nombres de connexions
Filtrage avancéNécessite un redirection vers grepFiltrage basé sur les expressions intégré
Détail de la sortieBonPlus détaillé (mémoire, minuteurs, etc.)
Support IPv6AdéquatExcellent
Statut de maintenanceDépréciéActivement maintenu
Courbe d’apprentissageFamilier aux administrateurs de longue dateSyntaxe légèrement différente mais bien documentée

Quand utiliser netstat

  • Lors de l’administration de systèmes Linux plus anciens (CentOS 6, Debian 7, etc.) où ss peut ne pas être disponible.
  • Lorsque vous travaillez avec des scripts ou de la documentation qui utilisent déjà la syntaxe netstat.
  • Lorsque vous êtes plus à l’aise avec son format de sortie et que vous n’avez pas besoin de filtrage avancé.

Quand utiliser ss

  • Sur toute distribution Linux moderne (Ubuntu 18.04+, CentOS 7+, Debian 9+, et plus récentes).
  • Lors de la gestion de serveurs avec un grand volume de connexions simultanées — comme ceux fonctionnant sur des Serveurs Dédiés sous charge importante.
  • Lorsque vous avez besoin d’un filtrage avancé, d’informations sur les minuteurs ou de statistiques de mémoire des sockets.
  • Pour l’automatisation et les scripts où la performance est importante.

5. Autres outils pour vérifier les ports ouverts

Au-delà de netstat et ss, plusieurs autres utilitaires sont utiles pour l’inspection des ports et l’analyse réseau sur Linux.

lsof — List Open Files (Incluant les sockets)

lsof (List Open Files) traite les sockets réseau comme des fichiers (conformément à la philosophie Linux « tout est un fichier ») et peut afficher quel processus a un port spécifique ouvert.

Installer lsof :

# Debian/Ubuntu
sudo apt install lsof -y

# CentOS/RHEL
sudo yum install lsof -y

Vérifier quel processus utilise le port 80 :

sudo lsof -i :80

Vérifier quel processus utilise le port 443 :

sudo lsof -i :443

Lister toutes les connexions réseau :

sudo lsof -i

Lister tous les sockets TCP en écoute :

sudo lsof -i TCP -s TCP:LISTEN

Exemple de sortie :

COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx    2847     root    6u  IPv4  23456      0t0  TCP *:http (LISTEN)
nginx    2848 www-data    6u  IPv4  23456      0t0  TCP *:http (LISTEN)

nmap — Network Mapper

nmap est un outil puissant d’analyse réseau utilisé pour l’audit de sécurité, la découverte réseau et l’analyse des ports. Contrairement à ss et netstat (qui inspectent le système local), nmap peut analyser les hôtes locaux et distants.

Installer nmap :

# Debian/Ubuntu
sudo apt install nmap -y

# CentOS/RHEL
sudo yum install nmap -y

Analyser tous les ports TCP sur localhost :

sudo nmap -sT localhost

Analyser les ports ouverts avec détection du système d’exploitation :

sudo nmap -sT -O localhost

Analyser une plage de ports spécifique :

sudo nmap -p 1-1024 localhost

Analyser les ports UDP (nécessite root) :

sudo nmap -sU localhost

Analyser un serveur distant :

sudo nmap -sT 203.0.113.50

> Important : Analysez uniquement les systèmes que vous possédez ou pour lesquels vous avez une autorisation explicite. L’analyse non autorisée des ports peut violer les lois et les conditions de service.

fuser — Identifier les processus utilisant des fichiers ou des sockets

# Find which process is using port 80 (TCP)
sudo fuser 80/tcp

# Find which process is using port 53 (UDP)
sudo fuser 53/udp

/proc/net/ — Interface directe du noyau

À des fins de scripting, vous pouvez lire les informations de port directement à partir du système de fichiers virtuel du noyau Linux :

# View raw TCP socket table
cat /proc/net/tcp

# View raw UDP socket table
cat /proc/net/udp

Notez que les adresses et les ports dans /proc/net/tcp sont affichés en hexadécimal et nécessitent une conversion pour être lisibles par l’homme. Des outils comme ss et netstat analysent automatiquement ces données.

6. Bonnes pratiques de sécurité pour la gestion des ports ouverts

Savoir comment vérifier les ports ouverts n’est que la moitié de la bataille. Agir sur cette information est ce qui sécurise votre serveur. Voici les bonnes pratiques concrètes que tout administrateur Linux devrait suivre :

Principe de la moindre exposition

N’exposez que les ports absolument nécessaires au fonctionnement de votre application. Chaque port ouvert est un vecteur d’attaque potentiel. Auditez régulièrement vos ports d’écoute et fermez ou bloquez par pare-feu tout ce qui n’a pas besoin d’être accessible publiquement.

Lier les services à des interfaces spécifiques

Évitez de lier les services à 0.0.0.0 (toutes les interfaces) sauf si nécessaire. Par exemple, un serveur de base de données MySQL ne devrait écouter que sur 127.0.0.1 s’il n’est accessible que localement :

# In /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 127.0.0.1

Utiliser un pare-feu

Utilisez ufw (Ubuntu) ou firewalld / iptables (CentOS/RHEL) pour restreindre l’accès aux ports ouverts par adresse IP, sous-réseau ou interface réseau :

# Allow SSH only from a specific IP (ufw)
sudo ufw allow from 203.0.113.10 to any port 22

# Deny all other access to port 22
sudo ufw deny 22

Auditer régulièrement les ports d’écoute

Planifiez des audits de ports réguliers à l’aide de tâches cron ou d’outils de surveillance. Un nouveau port d’écoute soudain peut indiquer un service compromis, une mauvaise configuration, ou — dans le pire des cas — un malware :

# Quick audit command — save output and compare over time
sudo ss -tulnp > /var/log/port_audit_$(date +%F).txt

Sécuriser les services avec SSL/TLS

Tout service exposé à Internet — serveurs web, serveurs de messagerie, panneaux de contrôle — devrait utiliser des connexions chiffrées. Associez vos ports ouverts à des Certificats SSL valides pour protéger les données en transit et prévenir les attaques de l’homme du milieu.

Surveiller les modifications inattendues

Utilisez des outils de détection d’intrusion comme AIDE, Tripwire ou auditd pour vous alerter quand de nouveaux processus commencent à écouter sur des ports. Intégrez avec la journalisation centralisée (par exemple, ELK Stack, Graylog) pour une visibilité complète.

Désactiver les services inutilisés

Si un service n’est pas nécessaire, arrêtez-le et désactivez-le au démarrage :

# Stop and disable a service (systemd)
sudo systemctl stop <service-name>
sudo systemctl disable <service-name>

Référence rapide : Commandes les plus utiles

TâcheCommande netstatCommande ss
Tous les ports TCP/UDP en écoutesudo netstat -tulnsudo ss -tuln
Tous les ports en écoute avec PIDssudo netstat -tulnpsudo ss -tulnp
Uniquement les ports TCP en écoutesudo netstat -tlnsudo ss -tl
Uniquement les ports UDP en écoutesudo netstat -ulnsudo ss -ul
Filtrer par port 80`sudo netstat -tulngrep ":80"`sudo ss -tuln sport = :80
Toutes les connexions établiessudo netstat -tunpsudo ss -t state established
Afficher la table de routagesudo netstat -rip route show

Conclusion

La surveillance des ports ouverts et à l’écoute est une compétence fondamentale pour tout administrateur système Linux ou ingénieur DevOps. Que vous sécurisiez un serveur web de production, résolviez un problème de connectivité ou effectuiez un audit de sécurité de routine, netstat et ss vous donnent une visibilité immédiate et exploitable sur l’exposition réseau de votre système.

Pour résumer les points clés à retenir :

  • Utilisez ss comme outil principal sur toute distribution Linux moderne — c’est plus rapide, plus riche en fonctionnalités et activement maintenu.
  • Utilisez netstat lorsque vous travaillez sur des systèmes hérités ou lorsque des scripts et des flux de travail existants en dépendent.
  • Complétez avec lsof et nmap pour une inspection plus approfondie au niveau des processus et une analyse des ports externes.
  • Agissez toujours sur vos résultats — fermez les ports inutiles, liez les services aux bonnes interfaces et appliquez les règles de pare-feu.
  • Sécurisez les services exposés avec des Certificats SSL appropriés et des contrôles d’accès.

Si vous recherchez un environnement d’hébergement qui vous donne un accès root complet pour mettre en œuvre ces pratiques de sécurité, les plans VPS Hosting d’AlexHost offrent un contrôle complet sur la configuration de votre serveur Linux — y compris la gestion du pare-feu, le renforcement des services et la surveillance du réseau. Pour les équipes qui ont besoin de performances maximales et de ressources dédiées, nos Serveurs Dédiés offrent la puissance brute et l’isolation requises pour les opérations de sécurité de classe entreprise. Et si vous préférez un environnement géré avec une interface familière, explorez nos options VPS avec cPanel pour une gestion de serveur rationalisée sans sacrifier le contrôle.

L’audit régulier des ports, combiné à une configuration de serveur renforcée, est l’une des défenses les plus efficaces contre l’accès non autorisé et les violations de données. Faites-en une partie régulière de votre pratique d’administration système.