• Home
  • Lister les ports Linux : 3 commandes que tout admin doit maîtriser
Lister les ports Linux : 3 commandes que tout admin doit maîtriser
Par Guillaume REYNAUD profile image Guillaume REYNAUD
8 min read

Lister les ports Linux : 3 commandes que tout admin doit maîtriser

Ports ouverts sur Linux : découvrez comment les surveiller avec netstat, ss et lsof pour sécuriser votre serveur en quelques commandes.

La surveillance des ports réseau est une compétence cruciale pour tout administrateur système Linux. Que vous soyez débutant ou expert, savoir lister les ports actifs et identifier les ports ouverts sur votre système est indispensable pour la sécurité et le diagnostic réseau.

Dans ce tutoriel complet, vous découvrirez comment utiliser lsof netstat et d'autres outils puissants pour obtenir des informations connexions réseau détaillées. Ces commandes vous permettront de détecter les services suspects, résoudre les conflits de ports et optimiser vos configurations réseau.

Pourquoi surveiller les ports en écoute ? Les risques que vous devez absolument connaître

Avant de plonger dans les commandes, comprenons pourquoi cette compétence est vitale :

  • Sécurité maximale : Détecter les portes dérobées et services non autorisés
  • Performance optimale : Identifier les applications qui monopolisent les ressources réseau
  • Diagnostic rapide : Résoudre les problèmes de connectivité en quelques secondes
  • Conformité : Respecter les politiques de sécurité de votre organisation

Les 3 outils incontournables pour lister les ports sous Linux

netstat : L'outil classique qui fait ses preuves

netstat (network statistics) est l'outil historique pour afficher les informations connexions réseau. Bien que considéré comme obsolète sur certaines distributions, il reste largement utilisé.

Installation de netstat


# Debian/Ubuntu
sudo apt install net-tools

# CentOS/RHEL/Fedora
sudo yum install net-tools

# Arch Linux
sudo pacman -S net-tools 

Commandes netstat essentielles pour identifier les ports

Lister tous les ports en écoute (TCP et UDP) :

sudo netstat -tuln
Lister tous les ports en écoute (TCP et UDP) avec Netstat

Explication des options :

  • -t : Affiche les connexions TCP
  • -u : Affiche les connexions UDP
  • -l : Affiche uniquement les ports en écoute (listening)
  • -n : Affiche les adresses numériques (plus rapide)

Afficher les processus associés aux ports :

sudo netstat -tulnp

L'option -p ajoute le PID et le nom du programme, crucial pour identifier les ports utilisés par chaque application.

Exemple de sortie :

Afficher les processus associés aux ports grâce à netstat

Filtrer les résultats comme un pro

Afficher uniquement les connexions TCP établies :

netstat -tn

Compter le nombre de connexions par état :

netstat -ant | awk '{print $6}' | sort | uniq -c | sort -rn
Compter le nombre de connexions par état avec Netstat

ss : La commande moderne qui écrase tout

ss (socket statistics) est le remplaçant moderne de netstat, plus rapide et plus puissant pour lister les ports.

Pourquoi ss domine netstat ?

  • ⚡ Vitesse fulgurante : Jusqu'à 10x plus rapide
  • 🔍 Informations détaillées : Plus de données sur les connexions
  • 🆕 Maintenu activement : Intégré au paquet iproute2

Commandes ss indispensables

Lister tous les ports en écoute :

sudo ss -tuln
Lister tous les ports en écoute avec ss

Afficher les processus (équivalent netstat -tulnp) :

sudo ss -tulnp

Exemple de sortie détaillée :

Afficher les processus (équivalent netstat -tulnp) avec ss

Techniques avancées avec ss

Afficher uniquement les connexions TCP établies :

ss -tn state established

Filtrer par port spécifique :

ss -tuln sport = :80

Afficher les statistiques résumées :

ss -s
Afficher les statistiques résumées avec ss

Surveiller les connexions en temps réel :

watch -n 1 'ss -tuln'
Surveiller les connexions en temps réel avec ss

lsof : L'arme secrète pour identifier les ports avec précision

lsof (list open files) est extraordinairement polyvalent. Sous Linux, "tout est fichier", y compris les sockets réseau. C'est l'outil parfait pour corréler lsof netstat et obtenir une vue complète.

Installation de lsof


# Debian/Ubuntu
sudo apt install lsof

# CentOS/RHEL/Fedora
sudo yum install lsof

# Arch Linux
sudo pacman -S lsof

Commandes lsof dévastatrices

Lister tous les ports en écoute :

sudo lsof -i -P -n | grep LISTEN

Explication des options :

  • -i : Affiche les fichiers Internet (connexions réseau)
  • -P : Affiche les numéros de port (pas les noms de service)
  • -n : N'effectue pas de résolution DNS (plus rapide)
Lister tous les ports en écoute avec lsof

Identifier quel processus utilise un port spécifique :

sudo lsof -i :80

Cette commande révèle instantanément quelle application monopolise le port 80.

Exemple de sortie :

