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

De Wiki d'activités IMA
(Sécurisation du serveur web (Protocole https))
 
(41 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 
+
Membres du groupe:
== chemins des fichier ==
+
* '''Malick SECK'''
/etc/xen/ima2a5-wateck.cfg  (fichier conf pour VM)
+
* '''Gael WATBLED'''
 
 
/etc/xen# cat ima2a5-wateck.cfg
 
 
 
root@ima2a5-wateck:/etc/bind# ls
 
bind.keys  db.127  db.empty  db.root       ima2a5-wateck.site.dnssec  named.conf.default-zones  named.conf.options     named.run  zones
 
db.0   db.255  db.local  dsset-zone-dns.  named.conf named.conf.local   named.conf.options.save  rndc.key  zones.rfc1918
 
 
 
root@ima2a5-wateck:/etc/apache2# ls
 
apache2.conf  certificate  conf-available  conf-enabled  envvars  logs magic  mods-available  mods-enabled  ports.conf  sites-available  sites-enabled
 
 
 
root@ima2a5-wateck:/etc/ssh# ls
 
moduli     ssh_host_dsa_key   ssh_host_ecdsa_key   ssh_host_ed25519_key     ssh_host_rsa_key   sshd_config
 
ssh_config  ssh_host_dsa_key.pub  ssh_host_ecdsa_key.pub  ssh_host_ed25519_key.pub  ssh_host_rsa_key.pub
 
 
 
 
 
 
 
/etc/hosts pour relier IP à nameserver
 
 
 
 
 
  
  
Ligne 121 : Ligne 102 :
 
|}
 
|}
  
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
+
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.  
 
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.  
Ligne 129 : Ligne 110 :
 
Le fichier de configuration est comme suit:
 
Le fichier de configuration est comme suit:
 
''
 
