TP sysres IMA2a5 2018/2019 G3

De Wiki d'activités IMA
Révision datée du 30 novembre 2018 à 16:33 par Lbeghin (discussion | contributions) (Installation de la VM Xen)

Projet de Killian et Lucas

Equipement réseau choisis : Routeur

Introduction

Ce projet consiste à mettre en place une maquette de réseau. Au travers de ce projet, nous serons amené à manipuler les protocoles de redondance réseau ainsi que le protocole IPv6. Ce projet comporte une partie système en plus de la partie réseau. Dans cette partie, nous allons devoir installer une machine virtuelle (sous Xen), mettre en place un commutateur logiciel et prendre en main l'outils docker. Au cours de ce projet, nous découvrirons également la mise en place d'un réseau wifi sécurisé et un site web en HTTPS.

Partie réseau

Le but de ce TP est de mettre en place un réseau redondé permettant aux machines virtuelles de tous les groupes d'accéder au réseau de l'école et à internet même en cas de défaillance de l'un de nos équipements réseaux. Dans la mise en place de ce réseau, nous sommes en charge de la configuration du routeur Cisco 4331.

Détermination de la table d'adressage

Avant de commencer à configurer le routeur, il a fallu se mettre d'accord avec le Groupe 4 en charge du 2ème routeur afin de déterminer la table d'adressage de notre réseau. Nous avions à notre disposition le réseau IPv4 routé suivant : 193.48.57.160/27 nous l'avons découpé en deux réseau "/28" afin d'avoir un réseau pour notre classe et un pour les IMA en formation initiale. Nous avons ensuite redécoupé le réseau et attribué des adresses IP à chaque routeur dans tous les réseaux nécessaires. Nous avons obtenu la table située en page d'accueil (ici).

Configuration du Routeur

Une fois la table d'adressage déterminée, nous avons configuré le routeur Cisco 4331.

Connexion

Pour accéder au routeur, nous nous somme connecté au routeur à l'aide du PC portable à notre disposition. Dans un terminal nous avons ouvert minicom et configuré les paramètres de connexion :

   minicom -os

Les paramètres de connexion sont les suivants :

  1. ttyACM0
  2. 9600 bauds
  3. flow control : no

Configuration

Dans un premier temps, nous nous limitons à configurer tout le réseau en IPv4. Une fois l'IPv4 configuré, toutes les VMs auront un accès internet et tous les groupes pourront travailler sur leur VM. Dans un second temps, nous ajouterons l'IPv6.

Commandes Cisco utiles
   enable           // passage en admin
   write            // Sauvegarde de la config    !! PENSER A SAUVEGARDER AVANT UNE COUPURE DU ROUTEUR !!
   show interface   // Montre l'état d'une interface
   shutdown         // Eteint un port ou un BDI   (Dépend du niveau au quel on utilise la commande)
   no shutdown      // Allume un port ou un BDI   (Dépend du niveau au quel on utilise la commande)
   exit             // recule d'un niveau
Configuration des ports
 enable                                                  // Passage en administrateur

 configure terminal

 interface GigabitEthernet0/0/0                          //Vers le Commutateur 6006
   no ip address
   negotiation auto
   media-type RJ45

   service instance 2 ethernet
        encapsulation dot1q 2
        rewrite ingress tag pop 1 symmetric
        bridge-domain 2
   
   service instance 3 ethernet
        encapsulation dot1q 3
        rewrite ingress tag pop 1 symmetric
        bridge-domain 3
   
   service instance 4 ethernet
        encapsulation dot1q 4
        rewrite ingress tag pop 1 symmetric
        bridge-domain 4
   
   service instance 5 ethernet
        encapsulation dot1q 5
        rewrite ingress tag pop 1 symmetric
        bridge-domain 5
   
   service instance 6 ethernet
        encapsulation dot1q 6
        rewrite ingress tag pop 1 symmetric
        bridge-domain 6

     service instance 42 ethernet
        encapsulation dot1q 42
        rewrite ingress tag pop 1 symmetric
        bridge-domain 42
    
   service instance 130 ethernet
        encapsulation dot1q 130
        rewrite ingress tag pop 1 symmetric
        bridge-domain 130
    
 interface GigabitEthernet0/0/1                          //Vers le routeur de l'école
   no ip address
   negotiation auto
   service instance 130 ethernet
        encapsulation dot1q 130
        bridge-domain 130
  
 interface GigabitEthernet0/0/2                          //Vers le Commutateur 4006
   no ip address
   negotiation auto
   media-type sfp
 
   service instance 2 ethernet
        encapsulation dot1q 2
        rewrite ingress tag pop 1 symmetric
        bridge-domain 2
   
   service instance 3 ethernet
        encapsulation dot1q 3
        rewrite ingress tag pop 1 symmetric
        bridge-domain 3
   
   service instance 4 ethernet
        encapsulation dot1q 4
        rewrite ingress tag pop 1 symmetric
        bridge-domain 4
   
   service instance 5 ethernet
        encapsulation dot1q 5
        rewrite ingress tag pop 1 symmetric
        bridge-domain 5
   
   service instance 6 ethernet
        encapsulation dot1q 6
        rewrite ingress tag pop 1 symmetric
        bridge-domain 6

     service instance 42 ethernet
        encapsulation dot1q 42
        rewrite ingress tag pop 1 symmetric
        bridge-domain 42

   service instance 130 ethernet
        encapsulation dot1q 130
        rewrite ingress tag pop 1 symmetric
        bridge-domain 130