Identifier quel processus utilise un port spécifique avec lsof

Techniques ninja avec lsof

Lister les connexions d'un utilisateur spécifique :

sudo lsof -u username -i

Afficher tous les ports TCP en écoute :

sudo lsof -iTCP -sTCP:LISTEN -P -n

Identifier les processus avec plusieurs connexions :

sudo lsof -i -P | awk '{print $1}' | sort | uniq -c | sort -rn
Identifier les processus avec plusieurs connexions avec lsof

Tableau comparatif : netstat vs ss vs lsof

Tableau comparatif : netstat vs ss vs lsof

Cas pratiques : résoudre les problèmes réels comme un expert

Scénario 1 : Détecter qui utilise le port 8080

Problème : Votre application ne peut pas démarrer car le port 8080 est occupé.

Solution rapide avec lsof :

sudo lsof -i :8080

Solution avec ss :

sudo ss -tulnp | grep :8080

Solution avec netstat :

sudo netstat -tulnp | grep :8080

Scénario 2 : Lister tous les ports ouverts pour un audit de sécurité

Approche complète :

# Créer un rapport détaillé
echo "=== PORTS EN ÉCOUTE ===" > audit_ports.txt
sudo ss -tulnp >> audit_ports.txt
echo -e "\n=== PROCESSUS RÉSEAU ===" >> audit_ports.txt
sudo lsof -i -P -n >> audit_ports.txt

Scénario 3 : Surveiller les connexions suspectes

Détecter les connexions externes inhabituelles :

sudo ss -tnp | grep -v "127.0.0.1"

Identifier les connexions établies vers l'extérieur :

sudo lsof -i -P -n | grep ESTABLISHED | grep -v "127.0.0.1"
Identifier les connexions établies vers l'extérieur avec lsof

Commandes combinées : Multipliez votre éfficacité

Créer un script de surveillance automatique

#!/bin/bash
# script: monitor_ports.sh

echo "========================================="
echo "Rapport de surveillance réseau"
echo "Date: $(date)"
echo "========================================="

echo -e "\n[1] Top 10 des ports en écoute:"
sudo ss -tulnp | awk '{print $5}' | cut -d':' -f2 | sort | uniq -c | sort -rn | head -10

echo -e "\n[2] Processus avec le plus de connexions:"
sudo lsof -i -P | awk '{print $1}' | sort | uniq -c | sort -rn | head -10

echo -e "\n[3] Connexions établies vers l'extérieur:"
sudo ss -tnp state established | wc -l

echo -e "\n[4] Ports en écoute non-standard (> 1024):"
sudo ss -tulnp | awk '$5 ~ /:/ {split($5,a,":"); if(a[2]>1024) print $0}'

Rendre le script exécutable :

chmod +x monitor_ports.sh
sudo ./monitor_ports.sh

Différences entre IPv4 et IPv6 : Ne vous faites plus piéger

Lister uniquement les ports IPv4 :

sudo ss -tuln4

Lister uniquement les ports IPv6 :

sudo ss -tuln6

Avec lsof pour IPv4 :

sudo lsof -i 4 -P -n | grep LISTEN

Avec lsof pour IPv6 :

sudo lsof -i 6 -P -n | grep LISTEN

Sécurité : Protégez vos ports comme une forteresse

Identifier les ports dangereux exposés

Vérifier si des services sensibles sont exposés publiquement :

sudo ss -tulnp | grep -E ":(3306|5432|27017|6379)"

Ces ports correspondent à :

  • 3306 : MySQL
  • 5432 : PostgreSQL
  • 27017 : MongoDB
  • 6379 : Redis

⚠️ Si ces ports écoutent sur 0.0.0.0, ils sont accessibles depuis n'importe où !

Recommandations de sécurité

  1. Limitez l'écoute aux interfaces locales quand possible (127.0.0.1)
  2. Utilisez un firewall (iptables, ufw, firewalld)
  3. Surveillez régulièrement les ports ouverts
  4. Fermez les services inutilisés immédiatement

Astuces de performance : Accélérez vos diagnostics

Créer des alias pratiques

Ajoutez ces lignes à votre ~/.bashrc ou ~/.zshrc :

# Alias pour lister les ports rapidement
alias ports='sudo ss -tulnp'
alias listening='sudo lsof -i -P -n | grep LISTEN'
alias established='sudo ss -tnp state established'
alias portcheck='sudo lsof -i :'

# Utilisation: portcheck 80

Recharger la configuration :

source ~/.bashrc

Automatiser la surveillance avec cron

# Éditer le crontab
sudo crontab -e

# Ajouter cette ligne pour un rapport quotidien
0 2 * * * /usr/local/bin/monitor_ports.sh > /var/log/port_monitoring_$(date +\%Y\%m\%d).log 2>&1

Dépannage : Résoudre les erreurs courantes

Erreur "command not found"

Solution :

# Pour netstat
sudo apt install net-tools  # Debian/Ubuntu
sudo yum install net-tools  # CentOS/RHEL

