« Atelier SysRes SE4 2025/2026 E6 » : 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 2 : Ligne 2 :


==== Création du bridge dans capbreton ====
==== Création du bridge dans capbreton ====
Avant de créer nos VM, on ajoute notre bridge à capbreton dans SE42026_cpayet_tdelobel<syntaxhighlight lang="bash">
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>On utilise ifup pour le démarrer.
</syntaxhighlight>Nous utilisons '''ifup''' pour le démarrer.


==== Création des VMs ====
==== Création des VMs ====
Pour créer la VM de service et mandataire, on utilise les commandes suivantes<syntaxhighlight lang="bash">
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>Manjaro sera la machine de service et LinusTorvalds la mandataire
</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 on se donne 10g d'espace pour notre machine virtuelle :<syntaxhighlight lang="bash">
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>On ajoute dans /etc/xen/SE4.Manjaro.cfg : <syntaxhighlight lang="cfg">
</syntaxhighlight>Nous ajoutons dans '''/etc/xen/SE4.Manjaro.cfg''' : <syntaxhighlight lang="cfg">
disk = [
disk = [
             [...],
             [...],
Ligne 37 : Ligne 40 :


===== Sur la VM =====
===== Sur la VM =====
Afin que la configuration soit enregistré, on modifie le /etc/fstab en ajoutant les lignes suivantes :<syntaxhighlight lang="bash">
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, on utilise les commandes suivantes (à ne surtout pas utiliser sur capbreton !!)<syntaxhighlight lang="bash">
</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>On peut maintenant relancer la machine pour verifier si la config reste.
</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.
 
Enfin on répète le même schéma pour la machine mandataire.


==== Adresses ipv4 et ipv6 ====
==== '''Adresses IPv4 et IPv6''' ====
Tout d'abord dans notre machine des service, on donne une adresse ipv4 local et ipv6, on modifie donc le fichier /etc/network/interfaces :<syntaxhighlight lang="bash">
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>On va aussi ajouter le bridge depuis capbreton dans /etc/xen/SE4.Manjaro.cfg:<syntaxhighlight lang="cfg">
</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>Et dans la machine mandataire on va donner une adresse ipv4 du reseau publique et privé:<syntaxhighlight lang="bash">
</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>On ajoute au fichier resolv.conf le dns de google et on install les outils qui nous servirons pour la suite (iptables-persistant, ssh, bind9, apache 2...)
</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 ssh ====
==== '''Masquerade et SSH''' ====
Nous pouvons maintenant mettre en places les iptables pour s'occuper à la fois du ssh (redirection de port) et de la Masquerade avec les commandes suivantes :<syntaxhighlight lang="bash">
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 sauvegarder avec iptables-save, on décommente dans <code>/etc/sysctl.conf</code>:<syntaxhighlight lang="bash">
</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 de se ssh en root sur toutes les VM, on ajoute dans <code>/etc/ssh/sshd_config</code> :<syntaxhighlight lang="bash">
</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>Maintenant, il n'est plus obligatoire de passer par capbreton pour se connecter aux VM, nous utiliserons les commandes suivantes :<syntaxhighlight lang="bash">
</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 =====
On débute par modifier <code>/etc/bind/named.conf.local</code> , on y ajoute notre zone principale et celle de notre camarade :<syntaxhighlight lang="bash">
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 on crée notre zone db.archlinux.lol :<syntaxhighlight lang="bash">
</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, on doit passer les zones de nos machine de service en zone secondaire, ainsi, on aura un fichier tel que celui-ci :<syntaxhighlight lang="bash">
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, il faut rajouter nos zones au Glue records de Gandi pour que notre DNS soit reconnu partout dans le monde.
</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]]
 
On peut d'ailleurs le vérifier sur le site https://dnschecker.org/
[[Fichier:Dns-check-thomas.png|centré|vignette]]


==== DNSSEC ====
==== DNSSEC ====
Afin de sécuriser notre DNS, on modifie notre <code>/etc/bind/named.conf.local</code> :<syntaxhighlight lang="bash">
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>et on ajoute un répertoire pour les clés (auquel on donnera les permissions d'écriture) :<syntaxhighlight lang="bash">
</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 redémaré bind9 et named, on peut voir que les clés sont effectivement bien généré. Pour vérifier si notre DNS est sécurisé, il faudra passer par https://dnsviz.net/
</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 ====
==== '''Serveur Apache''' ====


===== Sur la machine de service =====
===== Sur la machine de service =====


En premier lieu, on va générer notre clé avec :<syntaxhighlight lang="bash">
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é généré on récupère la certification la certification sur Gandi
</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''' :


On va ensuite créer notre site dans <code>etc/apache2/sites-available/archlinux.lol.conf</code>
La page html sera enregistré dans '''/var/www/archlinux.lol'''.


La page html sera enregistré dans <code>etc/www/archlinux.lol</code>
Nous effectuons aussi une redirection du port HTTP vers HTTPS.<syntaxhighlight lang="bash">
 
On effectue 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 ipv6. Il faut maintenant configurer la machine mandataire pour qu'il le soit aussi en ipv4.   
</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 =====
Là aussi, après avoir récupéré les clé et certificat de la machine mandataire, on va crée un fichier <code>etc/apache2/sites-available/archlinux.lol-proxy.conf</code><syntaxhighlight lang="bash">
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 https.
</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>On trouve cracotte06 avec son adresse et son chanel<syntaxhighlight lang="bash">
</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 crée, on récupère la clé avec la commande suivante :<syntaxhighlight lang="bash">
</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-PKS =====
===== '''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>On va maintenant essayer de récupéré la clé avec un dictionaire dico.txt<syntaxhighlight lang="bash">
</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 wifi ====
==== '''Sécurisation Wi-Fi''' ====


===== Config routeur =====
===== '''Configuration du routeur''' =====
On va configurer notre interface, son vrrp et le dhcp :<syntaxhighlight>
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 wifi : =====
===== '''Configuration des bornes Wi-Fi''' =====
Sur les bornes wifi, On applique la configuration donné par le sujet :<syntaxhighlight>
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''' =====
Freeradius a été installé sur la machine de service, malgré différentes tentatives, je n'ai pas réussi à le faire fonctionner
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 rajouté:<syntaxhighlight>
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 , J'ai modifié la ligne suivante : <syntaxhighlight lang="bash">
</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/.

Dns-check-thomas.png

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/.

DNSSEC-thomas.png

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.

Site-thomas.png

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
exit
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é :

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 = 16

Enfin, dans /etc/freeradius/3.0/mods-available/eap, j'ai modifié la ligne suivante :

default_eap_type = peap