Cahier 2016 groupe n°2 : Différence entre versions
(→Sécurisation de site web par certificat) |
(→Sécurisation de site web par certificat) |
||
Ligne 235 : | Ligne 235 : | ||
root@GreenArrow:/etc/apache2# service apache2 reload | root@GreenArrow:/etc/apache2# service apache2 reload | ||
</pre> | </pre> | ||
+ | |||
+ | Nous pouvons voir que notre site [https://jjlddelamuerto.space] est maintenant sécurisé, un cadenas vert est bien présent. | ||
==== Sécurisation de serveur DNS par DNSSEC ==== | ==== Sécurisation de serveur DNS par DNSSEC ==== |
Version du 28 novembre 2016 à 10:22
Sommaire
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
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.
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