SE5 IdO sécurité des objets 2025/2026 b2
Infrastructure Réseau – Infrastructure Réseau
Introduction
Ce wiki documente la mise en place d’une petite infrastructure réseau pédagogique pour le TP 2025/2026.
L’objectif est de déployer un serveur virtuel sur capbreton, d’y terminer un VLAN privé (ici 409 car je suis a la Zabeth 09), puis d’implanter les services exigés : DHCP, DNS (forwarder + zone locale d’interception), NAT/mascarade, et redirection réseau pour l’HTTP.
Des choix techniques sont explicités à chaque étape (pourquoi tel fichier, telle option, tel service), afin d’argumenter les décisions et permettre la reproductibilité.
Serveur virtuel (17/09)
La VM est créée sur Xen depuis capbreton avec une unique interface reliée à bridgeStudents, conformément au sujet (routage par 172.26.145.251 côté salles projets).
xen-create-image \
--hostname=SE5.kelbachi \
--dhcp \
--bridge=bridgeStudents \
--dir=/usr/local/xen \
--size=10GB \
--dist=daedalus \
--memory=2G \
--force
- Pourquoi cette commande ?
--bridge=bridgeStudentsimpose l’unique attachement réseau demandé ;--dist=daedalusassure une base Devuan stable (ifupdownclassique) ; les ressources (2 Gio RAM/10 Gio disque) suffisent pour DHCP/DNS/NAT.
Démarrage et accès console :
xl create -c /etc/xen/SE5.kelbachi.cfg
# Ctrl+] pour détacher la console sans éteindre
Adresse routée (réseau des salles projets)
Configuration statique avec passerelle 172.26.145.251. On choisit une IP libre dans la plage fournie (exemple 172.26.145.109/24).
# /etc/network/interfaces (extrait)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 172.26.145.109/24
gateway 172.26.145.251
dns-nameservers 1.1.1.1 8.8.8.8
- Pourquoi une IP statique ?
- Le sujet exige un adressage maîtrisé côté salles projets et une route par défaut vers le routeur NAT de la salle. C’est la base pour que la VM accède à Internet et puisse, ensuite, NATer les clients WiFi.
Interface privée (VLAN 409)
Le réseau privé associé à X=09 est 172.16.9.0/24. La VM termine ce VLAN avec l’adresse 172.16.9.1/24 (gateway & DNS pour les clients).
Dans notre mise en place, l’interface privée est eth1.
# /etc/network/interfaces (complément)
auto eth1
iface eth1 inet static
address 172.16.9.1/24
Vérifications :
ip a
ip r
ping -c3 172.26.145.251
ping -c3 8.8.8.8
Point d’accès Cisco – SSID WPA2-PSK (29/09)
Connexion console série (9600 8N1, sans control flow) avec Minicom.
Après habilitation, création d’un SSID attaché au VLAN 409.
dot11 ssid SE5-SSID09
vlan 409
authentication open
authentication key-management wpa version 2
wpa-psk ascii Cisco2025
exit
interface dot11radio 0
encryption mode ciphers aes-ccm
ssid SE5-SSID09
station-role root
no shutdown
Nous laissons de cote cette partie car elle n'est pas bloquante pour la suite du TP.
Serveur DHCP (29/09)
Distribution automatisée d’adresses 172.16.9.100–200 aux clients du VLAN 409, avec routeur et DNS pointant vers la VM.
Installation :
apt-get update
apt-get install -y isc-dhcp-server
Configuration :
# /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;
authoritative;
subnet 172.16.9.0 netmask 255.255.255.0 {
range 172.16.9.100 172.16.9.200;
option routers 172.16.9.1;
option domain-name-servers 172.16.9.1;
}
Mascarade (NAT) – Accès Internet (29/09)
Activation du routage IPv4 et NAT du réseau 172.16.9.0/24 vers eth0.
On reproduit le format “affichage TP” (deux règles identiques listées).
sysctl -w net.ipv4.ip_forward=1
sed -i 's/^#\?net\.ipv4\.ip_forward.*/net.ipv4.ip_forward=1/' /etc/sysctl.conf
iptables -t nat -F
iptables -t nat -A POSTROUTING -o eth0 -s 172.16.9.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -s 172.16.9.0/24 -j MASQUERADE
iptables -t nat -L -n -v
- Pourquoi la mascarade ?
- Les clients WiFi utilisent des adresses privées. Le NAT traduit leurs paquets pour qu’ils sortent avec l’IP de la VM côté salles projets.
- Sans NAT, pas d’Internet pour le VLAN 409.
Persistance :
apt-get install -y iptables-persistent
netfilter-persistent save
Interception de flux (30/09)
Redirection par DNS (zone locale)
On implémente une **zone primaire** sur la VM pour **rediriger `picoctf.org` et tous ses sous-domaines** vers la VM (**172.16.9.1**). Service **BIND** sous Devuan : *nom de service systemd = `named`*.
Déclaration :
# /etc/bind/named.conf.local
zone "picoctf.org" {
type master;
file "/etc/bind/db.picoctf.org";
};
Zone :
$TTL 86400
@ IN SOA ns.picoctf.org. admin.picoctf.org. (
2025100402 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum
;
@ IN NS ns.picoctf.org.
ns IN A 172.16.9.1
@ IN A 172.16.9.1
www IN A 172.16.9.1
* IN A 172.16.9.1Options (écoute VLAN) :
# /etc/bind/named.conf.options (extrait)
options {
directory "/var/cache/bind";
recursion yes;
allow-query { 172.16.9.0/24; 127.0.0.1; };
forwarders { 1.1.1.1; 8.8.8.8; };
listen-on { 172.16.9.1; 127.0.0.1; };
dnssec-validation auto;
};
Service & vérifs :
systemctl enable named
systemctl restart named
named-checkconf
named-checkzone picoctf.org /etc/bind/db.picoctf.org
dig @127.0.0.1 picoctf.org +short
dig @127.0.0.1 www.picoctf.org +short
dig @127.0.0.1 test.picoctf.org +short # wildcard
- **Pourquoi une zone locale plutôt qu’un simple /etc/hosts ?**
- La zone locale intercepte **tous les clients** du VLAN via DHCP (option DNS=172.16.9.1) et gère le **wildcard**. C’est reproductible, scalable et cohérent avec l’architecture du TP.
---
Redirection réseau (PREROUTING 80→8080)
Mise en place d’une **REDIRECT** pour capter le HTTP et le diriger vers un service local (ex. proxy/captor sur **8080**). On conserve les deux règles **MASQUERADE** du « style TP ».
# Table nat propre
iptables -t nat -F
# Interception HTTP
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 8080
# NAT format TP (409)
iptables -t nat -A POSTROUTING -o eth0 -s 172.16.9.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -s 172.16.9.0/24 -j MASQUERADE
iptables -t nat -L -n -v
- **Pourquoi intercepter en PREROUTING ?**
- Le hook **PREROUTING** permet de **réécrire la destination** avant routage local. On peut ainsi “aspirer” le trafic HTTP vers un service interne (ex. `python3 -m http.server 8080`) sans changer la conf des clients.
---
Tests & État au 04/10
- **DHCP** : un client WiFi obtient **172.16.9.100–200**, **GW=DNS=172.16.9.1**.
- **NAT** : les compteurs `iptables -t nat -L -n -v` montent dès qu’un client sort vers Internet.
- **DNS** : `dig picoctf.org`, `www` et `test` renvoient **172.16.9.1** ; le reste du monde est résolu via les *forwarders*.
- **REDIRECT** : `curl http://picoctf.org` atteint le service local **:8080** si un listener est en place.
---
Problèmes rencontrés & solutions
- **Console Cisco muette** : causée par le *flow control*. Solution : **désactiver** hardware & software flow control dans *minicom* (9600 **8N1**, `/dev/ttyS0` ou `/dev/ttyUSB0`).
- **Erreur AP “cipher not configured”** : corriger en posant **`authentication ... version 2`** côté SSID et **`encryption mode ciphers aes-ccm`** côté radio.
- **SERVFAIL sur Bind** : chemin de zone incorrect ou SOA incomplet. Solution : corriger `file "/etc/bind/db.picoctf.org";`, ajouter les **points finaux** dans le SOA/NS, **incrémenter le serial**, `rndc reload`.
- **Compteurs iptables à 0** : normal tant qu’aucun client ne génère de trafic. Vérifier le bail DHCP, puis tester `ping 8.8.8.8` depuis un client.
---
Prochaines étapes (HTTP/HTTPS Apache)
- Activer **Apache** (vhost **:80**) et vérifier la desserte locale.
- Ajouter **HTTPS** (vhost **:443**) avec **certificat auto-signé** pour `picoctf.org` et `www.picoctf.org`.
- Configurer la redirection **HTTP → HTTPS**.
- Supprimer la règle iptables **REDIRECT 80→8080** si Apache écoute sur 80, pour éviter conflit.
Une fois finalisé, la section complète “Serveur Apache (HTTP & HTTPS)” sera ajoutée à la suite, au même format.