Architecture des réseaux · Étape 14

Cartographie les services, les ports et le chiffrement

Relie processus, adresse d'écoute, protocole de transport et port, puis évite de confondre numéro de port et garantie de sécurité.

Durée indicative · ~1 h 15Niveau intermédiairePrérequis conseillé · Leçons 12 et 13 — DNS, HTTP et TLSPratique · TP
L’idée reçue

« Un service sur un port sécurisé est forcément chiffré. »

Un port est une convention de destination, pas une preuve cryptographique. Il faut observer le protocole réellement négocié, l’adresse d’écoute et la configuration du service.

01Préparer trois services réels

sudo apt update
sudo apt install -y python3 openssl curl netcat-openbsd dnsmasq-base
chmod +x module3-services-lab.sh
sudo ./module3-services-lab.sh up
sudo ip -n soria-cli addr add 10.30.0.100/24 dev eth0

Dans trois terminaux, lance :

# DNS, dans soria-svc
sudo ip netns exec soria-svc dnsmasq --no-daemon --conf-file=/dev/null --interface=eth0 --bind-interfaces --host-record=intranet.soria.test,10.30.0.20 --no-resolv --log-queries --log-facility=-

# HTTP, dans soria-web
sudo ip netns exec soria-web python3 -m http.server 8080 --bind 10.30.0.20

# Service local uniquement, dans soria-web
sudo ip netns exec soria-web python3 -m http.server 9090 --bind 127.0.0.1

02Lire les sockets côté serveur

sudo ip netns exec soria-svc ss -lnup
sudo ip netns exec soria-web ss -lntp
ÉcouteInterprétation
10.30.0.20:8080Accessible via cette interface et ce port si le chemin réseau l’autorise.
127.0.0.1:9090Accessible uniquement depuis la boucle locale du namespace web.
0.0.0.0:PORTÉcoute sur toutes les adresses IPv4 présentes dans ce namespace.
10.30.0.1:53/udpSocket DNS UDP ; une écoute TCP 53 peut également exister.

03Tester depuis le client

sudo ip netns exec soria-cli nc -vz 10.30.0.20 8080
sudo ip netns exec soria-cli nc -vz 10.30.0.20 9090

sudo ip netns exec soria-cli curl -I http://10.30.0.20:8080/
sudo ip netns exec soria-cli curl -I --max-time 2 http://10.30.0.20:9090/
Le processus sur 9090 existe, mais son bind sur 127.0.0.1 le rend invisible depuis le LAN. « Le service tourne » et « le service est joignable » sont deux affirmations différentes.
Réparation

Expose correctement 9090

  1. arrête le serveur local ;
  2. relance-le avec –bind 10.30.0.20 ;
  3. compare la nouvelle sortie de ss ;
  4. valide avec nc puis curl.

04Ne pas confondre famille de protocole et port

UsageConvention courantePoint de vigilance
HTTP / HTTPS80 / 443HTTPS implique TLS ; un service arbitraire peut néanmoins écouter sur n’importe quel port.
FTP / SFTP21 / 22SFTP utilise SSH et n’est pas « FTP avec un S ».
SMTP submission587Le chiffrement peut être négocié avec STARTTLS ; il faut vérifier la session.
SMTP implicite TLS465TLS commence dès la connexion.
IMAP / IMAPS143 / 993143 peut utiliser STARTTLS ; 993 utilise généralement TLS implicite.
DNS53 UDP et TCPLe transport dépend de la requête et de la réponse ; 53 n’est pas uniquement UDP.

Ces numéros facilitent l’interopérabilité et la documentation. Ils ne remplacent pas l’inspection de la configuration, du handshake ou de la capture.

05Produire une cartographie exploitable

Service : intranet HTTP
Processus : python3
Namespace / hôte : soria-web
Transport : TCP
Adresse d'écoute : 10.30.0.20
Port : 8080
Chiffrement : non
Clients autorisés : LAN de laboratoire
Méthode de validation : ss + nc + curl + tcpdump
Livrable

Documente la surface d’exposition

  1. recense DNS, HTTP 8080 et HTTP 9090 ;
  2. note le processus, le transport, l’adresse et le port ;
  3. indique si le service est local, LAN ou toutes interfaces ;
  4. indique si le contenu est chiffré ;
  5. associe une commande de validation à chaque ligne.

06Nettoyer

sudo ./module3-services-lab.sh down

Ce que tu retiens

Un service accessible résulte d’un processus actif, d’un socket correctement lié, d’un transport, d’une adresse, d’un port et d’un chemin autorisé. Le numéro de port décrit une convention ; seul le protocole observé permet d’affirmer qu’une session est chiffrée.

Ta progression

Chargement de l’état… Se connecter pour synchroniser.