TP sysres IMA2a5 2019/2020 G4
Sommaire
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
Installation du serveur web Apache2
Pour mettre en place notre serveur web nous avons utilisé la solution la plus répandue à savoir un serveur apache2. Il est produit par la Apache Software Foundation.
Pour cela, nous avons d'abord installé les paquets apache2.
Apt-get install apache 2
Puis nous lançons le serveur.
Service apache2 start
Configuration du serveur apache2
Nous avons du configurer ce serveur afin qu'il réponde à nos attente. Nous devons commencer par créer un fichier .conf
que nous avons nommé ima2a5-wateck.site.con
.
[...] <VirtualHost *:80> ServerName ima2a5-wateck.site ServerAlias www.ima2a5-wateck.site DocumentRoot "/var/www/ima2a5-wateck" <Directory "/var/www/ima2a5-wateck"> Options +FollowSymLinks AllowOverride all Require all granted </Directory> ErrorLog /var/log/apache2/error.ima2a5-wateck.site.log CustomLog /var/log/apache2/access.ima2a5-wateck.site.com.log combined </VirtualHost> [...]
Ce fichier sera modifié par la suite lorsque nous sécuriserons le serveur web (https). Une fois ce fichier configuré nous pouvons lancer le serveur.
a2ensite ima2a5-rex4ever.site
service apache2 reload
Le site est maintenant en ligne et il est possible de le consulter en tapant l'adresse 193.48.57.164
. Pour modifier la page web il suffit simplement de modifier le fichier index.html
.
Mise en place du serveur DNS
Installation du serveur DNS avec Bind9
Un serveur DNS (Domain Name System) permet la correspondance entre un nom de domaine et une adresse IP. Ainsi, grâce à DNS, il n'est pas nécessaire de se souvenir des adresses IP. Pour installer notre propre serveur DNS nous avons utilisé Bind9.
Nous commençons tout d'abord par installer bind9 via la commande suivante : apt-get install bind9
Création et configuration de la zone principale
La zone principale permet de faire pointer un nom de domaine pleinement qualifié (FQDN) sur une adresse IP.
Nous avons tout d'abord modifié le fichier /etc/bind/named.conf.local
qui contient la configuration locale du serveur DNS et nous y avons déclaré les zones associées au domaine ainsi qu'un fichier de description de la zone.
Puis nous avons créé le fichier de description/configuration lui-même que nous avons appelé db.ima2a5-wateck.site
.
[...] ; BIND data file for ima2a5-wateck.site ; $TTL 14400 $include /etc/bind/ima2a5-wateck.site.dnssec/ima2a5-wateck.site-ksk.key $include /etc/bind/ima2a5-wateck.site.dnssec/ima2a5-wateck.site-zsk.key @ IN SOA ns1.ima2a5-wateck.site. host.ima2a5-wateck.site. ( 201006602 ; Serial 7200 ; Refresh 120 ; Retry 2419200 ; Expire 604800) ; Default TTL ; @ IN NS ns1.ima2a5-wateck.site. @ IN NS ns6.gandi.net. ns1 IN A 193.48.57.164 www IN A 193.48.57.164 [...]
ttttttttttttttttttttttttttttttttttttttttt
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").
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é