TP sysres IMA2a5 2019/2020 G4

De Wiki d'activités IMA
Révision datée du 4 décembre 2019 à 19:33 par Gwatbled (discussion | contributions) (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

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.

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").

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)

Mygandi.png

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:

Wiki.png

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é:

Glue record.png

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é

Sécurisation Wifi par clef WEP

Sécurisation Wifi par clef WPA-PSK

Sécurisation réseau filaire par EAP-TLS

Sécurisation Wifi par WPA2-EAP