TP sysres IMA5sc 2018/2019 G8 : Différence entre versions
(→Création des DNS sur Gandi) |
(→Cassage de mot de passe WPA-PSK par force brute) |
||
(51 révisions intermédiaires par 3 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
− | == | + | =TP GIS= |
+ | ==Conteneurs à la main== | ||
===Création des espaces disques=== | ===Création des espaces disques=== | ||
Ligne 54 : | Ligne 55 : | ||
nsenter -t 13883 -n ip address add dev eth0 192.168.0.103/24 | nsenter -t 13883 -n ip address add dev eth0 192.168.0.103/24 | ||
nsenter -t 13812 -n ip address add dev eth1 172.26.145.100/24 | nsenter -t 13812 -n ip address add dev eth1 172.26.145.100/24 | ||
+ | |||
+ | Pour le mandataire inverse | ||
+ | ip route add default via 172.26.145.254 | ||
ip link set vif1 up | ip link set vif1 up | ||
Ligne 76 : | Ligne 80 : | ||
Modification de /etc/apache2/site-enabled | Modification de /etc/apache2/site-enabled | ||
<VirtualHost *:80> | <VirtualHost *:80> | ||
− | ServerName ptitPote1.plil. | + | ServerName ptitPote1.plil.space |
ServerAdmin webmaster@localhost | ServerAdmin webmaster@localhost | ||
ErrorLog ${APACHE_LOG_DIR}/error.log | ErrorLog ${APACHE_LOG_DIR}/error.log | ||
Ligne 86 : | Ligne 90 : | ||
<VirtualHost *:80> | <VirtualHost *:80> | ||
− | ServerName ptitPote2.plil. | + | ServerName ptitPote2.plil.space |
ServerAdmin webmaster@localhost | ServerAdmin webmaster@localhost | ||
ErrorLog ${APACHE_LOG_DIR}/error.log | ErrorLog ${APACHE_LOG_DIR}/error.log | ||
Ligne 100 : | Ligne 104 : | ||
10h11 => Serveurs Web OK avec unshare | 10h11 => Serveurs Web OK avec unshare | ||
+ | |||
+ | ==Conteneurs avec Docker== | ||
+ | |||
+ | docker run -i -t debian /bin/bash | ||
+ | export http_proxy="http://proxy.polytech-lille.fr:3128/" | ||
+ | apt-get update | ||
+ | apt-get nano | ||
+ | apt-get apache2 | ||
+ | docker commit fae2449c3b9a | ||
+ | docker network create octopus | ||
+ | |||
+ | docker run -i --net=octopus -t ba94e9aada65 | ||
+ | docker run -i --net=octopus -t ba94e9aada65 | ||
+ | service apache2 stop | ||
+ | docker run -i --net=octopus -p 80:80 -t ba94e9aada65 | ||
+ | |||
+ | name:Alibaba | type: A | adresse: 172.26.145.35 | ||
+ | name: Voleur1 | type: CNAME | hostname: grandPote | ||
+ | name: Voleur2 | type: CNAME | hostname: grandPote | ||
+ | |||
+ | Modification de /etc/apache2/site-enabled | ||
+ | |||
+ | <VirtualHost *:80> | ||
+ | ServerName Voleur1.plil.space | ||
+ | ServerAdmin webmaster@localhost | ||
+ | ErrorLog ${APACHE_LOG_DIR}/error.log | ||
+ | CustomLog ${APACHE_LOG_DIR}/access.log combined | ||
+ | ProxyPass / http://172.20.0.2/ | ||
+ | ProxyPassReverse / http://172.20.0.2/ | ||
+ | ProxyRequests Off | ||
+ | </VirtualHost> | ||
+ | |||
+ | <VirtualHost *:80> | ||
+ | ServerName Voleur2.plil.space | ||
+ | ServerAdmin webmaster@localhost | ||
+ | ErrorLog ${APACHE_LOG_DIR}/error.log | ||
+ | CustomLog ${APACHE_LOG_DIR}/access.log combined | ||
+ | ProxyPass / http://172.20.0.3/ | ||
+ | ProxyPassReverse / http://172.20.0.3/ | ||
+ | ProxyRequests Off | ||
+ | </VirtualHost> | ||
+ | |||
+ | 10h20 Serveurs Web (docker) OK | ||
+ | |||
+ | =TP PrA= | ||
+ | |||
+ | ==Déménagement des serveurs Chassiron et Cordouan== | ||
+ | |||
+ | Deux rails sont à disposition: | ||
+ | *1* Dell ReadyRail, taille 2U, type B4, mode Static | ||
+ | *1* Dell ReadyRail, taille 2U, type B6, mode Sliding | ||
+ | |||
+ | D'après la documentation fournie par Dell, les serveurs PowerEdge R520 (modèle des serveurs Chassiron et Cordouan) sont compatibles avec les rails de type B4, B6 et B13. | ||
+ | |||
+ | Les serveurs seront fixés à mi-hauteur de la baie afin de pouvoir placer un PC dessus. | ||
+ | |||
+ | <u><b>Pour Chassiron</b></u>: | ||
+ | *rail de type B4 occupant 1'unité, fixé à l'unité 22 | ||
+ | *le serveur occupera donc les unités 21 et 22 | ||
+ | |||
+ | <u><b>Pour Cordouan</b></u>: | ||
+ | *rail de type B6 occupant 2 unités, fixé aux unités 19 et 20 | ||
+ | *le serveur occupera donc les unités 19 et 20 | ||
+ | |||
+ | <u><b>Pour l'alimentation</b></u>: | ||
+ | *fixation à l'unité 1 (en haut de la baie) afin d'être sécurisé en cas d'inondation | ||
+ | *fixation à l'arrière de la baie afin de faciliter l'alimentation du PC | ||
+ | |||
+ | ==Partie commune: installation d'une machine virtuelle sur Cordouan== | ||
+ | |||
+ | ===Création de la machine virtuelle=== | ||
+ | |||
+ | Connexion en ssh sur Cordouan | ||
+ | ssh root@cordouan.insecserv.deule.net | ||
+ | |||
+ | Création de la machine virtuelle à l'aide de xen en utilisant l'adresse IP qui nous a été attribuée. La gateway est fournie dans le sujet du TP | ||
+ | xen-create-image --hostname=nyx --ip=193.48.57.184 --netmask=255.255.255.240 --gateway=193.48.57.160 --dir=/usr/local/xen | ||
+ | |||
+ | Mot de passe root: <code>zhWEcNfwANbzCr5fk2mJHg6</code> | ||
+ | |||
+ | Modification du fichier <code>/etc/xen/nyx.cfg</code> pour permettre à la machine virtuelle de se lancer correctement | ||
+ | |||
+ | #Networking | ||
+ | vif + bridge=StudentsInfo | ||
+ | |||
+ | Accès à la console: | ||
+ | xl console nyx | ||
+ | |||
+ | Sortir de la console: | ||
+ | ctrl + alt gr + ] | ||
+ | |||
+ | Extinction de la machine: | ||
+ | xl shutdown nyx | ||
+ | |||
+ | ===Création des partitions système=== | ||
+ | |||
+ | Nous allons créer des partitions sur l'hôte pour héberger /home et /var | ||
+ | |||
+ | lvcreate -L10G -n nyx-home virtual | ||
+ | lvcreate -L10G -n nyx-var virtual | ||
+ | |||
+ | Nous modifions le fichier /etc/xen/nyx.cfg afin d'y ajouter les disques | ||
+ | |||
+ | (+) | ||
+ | disk = [ | ||
+ | 'phy:/dev/virtual/nyx-home,xvda3,w', | ||
+ | 'phy:/dev/virtual/nyx-var,xvda4,w', | ||
+ | ] | ||
+ | |||
+ | Après redémarrage de notre VM, nous créons les systèmes de fichiers sur les volumes: | ||
+ | |||
+ | mkfs -t ext4 /dev/xvda3 | ||
+ | mkfs -t ext4 /dev/xvda4 | ||
+ | |||
+ | Utiliser la commande <code>fdisk -l</code> nous a permi de constater que les volumes étaient bien montés | ||
+ | |||
+ | ====Home==== | ||
+ | |||
+ | Afin de s'assurer que la partition home soit montée au démarrage de la VM, nous modifions le fichier <code>/etc/fstab</code> de celle-ci: | ||
+ | |||
+ | (+) | ||
+ | /dev/xvda3 /home ext4 defaults 0 2 | ||
+ | |||
+ | Nous pouvons ensuite simplement monter la partition: | ||
+ | |||
+ | mount -a | ||
+ | |||
+ | ====Var==== | ||
+ | |||
+ | La partition var est d'abord montée dans un répertoire temporaire /mnt: | ||
+ | |||
+ | mount /dev/xvda4 /mnt | ||
+ | mv /var/* /mnt | ||
+ | |||
+ | La partition est ensuite rajoutée dans le fichier /etc/fstab: | ||
+ | |||
+ | /dev/xvda4 /var ext4 defaults 0 2 | ||
+ | |||
+ | ===Serveur SSH=== | ||
+ | |||
+ | Nous installons le client ssh puis modifions le fichier <code>/etc/ssh/ssh_conf</code> afin de pouvoir se connecter en root | ||
+ | |||
+ | ===Serveur DNS=== | ||
+ | |||
+ | Installation d'apache2 et de bind9 sur la VM | ||
+ | |||
+ | apt-get install apache2 bind9 | ||
+ | |||
+ | Nous réservons notre nom de domaine sur Gandi: <code>www.nyxplil.space</code> | ||
+ | |||
+ | Nous commençons par créer le dossier pour la page web: | ||
+ | |||
+ | mkdir /var/www/www.nyxplil.space | ||
+ | |||
+ | Nous créons ensuite le fichier <code>dns.nyxplil.space</code> avec le contenu suivant: | ||
+ | |||
+ | ; | ||
+ | ; BIND data file for local loopback interface | ||
+ | ; | ||
+ | $TTL 604800 | ||
+ | @ IN SOA ns.nyxplil.space. root.nyxplil.space ( | ||
+ | 2 ; Serial | ||
+ | 604800 ; Refresh | ||
+ | 86400 ; Retry | ||
+ | 2419200 ; Expire | ||
+ | 604800 ) ; Negative Cache TTL | ||
+ | ; | ||
+ | IN NS ns.nyxplil.space. | ||
+ | ns IN A 193.48.57.184 | ||
+ | www IN A 193.48.57.184 ; | ||
+ | |||
+ | Nous configurons ensuite le fichier <code>named.conf.local</code> afin d'autoriser le transfert de paquets vers le DNS esclave | ||
+ | |||
+ | zone "nyxplil.space" { | ||
+ | type master; | ||
+ | file "/etc/bind/dns.nyxplil.space"; | ||
+ | allow-transfer {217.70.177.40;}; | ||
+ | }; | ||
+ | |||
+ | service bind9 restart | ||
+ | |||
+ | Enfin, il nous reste quelques réglages à faire depuis Gandi. Pour les "glue records": | ||
+ | |||
+ | nom du serveur : ns.nyxplil.space | ||
+ | ip : 193.48.57.184 | ||
+ | |||
+ | Pour les DNS: | ||
+ | |||
+ | 'DNS1' : ns.nyxplil.space | ||
+ | 'DNS2' : ns6.gandi.net | ||
+ | |||
+ | Nous créons le dossier <code>/etc/bind/nyxplil.space.dnssec</code> où nous générons des clefs KSK et ZSK avec l'algorithme RSA/SHA-1 | ||
+ | |||
+ | dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE nyxplil.space | ||
+ | dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE nyxplil.space | ||
+ | |||
+ | Nous renommons les 2 clefs et les ajoutons au fichier <code>/etc/bind/dns.nyxplil.space</code> | ||
+ | |||
+ | $include /etc/bind/nyxplil.space.dnssec/nyxplil.space-ksk.key | ||
+ | $include /etc/bind/nyxplil.space.dnssec/nyxplil.space-zsk.key | ||
+ | |||
+ | Enfin, nous pouvons signer la zone: | ||
+ | |||
+ | dnssec-signzone -o nyxplil.space -k nyxplil.space-ksk ../dns.nyxplil.space nyxplil.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 | ||
+ | ../dns.nyxplil.space.signed | ||
+ | |||
+ | Nous relançons bind9 | ||
+ | |||
+ | service bind9 restart | ||
+ | |||
+ | Nous ajoutons alors le DNSSEC sur Gandi et nous vérifions le résultat su rle site http://dnsviz.net | ||
+ | |||
+ | ===Certificat SSL=== | ||
+ | |||
+ | Création d'un SSR | ||
+ | |||
+ | openssl req -nodes -newkey rsa:2048 -sha1 -keyout nyxplil.space.key -out nyxplil.space.csr | ||
+ | |||
+ | Achat d'un certificat sur Gandi et vérification par fichier à ajouter dans: | ||
+ | |||
+ | /var/www/html/.well-known/pki-validation | ||
+ | |||
+ | Nous téléchargeons ensuite le certificat intermédiaire de Gandi et le certificat de notre domaine et on ajoute en plus notre clef privée créé précédemment, le tout placés dans le dossier <code>sll</code>: | ||
+ | |||
+ | GandiStandardSSLCA2.pem | ||
+ | nyxplil.space.crt | ||
+ | nyxplil.space.key | ||
+ | |||
+ | Nous ajoutons une nouvelle configuration dans /etc/apache2/sites-available/000-nyxplil.space-ssl.conf | ||
+ | |||
+ | <VirtualHost 193.48.57.182:443> | ||
+ | ServerName www.neptune-poseidon.space | ||
+ | ServerAlias neptune-poseidon.space | ||
+ | DocumentRoot /var/www/html/ | ||
+ | CustomLog /var/log/apache2/secure_acces.log combined | ||
+ | |||
+ | SSLEngine on | ||
+ | SSLCertificateFile /etc/ssl/neptune-poseidon.space.crt | ||
+ | SSLCertificateKeyFile /etc/ssl/neptune-poseidon.space.key | ||
+ | SSLCertificateChainFile /etc/ssl/GandiStandardSSLCA2.pem | ||
+ | SSLVerifyClient None | ||
+ | </VirtualHost> | ||
+ | |||
+ | Nous rajoutons également dans ce fichier une redirection pour être toujours connecté en https: | ||
+ | |||
+ | <VirtualHost 193.48.57.182:80> | ||
+ | ServerName www.nyxplil.space | ||
+ | ServerAlias nyxplil.space | ||
+ | Redirect / https://nyxplil.space | ||
+ | </VirtualHost> | ||
+ | |||
+ | Nous utilisons enfin les commandes suivantes pour activer notre module ssl et notre configuration ssl | ||
+ | |||
+ | a2enmod ssl | ||
+ | a2ensite 000-nyxplil.space-ssl.conf | ||
+ | service apache2 restart | ||
+ | |||
+ | ===Sécurisation via RAID5=== | ||
+ | |||
+ | Création de 3 volumes sur Cordouan | ||
+ | |||
+ | lvcreate -L 1G -n /dev/virtual/nyx-raid1 | ||
+ | lvcreate -L 1G -n /dev/virtual/nyx-raid2 | ||
+ | lvcreate -L 1G -n /dev/virtual/nyx-raid3 | ||
+ | |||
+ | Nous ajoutons dans <code>/etc/xen/nyx.cfg</code> | ||
+ | |||
+ | 'phy:/dev/virtual/nyx-raid1, xvdd1, w', | ||
+ | 'phy:/dev/virtual/nyx-raid2, xvdd2, w', | ||
+ | 'phy:/dev/virtual/nyx-raid3, xvdd3, w', | ||
+ | |||
+ | Reboot de la machine sur cordouan | ||
+ | |||
+ | Installation de mdadm | ||
+ | apt-get install mdadm | ||
+ | |||
+ | Nous créons le disque RAID5 | ||
+ | mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 /dev/xvdd1 /dev/xvdd2 /dev/xvdd3 | ||
+ | |||
+ | Nous installons un système de fichier dessus | ||
+ | mkfs -t ext4 /dev/md0 | ||
+ | |||
+ | Nous montons le disque: | ||
+ | mdadm --detail --scan >> /etc/mdadm/mdadm.conf | ||
+ | mount /dev/md0 /mnt | ||
+ | |||
+ | Test de reconstruction: | ||
+ | |||
+ | Nous commençons par ajouter un fichier <code>test.txt</code> au dossier <code>/mnt</code> | ||
+ | |||
+ | Nous supprimons ensuite l'une des partitions, ici la partition xvdd2 | ||
+ | |||
+ | mdadm --set-faulty /dev/md0 /dev/xvdd2 | ||
+ | mdadm --remove /dev/md0 /dev/xvdd2 | ||
+ | |||
+ | cat /proc/mdstat | ||
+ | Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] | ||
+ | md0 : active raid5 xvdd3[2] xvdd1[0] | ||
+ | 2093056 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [U_U] | ||
+ | |||
+ | Nous avons pu à ce moment vérifier l'intégrité du fuchier test.txt: aucune donnée n'était perdue. | ||
+ | Nous lançons alors la reconstruction de la partition précédemment supprimée: | ||
+ | |||
+ | mdadm --add /dev/md0 /dev/xvdd2 | ||
+ | |||
+ | cat /proc/mdstat | ||
+ | Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] | ||
+ | md0 : active raid5 xvdd2[3] xvdd3[2] xvdd1[0] | ||
+ | 2093056 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [U_U] | ||
+ | [====>................] recovery = 22.1% (232344/1046528) finish=0.5min speed=25816K/sec | ||
+ | |||
+ | cat /proc/mdstat | ||
+ | Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] | ||
+ | md0 : active raid5 xvdd2[3] xvdd3[2] xvdd1[0] | ||
+ | 2093056 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU] | ||
+ | unused devices: <none> | ||
+ | |||
+ | ===Serveur Freeradius=== | ||
+ | |||
+ | Installation de freeradius: | ||
+ | |||
+ | apt-get install freeradius | ||
+ | |||
+ | Dans le fichier <code>/etc/freeradius/3.0/users</code> on ajoute la ligne: | ||
+ | |||
+ | nyx Cleartext-Password := "glopglop" | ||
+ | |||
+ | Dans le fichier <code>/etc/freeradius/3.0/mods-enabled/eap</code> on modifie la ligne: | ||
+ | |||
+ | eap{ | ||
+ | default_eap_type = peap | ||
+ | } | ||
+ | |||
+ | Dans le fichier <code>/etc/freeradius/mods-enabled/mschap</code> on décommente les lignes suivantes | ||
+ | |||
+ | use_mppe = yes | ||
+ | require_encryption = yes | ||
+ | require_strong = yes | ||
+ | |||
+ | et on ajoute la ligne suivante: | ||
+ | |||
+ | with_ntdomain_hack = yes | ||
+ | |||
+ | ===Sécurisation Wifi par clé WPA2-EAP=== | ||
+ | |||
+ | Activation de la fonction 'aaa' et création des entitées radius_goup et eap_group | ||
+ | enable | ||
+ | conf t | ||
+ | aaa new-model | ||
+ | aaa authentication login eap_group18 group radius_group18 | ||
+ | aaa group server radius radius_group18 | ||
+ | server 193.48.57.184 auth-port 1812 acct-port 1813 | ||
+ | radius-server host 193.48.57.184 auth-port 1812 acct-port 1813 key secretIMA5SC | ||
+ | end | ||
+ | |||
+ | Mise en place du ssid 'Nyx' et intégration dans la vlan 18: | ||
+ | enable | ||
+ | conf t | ||
+ | dot11 ssid nyx | ||
+ | vlan 18 | ||
+ | authentication open eap eap_group18 | ||
+ | authentication network-eap eap_group18 | ||
+ | authentication key-management wpa | ||
+ | Mbssid Guest-mode | ||
+ | end | ||
+ | |||
+ | Liaison de l'interface wifi dot11radio0 avec la vlan et méthode encryption: | ||
+ | enable | ||
+ | conf t | ||
+ | int dot11radio0 | ||
+ | Mbssid | ||
+ | ssid Nyx | ||
+ | encryption vlan 18 mode ciphers aes-ccm tkip | ||
+ | end | ||
+ | |||
+ | Encapsulation | ||
+ | enable | ||
+ | conf t | ||
+ | int dot11radio0.18 | ||
+ | encapsulation dot1Q 18 | ||
+ | end | ||
+ | |||
+ | ===Cassage de mot de passe WPA-PSK par force brute=== | ||
+ | |||
+ | Nous allons essayer se casser le mot de passe de notre point d'accès Cracotte8. Pour cela nous allons utiliser le paquetage aircrack-ng. | ||
+ | On va dans un premier temps récupérer le WPA handshake provenant de notre point d'accès en paramétrant notre interface wifi pour qu'elle écoute les données envoyées par Cracotte8: | ||
+ | ip link set down wlp3s0 | ||
+ | airmon-ng start wlp3s0 | ||
+ | On récupère l'adresse du point d'accès: | ||
+ | airodump_ng mon1 | ||
+ | On écoute pour recevoir le handshake qu'on sauvegarde: | ||
+ | airodump-ng mon1 --channel 9 --bssid 04:DA:D2:9C:50:57 --write capture | ||
+ | Une fois le fichier .cap récupéré on le transfert sur une machine tutur pour utiliser un brute force par dictionnaire. On suppose que la clé est composé de 8 chiffres donc on crée un fichier texte comportant tous les nombres de 00000000 à 99999999 qu'on utilise ensuite pour le cassage de la clé: | ||
+ | aircrack-ng capture03.cap -w dico.txt | ||
+ | |||
+ | [[fichier:Craquage_cle.png]] | ||
+ | |||
+ | |||
+ | ===Cassage de clé WEP=== | ||
+ | |||
+ | |||
+ | |||
+ | sudo airodump-ng mon0 --channel 12 --bssid 04:DA:D2:9C:50:57 --write captureWEP | ||
+ | |||
+ | sudo aireplay-ng --fakeauth 30 -a 04:DA:D2:9C:50:57 mon0 | ||
+ | |||
+ | aircrack-ng captureWEP-05.cap | ||
+ | |||
+ | [[Fichier:CassageWEPCracotte082018.png]] |
Version actuelle datée du 17 décembre 2018 à 18:37
Sommaire
- 1 TP GIS
- 2 TP PrA
- 2.1 Déménagement des serveurs Chassiron et Cordouan
- 2.2 Partie commune: installation d'une machine virtuelle sur Cordouan
- 2.2.1 Création de la machine virtuelle
- 2.2.2 Création des partitions système
- 2.2.3 Serveur SSH
- 2.2.4 Serveur DNS
- 2.2.5 Certificat SSL
- 2.2.6 Sécurisation via RAID5
- 2.2.7 Serveur Freeradius
- 2.2.8 Sécurisation Wifi par clé WPA2-EAP
- 2.2.9 Cassage de mot de passe WPA-PSK par force brute
- 2.2.10 Cassage de clé WEP
TP GIS
Conteneurs à la main
Création des espaces disques
dd if=/dev/zero of=diskTPconteneur bs=1024k count=10240 mkfs diskTPconteneur
mkdir /tmp/fs1 mkdir /tmp/fs2 mkdir /tmp/fs3
mount -o loop diskTPconteneur /tmp/fs1 debootstrap --include apache2,nano stable /tmp/fs1 echo "proc /proc proc defaults 0 0" >> /tmp/fs1/etc/fstab
umount /tmp/fs1 cp diskTPconteneur ./diskTPconteneur2 cp diskTPconteneur ./diskTPconteneur3 mv diskTPconteneur ./diskTPconteneur1
mount -o loop diskTPconteneur1 /tmp/fs1 mount -o loop diskTPconteneur2 /tmp/fs2 mount -o loop diskTPconteneur3 /tmp/fs3 df -h
Dans 3 terminaux différents:
unshare -p -f -m -n -u chroot /tmp/fs1/ /bin/sh -c "mount /proc ; /bin/bash" unshare -p -f -m -n -u chroot /tmp/fs2/ /bin/sh -c "mount /proc ; /bin/bash" unshare -p -f -m -n -u chroot /tmp/fs3/ /bin/sh -c "mount /proc ; /bin/bash"
Création du commutateur
ip link add commTPconteneur type bridge
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
ps aux | grep unshare ip link set eth0@vif1 netns /proc/13812/ns/net name eth0 ip link set eth0@vif2 netns /proc/13860/ns/net name eth0 ip link set eth0@vif3 netns /proc/13883/ns/net name eth0 ip link set eth1@vif4 netns /proc/13812/ns/net name eth1
ip link set vif1 master commTPconteneur ip link set vif2 master commTPconteneur ip link set vif3 master commTPconteneur ip link set vif4 master bridge brctl show
nsenter -t 13812 -n ip address add dev eth0 192.168.0.101/24 nsenter -t 13860 -n ip address add dev eth0 192.168.0.102/24 nsenter -t 13883 -n ip address add dev eth0 192.168.0.103/24 nsenter -t 13812 -n ip address add dev eth1 172.26.145.100/24
Pour le mandataire inverse
ip route add default via 172.26.145.254
ip link set vif1 up ip link set vif2 up ip link set vif3 up ip link set vif4 up ip link set commTPconteneur up
Dans chaque terminal faisant tourner un conteneur:
ip link set eth0 up
Création des DNS sur Gandi
name:grandPote | type: A | adresse: 172.26.145.100
name: ptitPote1 | type: CNAME | hostname: grandPote name: ptitPote2 | type: CNAME | hostname: grandPote
a2enmod proxy proxy_http apache2 restart
Modification de /etc/apache2/site-enabled
<VirtualHost *:80> ServerName ptitPote1.plil.space ServerAdmin webmaster@localhost ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined ProxyPass / http://192.168.0.102/ ProxyPassReverse / http://192.168.0.102/ ProxyRequests Off </VirtualHost>
<VirtualHost *:80> ServerName ptitPote2.plil.space ServerAdmin webmaster@localhost ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined ProxyPass / http://192.168.0.103/ ProxyPassReverse / http://192.168.0.103/ ProxyRequests Off </VirtualHost>
Modification des fichiers /var/www/html/index.html dans les conteneurs
/var/www/html# echo "Serveur ptitPote1" > index.html /var/www/html# echo "Serveur ptitPote2" > index.html
10h11 => Serveurs Web OK avec unshare
Conteneurs avec Docker
docker run -i -t debian /bin/bash export http_proxy="http://proxy.polytech-lille.fr:3128/" apt-get update apt-get nano apt-get apache2 docker commit fae2449c3b9a docker network create octopus
docker run -i --net=octopus -t ba94e9aada65 docker run -i --net=octopus -t ba94e9aada65 service apache2 stop docker run -i --net=octopus -p 80:80 -t ba94e9aada65
name:Alibaba | type: A | adresse: 172.26.145.35 name: Voleur1 | type: CNAME | hostname: grandPote name: Voleur2 | type: CNAME | hostname: grandPote
Modification de /etc/apache2/site-enabled
<VirtualHost *:80> ServerName Voleur1.plil.space ServerAdmin webmaster@localhost ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined ProxyPass / http://172.20.0.2/ ProxyPassReverse / http://172.20.0.2/ ProxyRequests Off </VirtualHost>
<VirtualHost *:80> ServerName Voleur2.plil.space ServerAdmin webmaster@localhost ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined ProxyPass / http://172.20.0.3/ ProxyPassReverse / http://172.20.0.3/ ProxyRequests Off </VirtualHost>
10h20 Serveurs Web (docker) OK
TP PrA
Déménagement des serveurs Chassiron et Cordouan
Deux rails sont à disposition:
- 1* Dell ReadyRail, taille 2U, type B4, mode Static
- 1* Dell ReadyRail, taille 2U, type B6, mode Sliding
D'après la documentation fournie par Dell, les serveurs PowerEdge R520 (modèle des serveurs Chassiron et Cordouan) sont compatibles avec les rails de type B4, B6 et B13.
Les serveurs seront fixés à mi-hauteur de la baie afin de pouvoir placer un PC dessus.
Pour Chassiron:
- rail de type B4 occupant 1'unité, fixé à l'unité 22
- le serveur occupera donc les unités 21 et 22
Pour Cordouan:
- rail de type B6 occupant 2 unités, fixé aux unités 19 et 20
- le serveur occupera donc les unités 19 et 20
Pour l'alimentation:
- fixation à l'unité 1 (en haut de la baie) afin d'être sécurisé en cas d'inondation
- fixation à l'arrière de la baie afin de faciliter l'alimentation du PC
Partie commune: installation d'une machine virtuelle sur Cordouan
Création de la machine virtuelle
Connexion en ssh sur Cordouan
ssh root@cordouan.insecserv.deule.net
Création de la machine virtuelle à l'aide de xen en utilisant l'adresse IP qui nous a été attribuée. La gateway est fournie dans le sujet du TP
xen-create-image --hostname=nyx --ip=193.48.57.184 --netmask=255.255.255.240 --gateway=193.48.57.160 --dir=/usr/local/xen
Mot de passe root: zhWEcNfwANbzCr5fk2mJHg6
Modification du fichier /etc/xen/nyx.cfg
pour permettre à la machine virtuelle de se lancer correctement
#Networking vif + bridge=StudentsInfo
Accès à la console:
xl console nyx
Sortir de la console:
ctrl + alt gr + ]
Extinction de la machine:
xl shutdown nyx
Création des partitions système
Nous allons créer des partitions sur l'hôte pour héberger /home et /var
lvcreate -L10G -n nyx-home virtual lvcreate -L10G -n nyx-var virtual
Nous modifions le fichier /etc/xen/nyx.cfg afin d'y ajouter les disques
(+) disk = [ 'phy:/dev/virtual/nyx-home,xvda3,w', 'phy:/dev/virtual/nyx-var,xvda4,w', ]
Après redémarrage de notre VM, nous créons les systèmes de fichiers sur les volumes:
mkfs -t ext4 /dev/xvda3 mkfs -t ext4 /dev/xvda4
Utiliser la commande fdisk -l
nous a permi de constater que les volumes étaient bien montés
Home
Afin de s'assurer que la partition home soit montée au démarrage de la VM, nous modifions le fichier /etc/fstab
de celle-ci:
(+) /dev/xvda3 /home ext4 defaults 0 2
Nous pouvons ensuite simplement monter la partition:
mount -a
Var
La partition var est d'abord montée dans un répertoire temporaire /mnt:
mount /dev/xvda4 /mnt mv /var/* /mnt
La partition est ensuite rajoutée dans le fichier /etc/fstab:
/dev/xvda4 /var ext4 defaults 0 2
Serveur SSH
Nous installons le client ssh puis modifions le fichier /etc/ssh/ssh_conf
afin de pouvoir se connecter en root
Serveur DNS
Installation d'apache2 et de bind9 sur la VM
apt-get install apache2 bind9
Nous réservons notre nom de domaine sur Gandi: www.nyxplil.space
Nous commençons par créer le dossier pour la page web:
mkdir /var/www/www.nyxplil.space
Nous créons ensuite le fichier dns.nyxplil.space
avec le contenu suivant:
; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA ns.nyxplil.space. root.nyxplil.space ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; IN NS ns.nyxplil.space. ns IN A 193.48.57.184 www IN A 193.48.57.184 ;
Nous configurons ensuite le fichier named.conf.local
afin d'autoriser le transfert de paquets vers le DNS esclave
zone "nyxplil.space" { type master; file "/etc/bind/dns.nyxplil.space"; allow-transfer {217.70.177.40;}; };
service bind9 restart
Enfin, il nous reste quelques réglages à faire depuis Gandi. Pour les "glue records":
nom du serveur : ns.nyxplil.space ip : 193.48.57.184
Pour les DNS:
'DNS1' : ns.nyxplil.space 'DNS2' : ns6.gandi.net
Nous créons le dossier /etc/bind/nyxplil.space.dnssec
où nous générons des clefs KSK et ZSK avec l'algorithme RSA/SHA-1
dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE nyxplil.space dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE nyxplil.space
Nous renommons les 2 clefs et les ajoutons au fichier /etc/bind/dns.nyxplil.space
$include /etc/bind/nyxplil.space.dnssec/nyxplil.space-ksk.key $include /etc/bind/nyxplil.space.dnssec/nyxplil.space-zsk.key
Enfin, nous pouvons signer la zone:
dnssec-signzone -o nyxplil.space -k nyxplil.space-ksk ../dns.nyxplil.space nyxplil.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 ../dns.nyxplil.space.signed
Nous relançons bind9
service bind9 restart
Nous ajoutons alors le DNSSEC sur Gandi et nous vérifions le résultat su rle site http://dnsviz.net
Certificat SSL
Création d'un SSR
openssl req -nodes -newkey rsa:2048 -sha1 -keyout nyxplil.space.key -out nyxplil.space.csr
Achat d'un certificat sur Gandi et vérification par fichier à ajouter dans:
/var/www/html/.well-known/pki-validation
Nous téléchargeons ensuite le certificat intermédiaire de Gandi et le certificat de notre domaine et on ajoute en plus notre clef privée créé précédemment, le tout placés dans le dossier sll
:
GandiStandardSSLCA2.pem nyxplil.space.crt nyxplil.space.key
Nous ajoutons une nouvelle configuration dans /etc/apache2/sites-available/000-nyxplil.space-ssl.conf
<VirtualHost 193.48.57.182:443> ServerName www.neptune-poseidon.space ServerAlias neptune-poseidon.space DocumentRoot /var/www/html/ CustomLog /var/log/apache2/secure_acces.log combined
SSLEngine on SSLCertificateFile /etc/ssl/neptune-poseidon.space.crt SSLCertificateKeyFile /etc/ssl/neptune-poseidon.space.key SSLCertificateChainFile /etc/ssl/GandiStandardSSLCA2.pem SSLVerifyClient None </VirtualHost>
Nous rajoutons également dans ce fichier une redirection pour être toujours connecté en https:
<VirtualHost 193.48.57.182:80> ServerName www.nyxplil.space ServerAlias nyxplil.space Redirect / https://nyxplil.space </VirtualHost>
Nous utilisons enfin les commandes suivantes pour activer notre module ssl et notre configuration ssl
a2enmod ssl a2ensite 000-nyxplil.space-ssl.conf service apache2 restart
Sécurisation via RAID5
Création de 3 volumes sur Cordouan
lvcreate -L 1G -n /dev/virtual/nyx-raid1 lvcreate -L 1G -n /dev/virtual/nyx-raid2 lvcreate -L 1G -n /dev/virtual/nyx-raid3
Nous ajoutons dans /etc/xen/nyx.cfg
'phy:/dev/virtual/nyx-raid1, xvdd1, w', 'phy:/dev/virtual/nyx-raid2, xvdd2, w', 'phy:/dev/virtual/nyx-raid3, xvdd3, w',
Reboot de la machine sur cordouan
Installation de mdadm
apt-get install mdadm
Nous créons le disque RAID5
mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 /dev/xvdd1 /dev/xvdd2 /dev/xvdd3
Nous installons un système de fichier dessus
mkfs -t ext4 /dev/md0
Nous montons le disque:
mdadm --detail --scan >> /etc/mdadm/mdadm.conf mount /dev/md0 /mnt
Test de reconstruction:
Nous commençons par ajouter un fichier test.txt
au dossier /mnt
Nous supprimons ensuite l'une des partitions, ici la partition xvdd2
mdadm --set-faulty /dev/md0 /dev/xvdd2 mdadm --remove /dev/md0 /dev/xvdd2
cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid5 xvdd3[2] xvdd1[0] 2093056 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [U_U]
Nous avons pu à ce moment vérifier l'intégrité du fuchier test.txt: aucune donnée n'était perdue. Nous lançons alors la reconstruction de la partition précédemment supprimée:
mdadm --add /dev/md0 /dev/xvdd2
cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid5 xvdd2[3] xvdd3[2] xvdd1[0] 2093056 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [U_U] [====>................] recovery = 22.1% (232344/1046528) finish=0.5min speed=25816K/sec
cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid5 xvdd2[3] xvdd3[2] xvdd1[0] 2093056 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU] unused devices: <none>
Serveur Freeradius
Installation de freeradius:
apt-get install freeradius
Dans le fichier /etc/freeradius/3.0/users
on ajoute la ligne:
nyx Cleartext-Password := "glopglop"
Dans le fichier /etc/freeradius/3.0/mods-enabled/eap
on modifie la ligne:
eap{ default_eap_type = peap }
Dans le fichier /etc/freeradius/mods-enabled/mschap
on décommente les lignes suivantes
use_mppe = yes require_encryption = yes require_strong = yes
et on ajoute la ligne suivante:
with_ntdomain_hack = yes
Sécurisation Wifi par clé WPA2-EAP
Activation de la fonction 'aaa' et création des entitées radius_goup et eap_group
enable conf t aaa new-model aaa authentication login eap_group18 group radius_group18 aaa group server radius radius_group18 server 193.48.57.184 auth-port 1812 acct-port 1813 radius-server host 193.48.57.184 auth-port 1812 acct-port 1813 key secretIMA5SC end
Mise en place du ssid 'Nyx' et intégration dans la vlan 18:
enable conf t dot11 ssid nyx vlan 18 authentication open eap eap_group18 authentication network-eap eap_group18 authentication key-management wpa Mbssid Guest-mode end
Liaison de l'interface wifi dot11radio0 avec la vlan et méthode encryption:
enable conf t int dot11radio0 Mbssid ssid Nyx encryption vlan 18 mode ciphers aes-ccm tkip end
Encapsulation
enable conf t int dot11radio0.18 encapsulation dot1Q 18 end
Cassage de mot de passe WPA-PSK par force brute
Nous allons essayer se casser le mot de passe de notre point d'accès Cracotte8. Pour cela nous allons utiliser le paquetage aircrack-ng. On va dans un premier temps récupérer le WPA handshake provenant de notre point d'accès en paramétrant notre interface wifi pour qu'elle écoute les données envoyées par Cracotte8:
ip link set down wlp3s0 airmon-ng start wlp3s0
On récupère l'adresse du point d'accès:
airodump_ng mon1
On écoute pour recevoir le handshake qu'on sauvegarde:
airodump-ng mon1 --channel 9 --bssid 04:DA:D2:9C:50:57 --write capture
Une fois le fichier .cap récupéré on le transfert sur une machine tutur pour utiliser un brute force par dictionnaire. On suppose que la clé est composé de 8 chiffres donc on crée un fichier texte comportant tous les nombres de 00000000 à 99999999 qu'on utilise ensuite pour le cassage de la clé:
aircrack-ng capture03.cap -w dico.txt
Cassage de clé WEP
sudo airodump-ng mon0 --channel 12 --bssid 04:DA:D2:9C:50:57 --write captureWEP
sudo aireplay-ng --fakeauth 30 -a 04:DA:D2:9C:50:57 mon0 aircrack-ng captureWEP-05.cap