TP sysres SE2a5 2022/2023 G3

De Wiki d'activités IMA

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.

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

  1. Réinstallation de la machine Zabeth2 en salle E306 sous OS Chimera Linux et en boot UEFI.
  2. Configuration réseau de la machine Zabeth2 et propagation d'une configuration via Ansible
  3. Création et configuration de la VM Xen VMDedoLeleu hebergé sur Capbreton
  4. Expression du besoin de l'architecture réseau matérielle et mise en place du matériel
  5. Configuration du matériel réseau (routeur, switch, AP Wifi, machines...)
  6. Achat des noms de domaine et création des certificats X509 pour le serveur web hébergé sur la VM
  7. 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