Lister les ports ouverts, identifier les processus qui écoutent et tester la connectivité réseau.

Sujets associés : Paquets IP et TCP, UDP, Protocoles OSI — Vue d’ensemble


ss — socket statistics (recommandé)

ss remplace netstat. Plus rapide car il interroge directement le noyau.

# Tous les sockets (listening + établis)
ss
 
# Sockets TCP
ss -t
 
# Sockets UDP
ss -u
 
# Sockets UNIX (fichiers socket)
ss -x
 
# Sockets en écoute uniquement
ss -l
 
# Afficher les processus associés (PID + nom)
ss -p
 
# Afficher les ports en numérique (sans résolution DNS)
ss -n
 
# Combinaisons courantes
ss -tuln           # TCP+UDP, listening, numérique → vue rapide des ports ouverts
ss -tunp           # TCP+UDP, numérique + processus
ss -tnp            # TCP uniquement avec processus
ss -tlnp           # TCP listening avec processus
 
# Filtrer par port
ss -tnp '( dport = :443 or sport = :443 )'
ss -tnp dport :80
 
# Filtrer par état TCP
ss -t state established
ss -t state time-wait
ss -t state listening
 
# Statistiques globales
ss -s
 
# Afficher les connexions d'un processus spécifique
ss -tnp | grep nginx
ss -tnp | grep :8080

Lecture de ss -tuln :

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:*     ← SSH écoute sur toutes les IPs
tcp    LISTEN   0      511      127.0.0.1:5432        0.0.0.0:*     ← Postgres écoute seulement local
tcp    ESTAB    0      0        192.168.1.50:22       192.168.1.10:52341 ← connexion SSH active
udp    UNCONN   0      0        0.0.0.0:53            0.0.0.0:*     ← DNS écoute

netstat — outil legacy (encore présent partout)

# Ports en écoute TCP+UDP
netstat -tuln
 
# Avec processus
netstat -tulnp
 
# Toutes les connexions TCP
netstat -tn
 
# Statistiques
netstat -s
 
# Table de routage
netstat -rn
 
# Interfaces réseau
netstat -i

lsof — fichiers ouverts (dont sockets)

# Tous les fichiers réseau ouverts
sudo lsof -i
 
# Connexions sur un port spécifique
sudo lsof -i :80
sudo lsof -i :443
sudo lsof -i :8080
 
# Connexions d'un processus spécifique
sudo lsof -i -p 1234
sudo lsof -c nginx        # par nom de commande
 
# Connexions TCP en écoute
sudo lsof -i TCP -s TCP:LISTEN
 
# Connexions d'un utilisateur
sudo lsof -u www-data -i
 
# Fichiers ouverts par un processus
lsof -p 1234
 
# Trouver quel processus utilise un port
sudo lsof -i :80 | grep LISTEN

nc (netcat) — couteau suisse TCP/UDP

Tester la connectivité

# Tester si un port est ouvert (TCP)
nc -zv 192.168.1.50 80
nc -zv google.com 443
#    │└─ verbose (affiche le résultat)
#    └── zero I/O (ne rien envoyer, juste tester)
 
# Tester un port UDP
nc -zuv 8.8.8.8 53
 
# Tester une plage de ports
nc -zv 192.168.1.50 20-25
nc -zv 192.168.1.50 80 443 8080
 
# Avec timeout (3 secondes)
nc -zvw 3 192.168.1.50 443

Serveur et client simples

# Serveur TCP : écouter sur un port
nc -l 8888                     # écoute sur 0.0.0.0:8888
nc -l -p 8888 192.168.1.50     # écoute sur une IP spécifique
 
# Client : se connecter
nc 192.168.1.50 8888
 
# Transfert de fichier (server → client)
# Côté récepteur
nc -l 9999 > fichier_reçu.txt
# Côté envoyeur
nc 192.168.1.50 9999 < fichier.txt
 
# Chat simple entre deux machines
# Machine A
nc -l 8888
# Machine B
nc 192.168.1.10 8888

Requêtes HTTP manuelles

# Faire une requête HTTP "à la main"
echo -e "GET / HTTP/1.0\r\nHost: exemple.com\r\n\r\n" | nc exemple.com 80
 
# Vérifier le banner d'un service
nc 192.168.1.50 22      # affiche le banner SSH
nc 192.168.1.50 25      # affiche le banner SMTP
nc 192.168.1.50 21      # affiche le banner FTP

Scanner de ports (alternatif à nmap)

# Scanner rapidement les ports courants
for port in 21 22 23 25 53 80 443 3306 5432 8080 8443; do
    nc -zw 1 192.168.1.50 $port 2>/dev/null && echo "Port $port: ouvert"
done

Ports importants à connaître

PortProtocoleService
20/21TCPFTP (données / contrôle)
22TCPSSH
23TCPTelnet (non sécurisé)
25TCPSMTP
53TCP/UDPDNS
67/68UDPDHCP (serveur/client)
80TCPHTTP
110TCPPOP3
123UDPNTP
143TCPIMAP
389TCPLDAP
443TCPHTTPS
465/587TCPSMTP sécurisé
993TCPIMAPS
995TCPPOP3S
3306TCPMySQL / MariaDB
5432TCPPostgreSQL
5672TCPRabbitMQ AMQP
6379TCPRedis
8080TCPHTTP alternatif
8443TCPHTTPS alternatif
27017TCPMongoDB

Recettes complètes

# Trouver quel processus écoute sur le port 80
sudo ss -tlnp | grep :80
sudo lsof -i :80 | grep LISTEN
 
# Lister tous les ports ouverts sur une machine distante
nmap -sT -p- --open 192.168.1.50
 
# Vérifier si un service accepte les connexions TLS
openssl s_client -connect api.exemple.com:443 -servername api.exemple.com < /dev/null
 
# Surveiller les nouvelles connexions TCP en temps réel
sudo ss -tnp | watch -n 1
 
# Compter les connexions établies par IP (pour détecter un DDoS)
ss -tn state established | awk 'NR>1{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head

En relation avec