Pour le spanning-tree, on tape :

 spanning-tree mode pvst

Pour la configuration de l'OSPF :

configure terminal
   router ospf 1                                        //Pour l'échange de routes ipv4
       router-id 10.100.0.1
       log-adjacency-changes
       summary address 193.48.57.160 255.255.255.240
       redistribute connected subnets
       network 192.168.222.8 0.0.0.7 area 1
   exit
exit
Configuration des BDI (Vlans)

Ici nous configurons les différents BDI. On attribue donc une adresse IP au routeur dans chacun d'entre en fonction de ce qui a été défini dans la table d'adressage. Pour le BDI 130, il faut s'assurer que l'adresse est lire car c'est le réseau de l'école et non le notre. Pour cela, nous avons effectué un ping sur l'adresse que nous voulions our otre routeur et vérifié qu'elle ne répondait pas avant de l'attribuer au routeur.

Une fois cette précaution prise, voici les commandes à taper :

configure terminal

  interface BDI130
      ip address 192.168.222.1 255.255.255.248        //IPV4 - pas besoin de HSRP              
      ipv6 address FE80::42:2 link-local              //IPV6                              
      ipv6 enable
  exit

  interface BDI2
      ip address 10.60.1.254 255.255.255.000           //IPV4
      standby version 2
      standby 2 ip 10.60.1.252                       //Déclaration adresse virtuelle par HSRP                              
      standby 2 preempt                                       
      ipv6 address 2001:660:4401:60B2::/64 eui-64      //IPV6                              
      ipv6 enable                                                                    
      ipv6 nd prefix 2001:660:4401:60B2::/64 1000 900  //Donner un préfixe IPV6 à chaque machine                              
      ipv6 nd router-preference Low                    //Définition priorité pour la redondance
                      
  exit
  interface BDI3
      ip address 10.60.2.254 255.255.255.000           //IPV4
      standby version 2
      standby 3 ip 10.60.2.252                       //Déclaration adresse virtuelle par HSRP                              
      standby 3 preempt                                       
      ipv6 address 2001:660:4401:60B3::/64 eui-64      //IPV6                              
      ipv6 enable                                                                    
      ipv6 nd prefix 2001:660:4401:60B3::/64 1000 900  //Donner un préfixe IPV6 à chaque machine                              
      ipv6 nd router-preference Low                    //Définition priorité pour la redondance
                           
  exit
  interface BDI4
      ip address 10.60.3.254 255.255.255.000           //IPV4
      standby version 2
      standby 4 ip 10.60.3.252                       //Déclaration adresse virtuelle par HSRP                              
      standby 4 preempt                                       
      ipv6 address 2001:660:4401:60B4::/64 eui-64      //IPV6                              
      ipv6 enable                                                                    
      ipv6 nd prefix 2001:660:4401:60B4::/64 1000 900  //Donner un préfixe IPV6 à chaque machine                              
      ipv6 nd router-preference Low                    //Définition priorité pour la redondance

  interface BDI5
      ip address 10.60.4.254 255.255.255.000           //IPV4
      standby version 2
      standby 5 ip 10.60.4.252                       //Déclaration adresse virtuelle par HSRP                              
      standby 5 preempt                                       
      ipv6 address 2001:660:4401:60B5::/64 eui-64      //IPV6                              
      ipv6 enable                                                                    
      ipv6 nd prefix 2001:660:4401:60B5::/64 1000 900  //Donner un préfixe IPV6 à chaque machine                              
      ipv6 nd router-preference Low                    //Définition priorité pour la redondance
                          
  exit
  interface BDI6
      ip address 10.60.5.254 255.255.255.000           //IPV4
      standby version 2
      standby 6 ip 10.60.5.252                       //Déclaration adresse virtuelle par HSRP                              
      standby 6 preempt                                       
      ipv6 address 2001:660:4401:60B6::/64 eui-64      //IPV6                              
      ipv6 enable                                                                    
      ipv6 nd prefix 2001:660:4401:60B6::/64 1000 900  //Donner un préfixe IPV6 à chaque machine                              
      ipv6 nd router-preference Low                    //Définition priorité pour la redondance
                                         
  exit
  interface BDI42
      ip address 193.48.57.174 255.255.255.240         //IPV4
      standby version 2
      standby 7 ip 193.48.57.174                       //Déclaration adresse virtuelle par HSRP                              
      standby 7 preempt                                       
      ipv6 address 2001:660:4401:60B1::/64 eui-64      //IPV6                              
      ipv6 enable                                                                    
      ipv6 nd prefix 2001:660:4401:60B1::/64 1000 900  //Donner un préfixe IPV6 à chaque machine                              
      ipv6 nd router-preference Low                    //Définition priorité pour la redondance
                                         
  exit
