TP sysres IMA2a5 2019/2020 G4 : Différence entre versions

De Wiki d'activités IMA
(Gestion du nom de domaine avec Gandi.net)
 
(100 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
Membres du groupe:
 +
* '''Malick SECK'''
 +
* '''Gael WATBLED'''
 +
  
 
== Descriptif du projet ==
 
== Descriptif du projet ==
Ligne 5 : Ligne 9 :
 
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é.  
 
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:
 
Ce projet nous permettra de mettre en pratique les notions vues en cours qui sont, entre autres:
* installation d'une machine virtuelle
+
* installation d'une machine virtuelle  
 
* découpage et paramétrage réseau
 
* découpage et paramétrage réseau
* réservation de nom de domaine avec Gandi
+
* réservation de nom de domaine avec un registrar
* gestion de certificats SSL
+
* 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
 
* cassage de clés WEP et WPA-PSK avec l'utilitaire AirCrack
* mise en place de services internet (SSH, DNS, Apache2,...)
 
  
 
Le groupe est constitué de :
 
Le groupe est constitué de :
*Malick SECK
+
* Malick SECK
*Gael WATBLED
+
* Gael WATBLED
  
 
== Architecture réseau ==  
 
== Architecture réseau ==  
Ligne 69 : Ligne 73 :
  
  
== Installation de la machine virtuelle Xen ==
+
== Machine virtuelle Xen ==
 +
=== Installation ===
 +
Afin d'installer la machine virtuelle, nous nous connectons d'abord au serveur cordouan en ssh via la commande:code
 +
<code>ssh root@cordouan.insecserv.deule.net</code> (mot de passe= glopglop).
 +
 
 +
Puis nous lançons la commande <code>xen-create-image --hostname=ima2a5-wateck  --dhcp --dir=/usr/local/xen --dist= ascii –apt-proxy=http://proxy.polytech-lille.fr/3128 –force</code>.
 +
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:
 +
 
 +
{| class="wikitable" style="text-align: center;width: 85%;margin: auto;"
 +
! ARGUMENT !! SIGNIFICATION
 +
|-
 +
! scope="row" style="width: 40%"|--hostname
 +
|style="width: 60%"| pour spécifier le nom de la machine
 +
|-
 +
! scope="row" style="width: 40%"|--dhcp
 +
|style="width: 60%"| pour permettre au client (guest) d'être configuré via dhcp
 +
|-
 +
! scope="row" style="width: 40%"|--dir
 +
|style="width: 60%"|pour spécifier le répertoire où les disques virtuels doivent être créés
 +
|-
 +
! scope="row" style="width: 40%"|--dist
 +
|style="width: 60%"|pour spécifier la distribution que l'on souhaite installer
 +
|-
 +
! scope="row" style="width: 40%"|-force
 +
|style="width: 60%"|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 <code>tail -f /var/log/xen-tools/ima2a5-wateck.log </code> pour voir sur un autre terminal si l’installation se fait correctement et pour voir l'état d'avancement en continue
 +
 
 +
Par la suite, nous modifions le fichier de configuration de la machine virtuelle pour faire en sorte que les répertoires <code>var</code> et <code>home</code> de la machine virtuelle soient sur des partitions LVM de l’hôte.
 +
Pour cela, nous modifions le fichier <code>/etc/xen/ima2a5-wateck.cfg</code> pour mettre nom du bridge (déja configuré) en IMA2a5 comme spécifié lorsque l'on utilise la commande <code>brctl show</code> 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 <code>Passwd</code> en "gloplop", le login étant "root"
 +
 
 +
Le fichier de configuration est comme suit:
 +
''
 +
 
 +
 
 +
    [...]
 +
    #
 +
    #  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',
 +
                  ]
 +
    [...]
 +
''
 +
 
 +
 
 +
    #
 +
    # 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  <code>xl create /etc/xen/ima2a5-watech.cfg</code> avant de lancer cette dernière avec  <code>xl console /etc/xen/ima2a5</code> (nous passons par xl console pour le moment car le serveur SSH n'est pas encore configuré)
 +
 
 +
=== Montage de Var et Home dans cordouan ===
 +
Nous avons créé des volumes logiques de 10Go pour les répertoires var et home comme suit:
 +
*<code>lvcreate -L10G -n ima2a5-wateck -home virtual</code>
 +
*<code>lvcreate -L10G -n ima2a5-wateck-var virtual</code>
 +
 
 +
=== Création du système de fichiers ===
 +
Nous formatons ainsi chaque partions pour avoir des volumes logiques (système de fichier)
 +
*<code>mke2fs /dev/virtual/ ima2a5-wateck -home</code>
 +
*<code>mke2fs /dev/virtual/ ima2a5-wateck -var</code>
 +
 
 +
 
 +
Enfin nous vérifions que le montage des volumes a bien fonctionné grâce à  <code>fdisk -l</code>
 +
 
 +
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 <code>/etc/fstab</code> 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 <code>mdadm</code>.
 +
 
 +
    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.
 +
 
 +
*<code>Apt-get install apache 2</code>
 +
 
 +
Puis nous lançons le serveur.
 +
 
 +
*<code>Service apache2 start</code>
 +
 
 +
 
 +
== Configuration du serveur SSH ==
 +
 
 +
Afin que notre machine virtuelle intégrant notre serveur puisse être accessible à distance, nous devons y configurer un serveur SSH.
 +
 
 +
Puis nous modifions le fichier de configuration <code>/etc/ssh/sshd_config</code> en modifiant les lignes suivantes:
 +
 
 +
<code>permitRootLogin yes</code>
 +
 
 +
<code>passwordAuthentification  yes </code>
 +
 
 +
A partir de là nous n'aurons plus besoin d'accéder à notre VM via xl cosole car nous passerons par SSH.
 +
Nous lançons donc le service SSH avec <code>service ssh start</code>.
 +
 
 +
Cependant, nous nous sommes rendus compte plus tard qu'il aurait été plus judicieux d'utiliser la connexion pas clé publique + passphrase  en passant par <code>ssh-keygen -t rsa -b 1024</code> par exemple, car plus sécuritaire.
 +
 
 +
En effet <code>permitRootLogin yes</code> donne les privilèges root dès qu'on se connecte, ce qui n'est pas idéal.
  
 +
== 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 <code>.conf</code> que nous avons nommé <code>ima2a5-wateck.site.con</code>.
  
== Mise en place de services internet ==
+
  [...]
=== Installation des paquets SSH ===
+
    <VirtualHost *:80>
=== Configuration du serveur web Apache2 ===
+
      ServerName ima2a5-wateck.site
=== Configuration du serveur DNS avec Bind9 ===
+
      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-wateck.site
  
== Paramétrage avec Gandi.net ==
+
    service apache2 reload
=== Réservation du nom de domaine ===
 
  
=== Configuration du serveur de nom ===
+
Le site est maintenant en ligne et il est possible de le consulter en tapant l'adresse <code>193.48.57.164</code>. Pour modifier la page web il suffit simplement de modifier le fichier <code>index.html</code>.
Les serveurs de noms permettent d'accéder à un réseau ou du contenu sur internet depuis un nom de domaine.
 
  
=== Enregistrement Glue Records ===
+
== Sécurisation du serveur web (Protocole https) ==
Les Glue records sont utilisés par les utilisateurs avancés pour associer un hostname (nom de serveur ou DNS) à une adresse IP au registre. Une fois créés, ajoutez vos nouveaux noms à la liste de vos serveurs de noms. Les modifications seront effectives entre 1 et 72 heures plus tard, selon le temps de propagation mondiale.
 
  
 
=== Certificat SSL ===
 
=== 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.
+
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. Le protocole SSL est généralement utilisé lorsqu'un navigateur doit se connecter de manière sécurisée à un serveur web.
  
 +
Tout d'abord, comme souvent pour les protocoles sécurisés (utiliser un processus de chiffremment), nous devons généner une paire de clefs <code>.key</code> et <code>.csr</code>. Pour cela on utilise la commande suivante :
  
La première étape pour générer un certificat est de concevoir un jeu de 2 clefs qui sont un '''.key''' et un '''.csr'''
 
Pour obtenir ces deux fichiers, nous utilisons l'utilitaire '''OpenSSL'''.
 
 
       openssl req -nodes -newkey rsa:2048 -sha256 -keyout ima2a5-wateck.key -out ima2a5-wateck.csr
 
       openssl req -nodes -newkey rsa:2048 -sha256 -keyout ima2a5-wateck.key -out ima2a5-wateck.csr
 
 
  
 +
Nous avons donc généré un jeu de 2 clefs privée et publique.
  
  
Ligne 119 : Ligne 379 :
 
|}
 
|}
  
 +
A la suite de la commande <code>openssl</code>, nous répondons à quelques questions afin de générer et d'obtenir le csr:
  
 
       Country Name (2 letter code) [AU]:'''FR'''
 
       Country Name (2 letter code) [AU]:'''FR'''
Ligne 133 : Ligne 394 :
 
       Optionnal informations :
 
       Optionnal informations :
  
 +
Notre clé publique est donc contenue dans le fichier <code>ima2a5-wateck.csr</code>. Ensuite cette clé publique doit être communiqué à notre registrar "Gandi" afin qu'il puisse valider ou non l'authenticité de notre site.
 +
Gandi peut utiliser plusieurs méthode pour certifier notre site. Nous avons choisi la méthode par "fichier". Pour cela nous devons fournir à Gandi un fichier temporaire et attendre qu'il soit validé. Une fois valider un certificat <code>.csr</code> et un certificat <code>.pem</code> sont générés.
 +
 +
Le protocole http écoute par défaut sur le port 80. Jusqu'ici notre serveur web écoutait donc sur son port 80 pour déceler d'éventuelles tentatives de connexion de la part des clients. Le protocole sécurisé https écoute lui sur le prot 443. Nous avons donc autorisé le serveur à écouter sur le 443 en plus du port 80 et effectué une redirection afin que les clients voulant se conecter via le protocole http soit automatiquement redirigé sur le port 443 afin d'utiliser le protocole https et donc de sécuriser la connexion.
 +
 +
=== Activation du module SSL ===
 +
Tout d'abord nous devons activer le module SSL sur notre serveur Apache2, en créant un lien symbolique via a2en :
 +
 +
    sudo a2enmod ssl
 +
 +
Puis il faut relancer le serveur avec la commande :
 +
 +
    service apache2 restart
 +
 +
=== Modification du VirtualHost ===
 +
 +
Maintenant il est temps de modifier le VirtualHost Apache que nous avions configuré pour fonctionner en http. La nouvelle version donne quelque chose comme cela :
 +
 +
    <VirtualHost *:80>
 +
        ServerName ima2a5-wateck.site
 +
        ServerAlias www.ima2a5-wateck.site
 +
        # Redirection 301  vers le site en HTTPS
 +
        Redirect permanent / https://www.ima2a5-wateck.site/
 +
    </VirtualHost>
 +
    <VirtualHost *:443>
 +
    #  General setup for the virtual host
 +
        DocumentRoot "/var/www/ima2a5-wateck"
 +
        ServerName ima2a5-wateck.site
 +
        ServerAdmin gael.watbled@polytech-lille.net
 +
        ErrorLog "/etc/apache2/logs/error_log"
 +
        TransferLog "/etc/apache2/logs/access_log"
 +
      # Activation du SSL
 +
        SSLEngine On
 +
        # Activation de tous les protocoles s  curis  s (TLS v1.0, v1.1 et TLS v1.2) touut en d  sactivant les protocoles non s  curis  s (SSL v2, SSL v3)
 +
        SSLProtocol All -SSLv3 -SSLv2
 +
        # Le navigateur devra choisir une m  thode de chiffrement en respectant l'ordre indiqu  e dans SSLCipherSuite
 +
        SSLHonorCipherOrder on
  
''' Contenu du CSR'''
+
    # Chemin vers le certificat SSL de votre nom de domaine
       -----BEGIN CERTIFICATE REQUEST-----
+
      SSLCertificateFile "/etc/apache2/certificate/ima2a5-wateck.crt"
 +
      SSLCACertificateFile "/etc/apache2/certificate/ima2a5-wateck.pem"
 +
    # Chemin vers la cl  e priv  e du certificat SSL de votre nom de domaine
 +
      SSLCertificateKeyFile "/etc/apache2/certificate/ima2a5-wateck.key"
 +
    </VirtualHost>
 +
 
 +
Comme nous l'avons décrit précemment la première partie du fichier de configuration des Hôtes virtuels permet la redirection du port 80 vers le port 443. Ce qui change par rapport à la première version est l'activation du protocole SSL ainsi que la description des chemins pour accèder aux diférents certificats ou clés.
 +
 
 +
    root@ima2a5-wateck:/etc/apache2/certificate# ls -l
 +
    total 16
 +
    -rw-r--r-- 1 root root 2155 Nov 28 08:25 ima2a5-wateck.crt
 +
    -rw-r--r-- 1 root root 1148 Nov 28 08:12 ima2a5-wateck.csr
 +
    -rw-r--r-- 1 root root 1705 Nov 28 08:09 ima2a5-wateck.key
 +
    -rw-r--r-- 1 root root 2111 Nov 28 08:14 ima2a5-wateck.pem
 +
 
 +
Comme d'habitude il faut maintenant relancer le service afin que les modifications soient effectives :
 +
 
 +
    a2dissite ima2a5-wateck.site
 +
    a2ensite ima2a5-wateck.site
 +
    service apache2 restart
 +
 
 +
Notre serveur web est maintenant sécurisé via le protocole https.
 +
 
 +
== Mise en place du serveur DNS ==
 +
 
 +
=== Installation de 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 : <code>apt-get install bind9</code>
 +
 
 +
==== 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 <code>/etc/bind/named.conf.local</code> 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é <code>db.ima2a5-wateck.site</code>.
 +
 
 +
    [...]
 +
    ; BIND data file for ima2a5-wateck.site
 +
    ;
 +
    $TTL 14400
 +
    @      IN      SOA    ns1.ima2a5-wateck.site. host.ima2a5-wateck.site. (
 +
                        201006601 ; 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
 +
    [...]
 +
 
 +
==== 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. Pour cela nous modifions les fichiers de configuration <code>named.conf.local</code> :
 +
 
 +
    zone "ima2a5-wateck.site" {
 +
    type master;
 +
    file "/etc/bind/zones/db.ima2a5-wateck.site.signed";
 +
    };
 +
 
 +
Et <code>named.conf.options</code> :
 +
 
 +
    options {
 +
    // forwarders {
 +
        //    0.0.0.0;
 +
        // };
 +
        //dnssec-validation auto;
 +
        dnssec-enable yes;
 +
        auth-nxdomain no;    # conform to RFC1035
 +
        listen-on-v6 { any; };
 +
        allow-transfer { "allowed_to_transfer"; };
 +
    };
 +
 
 +
    acl "allowed_to_transfer" {
 +
        217.70.177.40/32; // adresse IP du ns6.gandi.net
 +
    };
 +
 
 +
Après avoir enregistré les modifications dans les fichiers précédemment évoqués, nous redémarrons le service bind9 grâce à la commande <code>service bind9 restart</code>.
 +
Le service bind9 doit être redémarré à chaque modification, pour qu’elle soit prise en compte.
 +
 
 +
=== Réservation du nom de domaine ===
 +
 
 +
Grâce au registrar gandi.net, nous avons réservé le nom de domaine <code>ima2a5-wateck.site</code>. L'extension <code>.site</code> est une option trés interessante à cause du prix relativement faible (1€/an)
 +
 
 +
[[File:mygandi.png|700px|link=]]
 +
 
 +
=== 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:
 +
 
 +
[[File:Wiki.png|700px|link=]]
 +
 
 +
=== 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é:
 +
 
 +
[[File:glue_record.png|700px|link=]]
 +
 
 +
Après avoir réalisé ces étapes et attendu que le registrar effectue les modifications, le site est enfin accessible via le nom <code>ima2a5-wateck.site</code>.
 +
 
 +
== Sécurisation du serveur DNS avec DNSSEC ==
 +
 
 +
=== Modification des fichiers de configuration ===
 +
 
 +
Dans le fichier named.conf.options nous commencons par ajouter l’option <code>dnssec-enable yes;</code>.
 +
 
 +
Nous avons ensuite créer un répertoire spécifique qui abritera les clés nécéssaires au fonctionnement de DNSSEC :
 +
 
 +
<code>mkdir ima2a5-wateck.site.dnssec</code>
 +
 
 +
Ensuite il nous a fallu générer les clés privées et publiques grâce aux commandes suivantes :
 +
 
 +
<code>dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE ima2a5-wateck.site -r /dev/urandom</code>
 +
 
 +
<code>dnssec-keygen -a RSASHA1 -b 1024 -n ZONE ima2a5-wateck.site -r /dev/urandom</code>
 
    
 
    
      -----END CERTIFICATE REQUEST-----
+
Nous avons renommé 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). Voilà le résultat :
  
== Cassage de la clé WEP ==
+
    -rw-r--r-- 1 root bind  179 Nov 29 10:12 dsset-ima2a5-wateck.site.
 +
    -rw-r--r-- 1 root bind  619 Nov 29 09:40 ima2a5-wateck.site-ksk.key
 +
    -rw------- 1 root bind 1774 Nov 29 09:40 ima2a5-wateck.site-ksk.private
 +
    -rw-r--r-- 1 root bind  445 Nov 29 09:41 ima2a5-wateck.site-zsk.key
 +
    -rw------- 1 root bind 1010 Nov 29 09:41 ima2a5-wateck.site-zsk.private
 +
 
 +
Il nous a ensuite fallu inclure les clefs <code>ksk.key</code> et <code>zsk.key</code> dans notre fichier de zone et incrémenter sa version (SERIAL) :
 +
 
 +
    ; 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
 +
 
 +
Nous avons ensuite signé la zone avec la commande :
 +
 
 +
<code>dnssec-signzone -o ima2a5-wateck.site  -k ima2a5-wateck.site -ksk ../zones/db.ima2a5-wateck.site ima2a5-wateck.site-zsk</code>
 +
 
 +
Puis modifié le fichier <code>named.conf.local</code> pour utiliser la zone signée de suffixe .signed ainsi que le fichier <code>named.conf.options</code> :
 +
 
 +
    options {
 +
    // forwarders {
 +
            //    0.0.0.0;
 +
            // };
 +
            //dnssec-validation auto;
 +
            dnssec-enable yes;
 +
            auth-nxdomain no;    # conform to RFC1035
 +
            listen-on-v6 { any; };
 +
            allow-transfer { "allowed_to_transfer"; };
 +
        };
 +
 
 +
        acl "allowed_to_transfer" {
 +
            217.70.177.40/32; // adresse IP du ns6.gandi.net
 +
    };
 +
 
 +
Enfin nous avons redémarré bind9 avec :
 +
 
 +
<code>service bind9 restart</code>
 +
 
 +
La dernière étape consiste à communiquer à Gandi notre clé publique KSK afin d'activer DNSSEC.
 +
 
 +
=== Transmission de la clé publique à Gandi ===
 +
 
 +
[[File:clef.png|700px|link=]]
 +
 
 +
 
 +
 
 +
== Configuration Internet de la machine eeePC Morue ==
 +
 
 +
Avant d'effectuer des installations nous devons tout d'abord connecté le PC à internet. Pour cela nous avons modifié le fichier <code>/etc/network/interfaces</code>.
 +
 
 +
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
 +
 
 +
Puis nous effectuons une mise à jour des paquets via <code>apt-get update</code>.
 +
 
 +
== Cassage de clé WEP ==
 
=== Installation du paquetage AirCrack-ng ===
 
=== Installation du paquetage AirCrack-ng ===
  
    // Configuration de l'interface réseau d'abord pour télécharger aircrack-ng
+
Avant de procéder à l'installation, nous mettons d'abords à jour les paquets via la commande :
 +
 
 +
    apt-get update
 +
 
 +
Enfin, pour espionner le réseau, nous pouvons installer l'utilitaire Aircrack-ng avec la commande :
 +
 
 
     apt-get install aircrack-ng
 
     apt-get install aircrack-ng
  
 
=== Utilisation de AirCrack ===
 
=== Utilisation de AirCrack ===
 +
Après avoir branché la clé usb permettant de se connecter en wifi aux réseaux mis à disposition, nous commençons par lister les interfaces WiFi disponibles sur l'ordinateur :
 +
<code>airmon-ng </code>
  
  airmon-ng
+
A ce niveau, nous choisissons l'interface que l'on souhaite écouter  :
 +
<code>airmong-ng start wlan0mon </code>
  
 +
Sachant que la commande airodump-ng permet d'écouter tous les réseaux WiFi présents, nous sélectionnons le réseau ciblé et son type de cryptage avec la commande suivante :
  
  airmong-ng start wlan0mon
+
<code>airodump-ng --encrypt wep wlan0mon </code>
  
 +
Ainsi, nous récupérons les données contenues dans les trames échangées et les stockons dans un fichier spécifique.
  
  airodump-ng --encrypt wep wlan0mon
+
<code>Airodump-ng -w crack1.txt -c 2 --bssid [@MAC] wlan0mon </code>
  
 +
L'explication des arguments de la commande utilisée est la suivante:
 +
*-c: pour indiquer le canal d'écoute (canal 2 dans notre cas car tous les réseaux Cracotte y sont)
 +
*-bssid: pour préciser le nom du réseau en question
 +
*-w: pour indiquer le fichier de sauvegarde des trames écoutées
  
  Airodump-ng crack1 -c 2 --bssid @MAC wlan0mon
+
A ce niveau, nous disposons des éléments à analyser pour décrypter la clé WEP, mais pour des raisons de ressources matérielles, nous les utilisons avec une autre machine plus puissante via
  
 +
<code>aircrack-ng -b [@MAC] crack1*.cap </code>
  
  airmon-ng
+
 
  airmong-ng start wlan0mon
+
 
  airodump-ng --encrypt wep wlan0mon  
+
== Cassage de clé WPA-PSK par force brute==
  Airodump-ng -w crack1.txt -c 2 --bssid 04:DA:D2:50:50 wlan0mon
+
 
 +
Pour cette partie, nous utilisons le même utilitaire que pour cracker la clé WEP.
 +
 
 +
Ainsi nous listons les interfaces Wi-Fi avec la commande <code> airmon-ng</code> afin de repérer le réseau Wi-Fi à cracker.
 +
 
 +
Ensuite on écoute l'interface
 +
airmon-ng start [nom_de_l_interface]
 +
 
 +
Lorsque l'utilitaire airodump nous indique si des trames WPA sont capturées avec la commande <code>airodump-ng --encrypt wpa wlan0mon</code>,  nous lançons aircrack-ng pour tenter de craquer la clef WPA en s'aidant d'un dictionnaire. D'où l'utilisation de l'expression "cassage par force brute", impliquant que l'on doit se rapprocher au maximum du point d'accès.
 +
 +
A ce niveau, va intervenir l'utilitaire crunch qui va tout simplement créer un dictionnaire de toutes les clés de 8 chiffres car  on sait d'avance que la clef WPA est un nombre sur 8 chiffres.
 +
La commande pour cela est la suivante:
 +
crunch 8 8 0123456789 >> dictionnaire_wpa.txt
 +
 
 +
Puis nous lançons aircrack-ng
 +
aircrack-ng [fichier.cap] -w dictionnaire_wpa.txt
 +
 
 +
== Sécurisation d'une clé USB avec cryptsetup ==
 +
 
 +
Nous avons commencé par installer l'utilitaire cryptsetup :
 +
 
 +
<code>apt-get install cryptsetup</code>
 +
 
 +
<code>apt-get install lvm2</code>
 +
 
 +
On commence par lister les disques détectés par l'ordinateur et visualiser les partitions avec <code>lsblk</code>.
 +
Nous avons constaté que l'unique partition de la clé USB à savoir sda était vide
 +
 +
 
 +
La commande <code>fdisk /dev/sda</code> permet ensuite de rentrer dans la partition
 +
 
 +
<code>n</code> pour créer une partition
 +
 
 +
<code>p</code>
 +
 
 +
<code>d</code> delete
 +
 
 +
Nous sécurisons la partition (clef-WATECK) en utilisant l’utilitaire cryptsetup
 +
 
 +
<code>cryptsetup luksFormat -c aes -h sha256 /dev/sda1</code> pour encrypter la partition au format luks puis définir un mot de passe
 +
 
 +
<code>cryptsetup open --type luks /dev/sda1 clef-WATECK </code> pour l'ouvrir
 +
 
 +
 
 +
Nous un système de fichier au dessus de la partition sécurisée
 +
 
 +
<code>mkfs.ext4 /dev/mapper/clef-WATECK</code>
 +
On le monte (dans un repertoire sur le poste) .
 +
 
 +
<code>mount -t ext4 /dev/mapper/clef-WATECK /mnt/clef</code>
 +
 
 +
<code>touch test.txt<.code>
 +
 
 +
<code>umount /mnt/clef</code>
 +
 
 +
<code>cryptsetup close --type luks clef_WATECK</code> pour fermer le volume chiffré
 +
 
 +
== Sécurisation réseau filaire par EAP-TLS ==
 +
 
 +
Dans cette partie, nous nous sommes beaucoup inspiré des travaux de nos collègues.
 +
 
 +
=== Configuration du serveur FreeRadius ===
 +
 
 +
Depuis notre machine virtuelle, nous installons freeradius via la commande suivante:
 +
 
 +
apt-get install freeradius
 +
 
 +
Puis nous modifierons les fichiers de configuration comme suit:
 +
* rajouter la ligne suivante sur le fichier <code>/etc/freeradius/3.0/users</code>:
 +
 
 +
wateck Cleartext-Password := "glopglop"
 +
 
 +
* modifier le fichier <code>/etc/freeradius/3.0/mods-enabled/eap</code> comme suit:
 +
 
 +
eap{
 +
    default_eap_type = peap
 +
}
 +
 
 +
* modifier le fichier <code>/etc/freeradius/3.0//mods-enabled/mschap</code> comme suit:
 +
 
 +
use_mppe = yes
 +
require_encryption = yes
 +
require_strong = yes
 +
 
 +
[...]
 +
 
 +
with_ntdomain_hack = yes
 +
 
 +
 
 +
* configurer la borne comme client du serveur radius via le fichier <code> /etc/freeradius/3.0/clients.conf </code> comme suit:
 +
 
 +
client access-point {                                # nom de notre borne
 +
        ipaddr          = 10.60.0.100                # @IP de la nborne
 +
        secret          = glopglop                    # mot de passe
 +
}
 +
 
 +
Tout est OK jusque là, nous devrons arrêter puis relancer le serveur:
 +
  service freeradius stop
 +
  freeradius -X
 +
 
 +
 
 +
 
 +
=== Sécurisation du réseau ===
 +
Etape initiale:
 +
apt purge brltty
 +
 
 +
 
 +
* Nous accédons à la borne Wi-Fi via minicom en s'assurant de bien mettre <code>/dev/ttyUSB0</code> ,<code>9600 bauds</code> et<code>pas de contrôle de flux</code>:
 +
 
 +
minicom -os
 +
 
 +
 
 +
 
 +
* Autoriser l'accès avec les privilèges maximum  et entamer la configuration
 +
 
 +
enable 
 +
Password = "Cisco"
 +
 
 +
[...]
 +
 
 +
config term
 +
 
 +
 
 +
 
 +
 
 +
* On met la commande suivante pour vérifier l'identité de l'utilisateur (<code>authentication</code>) , pouvoir limiter l'accès à certaines fonctionnalités (<code>authorization</code>) et pouvoir enregistrer les actions de l'utilisateur (<code>accounting</code>) :
 +
 
 +
aaa new-model
 +
 
 +
 
 +
* On crée un server radius pour notre groupe 4, avec glopglop comme secret word :
 +
 
 +
radius-server host 193.48.57.164 auth-port 1812 acct-port 1813 key glopglop   
 +
 
 +
 
 +
* Définition du nom du serveur associé à notre groupe :
 +
 
 +
aaa group server radius radius_groupe4               
 +
 
 +
 
 +
* Association du serveur de notre groupe à la machine virtuelle:
 +
 
 +
server 193.48.57.164 auth-port 1812 acct-port 1813
 +
 
 +
 
 +
* Définition du login de l'utilisateur :
 +
 
 +
aaa authentication login wateck group radius_groupe4 
 +
 
 +
 
 +
* Notre configurons notre BSSID protégé en WPA2-EAP :
 +
 +
dot11 ssid reseau_wateck                               
 +
vlan 4
 +
authentication open eap wateck
 +
authentication network-eap wateck
 +
authentication key-management wpa
 +
 
 +
 
 +
* Configuration des VLAN :
 +
 
 +
interface Dot11Radio0                               
 +
encryption vlan vlan4 mode ciphers aes-ccm tkip   
 +
ssid reseau_wateck
 +
 
 +
 
 +
* Création d'une sous-interface dot11Radio0 pour notre groupe :
 +
 +
interface dot11Radio0.4
 +
encapsulation dot1Q 4
 +
 
 +
 
 +
* Création d'une sous-interface gigabite pour notre groupe :
 +
 
 +
interface gigabite0.4                   
 +
encapsulation dot1Q 4
 +
bridge-group 4
 +
 
 +
 
 +
* Ajout de notre BSSID à l'interface Dot11Radio0
 +
 
 +
interface Dot11Radio0                               
 +
dot11 ssid reseau_wateck                                 
 +
 
 +
[...]
 +
 
 +
 
 +
interface Dot11Radio0                             
 +
mbssid                                               
 +
dot11 ssid reseau_wateck                             
 +
mbssid guest-mode                                    # pour rendre notre réseau visible
 +
 
 +
 
 +
Puis on quitte via <code>exit</code> sans oublier de faire un  <code>write</code> sinon on perd tout ce qu'on a fait jusque ici
 +
 
 +
Puis on tape <code>reload</code>
 +
 
 +
* Attribution d'une adresse IP à la borne
 +
enable
 +
conf t
 +
int bvi1
 +
ip address 10.60.0.100 255.255.255.0
 +
 
 +
 
 +
 
 +
<code>reseau_wateck</code>
 +
 
 +
 
 +
 
 +
* Pour pinger le routeur, on tape <code> ping 10.60.0.254 </code>
 +
 
 +
* Pour pinger la VM, on doit d'abord configurer la passerelle:
 +
 
 +
enable
 +
conf t
 +
ip route 0.0.0.0 0.0.0.0 10.60.0.253
 +
 +
Puis <code>ping 193.48.57.164 </code>

Version actuelle datée du 8 décembre 2019 à 21:17

Membres du groupe:

  • Malick SECK
  • Gael WATBLED


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 en continue

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:


    [...]
    #
    #  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',
                 ]
    [...]


    #
    # 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 (nous passons par xl console pour le moment car le serveur SSH n'est pas encore configuré)

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 SSH

Afin que notre machine virtuelle intégrant notre serveur puisse être accessible à distance, nous devons y configurer un serveur SSH.

Puis nous modifions le fichier de configuration /etc/ssh/sshd_config en modifiant les lignes suivantes:

permitRootLogin yes

passwordAuthentification yes

A partir de là nous n'aurons plus besoin d'accéder à notre VM via xl cosole car nous passerons par SSH. Nous lançons donc le service SSH avec service ssh start.

Cependant, nous nous sommes rendus compte plus tard qu'il aurait été plus judicieux d'utiliser la connexion pas clé publique + passphrase en passant par ssh-keygen -t rsa -b 1024 par exemple, car plus sécuritaire.

En effet permitRootLogin yes donne les privilèges root dès qu'on se connecte, ce qui n'est pas idéal.

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-wateck.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.

Sécurisation du serveur web (Protocole https)

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. Le protocole SSL est généralement utilisé lorsqu'un navigateur doit se connecter de manière sécurisée à un serveur web.

Tout d'abord, comme souvent pour les protocoles sécurisés (utiliser un processus de chiffremment), nous devons généner une paire de clefs .key et .csr. Pour cela on utilise la commande suivante :

     openssl req -nodes -newkey rsa:2048 -sha256 -keyout ima2a5-wateck.key -out ima2a5-wateck.csr

Nous avons donc généré un jeu de 2 clefs privée et publique.


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 :

Notre clé publique est donc contenue dans le fichier ima2a5-wateck.csr. Ensuite cette clé publique doit être communiqué à notre registrar "Gandi" afin qu'il puisse valider ou non l'authenticité de notre site. Gandi peut utiliser plusieurs méthode pour certifier notre site. Nous avons choisi la méthode par "fichier". Pour cela nous devons fournir à Gandi un fichier temporaire et attendre qu'il soit validé. Une fois valider un certificat .csr et un certificat .pem sont générés.

Le protocole http écoute par défaut sur le port 80. Jusqu'ici notre serveur web écoutait donc sur son port 80 pour déceler d'éventuelles tentatives de connexion de la part des clients. Le protocole sécurisé https écoute lui sur le prot 443. Nous avons donc autorisé le serveur à écouter sur le 443 en plus du port 80 et effectué une redirection afin que les clients voulant se conecter via le protocole http soit automatiquement redirigé sur le port 443 afin d'utiliser le protocole https et donc de sécuriser la connexion.

Activation du module SSL

Tout d'abord nous devons activer le module SSL sur notre serveur Apache2, en créant un lien symbolique via a2en :

   sudo a2enmod ssl

Puis il faut relancer le serveur avec la commande :

   service apache2 restart

Modification du VirtualHost

Maintenant il est temps de modifier le VirtualHost Apache que nous avions configuré pour fonctionner en http. La nouvelle version donne quelque chose comme cela :

   <VirtualHost *:80>
       ServerName ima2a5-wateck.site
       ServerAlias www.ima2a5-wateck.site
       # Redirection 301  vers le site en HTTPS
       Redirect permanent / https://www.ima2a5-wateck.site/
   </VirtualHost>
   <VirtualHost *:443>
    #   General setup for the virtual host
        DocumentRoot "/var/www/ima2a5-wateck"
        ServerName ima2a5-wateck.site
        ServerAdmin gael.watbled@polytech-lille.net
        ErrorLog "/etc/apache2/logs/error_log"
        TransferLog "/etc/apache2/logs/access_log"
     # Activation du SSL
        SSLEngine On
       # Activation de tous les protocoles s  curis  s (TLS v1.0, v1.1 et TLS v1.2) touut en d  sactivant les protocoles non s  curis  s (SSL v2, SSL v3)
       SSLProtocol All -SSLv3 -SSLv2
       # Le navigateur devra choisir une m  thode de chiffrement en respectant l'ordre indiqu  e dans SSLCipherSuite
       SSLHonorCipherOrder on
    # Chemin vers le certificat SSL de votre nom de domaine
      SSLCertificateFile "/etc/apache2/certificate/ima2a5-wateck.crt"
      SSLCACertificateFile "/etc/apache2/certificate/ima2a5-wateck.pem"
    # Chemin vers la cl  e priv  e du certificat SSL de votre nom de domaine
      SSLCertificateKeyFile "/etc/apache2/certificate/ima2a5-wateck.key"
    </VirtualHost>

Comme nous l'avons décrit précemment la première partie du fichier de configuration des Hôtes virtuels permet la redirection du port 80 vers le port 443. Ce qui change par rapport à la première version est l'activation du protocole SSL ainsi que la description des chemins pour accèder aux diférents certificats ou clés.

   root@ima2a5-wateck:/etc/apache2/certificate# ls -l
   total 16
   -rw-r--r-- 1 root root 2155 Nov 28 08:25 ima2a5-wateck.crt
   -rw-r--r-- 1 root root 1148 Nov 28 08:12 ima2a5-wateck.csr
   -rw-r--r-- 1 root root 1705 Nov 28 08:09 ima2a5-wateck.key
   -rw-r--r-- 1 root root 2111 Nov 28 08:14 ima2a5-wateck.pem

Comme d'habitude il faut maintenant relancer le service afin que les modifications soient effectives :

    a2dissite ima2a5-wateck.site
    a2ensite ima2a5-wateck.site
    service apache2 restart

Notre serveur web est maintenant sécurisé via le protocole https.

Mise en place du serveur DNS

Installation de 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
   @       IN      SOA     ns1.ima2a5-wateck.site. host.ima2a5-wateck.site. (
                       201006601 ; 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
   [...]

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. Pour cela nous modifions les fichiers de configuration named.conf.local :

   zone "ima2a5-wateck.site" {
   type master;
   file "/etc/bind/zones/db.ima2a5-wateck.site.signed";
   };

Et named.conf.options :

   options {
   // forwarders {
       //     0.0.0.0;
       // };
       //dnssec-validation auto;
       dnssec-enable yes;
       auth-nxdomain no;    # conform to RFC1035
       listen-on-v6 { any; };
       allow-transfer { "allowed_to_transfer"; };
   };
   acl "allowed_to_transfer" {
       217.70.177.40/32; // adresse IP du ns6.gandi.net
   };

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.

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

Après avoir réalisé ces étapes et attendu que le registrar effectue les modifications, le site est enfin accessible via le nom ima2a5-wateck.site.

Sécurisation du serveur DNS avec DNSSEC

Modification des fichiers de configuration

Dans le fichier named.conf.options nous commencons par ajouter l’option dnssec-enable yes;.

Nous avons ensuite créer un répertoire spécifique qui abritera les clés nécéssaires au fonctionnement de DNSSEC :

mkdir ima2a5-wateck.site.dnssec

Ensuite il nous a fallu générer les clés privées et publiques grâce aux commandes suivantes :

dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE ima2a5-wateck.site -r /dev/urandom

dnssec-keygen -a RSASHA1 -b 1024 -n ZONE ima2a5-wateck.site -r /dev/urandom

Nous avons renommé 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). Voilà le résultat :

   -rw-r--r-- 1 root bind  179 Nov 29 10:12 dsset-ima2a5-wateck.site.
   -rw-r--r-- 1 root bind  619 Nov 29 09:40 ima2a5-wateck.site-ksk.key
   -rw------- 1 root bind 1774 Nov 29 09:40 ima2a5-wateck.site-ksk.private
   -rw-r--r-- 1 root bind  445 Nov 29 09:41 ima2a5-wateck.site-zsk.key
   -rw------- 1 root bind 1010 Nov 29 09:41 ima2a5-wateck.site-zsk.private

Il nous a ensuite fallu inclure les clefs ksk.key et zsk.key dans notre fichier de zone et incrémenter sa version (SERIAL) :

   ; 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
 

Nous avons ensuite signé la zone avec la commande :

dnssec-signzone -o ima2a5-wateck.site -k ima2a5-wateck.site -ksk ../zones/db.ima2a5-wateck.site ima2a5-wateck.site-zsk

Puis modifié le fichier named.conf.local pour utiliser la zone signée de suffixe .signed ainsi que le fichier named.conf.options :

   options {
   // forwarders {
           //     0.0.0.0;
           // };
           //dnssec-validation auto;
           dnssec-enable yes;
           auth-nxdomain no;    # conform to RFC1035
           listen-on-v6 { any; };
           allow-transfer { "allowed_to_transfer"; };
       };
       acl "allowed_to_transfer" {
           217.70.177.40/32; // adresse IP du ns6.gandi.net
   };

Enfin nous avons redémarré bind9 avec :

service bind9 restart

La dernière étape consiste à communiquer à Gandi notre clé publique KSK afin d'activer DNSSEC.

Transmission de la clé publique à Gandi

Clef.png


Configuration Internet de la machine eeePC Morue

Avant d'effectuer des installations nous devons tout d'abord connecté le PC à internet. Pour cela nous avons modifié le fichier /etc/network/interfaces.

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

Puis nous effectuons une mise à jour des paquets via apt-get update.

Cassage de clé WEP

Installation du paquetage AirCrack-ng

Avant de procéder à l'installation, nous mettons d'abords à jour les paquets via la commande :

    apt-get update

Enfin, pour espionner le réseau, nous pouvons installer l'utilitaire Aircrack-ng avec la commande :

   apt-get install aircrack-ng

Utilisation de AirCrack

Après avoir branché la clé usb permettant de se connecter en wifi aux réseaux mis à disposition, nous commençons par lister les interfaces WiFi disponibles sur l'ordinateur : airmon-ng

A ce niveau, nous choisissons l'interface que l'on souhaite écouter  : airmong-ng start wlan0mon

Sachant que la commande airodump-ng permet d'écouter tous les réseaux WiFi présents, nous sélectionnons le réseau ciblé et son type de cryptage avec la commande suivante :

airodump-ng --encrypt wep wlan0mon

Ainsi, nous récupérons les données contenues dans les trames échangées et les stockons dans un fichier spécifique.

Airodump-ng -w crack1.txt -c 2 --bssid [@MAC] wlan0mon

L'explication des arguments de la commande utilisée est la suivante:

  • -c: pour indiquer le canal d'écoute (canal 2 dans notre cas car tous les réseaux Cracotte y sont)
  • -bssid: pour préciser le nom du réseau en question
  • -w: pour indiquer le fichier de sauvegarde des trames écoutées

A ce niveau, nous disposons des éléments à analyser pour décrypter la clé WEP, mais pour des raisons de ressources matérielles, nous les utilisons avec une autre machine plus puissante via

aircrack-ng -b [@MAC] crack1*.cap


Cassage de clé WPA-PSK par force brute

Pour cette partie, nous utilisons le même utilitaire que pour cracker la clé WEP.

Ainsi nous listons les interfaces Wi-Fi avec la commande airmon-ng afin de repérer le réseau Wi-Fi à cracker.

Ensuite on écoute l'interface

airmon-ng start [nom_de_l_interface]

Lorsque l'utilitaire airodump nous indique si des trames WPA sont capturées avec la commande airodump-ng --encrypt wpa wlan0mon, nous lançons aircrack-ng pour tenter de craquer la clef WPA en s'aidant d'un dictionnaire. D'où l'utilisation de l'expression "cassage par force brute", impliquant que l'on doit se rapprocher au maximum du point d'accès.

A ce niveau, va intervenir l'utilitaire crunch qui va tout simplement créer un dictionnaire de toutes les clés de 8 chiffres car on sait d'avance que la clef WPA est un nombre sur 8 chiffres. La commande pour cela est la suivante:

crunch 8 8 0123456789 >> dictionnaire_wpa.txt

Puis nous lançons aircrack-ng

aircrack-ng [fichier.cap] -w dictionnaire_wpa.txt

Sécurisation d'une clé USB avec cryptsetup

Nous avons commencé par installer l'utilitaire cryptsetup :

apt-get install cryptsetup

apt-get install lvm2

On commence par lister les disques détectés par l'ordinateur et visualiser les partitions avec lsblk. Nous avons constaté que l'unique partition de la clé USB à savoir sda était vide


La commande fdisk /dev/sda permet ensuite de rentrer dans la partition

n pour créer une partition

p

d delete

Nous sécurisons 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 définir un mot de passe

cryptsetup open --type luks /dev/sda1 clef-WATECK pour l'ouvrir


Nous un système de fichier au dessus de la partition sécurisée

mkfs.ext4 /dev/mapper/clef-WATECK On le monte (dans un repertoire sur le poste) .

mount -t ext4 /dev/mapper/clef-WATECK /mnt/clef

touch test.txt<.code>

<code>umount /mnt/clef

cryptsetup close --type luks clef_WATECK pour fermer le volume chiffré

Sécurisation réseau filaire par EAP-TLS

Dans cette partie, nous nous sommes beaucoup inspiré des travaux de nos collègues.

Configuration du serveur FreeRadius

Depuis notre machine virtuelle, nous installons freeradius via la commande suivante:

apt-get install freeradius

Puis nous modifierons les fichiers de configuration comme suit:

  • rajouter la ligne suivante sur le fichier /etc/freeradius/3.0/users:
wateck Cleartext-Password := "glopglop"
  • modifier le fichier /etc/freeradius/3.0/mods-enabled/eap comme suit:
eap{
    default_eap_type = peap
}
  • modifier le fichier /etc/freeradius/3.0//mods-enabled/mschap comme suit:
use_mppe = yes
require_encryption = yes
require_strong = yes
[...]
with_ntdomain_hack = yes


  • configurer la borne comme client du serveur radius via le fichier /etc/freeradius/3.0/clients.conf comme suit:
client access-point {                                # nom de notre borne 
       ipaddr          = 10.60.0.100                 # @IP de la nborne
       secret          = glopglop                    # mot de passe
}

Tout est OK jusque là, nous devrons arrêter puis relancer le serveur:

 service freeradius stop
 freeradius -X


Sécurisation du réseau

Etape initiale:

apt purge brltty


  • Nous accédons à la borne Wi-Fi via minicom en s'assurant de bien mettre /dev/ttyUSB0 ,9600 bauds etpas de contrôle de flux:
minicom -os


  • Autoriser l'accès avec les privilèges maximum et entamer la configuration
enable   
Password = "Cisco"
[...]
config term



  • On met la commande suivante pour vérifier l'identité de l'utilisateur (authentication) , pouvoir limiter l'accès à certaines fonctionnalités (authorization) et pouvoir enregistrer les actions de l'utilisateur (accounting) :
aaa new-model


  • On crée un server radius pour notre groupe 4, avec glopglop comme secret word :
radius-server host 193.48.57.164 auth-port 1812 acct-port 1813 key glopglop    


  • Définition du nom du serveur associé à notre groupe :
aaa group server radius radius_groupe4                 


  • Association du serveur de notre groupe à la machine virtuelle:
server 193.48.57.164 auth-port 1812 acct-port 1813


  • Définition du login de l'utilisateur :
aaa authentication login wateck group radius_groupe4  


  • Notre configurons notre BSSID protégé en WPA2-EAP :
dot11 ssid reseau_wateck                                
vlan 4
authentication open eap wateck
authentication network-eap wateck 
authentication key-management wpa


  • Configuration des VLAN :
interface Dot11Radio0                                 
encryption vlan vlan4 mode ciphers aes-ccm tkip    
ssid reseau_wateck 


  • Création d'une sous-interface dot11Radio0 pour notre groupe :
interface dot11Radio0.4
encapsulation dot1Q 4


  • Création d'une sous-interface gigabite pour notre groupe :
interface gigabite0.4                     
encapsulation dot1Q 4
bridge-group 4


  • Ajout de notre BSSID à l'interface Dot11Radio0
interface Dot11Radio0                                 
dot11 ssid reseau_wateck                                   
[...]


interface Dot11Radio0                               
mbssid                                                
dot11 ssid reseau_wateck                               
mbssid guest-mode                                    # pour rendre notre réseau visible


Puis on quitte via exit sans oublier de faire un write sinon on perd tout ce qu'on a fait jusque ici

Puis on tape reload

  • Attribution d'une adresse IP à la borne
enable 
conf t
int bvi1 
ip address 10.60.0.100 255.255.255.0


reseau_wateck


  • Pour pinger le routeur, on tape ping 10.60.0.254
  • Pour pinger la VM, on doit d'abord configurer la passerelle:
enable
conf t
ip route 0.0.0.0 0.0.0.0 10.60.0.253

Puis ping 193.48.57.164