Atelier SysRes SE4 2025/2026 E14

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

BIERNACKI Antonin

IOT 4

2025-2026

Infos concernant notre binôme :

Binôme : CHEKLAT Billel Atelier SysRes SE4 2025/2026 E13

Mandataire : superman

IP publique de la mandataire : 193.48.57.169

Service 1 (Antonin) : batman

Nom de domaine 1 (Antonin) : deadpool.tech

Nom service 2 (Billel) : catwoman

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

Bridge : pont_ironman

Introduction

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 (nous avons mit la version excalibur de devuan sur la mandataire pour essayer) :

root@capbreton:~# xen-create-image --hostname=SE4.batman --dhcp --bridge=pont_ironman --dir=/usr/local/xen --size=10GB --dist=daedalus --memory=2G
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=excalibur --memory=2G

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

xen create /etc/xen/SE4.batman.cfg
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 connection Ctrl + Shift + 5) :

xen console SE4.batman
xen console SE4.catwoman
xen console SE4.superman

Configuration de la machine de services

Sur capbreton

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

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

Ensuite on vient ajouter les lignes suivante dans /etc/xen/batman.cfg :

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

Sur la machine de service

Pour formater et monter les partitions nous utilisons 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 automatiques 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.batman
xen create /etc/xen/SE4.batman.cfg

dans /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 192.168.69.2/24
    gateway 192.168.69.1
    
auto eth1
iface eth1 inet6 auto

Configuration de la machine mandataire

auto eth0
iface eth0 inet static
    address 172.10.0.1/24

auto eth1
iface eth1 inet static
    address 193.48.57.169/27
    gateway 193.48.57.162

accées internet

apt update
apt install ntp ntpdate host
apt install ntpsec ntpsec-ntpdate host
date

ssh des machines de service

Dans /etc/xen/SE4.batman.cfg
    vif = [ 'mac=00:16:3E:FA:18:CF,bridge=pont_ironman', 'mac=00:16:3E:FA:18:D0,bridge=SE4' ]

Ensuite :
    xen shutdown SE4.batman
    xen create /etc/xen/SE4.batman.cfg
    
Dans /etc/network/interfaces
    auto eth1
    iface eth1 inet6 auto
    
Dans batman :
    reboot
    ifdown eth1; ifup eth1
    
Depuis capbreton :
    ssh root@<ipv6_eth1_batman>

mascarade

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

et créé le fichier /etc/sysctl.conf puis mettre

net.ipv4.ip_forward=1

redirection de port pour ssh

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

nous avons aussi installer iptables-persistent pour eviter de perdre la configuration a chaque reboot.

apt install iptables-persistant

Génération de la clé pour le certificat sur batman

openssl req -nodes -newkey rsa:2048 -sha256 -keyout deadpool.tech.key -out ddeadpool.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) []:deadpool.tech
Email Address []:antonin.biernacki@polytech-lille.net

Sur catwoman

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

Creation d'un repertoire keys avec les droits nécessaires

mkdir /etc/bind/keys 
chown bind:bind /etc/bind/keys 
chmod 750 /etc/bind/keys

DNS Modification de /etc/bind/named.conf.local

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


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

acl "secondaries" {
        192.168.69.3;
        2001:660:4401:60a0:216:3eff:fe8f:4743;
};

PARTIE COMMENTEE
zone "dardevil.tech" {
        type secondary;
        file "/etc/bind/backup/db.dardevil.tech";
        masters{2001:660:4401:60a0:216:3eff:fe8f:4743;};
};

Création d'un dossier zones dans /etc/bind et y créer le fichier db.deadpool.tech

$TTL 400

@ IN SOA ns.deadpool.tech. admin.deadpool.tech. (
        3609      ; Version
        21600     ; Refresh
        3600      ; Retry
        2592000   ; Expire
        86400     ; Minimum TTL

);

@ 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 deadpool.tech.

Modification du fichier /etc/resolv.conf (il faut commenter tous les autres servers)

search deadpool.tech
search dardevil.tech
nameserver 192.168.69.2
nameserver 192.168.69.3

Pour restart le service

service named restart

Si il y a des erreurs la commande suivante permet de les identifier

named-checkconf /etc/bind/named.conf

Pour tester le DNS depuis la machine de service

dig @localhost deadpool.tech

Modification sur Gandi au niveau des deux noms de domaine Création d'un blue record pour chacun des noms de domaine

ns.deadpool.tech
193.48.57.169 // adresse IPv4 de la mandataire
2001:660:4401:60a0:216:3eff:fefa:18d0 // adresse IPv6 de la machine de service

Ajout de external nameserver pour chacun des deux noms de domaine

ns.deadpool.tech	// nom de domaine
ns.dardevil.tech	// l'autre nom de domaine

