« Atelier SysRes SE4 2025/2026 E13 » : différence entre les versions

De wiki-se.plil.fr
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 1 : Ligne 1 :
'''TON PRENOM TON NOM'''
'''Cheklat Billel'''


IOT 4
IOT 4
Ligne 12 : Ligne 12 :
IP publique de la mandataire : '''193.48.57.169'''
IP publique de la mandataire : '''193.48.57.169'''


Nom service : '''catwoman'''
Nom service (toi) : '''catwoman'''


Nom de domaine : '''dardevil.tech''' (le e manquant dans daredevil est une pure volonté du binôme et un choix pratique et judicieux pour ce TP ;) )
Nom de domaine (toi) : '''dardevil.tech''' (le e manquant dans daredevil est une pure volonté du binôme et un choix pratique et judicieux pour ce TP ;) )


Nom service 2 : '''batman'''
Nom service 2 (Antonin) : '''batman'''


Nom de domaine 2 : '''deadpool.tech'''
Nom de domaine 2 (Antonin) : '''deadpool.tech'''


Bridge : '''pont_ironman'''
Bridge : '''pont_ironman'''
Ligne 227 : Ligne 227 :


== HTTPS et Certificat SSL ==
== HTTPS et Certificat SSL ==
=== Génération de la clé privée et de la CSR ===
On génère la clé privée et la '''CSR''' (Certificate Signing Request) avec la commande suivante :<syntaxhighlight lang="bash">
openssl req -nodes -newkey rsa:2048 -sha256 -keyout dardevil.tech.key -out dardevil.csr
</syntaxhighlight>On remplit ensuite les informations demandées :<syntaxhighlight lang="bash">
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:Nord
Locality Name (eg, city) []:Lille
Organization Name (eg, company) [Internet Widgits Pty Ltd]:PolytechLille
Organizational Unit Name (eg, section) []:IOT
Common Name (e.g. server FQDN or YOUR name) []:dardevil.tech
Email Address []:billel.cheklat@polytech-lille.net
</syntaxhighlight>Le fichier <code>dardevil.csr</code> est ensuite soumis à Gandi pour obtenir le certificat signé.


=== Obtention du certificat via Gandi ===
=== Obtention du certificat via Gandi ===
Ligne 266 : Ligne 280 :
systemctl restart apache2
systemctl restart apache2
</syntaxhighlight>Le site est désormais accessible en HTTP et HTTPS à l'adresse '''https://dardevil.tech'''.
</syntaxhighlight>Le site est désormais accessible en HTTP et HTTPS à l'adresse '''https://dardevil.tech'''.
<syntaxhighlight lang="shell">
openssl req -nodes -newkey rsa:2048 -sha256 -keyout dardevil.tech.key -out dardevil.csr
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:Nord
Locality Name (eg, city) []:Lille
Organization Name (eg, company) [Internet Widgits Pty Ltd]:PolytechLille
Organizational Unit Name (eg, section) []:IOT
Common Name (e.g. server FQDN or YOUR name) []:dardevil.tech
Email Address []:billel.cheklat@polytech-lille.net
</syntaxhighlight>

Version du 1 mars 2026 à 17:27

Cheklat Billel

IOT 4

2025-2026

Infos concernant notre binôme

Binôme : BIERNACKI Antonin [[1]]

Mandataire : superman

IP publique de la mandataire : 193.48.57.169

Nom service (toi) : catwoman

Nom de domaine (toi) : dardevil.tech (le e manquant dans daredevil est une pure volonté du binôme et un choix pratique et judicieux pour ce TP ;) )

Nom service 2 (Antonin) : batman

Nom de domaine 2 (Antonin) : deadpool.tech

Bridge : pont_ironman

Réseau IPv4 : 192.168.69.0/24

Création du bridge

auto pont_ironman
iface pont_ironman inet manual
        bridge_ports none
        up ip link set $IFACE up
        down ip link set $IFACE down
ifup pont_ironman

Création des machines virtuelles

Nous avons créé nos trois machines sur le serveur capbreton via les commandes suivantes :

root@capbreton:~# xen-create-image --hostname=SE4.catwoman --dhcp --bridge=pont_ironman --dir=/usr/local/xen --size=10GB --dist=daedalus --memory=2G
root@capbreton:~# xen-create-image --hostname=SE4.superman --dhcp --bridge=pont_ironman --dir=/usr/local/xen --size=10GB --dist=daedalus --memory=2G

Ces commandes fournissent un tableau récapitulatif avec le root password qu'il faut noter pour pouvoir se connecter (ce mot de passe est retrouvable dans le .cfg de la machine). Si vous souhaitez changer le mot de passe de votre machine, veillez à mettre un mot de passe robuste car cette machine sera sur internet. xen create permet de démarrer les machines avec leurs fichiers de configuration :