exit

Problèmes Rencontrés

Le premier problème rencontré s'est montré lorsque lors d'un reboot du routeur. En effet le routeur avait booté sur une ancienne version de l'OS qui n'implémentait pas le spanning-tree.

enable
conf t
    boot system bootflash:isr4300-universalk9.03.16.05.S.155-3.S5-ext.SPA.bin
    exit
write
reload

Un autre problème à été que si le BDI 130 de l'interface GigabyteEthernet0/0/1 est configuré en untagged, alors il ne gère plus le spanning-tree.

Nous avons donc dû configurer le port du commutateur de l'école en trunk au lieu de VLAN 130.

Nous avons donc configuré l'interface GigabyteEthernet0/0/1 de notre routeur avec le BDI 130 en taggé.

Test d'intrusion Wifi

Installation du Wifi

La carte wifi du PC portable fourni pour le TP n'est pas reconnue par l'OS. Nous avons donc utilisé un dongle wifi externe (Wi-Pi). Pour cela nous avons commencé par installer les drivers de la clé. Ces drivers se trouvent dans le package firmware-ralink.

Commande pour installer le package :

apt-get install firmware-ralink


Crackage de la clé WEP

La première clé que nous avons cracké est une clé WEP (assez peu sécurisée). Pour cracker cette clé, nous avons utilisé un package contenant tous les utilitaires nécessaires (aircrack-ng).

apt-get install aircrack-ng

Une fois le paquet installé, on liste les interfaces disponibles pour trouver la clé wifi.

airmon-ng

Une fois notre interface trouvée, on la démarre :

airmon start 'interface'

Le nom de l'interface est wlx40a5ef05aa25. Ce nom change à l’exécution de la commande. On doit relancer la commande sur l'interface wlan0mon.

L'interface est alors démarrée.

Maintenant que l'interface est démarrée, on peut écouter pour trouver quelle borne wifi émet. Pour cela on utilise la commande suivante :

airodump-ng -i wlan0mon

On repère une cracotte qui émet des données.

Une fois la cracotte repérée, on utilise la commande suivante pour écouter et enregistrer toute ce quelle émet.

airodump -i wlan0mon -c canal d'émission -d SSID -w /root/crack.cap
-i : Spécifie l'interface d'écoute
-c : Spécifie le canal d'écoute
-d : Spécifie le SSID sur lequel on écoute
-w : Spécifie le fichier dans lequel on écrit

En parallèle de cette commande, on exécute la commande suivante sur un autre terminal pour craquer la clé WEP :

aircrack-ng /root/crack.cap-01.ivs

Cette commande prend en paramètre le fichier créé par la commande airodump.

Une fois la clé craquée, aircrack-ng nous donne la clé en hexadécimal.

Craquage WPA

Une fois le caquage de la clé WEP réussi, nous somme passé au craquage d'une clé WPA. Cette méthode de sécurisation étant plus performante, il nous fallait des indices sur la clé avant de tenter de la casser. On sait que la clé est composé de 8 chiffres. Nous avons donc pu générer un dictionnaire de toutes les clés possibles à l'aide d'un programme c très simple :

