Cahier 2017 groupe n°5 : Différence entre versions

De Wiki d'activités IMA
(Certification SSL)
(Certification SSL)
Ligne 131 : Ligne 131 :
 
Premièrement, sur Gandi nous lançons l'étape d'achat d'un certificat SSL. Puis, sur la VM nous générons le CSR grâce à cette commande:
 
Premièrement, sur Gandi nous lançons l'étape d'achat d'un certificat SSL. Puis, sur la VM nous générons le CSR grâce à cette commande:
  
root@GreenArrow:/etc/apache2/sites-available/clef# openssl req -nodes -newkey rsa:2048 -sha256 -keyout GreenArrow.key -out GreenArrow.csr
+
root@GreenArrow:/etc/apache2/sites-available/clef# openssl req -nodes -newkey rsa:2048 -sha256 -keyout GreenArrow.key -out GreenArrow.csr
Generating a 2048 bit RSA private key
 
  
If you enter '.', the field will be left blank.
+
Generating a 2048 bit RSA private key
-----
 
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]:PolytechLille
 
Organizational Unit Name (eg, section) []:IMA
 
Common Name (e.g. server FQDN or YOUR name) []:jjlddelamuerto.space
 
Email Address []:
 
A challenge password []:
 
An optional company name []:
 
  
root@GreenArrow:/etc/apache2/sites-available/clef# ls
+
If you enter '.', the field will be left blank.
GreenArrow.csr GreenArrow.key
+
-----
 +
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]:PolytechLille
 +
Organizational Unit Name (eg, section) []:IMA
 +
Common Name (e.g. server FQDN or YOUR name) []:jjlddelamuerto.space
 +
Email Address []:
 +
A challenge password []:
 +
An optional company name []:
  
root@GreenArrow:/etc/apache2/sites-available/clef# cat GreenArrow.csr
+
root@GreenArrow:/etc/apache2/sites-available/clef# ls GreenArrow.csr GreenArrow.key
  
-----BEGIN CERTIFICATE REQUEST-----
+
root@GreenArrow:/etc/apache2/sites-available/clef# cat GreenArrow.csr
<CSR à renseigner sur Gandi lors de l'achat du certificat>
+
 
-----END CERTIFICATE REQUEST-----
+
-----BEGIN CERTIFICATE REQUEST-----
 +
<CSR à renseigner sur Gandi lors de l'achat du certificat>
 +
-----END CERTIFICATE REQUEST-----
  
 
Nous continuons donc la procédure pour obtenir le certificat, et attendons donc sa mise en place.
 
Nous continuons donc la procédure pour obtenir le certificat, et attendons donc sa mise en place.

Version du 13 novembre 2017 à 10:36

Présentation générale

Mise en contexte

Le projet de Réseau Avancé est composé d'une partie commune et d'une tâche particulière par binôme. Ce projet consiste en la configuration d'une architecture réseau avec différentes parties, en plus du câblage et de la configuration des routeurs et commutateurs.


La partie commune consiste en la création et la mise en réseau d'une machine virtuelle; ainsi que la création d'un site sécurisé avec la configuration du serveur SSH, DNS sécurisé et du certificat SSL. La virtualisation permet de faire fonctionner sur une même machine plusieurs OS isolés ou des logiciels grâce aux machines virtuelles. Au-delà de la réduction des coûts, la virtualisation permet aussi de manipuler et gérer plus facilement des OS. Cependant, on s'oriente de plus en plus vers l'isolation par des conteneurs car ils permettent au sein d'un même OS, d'isoler les ressources matérielles et d'éviter des surcharges.

Notre tâche particulière est donc de réaliser la gestion des conteneurs au sein d'une machine virtuelle configurée en réseau.

Tâches à effectuer

  • Création d'une machine virtuelle sur le serveur de virtualisation Cordouan
  • Mettre la machine virtuelle en réseau
  • Configuration des services Internet (Serveur SSH, DNS, DNSSEC, Certificat SSL)
  • Crackage de clé Wi-Fi
  • Créer les différents conteneurs et configurer leur accès au réseau (tâche particulière)

Travail effectué

Création d'une machine virtuelle Xen sur Cordouan

On commence par créer une machine virtuelle Xen sur le serveur de virtualisation cordouan.insecserv.deule.net. On se connecte tout d'abord en SSH sur le serveur cordouan.

   1) ssh root@cordouan.insecserv.deule.net
      Mot de passe: mot de passe root habituel

On précise:

  • le nom de machine virtuelle: IMA5-BANANE
  • son adresse IP sur le réseau: 193.48.57.179/28
  • le répertoire où créer les disques virtuels: /usr/local/xen
  • le miroir Debian: http://debian.polytech-lille.fr/debian
  • la distribution: jessie (qui est la distribution stable courante)
   2) xen-create-image --hostname=<IMA5-BANANE> --ip 193.48.57.179/28 --dir /usr/local/xen --netmask=255.255.255.240 --gateway=193.48.57.177 --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie

