« 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
| Écoute | Interprétation |
|---|---|
10.30.0.20:8080 | Accessible via cette interface et ce port si le chemin réseau l’autorise. |
127.0.0.1:9090 | Accessible 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/udp | Socket 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/
Expose correctement 9090
- arrête le serveur local ;
- relance-le avec
–bind 10.30.0.20; - compare la nouvelle sortie de
ss; - valide avec
ncpuiscurl.
04Ne pas confondre famille de protocole et port
| Usage | Convention courante | Point de vigilance |
|---|---|---|
| HTTP / HTTPS | 80 / 443 | HTTPS implique TLS ; un service arbitraire peut néanmoins écouter sur n’importe quel port. |
| FTP / SFTP | 21 / 22 | SFTP utilise SSH et n’est pas « FTP avec un S ». |
| SMTP submission | 587 | Le chiffrement peut être négocié avec STARTTLS ; il faut vérifier la session. |
| SMTP implicite TLS | 465 | TLS commence dès la connexion. |
| IMAP / IMAPS | 143 / 993 | 143 peut utiliser STARTTLS ; 993 utilise généralement TLS implicite. |
| DNS | 53 UDP et TCP | Le 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
Documente la surface d’exposition
- recense DNS, HTTP 8080 et HTTP 9090 ;
- note le processus, le transport, l’adresse et le port ;
- indique si le service est local, LAN ou toutes interfaces ;
- indique si le contenu est chiffré ;
- 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.