Pour tester depuis l'extérieur

dig deadpool.tech

Fail2ban

Il faut commencer par installer fail2ban

Ensuite il faut créer un fichier jail.local dans le dossier /etc/fail2ban

[sshd] 
enable = true
port = ssh
filter = sshd
maxretry = 5
findtime = 300
bantime = 600

Pour éviter un warning sur allowipv6 il faut décommenter les lignes suivantes dans fail2ban.conf (ligne 58 à 62)

Option: allowipv6
Notes.: Allows IPv6 interface:
         Default: auto
Values: [ auto yes (on, true, 1) no (off, false, 0) ] Default: auto
allowipv6 = auto

Enfin pour lancer le service il faut rentrer la cmd suivante

service fail2ban restart

HTTPS

Dans le dossier /etc/apache2/sites-available

On met la clef deadpool.tech.key et les certificats GandiCert.pem et deadpool.tech.crt (tout a été trouvé sur Gandi)

<VirtualHost *:80>
        ServerName deadpool.tech
        ServerAlias www.deadpool.tech
        Redirect permanent / https://deadpool.tech/
</VirtualHost>

<VirtualHost *:443>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/html
        
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        
        SSLEngine on
        
        SSLCertificateFile      /etc/apache2/sites-available/deadpool.tech.crt
        SSLCertificateKeyFile   /etc/apache2/sites-available/deadpool.tech.key
        SSLCertificateChainFile /etc/apache2/sites-available/GandiCert.pem
        
        <FilesMatch "\.(?:cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>
        
    </VirtualHost>

On entre ensuite les cmd suivantes

a2enmod ssl
service apache restart
a2ensite default-ssl.conf
service apache2 reload

Effraction WIFI

premiere partie

On travaille sur la zabeth13 parce que cette machine a une carte réseau fonctionnelle pour faire le TP.

La commande suivante permet de d'identifier l'interface WIFI qui nous intéresse :

ip link

Ici l'interface qui nous intéresse est wlan1 Donc nous pouvons lancer la commande suivante afin d'identifier l'adresse IP de notre cracotte14.

sudo airodump-ng wlan1

Dans la liste nous avons en effet la cracotte14 sur le channel 4 et l'adresse ip suivante

 04:DA:D2:9C:50:5D  -62      231        0    0   4   54e. WEP  WEP         cracotte14

Enfin nous pouvons lancer la commande

sudo airodump-ng wlan1 --bssid 04:DA:D2:9C:50:5d -c4 --write log_airodump

Dans notre cas la carte réseau de la zabeth13 disfonctionne. Donc Mr Redon me donne une cléUSB Wifi pour pouvoir travailler. De plus les cracotte s'arrête au 13 donc je dois prendre la cracotte02.

sudo airodump-ng wlx40a5efd21410 --bssid 04:DA:D2:9C:50:51 -c4 --write log_airodump

Après un certain temps on peut entrer la commande suivante pour voir si un résultat à été trouvé

aircrack-ng log_airodump-05.cap

Le résultat suivant est le bon on a un KEY FOUND !!

                                                                                                 Aircrack-ng 1.7


                                                                                   [00:00:00] Tested 808 keys (got 54157 IVs)

   KB    depth   byte(vote)
    0    0/ 13   FF(75008) AF(66048) C6(65536) A6(62464) E3(61952) 20(61696) EC(61696) E8(61440) 13(61184) 30(61184) F3(61184) FD(60928) F1(60672) 27(60416) 41(60416) 5D(60416) 8D(60416)
    1    0/  1   01(81152) 78(64256) 13(63232) AC(63232) E6(62720) 48(61952) 91(61952) 92(61696) AB(61696) 74(61440) 56(61184) A8(61184) 4A(60928) C9(60928) 17(60672) 35(60416) F2(60416)
    2    9/  2   D2(60416) D5(60160) DF(60160) 44(59904) 7A(59904) 99(59904) AD(59904) 15(59648) 2A(59648) 31(59648) 67(59648) E6(59648) 0D(59392) 16(59392) 7E(59392) DC(59392) 5B(59136)
    3    0/  1   08(79360) 1D(63744) 7D(61952) 1B(61184) CB(60928) A3(60672) 85(60160) 58(59904) AC(59904) 11(59648) 53(59648) 9C(59648) EA(59648) 81(59392) 84(59392) AA(59392) B1(59392)
    4    8/  4   9A(61440) 22(61184) DB(61184) D7(60928) 48(60672) 88(60672) 36(60416) 14(59904) 57(59904) 5C(59904) 8D(59904) CF(59904) 04(59136) 20(58880) 39(58880) B4(58880) D5(58880)

             KEY FOUND! [ FF:FF:FF:FF:FA:BC:03:CB:AE:EE:EE:EE:EE ]
        Decrypted correctly: 100%

