Introduction
Dans la sécurité des serveurs, la « surface d’attaque » désigne l’ensemble des points par lesquels un utilisateur non autorisé peut tenter d’entrer dans le système ou d’en extraire des données. La gestion des ports réseau constitue un élément essentiel de la réduction de cette surface d’attaque.
Chaque port ouvert représente un point d’entrée potentiel pour un attaquant. Lorsqu’un service écoute sur un port, il est prêt à recevoir des données. Si ce service est vulnérable ou ne devrait pas être accessible publiquement, votre système est exposé.
Un port en écoute ne signifie pas automatiquement qu’il est dangereux, mais il indique que le système est exposé. Un audit de sécurité commence par l’identification des services accessibles et la vérification du caractère intentionnel de cette exposition.
C’est pourquoi l’audit des ports fait partie du renforcement de sécurité de base. Une bonne sécurité ne consiste pas seulement à appliquer des correctifs logiciels, mais aussi à réduire les expositions inutiles.
Dans ce laboratoire, vous allez effectuer un audit de sécurité élémentaire. Vous allez :
- Répertorier tous les ports TCP en écoute à l’aide de la commande
ss. - Identifier les ports suspects ou non standard.
- Rechercher le processus et l’utilisateur responsables de l’ouverture d’un port.
Répertorier les ports TCP en écoute
Votre première tâche consiste à obtenir une vue complète de l’état du réseau. Nous utiliserons la commande ss (Socket Statistics), qui constitue un remplacement plus moderne et plus rapide de l’ancien outil netstat.
Pour effectuer l’audit, nous voulons nous concentrer sur les ports TCP en écoute et sur les processus qui les ont ouverts.
Ces informations sur les processus transforment une simple liste de sockets en données exploitables. Un numéro de port seul vous apprend peu de choses, tandis qu’un port associé à un processus et à un utilisateur précis peut être évalué et géré.
Exécutez la commande suivante :
sudo ss -lntp
Comprendre les options :
-l(listening) : affiche uniquement les sockets qui attendent des connexions.-n(numeric) : affiche les adresses IP et les numéros de port au lieu des noms d’hôte, ce qui est plus rapide et plus lisible.-t(tcp) : affiche uniquement les sockets TCP.-p(processes) : affiche le nom du processus et son PID (identifiant de processus) qui utilisent le socket.- Remarque :
sudoest nécessaire pour afficher les informations sur les processus des services appartenant à d’autres utilisateurs.
- Remarque :
Vous devriez obtenir un résultat similaire à celui-ci :
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 4096 127.0.0.1:8080 0.0.0.0:* users:(("node",pid=123,fd=18))
LISTEN 0 5 0.0.0.0:9999 0.0.0.0:* users:(("python3",pid=456,fd=3))
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=789,fd=3))
La colonne Local Address:Port indique où le service est en écoute. La colonne Process identifie le programme responsable.
Vérifiez également si l’adresse est 127.0.0.1 ou 0.0.0.0. Les services accessibles uniquement via localhost sont exposés uniquement sur la machine elle-même, tandis que 0.0.0.0 signifie généralement que le service écoute sur toutes les interfaces réseau.
Identifier les ports suspects
Analysez maintenant le résultat afin d’identifier les éléments inhabituels.
Les services standard utilisent généralement des « ports bien connus » (0-1023). Par exemple :
- Port 22 : SSH (Secure Shell)
- Port 80 : HTTP (serveur web)
- Port 443 : HTTPS (serveur web sécurisé)
Lors d’un audit de sécurité, recherchez les ports non standard ou les services que vous ne reconnaissez pas.
L’objectif n’est pas de s’alarmer au sujet de chaque port inconnu, mais d’en vérifier la fonction. Un service peut être légitime, temporaire ou avoir été lancé par erreur ; l’audit consiste à transformer une exposition inconnue en exposition identifiée.
Examinez le résultat obtenu à l’étape 1. Vous devriez voir un service en écoute sur le port 9999. Il ne s’agit pas d’un port système standard et il mérite donc un examen plus approfondi.
Isolez cette entrée avec grep :
sudo ss -lntp | grep 9999
Exemple de résultat :
LISTEN 0 5 0.0.0.0:9999 0.0.0.0:* users:(("python3",pid=289,fd=3))
Cela confirme qu’un processus est actif sur le port 9999. Nous allons ensuite déterminer précisément de quel processus il s’agit.
Examiner le propriétaire du processus
Savoir qu’un port est ouvert ne suffit pas. Vous devez savoir quel utilisateur exécute le service. Un processus suspect exécuté avec les privilèges de root constitue une urgence critique, tandis qu’un processus exécuté par un utilisateur limité peut être moins grave, même s’il reste dangereux.
Trouver le PID : examinez le résultat de la commande précédente. Dans la section users:, repérez la valeur pid=....
- Exemple :
users:(("python3",pid=289,fd=3))-> le PID est 289. - Remarque : votre PID sera différent.
Inspecter le processus : utilisez la commande ps pour afficher les détails correspondant à ce PID. Remplacez <PID> par le numéro que vous avez trouvé.
ps -f -p <PID>
Exemple, si le PID est 289 :
ps -f -p 289
Analyser le résultat :
UID PID PPID C STIME TTY TIME CMD
labex 289 189 0 10:00 pts/0 00:00:00 python3 -m http.server 9999
- UID : l’utilisateur qui exécute le processus, par exemple
labex. - CMD : la commande exacte qui a démarré le processus, par exemple
python3 -m http.server 9999.
Cela vous indique que l’utilisateur labex a démarré un serveur HTTP Python destiné à écouter sur le port 9999. Dans un scénario réel, si vous n’avez pas autorisé ce processus, vous devriez l’arrêter immédiatement.
Cette dernière étape permet d’attribuer l’origine de l’exposition : il ne s’agit plus seulement de savoir « quel port est ouvert », mais aussi de déterminer « quelle commande, lancée par quel utilisateur, a créé cette exposition réseau ». C’est ce qui rend l’audit utile pour la réponse aux incidents et le renforcement de la sécurité.
Résumé
Dans ce laboratoire, vous avez effectué avec succès un audit de sécurité des ports en écoute du système.
Points essentiels à retenir :
- Visibilité : utilisez
sudo ss -lntppour voir précisément quels services écoutent les connexions. - Identification : reconnaissez les ports standard et signalez les ports non standard, comme 9999, afin de les examiner.
- Attribution : utilisez
ps -f -p <PID>pour déterminer quel utilisateur et quelle commande sont responsables d’un socket suspect.
Des audits réguliers vous aident à repérer les services non autorisés, comme des portes dérobées ou des serveurs web divers, et à les supprimer avant qu’ils ne puissent être exploités.



