Atelier SysRes SE4 2025/2026 E14
Projet de virtualisation
Atelier système et réseau, les machines virtuelles
Création des machines virtuelles
Nous avons créé deux machines avec les commandes suivantes :
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
auto pont_ironman
iface pont_ironman inet manual
bridge_ports none
up ip link set $IFACE up
down ip link set $IFACE down
xen create /etc/xen/SE4.batman.cfg
xen create /etc/xen/SE4.catwoman.cfg
xen create /etc/xen/SE4.superman.cfg
ifup pont_ironman
xen console SE4.batman
xen console SE4.catwoman
xen console SE4.superman
lvcreate -n SE4.batman.home -L 10G virtual
lvcreate -n SE4.batman.var -L 10G virtual
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',
]
modif le fichier /etc/fstab :
/dev/xvdb /var ext4 defaults 0 2
/dev/xvdc /home ext4 defaults 0 2
sur terminal
mkfs -t ext4 /dev/xvdb
mkfs -t ext4 /dev/xvdcensuite :
mount /dev/xvdb /mnt
mv /var/* /mnt
umount /mnt
mount -aauto 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 serviceAjout de external nameserver pour chacun des deux noms de domaine
ns.deadpool.tech // nom de domaine
ns.dardevil.tech // l'autre nom de domainePour 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 = 600Pour é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 = autoEnfin 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
Enfin on peut lancer la méthode par force brute via la commande suivante
Le résutat peut-être observé via la commande :
2001:660:4401:60a0:216:3eff:fe19:f03c