# Pour lsof
sudo apt install lsof

Erreur "Permission denied"

Cause : Droits insuffisants pour accéder aux informations réseau.

Solution : Utiliser sudo avant les commandes

Sortie vide ou incomplète

Vérifiez que vous utilisez les bonnes options :

# Incorrect (ne montre pas les processus)
ss -tuln

# Correct
sudo ss -tulnp

FAQ : Toutes les réponses à vos questions

Q: Quelle est la différence entre netstat et ss ?

ss est le remplaçant moderne de netstat. Il est plus rapide, fournit plus d'informations et est activement maintenu. netstat est considéré comme obsolète mais reste disponible pour la compatibilité. Pour lister les ports efficacement, privilégiez ss.


Q: Comment identifier quel processus utilise un port spécifique ?

Utilisez l'une de ces commandes pour identifier les ports et leurs processus :

sudo lsof -i :NUMERO_PORT
sudo ss -tulnp | grep :NUMERO_PORT
sudo netstat -tulnp | grep :NUMERO_PORT

Remplacez NUMERO_PORT par le port recherché (exemple : 80, 443, 3306).


Q: Pourquoi dois-je utiliser sudo avec ces commandes ?

Les informations connexions réseau complètes, notamment les PIDs et noms de processus, nécessitent des privilèges élevés. Sans sudo, vous obtiendrez une sortie partielle sans les détails des processus.


Q: Comment voir uniquement les ports TCP en écoute ?

sudo ss -tlnp        # Avec ss
sudo netstat -tlnp   # Avec netstat
sudo lsof -iTCP -sTCP:LISTEN -P -n  # Avec lsof


Q: Comment vérifier si un port est ouvert sur une machine distante ?

Utilisez telnet ou nc (netcat) :

telnet IP_DISTANTE PORT
# ou
nc -zv IP_DISTANTE PORT

Pour scanner plusieurs ports, utilisez nmap :

nmap -p 80,443,22 IP_DISTANTE

Q: Quelle est la meilleure commande pour un débutant ?

Pour débuter, utilisez ss avec ces options simples :

sudo ss -tulnp

Cette commande affiche tous les ports en écoute avec les processus associés, idéal pour comprendre l'activité réseau de votre système.


Q: Comment surveiller les connexions en temps réel ?

Utilisez watch combiné avec ss ou netstat :

watch -n 1 'sudo ss -tulnp'

Cela rafraîchit l'affichage toutes les secondes. Appuyez sur Ctrl+C pour arrêter.


Q: Comment exporter les résultats dans un fichier ?

sudo ss -tulnp > ports_ouverts.txt
sudo lsof -i -P -n > connexions_reseau.txt

Pour un rapport horodaté :

sudo ss -tulnp > rapport_ports_$(date +%Y%m%d_%H%M%S).txt

Q: Pourquoi certains ports affichent 0.0.0.0 et d'autres 127.0.0.1 ?

  • 0.0.0.0 : Le service écoute sur toutes les interfaces réseau (accessible depuis l'extérieur)
  • 127.0.0.1 : Le service écoute uniquement sur l'interface locale (accessible uniquement depuis la machine elle-même)

Pour la sécurité, préférez 127.0.0.1 pour les services qui n'ont pas besoin d'être accessibles depuis le réseau.


Q: Comment filtrer les résultats pour un utilisateur spécifique ?

Avec lsof, vous pouvez facilement filtrer par utilisateur :

sudo lsof -u nom_utilisateur -i

Cela affiche toutes les connexions réseau de l'utilisateur spécifié.


Q: Combien de connexions simultanées mon serveur peut-il gérer ?

Vérifiez les limites système :

# Limite par processus
ulimit -n

# Limite globale
cat /proc/sys/fs/file-max

# Nombre de connexions actives
sudo ss -s

Q: Comment identifier les connexions suspectes ?

Recherchez les connexions vers des ports inhabituels ou des IPs inconnues :

# Connexions établies vers l'extérieur
sudo ss -tnp state established | grep -v "127.0.0.1"

# Trier par nombre de connexions par IP
sudo ss -tn | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn

Conclusion : Maîtrisez vos ports pour un système sécurisé

Vous disposez maintenant d'un arsenal complet pour lister les portsidentifier les ports actifs et obtenir des informations connexions réseau détaillées sous Linux.

Récapitulatif des commandes essentielles :

  • ss -tulnp : Votre commande quotidienne pour une vue d'ensemble
  • lsof -i :PORT : Pour cibler un port spécifique instantanément
  • netstat -tulnp : Pour la compatibilité avec les anciens systèmes

La surveillance régulière de vos ports est une pratique de sécurité indispensable. Intégrez ces commandes dans vos routines d'administration et créez des scripts de monitoring automatisés.

N'oubliez pas : un port ouvert inutilement est une porte d'entrée potentielle pour les attaquants. Restez vigilant et auditez régulièrement votre système.

Signature
Par Guillaume REYNAUD profile image Guillaume REYNAUD
Mis à jour le
Linux