On modifie 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. Installez les paquetages nécessaires pour SSH, le serveur Web apache2 et le serveur DNS bind (voir la partie services).

   3) xl create /etc/xen/IMA5-BANANE.cfg
      vi /etc/xen/IMA5-BANANE.cfg
      lvcreate -L 10G -n /dev/virtual/IMA5-BANANE-home -v
      lvcreate -L 10G -n /dev/virtual/IMA5-BANANE-var -v
      root@cordouan:~# cat /etc/xen/IMA5-BANANE.cfg
      #
      # Configuration file for the Xen instance IMA5-BANANE, created
      # by xen-tools 4.5 on Mon Sep 11 19:01:21 2017.
      #
      #
      #  Kernel + memory size
      #
      kernel      = '/boot/vmlinuz-3.16.0-4-amd64'
      extra       = 'elevator=noop'
      ramdisk     = '/boot/initrd.img-3.16.0-4-amd64'
      vcpus       = '1'
      memory      = '512'
      #
      #  Disk device(s).
      #
      root        = '/dev/xvda2 ro'
      disk        = [
                 'file:/usr/local/xen/domains/IMA5-BANANE/disk.img,xvda2,w',
                 'file:/usr/local/xen/domains/IMA5-BANANE/swap.img,xvda1,w',
                 'phy:/dev/virtual/IMA5-BANANE-home,xvdb1,w',
 		  'phy:/dev/virtual/IMA5-BANANE-var,xvdc1,w',		 
      #
      #  Physical volumes
      #
      #
      #  Hostname
      #
      name        = 'IMA5-BANANE'  
      #
      #  Networking
      #
      vif         = [ 'ip=193.48.57.179/28 ,mac=00:16:3E:56:71:47,bridge=IMA5sc' ]       
      #
      #  Behaviour
      on_poweroff = 'destroy'
      on_reboot   = 'restart'
      on_crash    = 'restart'

On modifie le fichier de configuration en faisant en sorte que les répertoires var et home de la machine virtuelle soient sur des partitions LVM de l'hôte:

  • la mémoire attribuée: 512 Mo
  • l'adresse ip de la MV: 193.48.57.179/28
  • bridge: IMA5sc
   4) xl list
      root@cordouan:~# xl list
      Name                                        ID   Mem VCPUs	State	Time(s)
      Domain-0                                     0  1993     8     r-----   52219.3
      karmeliett                                   1   128     1     -b----    2483.6
      duvel                                        2   512     1     -b----    4225.6
      deus                                         3   512     1     -b----    4226.4
      trappe                                       4   512     1     -b----    4082.4
      Rincecochon                                  6   512     1     -b----    3788.2
      IMA5-Durian                                 62   512     1     -b----    3237.7
      IMA5-BANANE                                 84   512     1     -b----     152.9
      IMA5-Papaye                                 89   512     1     -b----      35.4
      IMA5-Ananas                                 91   512     1     -b----      27.0

On vérifie que la MV IMA5-BANANE a bien été créée.

   5) xl console IMA5-BANANE

On lance IMA5-BANANE en utilisant le log root et le mot de passe configuré.

Services Internet (SSH, DNS sécurisé et certificat SSL)

On configure à présent les services Internet après avoir acheté un nom de domaine (https://www.banane.space) sur gandi.net pour créer notre site Web sécurisé.

Serveur SSH

Sur notre machine virtuelle, nous avons configuré le fichier sshd_config (PubkeyAuthentication ) :

      root@IMA5-BANANE:~# vim /etc/ssh/sshd_config
      
      RSAAuthentication yes
      PubkeyAuthentication yes
      #AuthorizedKeysFile     %h/.ssh/authorized_keys
      PermitRootLogin yes
      
      root@IMA5-BANANE:~# service ssh restart
Certification SSL

Premièrement, sur Gandi nous lançons l'étape d'achat d'un certificat SSL. Puis, sur la VM nous générons le CSR grâce à cette commande:

root@GreenArrow:/etc/apache2/sites-available/clef# openssl req -nodes -newkey rsa:2048 -sha256 -keyout GreenArrow.key -out GreenArrow.csr
Generating a 2048 bit RSA private key
If you enter '.', the field will be left blank.
-----
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]:PolytechLille
Organizational Unit Name (eg, section) []:IMA
Common Name (e.g. server FQDN or YOUR name) []:jjlddelamuerto.space
Email Address []:
A challenge password []:
An optional company name []:
root@GreenArrow:/etc/apache2/sites-available/clef# ls GreenArrow.csr	GreenArrow.key
root@GreenArrow:/etc/apache2/sites-available/clef# cat GreenArrow.csr
-----BEGIN CERTIFICATE REQUEST-----
<CSR à renseigner sur Gandi lors de l'achat du certificat>
-----END CERTIFICATE REQUEST-----

