TP sysres IMA2a5 2019/2020 G4
Sommaire
- 1 chemins des fichier
- 2 Descriptif du projet
- 3 Architecture réseau
- 4 Machine virtuelle Xen
- 5 Mise en place du serveur web
chemins des fichier
/etc/xen/ima2a5-wateck.cfg (fichier conf pour VM)
/etc/xen# cat ima2a5-wateck.cfg
root@ima2a5-wateck:/etc/bind# ls bind.keys db.127 db.empty db.root ima2a5-wateck.site.dnssec named.conf.default-zones named.conf.options named.run zones db.0 db.255 db.local dsset-zone-dns. named.conf named.conf.local named.conf.options.save rndc.key zones.rfc1918
root@ima2a5-wateck:/etc/apache2# ls apache2.conf certificate conf-available conf-enabled envvars logs magic mods-available mods-enabled ports.conf sites-available sites-enabled
root@ima2a5-wateck:/etc/ssh# ls moduli ssh_host_dsa_key ssh_host_ecdsa_key ssh_host_ed25519_key ssh_host_rsa_key sshd_config ssh_config ssh_host_dsa_key.pub ssh_host_ecdsa_key.pub ssh_host_ed25519_key.pub ssh_host_rsa_key.pub
/etc/hosts pour relier IP à nameserver
Descriptif du projet
L'objectif du projet consiste à réaliser une maquette réseau pour la manipulation des protocoles de redondance réseau ainsi que le protocole IPv6. Pour cela, il nous faut d'abord installer une machine virtuelle Xen. Suite à cela, on mettra en place un réseau ainsi qu'un site web sécurisé. Ce projet nous permettra de mettre en pratique les notions vues en cours qui sont, entre autres:
- installation d'une machine virtuelle
- découpage et paramétrage réseau
- réservation de nom de domaine avec un registrar
- installation et configuration d'un serveur DNS sécurisé
- installation et configuration d'un serveur web sécurisé
- cassage de clés WEP et WPA-PSK avec l'utilitaire AirCrack
Le groupe est constitué de :
- Malick SECK
- Gael WATBLED
Architecture réseau
Afin d'avoir un réseau redondant, nous utilisons deux routeurs, deux commutateurs et deux points d'accés Wi-Fi. Les points d’accès sont connectés chacun à un commutateur, les routeurs sont connectés sur les deux commutateurs et chaque commutateur est connecté au réseau d’interconnexion avec l’école. Enfin, le serveur de virtualisation est connecté aux deux commutateurs. L'architecture globale est représentée sur la figure suivante:
Nous utilisons par ailleurs le réseau IPv4 routé 193.48.57.160/27
que nous avons découpé en deux sous-réseaux en réservant une plage aux étudiants en IMA5 classique.
De plus, nous disposons d'un sous-réseau privé pour la connexion du client Wi-Fi. Le tableau ci-dessous détaille les infos concernant le découpage réseau pour notre groupe (groupe 4).
Description | Détails |
---|---|
ID VLAN | 4 |
Réseau VLAN | 10.60.4.0/24 |
Adresse IPv4 | 193.48.57.164/28 |
Adresse de broadcast | 193.48.57.175/28 |
Adresse du Routeur 1 | 193.48.57.173/28 |
Adresse du Routeur 2 | 193.48.57.174/28 |
Adresse du Routeur virtuel | 193.48.57.172/28 |
Nom du PC | Morue |
Poste de travail | Zabeth08 |
Machine virtuelle Xen
Installation
Afin d'installer la machine virtuelle, nous nous connectons d'abord au serveur cordouan en ssh via la commande:code
ssh root@cordouan.insecserv.deule.net
(mot de passe= glopglop).
Puis nous lançons la commande xen-create-image --hostname=ima2a5-wateck --dhcp --dir=/usr/local/xen --dist= ascii –apt-proxy=http://proxy.polytech-lille.fr/3128 –force
.
xen-create-image est un scriptvqui permet de créer facilement une instance Xen avec une image qui aura 2 volumes (1 image Logical Volumes et 1 image system root disk).
Le script en question prendra les arguments suivants:
ARGUMENT | SIGNIFICATION |
---|---|
--hostname | pour spécifier le nom de la machine |
--dhcp | pour permettre au client (guest) d'être configuré via dhcp |
--dir | pour spécifier le répertoire où les disques virtuels doivent être créés |
--dist | pour spécifier la distribution que l'on souhaite installer |
-force | pour autoriser l'écrasement des images existantes ou la suppression des volumes logiques LVM qui dépendent de la nouvelle instanciation |
Puis nous lançons la commande tail -f /var/log/xen-tools/ima2a5-wateck.log
pour voir sur un autre terminal si l’installation se fait correctement et pour voir l'état d'avancement
Par la suite, nous modifions le fichier de configuration de la machine virtuelle pour faire en sorte que les répertoires var
et home
de la machine virtuelle soient sur des partitions LVM de l’hôte.
Pour cela, nous modifions le fichier /etc/xen/ima2a5-wateck.cfg
pour mettre nom du bridge (déja configuré) en IMA2a5 comme spécifié lorsque l'on utilise la commande brctl show
afin de permettre à notre VM de se connecter à internet.
Nous avons aussi pris le soin de modifier le mot de passe de la machine via la commande Passwd
en "gloplop", le login étant "root"
Le fichier de configuration est comme suit: ... voir copie fichier de conf (pour changement)...''Texte italique
[...] # # Disk device(s). # root = '/dev/xvda2 ro' disk = [ 'file:/usr/local/xen/domains/ ima2a5-wateck /disk.img,xvda2,w', 'file:/usr/local/xen/domains/ ima2a5-wateck /swap.img,xvda1,w', 'phy:/dev/virtual/ ima2a5-wateck -home,xvdb1,w', 'phy:/dev/virtual/ ima2a5-wateck -var,xvdb2,w', ] [...]
... (voir fichier . cfg anyway) ...
# # Configuration file for the Xen instance ima2a5-wateck, created # by xen-tools 4.7 on Fri Nov 8 07:59:07 2019. #
# # Kernel + memory size # kernel = '/boot/vmlinuz-4.9.0-6-amd64' extra = 'elevator=noop' ramdisk = '/boot/initrd.img-4.9.0-6-amd64' vcpus = '1' memory = '256' # # Disk device(s). # root = '/dev/xvda2 ro' disk = [ 'file:/usr/local/xen/domains/ima2a5-wateck/disk.img,xvda2,w', 'file:/usr/local/xen/domains/ima2a5-wateck/swap.img,xvda1,w',
'phy:/dev/virtual/ima2a5-wateck-home,xvdb1,w',
'phy:/dev/virtual/ima2a5-wateck-var,xvdb2,w',
'phy:/dev/virtual/ima2a5-wateck-d1,xvdb3,w', 'phy:/dev/virtual/ima2a5-wateck-d2,xvdb4,w', 'phy:/dev/virtual/ima2a5-wateck-d3,xvdb5,w',
]
# # Physical volumes #
# # Hostname # name = 'ima2a5-wateck' # # Networking # dhcp = 'dhcp' vif = [ 'mac=00:16:3E:05:CB:E5, bridge=IMA2a5' ] # # Behaviour # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart'
Nous parsons notre machine via son fichier de configuration avec la commande xl create /etc/xen/ima2a5-watech.cfg
avant de lancer cette dernière avec xl console /etc/xen/ima2a5
Montage de Var et Home dans cordouan
Nous avons créé des volumes logiques de 10Go pour les répertoires var et home comme suit:
lvcreate -L10G -n ima2a5-wateck -home virtual
lvcreate -L10G -n ima2a5-wateck-var virtual
Création du système de fichiers
Nous formatons ainsi chaque partions pour avoir des volumes logiques (système de fichier)
mke2fs /dev/virtual/ ima2a5-wateck -home
mke2fs /dev/virtual/ ima2a5-wateck -var
Enfin nous vérifions que le montage des volumes a bien fonctionné grâce à fdisk -l
Le résultat obtenu est:
root@ima2a5-wateck:~# fdisk -l Disk /dev/xvda2: 4 GiB, 4294967296 bytes, 8388608 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/xvda1: 512 MiB, 536870912 bytes, 1048576 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/xvdb1: 10 GiB, 10737418240 bytes, 20971520 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/xvdb2: 10 GiB, 10737418240 bytes, 20971520 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
Ce qui montre que nos volumes ont été bel et biens crées
Nous avons aussi modifié le fichier /etc/fstab
comme suit afin que les volumes soient pris en compte à chaque démarrage de la VM :
/dev/xvdb1 /home ext4 defaults 0 2 /dev/xvdb2 /var ext4 defaults 0 2
Utilisation de RAID5 pour le stockage de donnée
RAID5 est un système permettant de garantir l'intégrité des données en cas de problème majeur (par exemple un problème matériel sur un disque dur). Afin d'éviter de perdre des données, le système RAID5 propose répartir les données sur plusieurs partition. En cas de problème sur l'une des partitions, il est possible de récupérer les données perdues sur cette dernière à partir des autres partitions toujours intactes. La partie qui suit explique comment nous avons mis en place ce système. Cependant nous n'avons fait que le créer et il n'est pas utilisé (pour des raisons de simplicité pour la réalisation des autres tâches du projet).
A partir de Cordouan, nous avons créé trois partitions LVM de 1Go :
lvcreate -L1G -n ima2a5-wateck-d1 virtual lvcreate -L1G -n ima2a5-wateck-d2 virtual lvcreate -L1G -n ima2a5-wateck-d3 virtual
Puis nous avons créé les systèmes de fichiers pour chacune des partitions nouvellement créées.
mke2fs /dev/virtual/ima2a5-wateck-d1 mke2fs /dev/virtual/ima2a5-wateck-d2 mke2fs /dev/virtual/ima2a5-wateck-d3
Ensuite nous avons modifié le fichier de configuration de la VM (/etc/xen/ima2a5-wateck.cfg) en ajoutant ces partitions.
Dans la définiton de la VM , ajouter :
[...] # # Disk device(s). # root = '/dev/xvda2 ro' disk = [ 'file:/usr/local/xen/domains/ ima2a5-wateck /disk.img,xvda2,w', 'file:/usr/local/xen/domains/ ima2a5-wateck /swap.img,xvda1,w', 'phy:/dev/virtual/ ima2a5-wateck -home,xvdb1,w', 'phy:/dev/virtual/ ima2a5-wateck -var,xvdb2,w', 'phy:/dev/virtual/ ima2a5-wateck-d1,xvdb3,w', 'phy:/dev/virtual/ ima2a5-wateck-d1,xvdb4,w', 'phy:/dev/virtual/ ima2a5-wateck-d1,xvdb5,w', ] [...]
Pour que les partitions soient montées au démarrage de la VM il faut aussi modifier le fichier /etc/fstab :
[...] # /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> 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/xvdb1 /home ext4 defaults 0 2 /dev/xvdb2 /var ext4 defaults 0 2 /dev/md0 /media/raid ext4 defaults 0 1 # Ligne à rajouter [...]
Il faut ensuite redémarrer la machine pour que les modifications soient prises en compte et pour monter
xl shutdown ima2a5-wateck
xlcreate ima2a5-wateck.cfg
On se reconnecte à la machine en SSH, puis on crée un RAID5 logiciel avec les trois partitions obtenues avec paquetage mdadm
.
apt-get install mdadm mdadm –create/dev/md0 –level=5 –raid-devices=3 /dev/xvdb3 /dev/xvdb4 /dev/xvdb5
kfs.ext4 /dev/md0 kdir /media/raid
Et voilà notre système RAID5 operationnel.
Mise en place du serveur web
Configuration du serveur web Apache2
Pour la configuration du serveur web, nous installons d'abord les paquets apache2
Apt-get install apache 2
Puis nous lançons le serveur
Service apache2 start
Configuration du serveur DNS avec Bind9
Nous commençons tout d'abord par installer bind9 via la commande: apt-get install bind9
Création et configurationde la zone principale
La zone principale permet de faire pointer un nom de domaine pleinement qualifié (FQDN) sur une adresse IP.
Nous modifions d'abord le fichier /etc/bind/named.conf.local
qui contient la configuration locale du serveur DNS et on y déclare les zones associées au domaine ainsi qu'un fichier de description de la zone
Puis nous créons le fichier de description/configuration lui-même db.ima2a5-wateck.site
que nous allons remplir
Définitions des hôtes
Une fois la zone principale configurée, nous renseignons dans sa description les noms des différentes machines pour lesquels on souhaite résoudre le nom.
... voir fichier named.conf.local... ... voir fichier named.conf.options... ... voir fichier db.ima2a5-wateck.site...
Après avoir enregistré les modifications dans les fichiers précédemment évoqués, nous redémarrons le service bind9 grâce à la commande service bind9 restart
.
Le service bind9 doit être redémarré à chaque modification, pour qu’elle soit prise en compte.
DNSSEC
ajoutez l’option dnssec-enable yes; dans le fichier named.conf.options
il est conseillé de créer un répertoire de nom ima2a5-wateck.site.dnssec pour y générer les clefs
mkdir ima2a5-wateck.site.dnsec
créez la clef asymétrique de signature de clefs de zone (pour accélerer la génération sur un système de test vous pouvez utiliser l’option -r /dev/urandom)
dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE ima2a5-wateck.site -r /dev/urandom
créez la clef asymétrique de la zone pour signer les enregistrements (pour accélerer la génération sur un système de test vous pouvez utiliser l’option -r /dev/urandom)
dnssec-keygen -a RSASHA1 -b 1024 -n ZONE ima2a5-wateck.site -r /dev/urandom
renommez les deux paires de clefs obtenues en utilisant le nom de la zone comme préfixe puis en suffixant d’abord par la destination de la clef (-ksk pour la KSK ou -zsk pour la ZSK) puis par le type de clef (.key pour la clef publique ou .private pour la clef privée)
incluez les clefs publiques dans votre fichier de zone, incrémentez le numéro de version de la zone
$include /etc/bind/ima2a5-wateck.site .dnssec/ima2a5-wateck.site -ksk.key
$include /etc/bind/ima2a5-wateck.site .dnssec/ima2a5-wateck.site -zsk.key
signez les enregistrements de la zone
dnssec-signzone -o ima2a5-wateck.site -k ima2a5-wateck.site -ksk ../zones/db.ima2a5-wateck.site ima2a5-wateck.site-zsk
modifiez le fichier named.conf.local pour utiliser la zone signée de suffixe .signed
puis redemarrer bind9 avec service bind9 restart
il ne reste plus qu’à communiquer la partie publique de la KSK (présente dans le fichier <nom_de_zone>-ksk.key) à votre registrar (par exemple gandi.net, regardez à "Manage DNSSEC" dans la section "DNS servers").
Création de site web avec Gandi.net
Réservation du nom de domaine
Grâce au registrar gandi.net, nous avons réservé le nom de domaine ima2a5-wateck.site
. L'extension .site
est une option trés interessante à cause du prix relativement faible (1€/an)
Configuration du nameserver
Les serveurs de noms permettent d'accéder à un réseau ou du contenu sur internet depuis un nom de domaine. Le nameserver utilisé est spécifié dans notre fichier de configuration pour bind9. La figure suivante montre le choix de nos narmeservers via gandi:
Enregistrement Glue Records
Il faut créer un enregistrement Glue records lorsque le serveur de noms fait référence au nom de domaine. Si vous souhaitez mettre en place plusieurs serveurs de noms, faisant référence au nom de domaine, il faudra créer pour chacun un enregistrement glue record. AInsi nous utilisons les enregistrements Glue records fournis par gandi pour associer un hostname (nom de serveur ou DNS) à l'adresse IP de notre machine. NB:Les modifications seront effectives entre 12 et 24 heures. La figure suivante motre l'enregistrement glue records que nous avons effectué:
Certificat SSL
Le SSL (Secure Socket Layer) / TLS (Transport Layer Security) est le protocole de sécurité le plus répandu qui créé un canal sécurisé entre deux machines communiquant sur Internet ou un réseau interne. Dans notre société centrée sur un Internet vulnérable, le SSL est généralement utilisé lorsqu'un navigateur doit se connecter de manière sécurisée à un serveur web.
Pour commander un certificat, il faut générer une demande de certificat pour finaliser la commande.Nous le faisons comme suit:
openssl req -nodes -newkey rsa:2048 -sha256 -keyout ima2a5-wateck.key -out ima2a5-wateck.csr
Ceci nous permet de générer un jeu de 2 clefs privée et publique respectivement stockées dans des fichiers .key et un .csr grâce à l'utilitaire OpenSSL.
Argument | explication |
---|---|
req | Gestion X.509 Certificate Signing Request (CSR). |
-nodes | Pas de chiffrage sur la clef privée (option arbitraire no des) |
-newkey rsa:2048 | demande de Génération d'une paire de clef RSA de 2048 bits et d'une demande de certificat. |
-keyout ima2a5-wateck.key | spécification du nom de notre .key |
-out ima2a5-wateck.csr | spécification du nom de notre demande de certificat .csr |
A la suite de la commande openssl
, nous répondons à quelques questions afin de générer et d'obtenir le csr:
Country Name (2 letter code) [AU]:FR State or Province Name (full name) [Some-State]:Nord Locality Name (eg, city) []:Lille Organization Name (eg, company) [Internet Widgits Pty Ltd]:Polytech Lille Organizational Unit Name (eg, section) []:IMA2A5 Common Name (e.g. server FQDN or YOUR name) []:ima2a5-wateck.site Email Address []:gael.watbled@polytech-lille.net Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:glopglop! Optionnal informations :
La commande précédemment utilisée nous permet d'avoir la clé publique stockée dans le fichier ima2a5-wateck.csr
Le CSR doit être renseigné dans gandi afin d'obtenir notre certficat SSL
Contenu du CSR
-----BEGIN CERTIFICATE REQUEST----- -----END CERTIFICATE REQUEST-----
Cassage de la clé WEP
Installation du paquetage AirCrack-ng
Avant d'effectuer des installations, nous avons d'abord effectué les configs réseau
... voir fichier /etc/network.interfaces ...Texte italique
Puis nous effectuons une mise à jour des paquets via apt-get update
Puis nous lançons la comme apt-get install aircrack-ng
pour installer l'utilitaire aircrack
Utilisation de AirCrack
Lister les interfaces WiFi disponibles sur l'ordinateur :
airmon-ng
Choisir l'interface souhaitée pour l'écoute puis la déclarer en mode écoute avec la commande suivante :
airmong-ng start wlan0mon
La commande airodump-ng permet d'écoute tous les réseaux WiFi présents. Afin de sélectionner le réseau ciblé, l'utilisation des commandes suivantes est impérative :
airodump-ng --encrypt wep wlan0mon
Airodump-ng -w crack1.txt -c 2 --bssid @MAC wlan0mon
- -c: pour indiquer le canal d'écoute (canal 2 dans notre cas car tous les réseaux Cracotte y sont)
- -i: pour préciser l'interface réseau utiliser
- -w: pour indiquer le fichier de sauvegarde des trames écoutées
Réalisations sur eeePC
Configuration Internet
On modifie le ficher /etc/network.interfaces, comme suit:
auto lo iface lo inet loopback auto enp4s0 address 172.26.145.75 netmask 255.255.255.0 gateway 172.26.145.254
Cryptage de données
Sur votre eeePC installez les paquetages lvm2 et cryptsetup.
apt-get install cryptsetup
apt-get install lvm2
lsblk
pour voir les différentes partitions
On verra que y'a sda qui est vide
Faites en sorte de créer une unique partition sur la clé USB de l’eeePC.
fdisk /dev/sda
pour rentrer dans le disque
n
pour créer une partition
p
d
delete
Sécurisez la partition (clef-WATECK) en utilisant l’utilitaire cryptsetup
cryptsetup luksFormat -c aes -h sha256 /dev/sda1
pour encrypter la partition au format luks puis mettre un passphrase
cryptsetup open --type luks /dev/sda1 clef-WATECK
pour l'ouvrir
créez un système de fichier au dessus de la partition sécurisée (faite un tour dans /dev/mapper pour trouver le périphérique correspondant)
mkfs.ext4 /dev/mapper/clef-WATECK
On le monte (dans un repertoire sur le poste) .
mount -t ext4 /dev/mapper/clef-WATECK /mnt/clef
Ajoutez des données sur ce système de fichiers, démontez-le, échangez votre carte SD avec celle d’un autre binôme et tentez de lire le contenu
touch test.txt<.code>
<code>umount /mnt/clef
cryptsetup close --type luks clef_WATECK
pour fermer le volume chiffré