SE5 IdO sécurité des objets 2025/2026 b2

De wiki-se.plil.fr
Aller à la navigation Aller à la recherche

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=bridgeStudents impose l’unique attachement réseau demandé ; --dist=daedalus assure une base Devuan stable (ifupdown classique) ; 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;
}

Interface d’écoute :

# /etc/default/isc-dhcp-server
INTERFACESv4="eth1"
Pourquoi donner notre DNS en option ?
Pour l’interception DNS ultérieure, tous les clients doivent interroger notre resolveur, qui sait à la fois forwarder vers Internet et servir une zone locale.

Mascarade (NAT) – Accès Internet (29/09)

Activation du routage IPv4 et **NAT** du réseau **172.16.9.0/24** vers **eth0** (côté salles projets). 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 (via la passerelle **172.26.145.251**).
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.1

Options (é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.