TP sysres IMA5sc 2018/2019 G8

De Wiki d'activités IMA

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

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

CassageWEPCracotte082018.png