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

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

Infrastructure Réseau – Binôme SE5.kelbachi · X=09 · VLAN 409 🚀

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 X=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.100/24**).

# /etc/network/interfaces (extrait)
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 172.26.145.100/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 (**.251**). 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). Après habilitation, création d’un **SSID** attaché au **VLAN 409** et activé sur la radio 2.4 GHz avec chiffrement **AES-CCMP** (WPA2-PSK).

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
**Pourquoi WPA2/AES ?**
Le sujet impose **WPA2-PSK**. Le couple *key-management wpa version 2* + *aes-ccm* répond à ce niveau de sécurité. Le VLAN est imposé pour isoler le trafic WiFi.

---

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 (**172.16.9.1**).

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 (172.16.9.1), qui sait à la fois *forwarder* vers Internet et servir **une zone locale de “spoof”**.

---

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.