TP sysres IMA2a5 2017/2018 G3

De Wiki d'activités IMA

Introduction

Dans cette page, nous avons décrit toutes les manipulations nécessaires afin de mener à bien ce projet.

Vous trouverez en annexe tous les fichiers de configuration liés à ce projet (ceux de la machine virtuelle, de bind, d'apache, de postfix).

Voici le sommaire de ce projet :

Création et configuration de la Machine virtuelle

Création de la machine virtuelle

Nous avons tout d'abord créé une machine virtuelle, stockée sur le serveur cordouan. Cette machine est une MV Xen, nommée duvel (en référence au doux breuvage portant le même nom).

La machine virtuelle est hébergée sur le serveur cordouan. Voici les différentes commandes nécessaires pour créer la machine virtuelle :

xen-create-image --hostname=duvel --dhcp --dir=/usr/local/xen

Ensuite, nous avons allouer de la mémoire à nos /var et /home sur une partition du serveur Cordouan.

Voici les lignes de commandes permettant la création des partitions :

lvcreate -L10G -nIMA2A5_duvel_home virtual ; mke2fs /dev/virtual/IMA2A5_duvel_home
lvcreate -L10G -nIMA2A5_duvel_var virtual ; mke2fs /dev/virtual/IMA2A5_duvel_var

Le -L10G permet d'imposer une taille de 10 gigas.

Il faut alors ajouter les lignes suivantes à duvel.cfg afin de permettre à la MV duvel l'accès à ces partitions :

disk        = [
                'file:/usr/local/xen/domains/duvel/disk.img,xvda2,w',
                'file:/usr/local/xen/domains/duvel/swap.img,xvda1,w',
                'phy:/dev/virtual/IMA2A5_duvel_var,xvdb1,w',
                'phy:/dev/virtual/IMA2A5_duvel_home,xvdb2,w',
              ]

Configuration réseau de la MV

Lorsque notre machine virtuelle a été créée, nous avons mis en place une configuration réseau temporaire (adresse IP du réseau Insecure). Une fois que les collègues ont mis en place ce réseau, nous avons configuré notre réseau final. Sa nouvelle adresse IP est 193.48.57.165. Voici la configuration réseau du fichier /etc/network/interfaces :

    //The loopback network interface
         auto lo
         iface lo inet loopback
    // The primary network interface
         auto eth0
         iface eth0 inet static
            address 193.48.57.165
            netmask 255.255.255.240
            gateway 193.48.57.174


Création du DNS

Installation des paquets

Nous avons installé quelques paquets qui nous serviront pour la suite, notammant :
  • apache2 comme serveur web
  • bind9 pour monter notre serveur DNS
apt-get install bind9, apache2

Configuration de bind9


Après avoir acheté un nom de domaine sur gandi.net (duvel.space), nous avons monté le serveur DNS via bind9. Nous avons en premier lieu modifier les fichiers :

  • named.conf.local :
  • zone "duvel.space" { 
    type master;
    file "/etc/bind/webmail.duvel.space";
    //  allow-transfer {  };
    


  • named.conf.options :
  • dnssec-validation auto;
    auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
    


  • webmail.duvel.space :
  • $TTL 604800
    @ IN SOA ns.duvel.space. root.duvel.space. (
             3298267243       ; Version
             7200             ; Refresh (2h)
             3600             ; Retry   (1h)
             1209600          ; Expire (14j)
             259200 )         ; Minimum TTL (3j)
      IN NS ns.duvel.space.
      IN NS ns6.gandi.net.
    
    ns      IN A 193.48.57.165
    ns6     IN A 217.70.177.40
    

Une fois que la configuration de bind est terminée, nous avons ajouté les adresses IP sur gandi et ajuster la configuration de gandi. Après quelques bonnes heures de propagation, le DNS fonctionne. On obtient la page par défaut d'apache sur un navigateur à l'adresse ns.duvel.space.

Configuration DNS sécurisé

    Après avoir ajouté "dnssec-enable yes" dans le fichier "named.conf.options", nous avons modifié le fichier webmail.duvel.space pour la compatibilité avec les mails (ajout des 2 lignes suivantes).
    IN MX 100 ns.duvel.space.  //pour autoriser le serveur de mail.
    www	IN CNAME ns
    //pour pouvoir accéder au site web en tapant www.duvel.space

    Nous avons ensuite généré les clefs asymétriques :

    dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE duvel.space
    dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE duvel.space
    

    Une fois ces clefs créées, nous les avons ajouté dans webmail.duvel.space :

    $include /etc/bind/duvel.space.dnssec/duvel.space-ksk.key
    $include /etc/bind/duvel.space.dnssec/duvel.space-zsk.key
    

    Enfin, il faut signer la zone via la commande :

    dnssec-signzone -o duvel.space -k duvel.space-ksk ../webmail.duvel.space duvel.space-zsk
    

    Le DNSSEC est alors correctement configuré.

    Sécurisation du site web par certificat

    Tout d'abord, il faut utiliser les commandes Apache pour autoriser le ssl :

    a2ensite default-ssl.conf
    a2enmod ssl
    

    Gandi propose un certificat gratuit lorsque l'on achète un domaine.

    Nous ajountons donc 3 lignes de configuration dans le fichier default-ssl.conf :

    SSLCertificateFile	/root/duvel.crt
    SSLCertificateKeyFile /root/duvel.key
    SSLCertificateChainFile /root/GandiStandardSSLCA2.pem
    
    • Le fichier duvel.crt contient le certificat.
    • Le fichier duvel.key contient clef privée du serveur.
    • Le fichier GandiStandardSSLCA2.pem contient la chaîne de certification (fournie par gandi.net).

    La config ssl de apache a aussi été modifier pour avoir un site en https sur le port 443 avec certificat.

    <IfModule mod_ssl.c>
    <VirtualHost *:443>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    SSLEngine on
    SSLCertificateFile /root/duvel.crt
    SSLCertificateKeyFile /root/duvel.key

    SSLCertificateChainFile /root/GandiStandardSSLCA2.pem
    <FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
    SSLOptions +StdEnvVars
    </Directory>

    BrowserMatch "MSIE [2-6]" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0
    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
    </VirtualHost>
    </IfModule>



    Nous avons ensuite créé les 2 clefs asymétriques suivantes:

  • clef asym clef de zone : Kduvel.space.+005+15754
  • clef asym clef d'enregistrement : Kduvel.space.+005+43650


    Tâche spécifique: Création d'un serveur mail

    L'idée est ici de créer un serveur mail sur notre machine virtuelle à partir de postfix, tout en utilisant des conteneurs correspondants à chaque utilisateur.
    Les conteneurs sont créés avec Docker. Pour cela, on récupère une image avec la commande "docker pull debian" et on le créé sur notre machine avec "docker run -i -t debian /bin/bash"


    Crack de la clef WEP

    • On commence par chercher le point d'accès:
      airodump-ng --encrypt wep wlan0mon
    • Ensuite on écoute les trames wifi:
      airodump-ng -w out -c 4 --essid ***** wlan0mon
    • On lance ensuite la commande suivante dans un autre terminal pour trouver la clef, la recherche dure environ 5 minutes. Ce temps est dû au fait que l'on procède par tests (force brute)
      aircrack-ng out-01.cap
      KEY FOUND! [ 63:32:34:67:4A:3A:51:34:76:25:43:77:3F ] (ASCII: c24gJ:Q4v%Cw? )