TP sysres IMA5sc 2018/2019 G1

De Wiki d'activités IMA

Séance 1

Creation conteneur Unshare

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 apache2c 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:

Https.png

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