#include <stdio.h>
#include <stdlib.h>


int main (){
       FILE* dico = NULL;
       unsigned long int cpt = 0;

       dico = fopen("dico.txt", "w");

       while (cpt < 100000000){
               fprintf(dico,"%08ld\n",cpt); 
               cpt ++;
       }
       fclose(dico);
       return 0;
}

Une fois le dictionnaire de clé généré, on reprend les premières étapes du cassage de la clé WEP :

airodump -i wlan0mon
airodump -i wlan0mon -c canal d'émission -d SSID -w /root/crack.cap

Ici on a pas forcément besoin de trouver une cracotte entrain d'émettre. On doit juste écouter jusqu'à capturer les entêtes d'identifications.

Une fois les entêtes récupérées, on récupère le fichier pour le mettre sur un ordinateur plus puissant pour accélérer la vitesse de craquage. Pour casser la clé on utilise la commande suivante :

aircrack-ng crack.cap-01.ivs -w dico.txt
-w permet de spécifier le fichier contenant les clé à tester

Cette opération est très longue :

- 1 jour et 15h annoncé sur le PC portable

- 7h annoncé sur une Zabeth

Nous n'avons donc pas eu le temps de craquer la clé.


Machine Virtuelle

Après avoir rendu le réseau fonctionnel, nous avons pu passer à la configuration de notre machine virtuelle. Cette machine virtuelle est implémentée sur un serveur faisant partie de notre réseau. Elle a pour but de recevoir différents docker contenant des services internet :

  • Serveur DNS
  • Site Web (en HTTP et en HTTPS)
  • Serveur d'identification

Installation de la VM Xen

La première étape a été de créer la machine virtuelle sur le serveur cordouan. Pour cela on commence par aller sur cordouan :

ssh root@cordouan.insecserv.deule.net

Arrivé sur cordouan on crée notre VM :

xen-create-image --hostname=rince-cochon --dhcp --dir=/usr/local/xen --dist=ascii --apt-proxy=http://proxy.polytech-lille.fr:3128 --mirror=http://fr.deb.devuan.org/merged/ --force

Nous avons ensuite modifié le fichier rince-cochon.cfg afin d'ajouter la VM dans un bridge afin de lui donner un accès internet. Dans un premier temps, nous l'avons mise dans le bridge StudentsInfo car notre réseau n'était pas tout à fait opérationnel.

vif = [ 'mac=Adresse mac, bridge=StudentsInfo' ]

On peut maintenant lancer notre VM (commandes à taper en étant de /etc/xen)

xl create rince-conchon.cfg
xl console rince-cochon

Lors de la première connexion nous nous sommes rendu compte que le mot de passe par défaut qui nous est donné au moment de la création est trop complexe. Nous l'avons donc modifié par un mot de passe plus facile à retenir.

passwd

Notre VM créée, nous avons enfin pu passer aux choses sérieuses. Nous avons monté le /var et le /home de notre VM sur cordouan.

Sur Cordouan, il faut créer des volumes de 10Go pour chaque répertoire

lvcreate -L10G -n apIMA5-rince-cochon-home virtual
lvcreate -L10G -n apIMA5-rince-cochon-var virtual

Et nous avons créé un système de fichier dans ces volumes :

mke2fs /dev/virtual/apIMA5-rince-cochon-home
mke2fs /dev/virtual/apIMA5-rince-cochon-var

On indique maintenant à notre VM où se trouve ses répertoires tous neufs :

disk    	= [
   [...]         
                      'phy:/dev/virtual/apIMA5-PaixDieu-home,xvdb1,w',
                      'phy:/dev/virtual/apIMA5-PaixDieu-var,xvdb2,w',
                ]

La commande fdisk -l nous permet de vérifier que les volumes sont bien montés.

On modifie le fichier /etc/fstab de la VM pour 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

Pour le volume /var, nous devons procéder différemment et lançons les commandes suivantes depuis la VM :

   mount /dev/xvdb2 /mnt
   mv /var/* /mnt
   umount /mnt
   mount -a

On vérifie que tout est OK avec df.

Configuration des Dockers

HTTP

Réservation du nom de domaine

Configuration du Docker

HTTPS

Modifications sur Gandi

Modififications du Docker

Bind

FreeRadius