Atelier SysRes SE4 2025/2026 E15

De wiki-se.plil.fr
Révision datée du 2 février 2026 à 09:14 par Msalhi (discussion | contributions) (Page créée avec « <div class="titlepage"> '''Rapport de Projet SE4 IdO<br /> Sécurité Système/Réseau''' '''Année Universitaire 2025-2026''' <div class="figure"> image </div> '''Étudiant: Mohamed SALHI''' '''Binôme: SE4.Solstice (mandataire) - SE4.Moon (services)''' '''Domaine: <code>msalhi.online</code>''' '''École Polytechnique Universitaire de Lille''' 2026-02-02 </div> <span id="introduction"></span> = Introduction = Ce rapport doc... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Rapport de Projet SE4 IdO
Sécurité Système/Réseau

Année Universitaire 2025-2026

image

Étudiant: Mohamed SALHI

Binôme: SE4.Solstice (mandataire) - SE4.Moon (services)

Domaine: msalhi.online

École Polytechnique Universitaire de Lille

2026-02-02


Introduction

Ce rapport documente la réalisation complète du projet de sécurité système et réseau dans le cadre du module SE4 IdO (Internet des Objets). L’objectif principal était de mettre en place une infrastructure réseau complète avec services virtualisés, en mettant l’accent sur la sécurité et la redondance.

L’architecture repose sur une approche dual-stack IPv4/IPv6 avec :

  • Une machine de services (SE4.Moon) hébergeant les services applicatifs
  • Une machine mandataire (SE4.Solstice) gérant les accès IPv4 via NAT et proxy inverse
  • Une infrastructure réseau redondante avec routeurs Cisco C9200
  • Des services sécurisés (DNS avec DNSSEC, HTTPS avec certificats, SSH avec filtrage)

Atelier système et réseau - Machines virtuelles

Création des machines virtuelles

Les machines virtuelles ont été créées sur l’hyperviseur Xen du Dom0 capbreton.plil.info.

Commandes de création

# Création de la machine de services SE4.Moon
root@capbreton:~# xen-create-image --hostname=SE4.Moon --dhcp \
  --bridge=pontKS --dir=/usr/local/xen --size=10GB \
  --dist=daedalus --memory=2048M --force

# Création de la machine mandataire SE4.Solstice
root@capbreton:~# xen-create-image --hostname=SE4.Solstice --dhcp \
  --bridge=pontKS --dir=/usr/local/xen --size=10GB \
  --dist=daedalus --memory=2048M --force

Démarrage et connexion

# Démarrage des VMs
xen create /etc/xen/SE4.Moon.cfg
xen create /etc/xen/SE4.Solstice.cfg

# Connexion aux consoles
xen console SE4.Moon
xen console SE4.Solstice

# Liste des VMs actives
root@capbreton:~# xen list
Name                                        ID   Mem VCPUs    State   Time(s)
SE4.Solstice                                39  2048     1     -b----    2560.1
SE4.Moon                                   119  2048     1     -b----     452.3

Configuration de la machine de services (SE4.Moon)

Montage des partitions LVM pour /var et /home

# Création des fichiers de partition sur le Dom0
root@capbreton:/dev/virtual# lvcreate -L 10G -n SE4.Moon.var virtual
root@capbreton:/dev/virtual# lvcreate -L 10G -n SE4.Moon.home virtual

# Modification du fichier de configuration Xen
disk = [
    'file:/usr/local/xen/domains/SE4.Moon/disk.img,xvda2,w',
    'file:/usr/local/xen/domains/SE4.Moon/swap.img,xvda1,w',
    'phy:/dev/virtual/SE4.Moon.home,xvdb,w',
    'phy:/dev/virtual/SE4.Moon.var,xvdc,w',
]

Formatage et montage des partitions

# Formatage des partitions
mkfs -t ext4 /dev/xvdb
mkfs -t ext4 /dev/xvdc

# Montage temporaire et copie des données
mount /dev/xvdc /mnt
mv /var/* /mnt/
umount /mnt

mount /dev/xvdb /mnt
mv /home/* /mnt/
umount /mnt

# Configuration du fstab
cat > /etc/fstab << EOF
/dev/xvda1 none swap sw 0 0
/dev/xvda2 / ext4 noatime,nodiratime,errors=remount-ro 0 1
/dev/xvdb /home ext4 defaults 0 2
/dev/xvdc /var ext4 defaults 0 2
EOF

# Application des modifications
mount -a

Configuration réseau

# Fichier /etc/network/interfaces
auto lo
iface lo inet loopback

# Interface réseau privée (vers Solstice)
auto eth0
iface eth0 inet static
    address 192.168.20.2/24
    gateway 192.168.20.1

# Configuration IPv6 automatique
iface eth0 inet6 auto

# Vérification
root@Moon:~# ip a show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
    inet 192.168.20.2/24 brd 192.168.20.255 scope global eth0
    inet6 2001:660:4401:60a0:216:3eff:fe6f:f547/64 scope global dynamic

Installation des paquets de base

apt update && apt upgrade -y
apt install -y ssh apache2 bind9 bind9utils \
  fail2ban openssl iptables-persistent \
  net-tools curl wget vim

Configuration de la machine mandataire (SE4.Solstice)

Configuration réseau

# Fichier /etc/network/interfaces
auto lo
iface lo inet loopback

# Interface publique (réseau routé)
auto eth1
iface eth1 inet static
    address 193.48.57.167/27
    gateway 193.48.57.162  # Adresse VRRP virtuelle

iface eth1 inet6 auto

# Interface privée (vers Moon)
auto eth0
iface eth0 inet static
    address 192.168.20.1/24

iface eth0 inet6 auto

# Vérification
root@Solstice:~# ip a show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
    inet 193.48.57.167/27 brd 193.48.57.191 scope global eth1
    inet6 2001:660:4401:60a0:216:3eff:fe29:880f/64 scope global dynamic

Mise en place de la mascarade (NAT)

# Activation du forwarding IP
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

# Règles iptables pour la mascarade
iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -o eth1 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

# Sauvegarde pour persistance
iptables-save > /etc/iptables/rules.v4

# Ajout dans interfaces pour chargement au démarrage
post-up iptables-restore < /etc/iptables/rules.v4

Services Internet

Serveur SSH

Configuration SSH sur Moon

# Édition du fichier de configuration
vim /etc/ssh/sshd_config

# Modifications apportées :
PermitRootLogin yes
PasswordAuthentication yes
Port 22
# LogLevel VERBOSE

# Redémarrage du service
systemctl restart ssh
systemctl enable ssh

Redirection de ports pour l’accès IPv4

# Redirection du port 2201 vers Moon (SSH)
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 2201 \
  -j DNAT --to-destination 192.168.20.2:22

iptables -A FORWARD -p tcp -d 192.168.20.2 --dport 22 -j ACCEPT

# Sauvegarde
iptables-save > /etc/iptables/rules.v4

# Test de la redirection
ssh -p 2201 root@193.48.57.167  # Arrive sur Moon

Serveur DNS

Configuration du serveur maître (Moon)

# Fichier /etc/bind/named.conf.local
zone "msalhi.online" {
    type master;
    file "/etc/bind/zones/db.msalhi.online";
    key-directory "/etc/bind/keys";
    dnssec-policy "dnspol";
    inline-signing yes;
    allow-transfer { 192.168.20.1; };  # Solstice comme secondaire
    also-notify { 192.168.20.1; };
    notify yes;
};

# Fichier de zone /etc/bind/zones/db.msalhi.online
$TTL    86400
@       IN      SOA     ns1.msalhi.online. admin.msalhi.online. (
                        2026020203      ; Serial
                        3600            ; Refresh
                        1800            ; Retry
                        604800          ; Expire
                        86400 )         ; Minimum TTL

; Serveurs de noms
@       IN      NS      ns1.msalhi.online.
@       IN      NS      ns2.msalhi.online.

; Glue records
ns1     IN      AAAA    2001:660:4401:60a0:216:3eff:fe6f:f547
ns2     IN      A       193.48.57.167

; Enregistrements principaux
@       IN      A       193.48.57.167
@       IN      AAAA    2001:660:4401:60a0:216:3eff:fe6f:f547
www     IN      CNAME   msalhi.online.

# Vérification
named-checkzone msalhi.online /etc/bind/zones/db.msalhi.online

Configuration du serveur secondaire (Solstice)

# Fichier /etc/bind/named.conf.local
zone "msalhi.online" {
    type slave;
    file "/var/lib/bind/db.msalhi.online";
    masters { 192.168.20.2; };  # IP de Moon
};

# Redémarrage et vérification
systemctl restart bind9
ls -la /var/lib/bind/db.msalhi.online

Configuration chez le registrar Gandi

Configuration DNS chez Gandi
Type Valeur Description
Nameservers ns1.msalhi.online Serveur DNS primaire
ns2.msalhi.online Serveur DNS secondaire
Glue Record 1 ns1.msalhi.online IPv6: 2001:660:4401:60a0:216:3eff:fe6f:f547
Glue Record 2 ns2.msalhi.online IPv4: 193.48.57.167

Sécurisation de site Web par certificat

Génération du CSR et obtention du certificat

# Génération de la clé privée
openssl genrsa -out /etc/ssl/private/myserver.key 2048

# Génération du CSR
openssl req -new -key /etc/ssl/private/myserver.key \
  -out /etc/ssl/private/server.csr

Configuration Apache sur Moon (HTTPS direct IPv6)

# Fichier /etc/apache2/sites-available/msalhi-ssl.conf
<VirtualHost *:80>
    ServerName msalhi.online
    ServerAlias www.msalhi.online
    Redirect permanent / https://msalhi.online/
</VirtualHost>

<VirtualHost *:443>
    ServerName msalhi.online
    ServerAlias www.msalhi.online
    
    DocumentRoot /var/www/html
    
    SSLEngine on
    SSLCertificateFile /etc/ssl/msalhi/msalhi.online.crt
    SSLCertificateKeyFile /etc/ssl/msalhi/msalhi.online.key
    SSLCertificateChainFile /etc/ssl/msalhi/GandiStandardSSLCA2.pem
    
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
    Header always set X-Frame-Options DENY
    Header always set X-Content-Type-Options nosniff
    
    ErrorLog ${APACHE_LOG_DIR}/msalhi_ssl_error.log
    CustomLog ${APACHE_LOG_DIR}/msalhi_ssl_access.log combined
</VirtualHost>

# Activation
a2enmod ssl
a2ensite msalhi-ssl.conf
systemctl restart apache2

Configuration du proxy inverse sur Solstice (HTTPS IPv4)

# Fichier /etc/apache2/sites-available/msalhi-proxy.conf
<VirtualHost *:80>
    ServerName msalhi.online
    Redirect permanent / https://msalhi.online/
</VirtualHost>

<VirtualHost *:443>
    ServerName msalhi.online
    
    SSLEngine on
    SSLCertificateFile /etc/ssl/msalhi/msalhi.online.crt
    SSLCertificateKeyFile /etc/ssl/msalhi/msalhi.online.key
    SSLCertificateChainFile /etc/ssl/msalhi/GandiStandardSSLCA2.pem
    
    SSLProxyEngine on
    ProxyPreserveHost On
    
    # Utilisation de l'URL avec nom de domaine comme demandé
    ProxyPass / https://msalhi.online/
    ProxyPassReverse / https://msalhi.online/
    
    SSLProxyVerify none
    SSLProxyCheckPeerCN off
    
    ErrorLog ${APACHE_LOG_DIR}/proxy_error.log
    CustomLog ${APACHE_LOG_DIR}/proxy_access.log combined
</VirtualHost>

# Activation des modules
a2enmod proxy proxy_http ssl
a2ensite msalhi-proxy.conf
systemctl restart apache2

Sécurisation de serveur DNS par DNSSEC

Configuration DNSSEC automatique

# Création du répertoire pour les clés
mkdir -p /etc/bind/keys
chown bind:bind /etc/bind/keys

# Ajout dans named.conf.local
zone "msalhi.online" {
    type master;
    file "/etc/bind/zones/db.msalhi.online";
    key-directory "/etc/bind/keys";
    dnssec-policy "dnspol";
    inline-signing yes;
};

# Politique DNSSEC dans named.conf.options
dnssec-policy "dnspol" {
    keys {
        ksk key-directory lifetime unlimited algorithm 13;
        zsk key-directory lifetime unlimited algorithm 13;
    };
    nsec3param;
};

# Redémarrage et vérification
systemctl restart bind9
dig @localhost msalhi.online DNSKEY +dnssec

Résultat des clés DNSSEC générées

; Clés obtenues via : dig @localhost msalhi.online DNSKEY +dnssec

msalhi.online.        3600    IN  DNSKEY  256 3 13 Mi9LJ2JnnUciYfGEXoDuZ0ElzOigo+Fjxhf2I1+zxZqcn7SN1FxxGfFJ v4xNsU/YTvGgzf7ZWgWa29b+OQOSug==
msalhi.online.        3600    IN  DNSKEY  257 3 13 QrPmyYhhAVx1TGYLWRtAx/LbhQPy3yMd5/GoMH5SZ4aWD72QGVrfBOhh HW0/c1dYroeZ9riJTyQcO859svIWRw==
msalhi.online.        3600    IN  DNSKEY  257 3 13 Z4LE6oWmFPOb+QzklArdW7HWkH6kVrjIgrKYrJBMW3n6sMwwEG1YruHe SvmXJ9GwuFxhqtRu130iPse3wrJqyQ==

Enregistrement de la KSK chez Gandi

Configuration DNSSEC chez Gandi
Paramètre Valeur
Algorithm 13 (ECDSAP256SHA256)
Flags 257 (KSK)
Public Key QrPmyYhhAVx1TGYLWRtAx/LbhQPy3yMd5/GoMH5SZ4aWD72QGVrfBOhhHW0/c1dYroeZ9riJTyQcO859svIWRw==