Atelier SysRes SE4 2025/2026 E15
Aller à la navigation
Aller à la recherche
Rapport de Projet SE4 IdO
Sécurité Système/Réseau
Année Universitaire 2025-2026
É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
| 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
| Paramètre | Valeur |
|---|---|
| Algorithm | 13 (ECDSAP256SHA256) |
| Flags | 257 (KSK) |
| Public Key | QrPmyYhhAVx1TGYLWRtAx/LbhQPy3yMd5/GoMH5SZ4aWD72QGVrfBOhhHW0/c1dYroeZ9riJTyQcO859svIWRw== |