''
'''... voir copie fichier de conf (pour changement)...'''''''Texte italique''
+
 
  
 
     [...]
 
     [...]
Ligne 144 : Ligne 125 :
 
     [...]
 
     [...]
 
''
 
''
'''... (voir fichier . cfg anyway) ...'''''
+
 
  
 
     #
 
     #
Ligne 168 : Ligne 149 :
 
     disk        = [
 
     disk        = [
 
                       'file:/usr/local/xen/domains/ima2a5-wateck/disk.img,xvda2,w',
 
                       'file:/usr/local/xen/domains/ima2a5-wateck/disk.img,xvda2,w',
                  'file:/usr/local/xen/domains/ima2a5-wateck/swap.img,xvda1,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-home,xvdb1,w',
                  'phy:/dev/virtual/ima2a5-wateck-var,xvdb2,w',
+
                      'phy:/dev/virtual/ima2a5-wateck-var,xvdb2,w',
  'phy:/dev/virtual/ima2a5-wateck-d1,xvdb3,w',
+
      'phy:/dev/virtual/ima2a5-wateck-d1,xvdb3,w',
  'phy:/dev/virtual/ima2a5-wateck-d2,xvdb4,w',
+
      'phy:/dev/virtual/ima2a5-wateck-d2,xvdb4,w',
  'phy:/dev/virtual/ima2a5-wateck-d3,xvdb5,w',
+
      'phy:/dev/virtual/ima2a5-wateck-d3,xvdb5,w',                
              ]
+
                  ]
 
 
 
 
 
     #
 
     #
 
     #  Physical volumes
 
     #  Physical volumes
 
     #
 
     #
 
 
 
     #
 
     #
 
     #  Hostname
 
     #  Hostname
Ligne 200 : Ligne 177 :
 
     on_crash    = '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é)
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>
 
  
 
=== Montage de Var et Home dans cordouan ===
 
=== Montage de Var et Home dans cordouan ===
Ligne 327 : Ligne 304 :
 
*<code>Service apache2 start</code>
 
*<code>Service apache2 start</code>
  
=== Configuration du serveur apache2 ===
+
 
 +
== 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>.
 
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>.
  
Ligne 346 : Ligne 341 :
 
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.
 
Ce fichier sera modifié par la suite lorsque nous sécuriserons le serveur web (https). Une fois ce fichier configuré nous pouvons lancer le serveur.
  
     a2ensite ima2a5-rex4ever.site
+
     a2ensite ima2a5-wateck.site
  
 
     service apache2 reload
 
     service apache2 reload
Ligne 405 : Ligne 400 :
  
 
=== Activation du module SSL ===
 
=== Activation du module SSL ===
Tout d'abord nous devons activer le module SSL sur notre serveur Apache2 :  
+
Tout d'abord nous devons activer le module SSL sur notre serveur Apache2, en créant un lien symbolique via a2en :  
  
 
     sudo a2enmod ssl
 
     sudo a2enmod ssl
Ligne 445 : Ligne 440 :
  
 
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.
 
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 :  
 
Comme d'habitude il faut maintenant relancer le service afin que les modifications soient effectives :  
  
     a2dissite ima2a5-rex4ever.site
+
     a2dissite ima2a5-wateck.site
     a2ensite ima2a5-rex4ever.site
+
     a2ensite ima2a5-wateck.site
 
     service apache2 restart
 
     service apache2 restart
  
Ligne 456 : Ligne 458 :
 
== Mise en place du serveur DNS ==
 
== Mise en place du serveur DNS ==
  
=== Installation du serveur DNS avec Bind9 ===
+
=== 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.
 
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.
  
Ligne 472 : Ligne 474 :
 
     ;
 
     ;
 
     $TTL 14400
 
     $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. (
 
     @      IN      SOA    ns1.ima2a5-wateck.site. host.ima2a5-wateck.site. (
                         201006602 ; Serial
+
                         201006601 ; Serial
 
                         7200 ; Refresh
 
                         7200 ; Refresh
 
                         120 ; Retry
 
                         120 ; Retry
Ligne 487 : Ligne 487 :
 
     [...]
 
     [...]
  
ttttttttttttttttttttttttttttttttttttttttt
+
==== Définitions des hôtes ====
  
==== 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> :
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.
+
 
 +
    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"; };
 +
    };
  
'''''... voir fichier named.conf.local...
+
    acl "allowed_to_transfer" {
... voir fichier named.conf.options...
+
        217.70.177.40/32; // adresse IP du ns6.gandi.net
... voir fichier db.ima2a5-wateck.site...'''''
+
    };
  
 
Après avoir enregistré les modifications dans les fichiers précédemment évoqués, nous redémarrons le service bind9 grâce à la commande <code>service bind9 restart</code>.
 
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.
+
Le service bind9 doit être redémarré à chaque modification, pour qu’elle soit prise en compte.  
  
 
=== Réservation du nom de domaine ===
 
=== Réservation du nom de domaine ===
Ligne 521 : Ligne 538 :
 
[[File:glue_record.png|700px|link=]]
 
[[File:glue_record.png|700px|link=]]
  
==== DNSSEC ====
+
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 ===
  
ajoutez l’option dnssec-enable yes; dans le fichier named.conf.options
+
Dans le fichier named.conf.options nous commencons par ajouter l’option <code>dnssec-enable yes;</code>.
  
il est conseillé de créer un répertoire de nom ima2a5-wateck.site.dnssec pour y générer les clefs
+
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.dnsec</code>
+
<code>mkdir ima2a5-wateck.site.dnssec</code>
  
créez la clef asymétrique de signature de clefs de zone (pour accélerer la génération sur un système de test vous pouvez utiliser l’option -r /dev/urandom)
+
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 2048 -f KSK -n ZONE ima2a5-wateck.site -r /dev/urandom</code>
 
 
créez la clef asymétrique de la zone pour signer les enregistrements (pour accélerer la génération sur un système de test vous pouvez utiliser l’option -r /dev/urandom)
 
  
 
<code>dnssec-keygen -a RSASHA1 -b 1024 -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>
 
    
 
    
renommez les deux paires de clefs obtenues en utilisant le nom de la zone comme préfixe puis en suffixant d’abord par la destination de la clef (-ksk pour la KSK ou -zsk pour la ZSK) puis par le type de clef (.key pour la clef publique ou .private pour la clef privée)
+
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
  
incluez les clefs publiques dans votre fichier de zone, incrémentez le numéro de version de la zone 
+
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) :
  
<code>$include /etc/bind/ima2a5-wateck.site .dnssec/ima2a5-wateck.site -ksk.key</code>
+
    ; BIND data file for ima2a5-wateck.site
 
+
    ;
<code>$include /etc/bind/ima2a5-wateck.site .dnssec/ima2a5-wateck.site -zsk.key</code>
+
    $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
 
    
 
    
signez les enregistrements de la zone  
+
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>
 
<code>dnssec-signzone -o ima2a5-wateck.site  -k ima2a5-wateck.site -ksk ../zones/db.ima2a5-wateck.site ima2a5-wateck.site-zsk</code>
 
    
 
    
modifiez le fichier named.conf.local pour utiliser la zone signée de suffixe .signed  
+
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=]]
 +
 
 +
 
  
puis redemarrer bind9 avec <code>service bind9 restart</code>
+
== Configuration Internet de la machine eeePC Morue ==
  
il ne reste plus qu’à communiquer la partie publique de la KSK (présente dans le fichier <nom_de_zone>-ksk.key) à votre registrar (par exemple gandi.net, regardez à "Manage DNSSEC" dans la section "DNS servers").
+
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>.  
  
== Cassage de la clé WEP ==
+
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 ===
  
Avant d'effectuer des installations, nous avons d'abord effectué les configs réseau
+
Avant de procéder à l'installation, nous mettons d'abords à jour les paquets via la commande :
  
'''... voir fichier /etc/network.interfaces ...'''''Texte italique''
+
    apt-get update
  
Puis nous effectuons une mise à jour des paquets via <code>apt-get update</code>
+
Enfin, pour espionner le réseau, nous pouvons installer l'utilitaire Aircrack-ng avec la commande :
  
Puis nous lançons la comme <code>apt-get install aircrack-ng</code> pour installer l'utilitaire aircrack
+
    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 :
Lister les interfaces WiFi disponibles sur l'ordinateur :
 
 
<code>airmon-ng </code>
 
<code>airmon-ng </code>
  
Choisir l'interface souhaitée pour l'écoute puis la déclarer en mode écoute avec la commande suivante :
+
A ce niveau, nous choisissons l'interface que l'on souhaite écouter  :
 
<code>airmong-ng start wlan0mon </code>
 
<code>airmong-ng start wlan0mon </code>
  
La commande airodump-ng permet d'écoute tous les réseaux WiFi présents. Afin de sélectionner le réseau ciblé, l'utilisation des commandes suivantes est impérative :
+
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 :
  
 
<code>airodump-ng --encrypt wep wlan0mon </code>
 
<code>airodump-ng --encrypt wep wlan0mon </code>
  
<code>Airodump-ng -w crack1.txt -c 2 --bssid @MAC wlan0mon </code>
+
Ainsi, nous récupérons les données contenues dans les trames échangées et les stockons dans un fichier spécifique.
 +
 
 +
<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)
 
*-c: pour indiquer le canal d'écoute (canal 2 dans notre cas car tous les réseaux Cracotte y sont)
*-i: pour préciser l'interface réseau utiliser
+
*-bssid: pour préciser le nom du réseau en question
 
*-w: pour indiquer le fichier de sauvegarde des trames écoutées
 
*-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
 +
 +
<code>aircrack-ng -b [@MAC] crack1*.cap </code>
 +
  
  
 +
== 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 <code> airmon-ng</code> afin de repérer le réseau Wi-Fi à cracker.
  
=== Réalisations sur eeePC ===
+
Ensuite on écoute l'interface
 +
airmon-ng start [nom_de_l_interface]
  
==== Configuration Internet ====
+
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.
On modifie le ficher /etc/network.interfaces, comme suit:
+
      auto lo
+
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.
      iface lo inet loopback
+
La commande pour cela est la suivante:
     
+
crunch 8 8 0123456789 >> dictionnaire_wpa.txt
      auto enp4s0
+
 
        address 172.26.145.75
+
Puis nous lançons aircrack-ng
        netmask 255.255.255.0
+
aircrack-ng [fichier.cap] -w dictionnaire_wpa.txt
        gateway 172.26.145.254
 
  
==== Cryptage de données ====
+
== Sécurisation d'une clé USB avec cryptsetup ==
  
Sur votre eeePC installez les paquetages lvm2 et cryptsetup.
+
Nous avons commencé par installer l'utilitaire cryptsetup :
  
 
<code>apt-get install cryptsetup</code>
 
<code>apt-get install cryptsetup</code>
Ligne 608 : Ligne 694 :
 
<code>apt-get install lvm2</code>
 
<code>apt-get install lvm2</code>
  
<code>lsblk</code> pour voir les différentes partitions
+
On commence par lister les disques détectés par l'ordinateur et visualiser les partitions avec <code>lsblk</code>.
On verra que y'a sda qui est vide
+
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
Faites en sorte de créer une unique partition sur la clé USB de l’eeePC.
 
 
 
<code>fdisk /dev/sda</code> pour rentrer dans le disque
 
  
 
<code>n</code> pour créer une partition
 
<code>n</code> pour créer une partition
Ligne 622 : Ligne 706 :
 
<code>d</code> delete
 
<code>d</code> delete
  
Sécurisez la partition (clef-WATECK) en utilisant l’utilitaire cryptsetup
+
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 mettre un passphrase
+
<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  
 
<code>cryptsetup open --type luks /dev/sda1 clef-WATECK </code> pour l'ouvrir  
  
  
créez un système de fichier au dessus de la partition sécurisée (faite un tour dans /dev/mapper pour trouver le périphérique correspondant) 
+
Nous un système de fichier au dessus de la partition sécurisée  
  
 
<code>mkfs.ext4 /dev/mapper/clef-WATECK</code>
 
<code>mkfs.ext4 /dev/mapper/clef-WATECK</code>
Ligne 636 : Ligne 720 :
 
<code>mount -t ext4 /dev/mapper/clef-WATECK /mnt/clef</code>
 
<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
  
Ajoutez des données sur ce système de fichiers, démontez-le, échangez votre carte SD avec celle d’un autre binôme et tentez de lire le contenu
 
  
<code>touch test.txt<.code>
 
  
<code>umount /mnt/clef</code>
+
<code>reseau_wateck</code>
  
<code>cryptsetup close --type luks clef_WATECK</code> pour fermer le volume chiffré
 
  
==== Sécurisation Wifi par clef WEP ====
 
  
==== Sécurisation Wifi par clef WPA-PSK ====
+
* Pour pinger le routeur, on tape <code> ping 10.60.0.254 </code>
  
==== Sécurisation réseau filaire par EAP-TLS ====
+
* Pour pinger la VM, on doit d'abord configurer la passerelle:
  
==== Sécurisation Wifi par WPA2-EAP ====
+
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