TP sysres SE2a5 2022/2023 G3
Cahier de suivi - Groupe 3 : LELEU Lionel et DEDO Fabrice
Ce cahier fait office de rapport pour nos séances de TP réalisées dans le cadre du projet de l'UE de Système et Réseau de 5ème année.
Sommaire
Résumé
Cours
Lien: https://rex.plil.fr/Enseignement/Reseau/Reseau.IMA5sc/
Sujet Projet
Lien : https://rex.plil.fr/Enseignement/Reseau/Protocoles.IMA5sc/
Objectif
Mise en place une architecture système et réseau permettant d'héberger un serveur web sur une machine virtuelle (VM) Xen hébergé sur le serveur Capbreton de la salle E304.
Etapes Projet
- Réinstallation de la machine Zabeth2 en salle E306 sous OS Chimera Linux et en boot UEFI.
- Configuration réseau de la machine Zabeth2 et propagation d'une configuration via Ansible
- Création et configuration de la VM Xen VMDedoLeleu hebergé sur Capbreton
- Expression du besoin de l'architecture réseau matérielle et mise en place du matériel
- Configuration du matériel réseau (routeur, switch, AP Wifi, machines...)
- Achat des noms de domaine et création des certificats X509 pour le serveur web hébergé sur la VM
- Configuration des serveurs web
Ré-installation d'une machine Zabeth
Installation du système d'exploitation
Configuration machine
Propagation d'une configuration via Ansible
Création de la Machine Virtuelle Xen
On se connecte en ssh à capbreton :
ssh root@capbreton
Une fois connectée à la machine virtuelle, on peut inclure le proxy de polytech dans nos variables d'environnement:
export http_proxy=http://proxy.plil.fr:3128
Nous pouvons maintenant procéder l'installation de la machine virtuelle. Pour la création de la machine virtuelle on utilise la commande xen-create-image en précisant à cet utilitaire le nom de votre machine (VMDedoLeleu), son adresse IP (193.48.57.165).
xen-create-image --hostname=VMDedoLeleu --ip=193.48.57.165 --gateway=193.48.57.188 --netmask=255.255.255.240 --dir=/usr/local/xen --password=glopglopglop --dist=bullseye
Ensuite, on crée deux LV, chacun de 10 Go sur le groupe de volume de stockage:
lvcreate -L10G -n VMDedoLeleu1 storage lvcreate -L10G -n VMDedoLeleu2 storage
Une fois que cela est fait on formate les disques crées au format ext4 de la manière suivante:
mkfs.ext4 /dev/storage/VMDedoLeleu1 mkfs.ext4 /dev/storage/VMDedoLeleu2
Enuiste on modifie notre fichier "/etc/xen/VMDedoLeleu.cfg" pour préciser l'ajout les volumes logiques VMDedoLeleu1 et VMDedoLeleu2 , de plus on ajoute le bridge IMA5a dans la fonction vif. Pour cela on ajoute les lignes suivantes:
# # Disk device(s). # root = '/dev/xvda2 ro' disk = [ 'file:/usr/local/xen/domains/VMDedoLeleu/disk.img,xvda2,w', 'file:/usr/local/xen/domains/VMDedoLeleu/swap.img,xvda1,w', 'phy:/dev/storage/VMDedoLeleu-home, xvda3,w', 'phy:/dev/storage/VMDedoLeleu-var,xvda4,w' ] # # Physical volumes # # # Hostname # name = 'VMDedoLeleu' # # Networking # vif = [ 'mac=00:16:3E:86:A2:66,bridge=IMA2a5' ]
Une fois cette étape terminé, on peut lancer la machine virtuelle avec la commande suivante:
xen create -c /etc/xen/VMDedoLeleu.cfg
On ajoute les répertoires liés à xvda3 et xvda4 pour y placer /home et /var:
mkdir /mnt/xvda3 mkdir /mnt/xvda4 mount /dev/xvda3 /mnt/xvda3 mount /dev/xvda4 /mnt/xvda4
Ensuite on déplace le répertoire /var/ dans xvda4 en faisant
mv /var/* /mnt/xvda4
Afin de monter les disques, on modifie 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
Lançons la commande de montage:
mount -a
On obtient 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
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.165 gateway 193.48.57.188 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
On effectue les commandes suivantes pour appliquer les changements:
systemctl restart networking ip a
Une fois que c'est fait on peut éteindre la VM en fermant le terminal
Pour la rallumer, on retourne sur capbreton et on lance la commande suivante :
xen create VMDedoLeleu.cfg -c
On configure la résolution de noms dans /etc/network/interfaces, en ajoutant la ligne suivante :
dns-nameservers 8.8.8.8 8.8.4.4
Le fichier /etc/network/interfaces devient
# 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.165 gateway 193.48.57.188 netmask 255.255.255.240 dns-nameservers 8.8.8.8 8.8.4.4 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
On vérifie son fonctionnement à l'aide d'un ping :
ping www.google.com
Si tout ce passe bien observe :
--- www.google.com ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 3015ms
Architecture Réseau
Schéma Architecture
https://wiki-ima.plil.fr/mediawiki//images/e/e1/Global_scheme_PRA_2020.png
Représentation des connexions matérielles
Plan d'adressage du réseau
Groupe | VLAN | Réseau IPv4 | Réseau IPv6 | @IPv4 virtuelle | IPv4/IPv6 6509E (E304) | IPv4/IPv6 C9200 (E306) | IPv4/IPv6 ISR4331 | SSID | VM |
---|---|---|---|---|---|---|---|---|---|
Antonin / Hugo | 20 | 10.20.0.0/16 | - | 10.20.0.250 | 10.20.0.251 | 10.20.0.252 | 10.20.0.253 | - | HG |
Clément / Adrien J | 21 | 10.21.0.0/16 | - | 10.21.0.250 | 10.21.0.251 | 10.21.0.252 | 10.21.0.253 | - | Goudale |
Fabrice / Lionel | 22 | 10.22.0.0/16 | - | 10.22.0.250 | 10.22.0.251 | 10.22.0.252 | 10.22.0.253 | - | VMDedoLeleu |
Arthur / Adrien D | 23 | 10.23.0.0/16 | - | 10.23.0.250 | 10.23.0.251 | 10.23.0.252 | 10.23.0.253 | - | VMALAD |
Alex / Alexandre | 24 | 10.24.0.0/16 | - | 10.24.0.250 | 10.24.0.251 | 10.24.0.252 | 10.24.0.253 | - | VMalex2 |
Tom / Guillaume | 25 | 10.25.0.0/16 | - | 10.25.0.250 | 10.25.0.251 | 10.25.0.252 | 10.25.0.253 | - | GUIGUITOTO |
INTERCO | 530 | 192.168.222.65/29 | - | - | 192.168.222.67 | 192.168.222.68 | 192.168.222.69 | - | - |
XEN | 40 | 193.48.57.162/28 | - | 193.48.57.172/28 | 193.48.57.171/28 | 193.48.57.170/28 | 192.48.57.169/28 | - | - |
Table du VLAN 40
Groupe | @IPv4 MV non routée | @IPv4 MV routée | Nom de domaine |
---|---|---|---|
Antonin / Hugo | 172.26.145.76/24 | 193.48.57.163/28 | detestable.site |
Clément / Adrien J | 172.26.145.77/24 | 193.48.57.164/28 | lamentable.site |
Fabrice / Lionel | 172.26.145.52/24 | 193.48.57.165/28 | regretable.site |
Arthur / Adrien D | 172.26.145.53/24 | 193.48.57.166/28 | minable.site |
Alex / Alexandre | 172.26.145.54/24 | 193.48.57.167/28 | miserable.site |
Tom / Guillaume | 172.26.145.55/24 | 193.48.57.168/28 | pitoyable.site |
Configuration des machines réseau
Routeur C9200
Configuration des VLAN
Nous avons configuré ce routeur pour y ajouter :
- une connexion vers le routeur de l'école assurant un routage vers internet de nos machines Xen via le VLAN40 Xen
- l'interconnexion des machines par le VLAN530
VLAN40
enable conf t vlan 40 name xen exit int vlan 40 no shut ip address 193.48.57.170 255.255.255.248 exit int Gi1/0/1 no shut switchport mode access switchport access vlan 40 exit exit write
VLAN530
enable conf t vlan 530 name interco exit int vlan 530 no shut ip address 192.168.222.68 255.255.255.0 exit int Gi1/0/2 no shut switchport mode access switchport access vlan 530 exit exit write
Paramétrage de l'OSPF
router ospf 1 router-id 192.168.222.68 summary-address 192.168.0.0 255.255.0.0 summary-address 193.48.57.160 255.255.255.224 redistribute connected subnets ! subnets allowed redistribute static subnets route-map ospf ! subnets allowed network 192.168.222.64 0.0.0.7 area 10 default-information originate
On ajoute cette commande pour filtrer nos réseaux locaux qu'on ne souhaite pas faire sortir
summary-address 10.0.0.0 255.0.0.0 not-advertise
Routeur 6509E (E304)
Configuration réalisée par le groupe n°1 (Antonin/Hugo)
Routeur ISR4331
Non réalisé puisque la connexion ADSL Orange ne fonctionne plus
Site internet
Nous avons acheté un nom de domaine sur le registrar Gandi : [1]
Sécurité du site : Certificat SSL
Nous avons généré nos clés sur notre machine virtuelle :
apt install openssl openssl req -nodes -newkey rsa:2048 -sha256 -keyout myserver.key -out server.csr -utf8
Nous nous sommes aidé de ce tutoriel : https://docs.gandi.net/en/ssl/common_operations/csr.html
A la suite de ces étapes, le certificat SSL est disponible au téléchargement depuis le site de gandi (fichier .crt) que l'on place stocke aussi dans notre machine sous /etc/dns. On télécharge également le certificat intermédiaire de gandi : GandiStandardSSLCA2.pem que l'on place également dans la même direction.
Configuration DNS
On a installé le package bind9 :
>apt install bind9
Sur le site gandit.net, nous avons modifié :
Fenêtre Glue Records : ns1.regretable.site | 193.48.57.165
Fenêtre Serveurs de noms :
DNS Primaire : ns1.regretable.site | DNS Secondaire : ns6.gandi.net
Dans le fichier /etc/resolv.conf, ajout de la ligne :
nameserver 127.0.0.1
Afin de configurer le DNS par défaut.
DNS Primaire
Nous ajoutons une zone liée à notre domaine regretable.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.
Attention : modifier les fichiers pour named.conf.options etc... On ajoute donc les lignes suivantes dans /etc/bind/named.conf.local:
>vim /etc/bind/named.conf.local zone "regretable.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 };
Puis nous configurons la zone regretable.site, pour cela on ajoute les ns. On ajoute les lignes suivantes dans /etc/bind/db.regretable.site:
>vim /etc/bind/db.regretable.site @ IN SOA ns1.paixdieu.site. postmaster.paixdieu.site. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns1.regretable.site. ns1 IN A 193.48.57.165 www IN A 193.48.57.165
Pour tester le bon fonctionnement du serveur DNS, nous utilisons la commande :
>host -t any regretable.site localhost
Résultat attendu :
AJOUTER LE RESULTAT
Sécurisation par DNSSEC
Activation du DNSSEC :
Dans /etc/bind/named.conf.options on ajoute les lignes :
dnssec-validation yes; dnssec-enable yes; dnssec-lookaside auto;
Création d'un répertoire /etc/bind/regretable.site.dnssec/
Génération de la clef asymétrique de signature de clefs de zone
dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE regretable.site
Renommer les clés KSK générées :
mv Kregretable.site.+005+17429.key regretable.site-ksk.key mv Kregretable.site.+005+17429.private regretable.site-ksk.private
Génération de la clef asymétrique de la zone pour signer les enregistrements
dnssec-keygen -a RSASHA1 -b 1024 -n ZONE regretable.site
Renommer les clés ZSK générées :
mv Kregretable.site.+005+28633.key regretable.site-zsk.key mv Kregretable.site.+005+28633.private regretable.site-zsk.private
Nous ajoutons en $include dans le fichier /etc/bind/db.regretable.site
$include /etc/bind/paixdieu.site.dnssec/paixdieu.site-ksk.key $include /etc/bind/paixdieu.site.dnssec/paixdieu.site-zsk.key
Incrémenter le numéro de série Serial :
@ IN SOA ns1.regretable.site. postmaster.regretable.site. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL
Signature des enregistrements de la zone (en faisant attention de partir de la bonne direction)
dnssec-signzone -o regretable.site -k regretable.site-ksk ../db.regretable.site regretable.site-zsk
On modifie le fichier /etc/bind/named.conf.local de la manière suivante :
zone "regretable.site" { type master; file "/etc/bind/db.regretable.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 regretable.site db.regretable.site.signed
Attention : ajouter le résultat de la ligne de commande
Sécurisation par HTTPS - Apache2
1. Activation du module SSL
a2enmod ssl
2. Configuration du port 443
Dans le fichier /etc/apache2/ports.conf, il y avait :
Listen 80 <IfModule ssl_module> Listen 443 </IfModule> <IfModule mod_gnutls.c> Listen 443 </IfModule>
Nous avons supprimé le premier if module et nous avons ajouté :
<IfModule mod_ssl.c> Listen 443 </IfModule>
3. Création de liens symboliques pour les certificats
c_rehash /etc/ssl/certs
La sortie de cette commande est celle-ci :
Doing /etc/ssl/certs WARNING: Skipping duplicate certificate ca-certificates.crt WARNING: Skipping duplicate certificate ca-certificates.crt
4. Hôtes virtuels
Nous avons créé le répertoire /var/www/regretable.site/
Nous avons créé le fichier /etc/apache2/sites-available/000-regretable.site-ssl.conf dans lequel nous avons mis :
<VirtualHost 193.48.57.165:443> ServerName regretable.site ServerAlias www.regretable.site DocumentRoot /var/www/www.regretable.site/ CustomLog /var/log/apache2/secure_access.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/regretable.site.crt SSLCertificateKeyFile /etc/ssl/private/regretable.site.key SSLCACertificateFile /etc/ssl/certs/GandiStandardSSLCA2.pem SSLVerifyClient None </VirtualHost>
Nous avons activé le site ssl :
a2ensite 000-regretable.site-ssl
5. Configuration d'Apache2
Dans le fichier /etc/apache2/apache2.conf
ServerName regretable.site
6. Ajout d'un enregistrement
Dans le fichier /etc/bind/db.regretable.site, nous avons ajouté un enregistrement de type A pour définir l'adresse de www.regretable.site :
www IN A 193.48.57.165
Cryptage des données
Chiffrement de données
On se met en root sur le serveur capbreton.
On crée une partition pour notre VM
lvcreate -L1G -n VMDedoLeleu-clef
On formate la partition
mkfs.ext4 /dev/VMDedoLeleu-clef
On met à jour le fichier de configuration de la VM pour y ajouter la partition
nano /etc/xen/VMDedoLeleu.cfg
# Disk device(s). # root = '/dev/xvda2 ro' disk = [ 'file:/usr/local/xen/domains/VMDedoLeleu/disk.img,xvda2,w', 'file:/usr/local/xen/domains/VMDedoLeleu/swap.img,xvda1,w', 'phy:/dev/storage/VMDedoLeleu-home, xvda3,w', 'phy:/dev/storage/VMDedoLeleu-var,xvda4,w', 'phy:/dev/virtual/VMDedoLeleu-raid-1,xvdb1,w', 'phy:/dev/virtual/VMDedoLeleu-raid-2,xvdb2,w', 'phy:/dev/virtual/VMDedoLeleu-raid-3,xvdb3,w', 'phy:/dev/storage/VMDedoLeleu-clef,xvda5,w' ]
On redémarre la VM. A présent depuis le terminal de la VM : On commence le cryptage en initialisant la clef avec un mot de passe (ici glopglop):
cryptsetup luksFormat /dev/xvda5
On crée une partition chiffrée appelée data avec sa passphrase :
cryptsetup luksOpen /dev/xvda5 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