Nous continuons donc la procédure pour obtenir le certificat, et attendons donc sa mise en place. Pour recevoir le mail contenant le lien pour activer le certificat, nous installons les packages suivants :

root@BANANE:~# apt-get install postfix mailx

Une fois le certificat récupéré, nous les copions tous dans le bon répertoire, puis nous hashons le tout :

root@GreenArrow:/etc/bind# cp certificat.crt /etc/ssl/certs/jjlddelamuerto.space.crt
root@GreenArrow:/etc/bind# cp serveur.key /etc/ssl/private/jjlddelamuerto.space.key
root@GreenArrow:/etc/bind# cp GandiStandardSSLCA2.pem /etc/ssl/certs/GandiStandardSSLCA2.pem
root@GreenArrow:/etc/bind# c_rehash /etc/ssl/certs

Enfin, la dernière étape consiste en la modification des fichiers 000-jjlddelamuerto.space-ssl.conf et ports.conf :

root@GreenArrow:/etc/apache2/sites-available# cat 000-jjlddelamuerto.space-ssl.conf 
    <VirtualHost *:443>
        ServerName www.jjlddelamuerto.space
        ServerAlias jjlddelamuerto.space
        DocumentRoot /var/www/
        CustomLog /var/log/apache2/secure_access.log combined
  
        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/jjlddelamuerto.space.crt
        SSLCertificateKeyFile /etc/ssl/private/jjlddelamuerto.space.key
        SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem
        SSLVerifyClient None
    </VirtualHost>
root@GreenArrow:/etc/apache2# cat ports.conf 
Listen 80
<IfModule ssl_module>

Listen 443

</IfModule>
<IfModule mod_gnutls.c>

Listen 443

</IfModule>

Un redémarrage du service apache2 est maintenant nécessaire :

root@GreenArrow:/etc/apache2# service apache2 stop
root@GreenArrow:/etc/apache2# service apache2 start
root@GreenArrow:/etc/apache2# service apache2 reload

Nous pouvons voir que notre site est maintenant sécurisé, un cadenas vert est bien présent.

Serveur DNS

On commence par modifier les informations de notre nom de domaine sur le site de Gandi. Ensuite, dans "Gérer les Glue Records", nous modifions les informations concernant notre nom de domaine.

  • nom du serveur: ns.banane.space
  • adresse IP: 193.48.57.179
  • serveurs de nom:
    • DNS1: ns.banane.space
    • DNS2: ns6.gandi.net (serveur secondaire de Gandi)

Une fois ces étapes effectuées, nous pouvons passer à la configuration du DNS avec bind. On se place alors dans le dossier /etc/bind de notre machine virtuelle. Nous modifions dans un premier temps le fichier named.conf.local afin d'y créer nos zones :

Sécurisation des données

   1) vi /etc/xen/IMA5-BANANE.cfg
      lvcreate -L 10G -n /dev/virtual/banane-1 -v
      lvcreate -L 10G -n /dev/virtual/banane-2 -v
      lvcreate -L 10G -n /dev/virtual/banane-3 -v
      root@cordouan:~# cat /etc/xen/IMA5-BANANE.cfg
      #
      # Configuration file for the Xen instance IMA5-BANANE, created
      # by xen-tools 4.5 on Mon Sep 11 19:01:21 2017.
      #
      #
      #  Kernel + memory size
      #
      kernel      = '/boot/vmlinuz-3.16.0-4-amd64'
      extra       = 'elevator=noop'
      ramdisk     = '/boot/initrd.img-3.16.0-4-amd64'
      vcpus       = '1'
      memory      = '512'
      #
      #  Disk device(s).
      #
      root        = '/dev/xvda2 ro'
      disk        = [
                 'file:/usr/local/xen/domains/IMA5-BANANE/disk.img,xvda2,w',
                 'file:/usr/local/xen/domains/IMA5-BANANE/swap.img,xvda1,w',
                 'phy:/dev/virtual/IMA5-BANANE-home,xvdb1,w',
 		  'phy:/dev/virtual/IMA5-BANANE-var,xvdc1,w',
                 'phy:/dev/virtual/banane-1,xvdd,w',
                 'phy:/dev/virtual/banane-2,xvde,w',
                 'phy:/dev/virtual/banane-3,xvdf,w',		 
      #
      #  Physical volumes
      #
      #
      #  Hostname
      #
      name        = 'IMA5-BANANE'  
      #
      #  Networking
      #
      vif         = [ 'ip=193.48.57.179/28 ,mac=00:16:3E:56:71:47,bridge=IMA5sc' ]       
      #
      #  Behaviour
      on_poweroff = 'destroy'
      on_reboot   = 'restart'
      on_crash    = 'restart'

On reconfigure le fichier IMA5-BANANE.cfg en créant 3 nouvelles partitions LVM banane-X de 1 Go associées à notre VM.

   2) xl console IMA5-BANANE