Seconde partie

On s'interesse maintenant à la kracotte02 via la commande précédente on trouve :

44:AD:D9:5F:87:01  -47        5        0    0  13   54e. WPA2 CCMP   PSK  kracotte02

Pour forcer ce mot de passe par force brut nous créons via un fichier Python un dictionnaire contenant toutes les possibilités sur 8 chiffres. Pour lancer ce programme on utilise Python3

with open("dictionnaire_8_chiffres.txt", "w") as f:
    for i in range(100000000):
        f.write(f"{i:08d}\n")

Le commande suivante doit être lancée

sudo aircrack-ng -w dictionnaire_8_chiffres.txt -b 44:AD:D9:5F:87:01

Enfin on peut lancer la méthode par force brute via la commande suivante

sudo airodump-ng wlx40a5efd21410 --write airodumpWPA --bssid 44:AD:D9:5F:87:01 -c13

Le résutat peut-être observé via la commande :

sudo aircrack-ng -w dictionnaire_8_chiffres.txt -b 44:AD:D9:5F:87:01 airodumpWPA-03.cap
                               Aircrack-ng 1.7

      [00:37:28] 66655552/100000000 keys tested (29360.85 k/s)

      Time left: 18 minutes, 55 seconds                         66.66%

                           KEY FOUND! [ 66688666 ]


      Master Key     : A4 3E 9E 85 7D D3 4E 0C 2C D4 D9 1C 4F 08 1A 0C
                       B4 BA B2 64 8C 24 38 C5 DD 27 81 8E CE 2C F4 CA

      Transient Key  : AA 75 80 E5 F3 77 C2 00 00 00 00 00 00 00 00 00
                       00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
                       00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
                       00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

      EAPOL HMAC     : 97 42 1A DB B7 EE FB 19 C3 7C EA 9E 29 99 0A 4B

Vlan

Depuis la machine batman on se ssh sur le routeur

ssh -oKexAlgorithms=+diffie-hellman-group14-sha1 -oHostKeyAlgorithms=+ssh-rsa -oCiphers=+aes128-cbc admin@172.27.0.1

Entrez ensuite les commandes suivantes pour le dhcp :

C9200-E304>en
C9200-E304>configure
C9200-E304(config)#ip dhcp pool PoolAntonin
C9200-E304(dhcp-config)#network 10.60.14.0 255.255.255.0
C9200-E304(dhcp-config)#dns-server 193.48.57.169
C9200-E304(dhcp-config)#default-router 10.60.14.254
C9200-E304(dhcp-config)#exit
C9200-E304(config)#exit
C9200-E304>write

Enfin pour vérifier les commandes ont données ce que l'on souhaite

C9200-E304#show running-config

Création du Vlan24

C9200-E304>en
C9200-E304>configure
C9200-E304(config)#Vlan 24
C9200-E304(vlan-config)#name PoolAntonin
C9200-E304(vlan-config)#exit
C9200-E304(config)#exit
C9200-E304>write

Pour VRRP on peut entrer les commandes suivantes

C9200-E304(config)#interface Vlan24
C9200-E304(config-if)#ip address 10.60.14.2 255.255.255.0
C9200-E304(config-if)#ipv6 address 2001:660:4401:60ae::2/64
C9200-E304(config-if)#vrrp 24 address-family ipv4
C9200-E304(config-if-vrrp)#priority 110
C9200-E304(config-if-vrrp)#address 10.60.14.1 primary
C9200-E304(config-if-vrrp)#exit-vrrp
C9200-E304(config-if)#end

Pour se ssh sur le wifi

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-rsa -oCiphers=+aes128-cbc admin@172.27.0.4

On entre ensuite ces commandes :

conf t

aaa new-model
aaa authentication login eap_student14 group radius_student14
radius-server host 192.168.69.3 auth-port 1812 acct-port 1813 key secret_student14        
aaa group server radius radius_student14                      
server 192.168.69.3 auth-port 1812 acct-port 1813        
exit

dot11 ssid VM_SERVICES_14
vlan 24         
authentication open eap eap_student14 
authentication network-eap eap_student14
authentication key-management wpa
mbssid guest-mode
exit

interface Dot11Radio0
encryption vlan 24 mode ciphers aes-ccm                  
exit

interface Dot11Radio0.24
encapsulation dot1Q 24
bridge-group 24
exit

interface GigabitEthernet0.24
encapsulation dot1Q 24
bridge-group 24
exit

interface Dot11Radio0
ssid VM_SERVICES_14
exit


2001:660:4401:60a0:216:3eff:fe19:f03c