xen create /etc/xen/SE4.catwoman.cfg
xen create /etc/xen/SE4.superman.cfg

xen console permet d'accéder à la console de la machine virtuelle (pour quitter la console un exit suffit et pour quitter la saisie de connexion Ctrl + Shift + 5) :

xen console SE4.catwoman
xen console SE4.superman

Configuration de la machine de service

Montage des partitions /home et /var

Sur capbreton

Pour créer les partitions /home et /var on entre les deux commandes suivantes dans /dev/virtual de capbreton :

lvcreate -n SE4.catwoman.home -L 10G virtual
lvcreate -n SE4.catwoman.var -L 10G virtual

Ensuite on vient ajouter les lignes suivantes dans /etc/xen/SE4.catwoman.cfg :

disk        = [
                  'file:/usr/local/xen/domains/SE4.catwoman/disk.img,xvda2,w',
                  'file:/usr/local/xen/domains/SE4.catwoman/swap.img,xvda1,w',
                  'phy:/dev/virtual/SE4.catwoman.home,xvdb,w',
                  'phy:/dev/virtual/SE4.catwoman.var,xvdc,w',
              ]

Sur la machine de service

Pour formater et monter les partitions on utilise les commandes suivantes (/!\ pas dans capbreton) :

mkfs -t ext4 /dev/xvdb
mkfs -t ext4 /dev/xvdc
mount /dev/xvdb /mnt
mv /var/* /mnt
umount /mnt
mount -a

Ajouter ces lignes dans /etc/fstab afin que les partitions soient montées de façon automatique au démarrage de la VM :

/dev/xvdb /var ext4 defaults 0 2
/dev/xvdc /home ext4 defaults 0 2

Enfin vous pouvez redémarrer la VM sur capbreton :

xen shutdown SE4.catwoman
xen create /etc/xen/SE4.catwoman.cfg

Configuration réseau

On modifie le fichier /etc/network/interfaces comme suit :

auto lo
iface lo inet loopback

# IPv4
auto eth0
iface eth0 inet static
    address 192.168.69.3/24
    gateway 192.168.69.1  # IPv4 de superman (mandataire)

# IPv6
auto eth1
iface eth1 inet6 auto

Configuration de la machine mandataire

Configuration réseau

On modifie le fichier /etc/network/interfaces comme suit :

auto lo
iface lo inet loopback

# IPv4 réseau privé
auto eth0
iface eth0 inet static
    address 192.168.69.1/24

# IPv4 publique
auto eth1
iface eth1 inet static
    address 193.48.57.169/27
    gateway 193.48.57.162

On modifie le fichier /etc/xen/SE4.superman.cfg sur capbreton afin d'ajouter une seconde interface réseau branchée sur le bridge public SE4 :

vif = [ 'mac=00:16:3E:19:F0:3B,bridge=pont_ironman', 'mac=00:16:3E:19:F0:3C,bridge=SE4' ]

On fait de même pour catwoman :

vif = [ 'mac=00:16:3E:8F:47:42,bridge=pont_ironman', 'mac=00:16:3E:8F:47:43,bridge=SE4' ]

Configuration SSH et Mascarade

Ces commandes permettent de synchroniser l'heure du système :

apt update
apt install ntp ntpdate host
date

La mascarade se configure avec iptables et consiste à donner une adresse IPv4 permettant d'accéder à internet :

iptables -t nat -A POSTROUTING -j MASQUERADE -s 192.168.69.0/24
iptables-save

Dans les VMs on modifie /etc/ssh/sshd_config en ajoutant :

PermitRootLogin yes

On peut ensuite redémarrer le service SSH :

/etc/init.d/ssh restart

La redirection des ports SSH se fait via les commandes suivantes sur la machine mandataire :

iptables -t nat -A PREROUTING -p tcp --dport 2202 -j DNAT --to-destination 192.168.69.2:22
iptables -t nat -A PREROUTING -p tcp --dport 2203 -j DNAT --to-destination 192.168.69.3:22
iptables-save

Dans le fichier /etc/sysctl.conf la ligne suivante doit être décommentée :

net.ipv4.ip_forward=1

Nous avons aussi installé iptables-persistent pour éviter de perdre la configuration à chaque reboot.

apt install iptables-persistent

Désormais le SSH peut être fait via les commandes suivantes :

# SSH en IPv4 vers catwoman (port 2203)
ssh root@193.48.57.169 -p 2203
# SSH en IPv6
ssh root@2001:660:4401:60a0:216:3eff:fe8f:4743

DNS et DNSSEC

Configuration de BIND9

On modifie le fichier /etc/bind/named.conf.local sur catwoman pour déclarer la zone dardevil.tech en maître et la zone deadpool.tech en secondaire :

dnssec-policy "dnspol" {
        keys {
                ksk key-directory lifetime unlimited algorithm 13;
                zsk key-directory lifetime unlimited algorithm 13;
        };
        nsec3param;
};

zone "dardevil.tech" {
        type master;
        file "/etc/bind/zones/db.dardevil.tech";
        allow-transfer{secondaries;};
        notify yes;
        key-directory "/etc/bind/keys";
        dnssec-policy "dnspol";
        inline-signing yes;
};

acl "secondaries" {
        192.168.69.2;
        192.168.69.1;
        2001:660:4401:60a0:216:3eff:fefa:18d0;
};

zone "deadpool.tech" {
        type secondary;
        file "/etc/bind/backup/db.deadpool.tech";
        primaries{2001:660:4401:60a0:216:3eff:fefa:18d0;};
};

Fichier de zone db.dardevil.tech

On crée le répertoire /etc/bind/zones/ puis on y crée le fichier de zone :

mkdir /etc/bind/zones
$TTL 400
@ IN SOA ns.dardevil.tech admin.dardevil.tech(
        3647    ;
        21600   ;
        3600    ;
        2592000 ;
        86400   ;
);
@ IN NS ns.dardevil.tech.
@ IN NS ns.deadpool.tech.
ns IN A 193.48.57.169
ns IN AAAA 2001:660:4401:60a0:216:3eff:fe8f:4743
@ IN A 193.48.57.169
@ IN AAAA 2001:660:4401:60a0:216:3eff:fe8f:4743
www IN CNAME dardevil.tech.

Génération des clés DNSSEC

BIND9 avec la directive dnssec-policy et inline-signing yes génère et gère automatiquement les clés. Elles sont stockées dans /etc/bind/keys/ :

ls /etc/bind/keys/
# Kdardevil.tech.+013+42449.key      Kdardevil.tech.+013+42449.state
# Kdardevil.tech.+013+42449.private  Kdardevil.tech.+013+45786.key
# Kdardevil.tech.+013+45786.private  Kdardevil.tech.+013+45786.state

Les deux paires de clés correspondent à la KSK (Key Signing Key) et la ZSK (Zone Signing Key), toutes deux utilisant l'algorithme 13 (ECDSA P-256 avec SHA-256). On redémarre BIND9 pour appliquer la configuration :

systemctl restart bind9

On vérifie que la zone est correctement signée :

dig @localhost dardevil.tech DNSKEY
dig @localhost dardevil.tech DS

HTTPS et Certificat SSL

Génération de la clé privée et de la CSR

On génère la clé privée et la CSR (Certificate Signing Request) avec la commande suivante :

openssl req -nodes -newkey rsa:2048 -sha256 -keyout dardevil.tech.key -out dardevil.csr

On remplit ensuite les informations demandées :

Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:Nord
Locality Name (eg, city) []:Lille
Organization Name (eg, company) [Internet Widgits Pty Ltd]:PolytechLille
Organizational Unit Name (eg, section) []:IOT
Common Name (e.g. server FQDN or YOUR name) []:dardevil.tech
Email Address []:billel.cheklat@polytech-lille.net

Le fichier dardevil.csr est ensuite soumis à Gandi pour obtenir le certificat signé.

Obtention du certificat via Gandi

Nous avons obtenu un certificat SSL pour le domaine dardevil.tech auprès de Gandi. Les fichiers sont placés aux emplacements suivants sur catwoman :

  • Certificat : /etc/ssl/certs/dardevil.tech.crt
  • Clé privée : /etc/ssl/private/dardevil.tech.key
  • Chaîne de certification : /etc/ssl/certs/GandiCert.pem

Configuration Apache2

On active les modules nécessaires :

apt install apache2
a2enmod ssl proxy proxy_http

On crée le fichier /etc/apache2/sites-available/dardevil.tech.conf :

# Partie HTTP (port 80) - redirection vers le serveur web en IPv6
<VirtualHost *:80>
    ServerName dardevil.tech
    ServerAlias www.dardevil.tech
    ProxyPass / http://[2001:660:4401:60a0:216:3eff:fe8f:4743]/
    ProxyPassReverse / http://[2001:660:4401:60a0:216:3eff:fe8f:4743]/
</VirtualHost>

# Partie HTTPS (port 443)
<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName dardevil.tech
    ServerAlias www.dardevil.tech
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/dardevil.tech.crt
    SSLCertificateKeyFile /etc/ssl/private/dardevil.tech.key
    SSLCertificateChainFile /etc/ssl/certs/GandiCert.pem
    ProxyPass / http://[2001:660:4401:60a0:216:3eff:fe8f:4743]/
    ProxyPassReverse / http://[2001:660:4401:60a0:216:3eff:fe8f:4743]/
</VirtualHost>
</IfModule>

On active le site et on redémarre Apache :

a2ensite dardevil.tech.conf
systemctl restart apache2

Le site est désormais accessible en HTTP et HTTPS à l'adresse https://dardevil.tech.