On relance la MV IMA5-BANANE.

   3) apt-get install mdadm

Nous avons ensuite installé l paquetage mdadm puis rebooté la MV.

   4) mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 /dev/xvdd /dev/xvde /dev/xvdf

Nous créons le volume /dev/md0 pour créer un RAID5 logiciel avec les trois partitions obtenues.


arrêtez la machine virtuelle, retirez lui une des trois partitions, relancez la. Essayez de remonter votre RAID5, que constatez-vous ?


   5) root@IMA5-BANANE:~# mdadm --detail /dev/md0
/dev/md0:
       Version : 1.2
 Creation Time : Wed Oct 25 18:27:13 2017
    Raid Level : raid5
    Array Size : 2095104 (2046.34 MiB 2145.39 MB)
 Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
  Raid Devices : 3
 Total Devices : 3
   Persistence : Superblock is persistent
   Update Time : Wed Oct 25 17:03:20 2017
         State : clean 
Active Devices : 3
Working Devices : 3
Failed Devices : 0
 Spare Devices : 0
        Layout : left-symmetric
    Chunk Size : 512K
          Name : IMA5-BANANE:0  (local to host IMA5-BANANE)
          UUID : b70ad336:fb198d84:a5909f1c:f4b33229
        Events : 2
   Number   Major   Minor   RaidDevice State
      0     202       48        0      active sync   /dev/xvdd
      1     202       64        1      active sync   /dev/xvde
      2     202       80        2      active sync   /dev/xvdf


   6) root@IMA5-BANANE:~# mdadm --detail /dev/md0
/dev/md0:
       Version : 1.2
 Creation Time : Wed Oct 25 18:27:13 2017
    Raid Level : raid5
    Array Size : 2095104 (2046.34 MiB 2145.39 MB)
 Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
  Raid Devices : 3
 Total Devices : 2
   Persistence : Superblock is persistent
   Update Time : Wed Oct 25 18:51:56 2017
         State : clean, degraded 
Active Devices : 2
Working Devices : 2
Failed Devices : 0
 Spare Devices : 0
        Layout : left-symmetric
    Chunk Size : 512K
          Name : IMA5-BANANE:0  (local to host IMA5-BANANE)
          UUID : b70ad336:fb198d84:a5909f1c:f4b33229
        Events : 12
   Number   Major   Minor   RaidDevice State
      0       0        0        0      removed
      1     202       64        1      active sync   /dev/xvde
      2     202       80        2      active sync   /dev/xvdf
On copie des données sur le RAID5.
   7) root@IMA5-BANANE:~# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 xvdd[3] xvde[1] xvdf[2]
     2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [_UU]
     [===========>.........]  recovery = 59.7% (627140/1047552) finish=0.2min speed=28506K/sec
unused devices: <none>
root@IMA5-BANANE:~# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 xvdd[3] xvde[1] xvdf[2]
     2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [_UU]
     [============>........]  recovery = 64.5% (676392/1047552) finish=0.2min speed=29408K/sec     
unused devices: <none>
root@IMA5-BANANE:~# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 xvdd[3] xvde[1] xvdf[2]
     2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [_UU]
     [=============>.......]  recovery = 66.2% (695080/1047552) finish=0.2min speed=28961K/sec     
unused devices: <none>
root@IMA5-BANANE:~# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 xvdd[3] xvde[1] xvdf[2]
     2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [_UU]
     [=============>.......]  recovery = 68.1% (714664/1047552) finish=0.1min speed=28586K/sec
unused devices: <none>
root@IMA5-BANANE:~# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 xvdd[3] xvde[1] xvdf[2]
     2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [_UU]
     [==================>..]  recovery = 94.6% (991996/1047552) finish=0.0min speed=29206K/sec   
unused devices: <none>
root@IMA5-BANANE:~# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 xvdd[3] xvde[1] xvdf[2]
     2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]     
unused devices: <none>

Cryptage des données

cryptsetup luksFormat -c aes -h sha256 /dev/mmcblk1
cryptsetup luksOpen /dev/sdb1 crypt_sd
mkfs.ext4 /dev/mapper/crypt_sd
mount /dev/mapper/crypt_sd /mnt
vi /mnt/test.txt #on marque un texte dans le fichier
umount /mnt
cryptsetup luksClose crypt_sd

Mise en réseau de la MV Xen IMA5-BANANE