TP sysres IMA5sc 2018/2019 G6

De Wiki d'activités IMA

Séance 1 :

Création du dd virtuel :

dd if=/dev/zero of=disk.img bs=1024k count=10240

Formattage du disc :

mkfs disk.img

Création des points d'ancrage dans /tmp

cd /tmp
mkdir fs1
mkdir fs2
mkdir fs3

Montage du disk :

mount -o loop disk.img /tmp/fs1

Accès au dépôt distant de debian :

export http_proxy="http://proxy.polytech-lille.fr:3128"

Création du système de fichier sur fs1 :

deboostrap --include apache2,nano,vim stable /tmp/fs1

Pour simplifier l'acces :

echo "proc /proc proc defaults 0 0" >> etc/fstab

Démontage du disk :

umount /tmp/fs1

Copie collage du disk.im en disk1.img disk2.img disk3.img

montage des 3 disk sur les /tmp/fs respectifs
mount -o loop disk1.img /tmp/fs1
mount -o loop disk2.img /tmp/fs2
mount -o loop disk3.img /tmp/fs3

Isolation des conteneurs (aussi au niveau réseau)

unshare -n -u -p -f -m chroot /tmp/fs1 /bin/sh -c "mount /proc ; /bin/bash"
unshare -n -u -p -f -m chroot /tmp/fs2 /bin/sh -c "mount /proc ; /bin/bash"
unshare -n -u -p -f -m chroot /tmp/fs3 /bin/sh -c "mount /proc ; /bin/bash"

Création d'un commutateur virtuel :

ip link add pontpont type bridge

creation des 3 interfaced reseaux, + interface proxy inverse

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
ip link set vif1 master pontpont
ip link set vif2 master pontpont
ip link set vif3 master pontpont
ip link set vif4 master bridge

recuperation des PID :

Sur l'ordi normal (hors conteneur)

ps aux | grep unshare
root     20224  0.0  0.0   5828   700 pts/1    S    07:08   0:00 unshare -n -u -p -f -m chroot /tmp/fs1 /bin/sh -c mount /proc ; /bin/bash
root     20286  0.0  0.0   5828   608 pts/2    S    07:10   0:00 unshare -n -u -p -f -m chroot /tmp/fs2 /bin/sh -c mount /proc ; /bin/bash
root     20317  0.0  0.0   5828   608 pts/3    S    07:11   0:00 unshare -n -u -p -f -m chroot /tmp/fs3 /bin/sh -c mount /proc ; /bin/bash
root     20693  0.0  0.0  12784   956 pts/0    S+   07:15   0:00 grep unshare

on relie les vif sur les conteneurs

ip link set eth0@vif1 netns /proc/[PID processus unshare 1]/ns/net name eth0
ip link set eth0@vif2 netns /proc/[PID processus unshare 2]/ns/net name eth0
ip link set eth0@vif3 netns /proc/[PID processus unshare 3]/ns/net name eth0
ip link set eth1@vif4 netns /proc/[PID processus unshare 1]/ns/net name eth1

démarrage des interfaces et du pontpont

ip link set vif1 up
ip link set vif2 up
ip link set vif3 up
ip link set vif4 up
ip address add dev pontpont 192.168.0.1/24

Dans le conteneur 1

ip address add dev eth0 192.168.0.101/24
ip link set eth0 down
ip link set eth0 up
ip address add dev eth1 172.26.145.111/24
ip link set eth1 down
ip link set eth1 up

Dans le conteneur 2

ip address add dev eth0 192.168.0.102/24
ip link set eth0 down
ip link set eth0 up

Dans le conteneur 3

ip address add dev eth0 192.168.0.103/24
ip link set eth0 down
ip link set eth0 up

Séance 2 :

Reservation de sous domaines sur gandi

Champ A : feutriergosse.plil.space

lié à l'IP 172.26.145.111 (ip du mandataire inverse)

CNAME : feutriergosse1.plil.space
CNAME : feutriergosse2.plil.space

Configuration d'Apache2

Le conteneur 1 sert de mandataire inverse et redirige :

  • les requêtes de feutriergosse1.plil.space vers le conteneur 2 d'IP 192.168.0.102
  • les requêtes de feutriergosse2.plil.space vers le conteneur 3 d'IP 192.168.0.103

Configuration du fichier /etc/apache2/sites-available/000-default

<VirtualHost *:80>
       ServerName feutriergosse1.plil.space
       ServerAdmin webmaster@feutriergosse1.plil.space
       ProxyPass / http://192.168.0.102/
       ProxyPassReverse / http://192.168.0.102/
       ProxyRequests Off
       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
       ServerName feutriergosse2.plil.space
       ServerAdmin webmaster@feutriergosse2.plil.space
       ProxyPass / http://192.168.0.103/
       ProxyPassReverse / http://192.168.0.103/
       ProxyRequests Off
       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
  • service apache2 restart sur chaque conteneur

10h15 => Serveurs Web unshare OK

Docker

Tout d'abord il faut remettre Docker à ses paramètres d'origines :

nano /etc/default/docker

on commente la ligne avec iptable=false

 iptables-save
 service docker restart
 docker run -i -t debian /bin/bash

Dans le conteneur :

export http_proxy="http://proxy.polytech-lille.fr:3128"
export https_proxy="https://proxy.polytech-lille.fr:3128"
apt-get update
apt-get install nano
apt-get install apache2

Hors du conteneur :

docker ps
docker commit [ID du conteneur] apache2(c'est le nom choisi pour l'image)

on quitte le conteneur (on peut le tuer)

docker network create pontpont
docker run -i -t apache2 --net=pontpont
docker run -i -t apache2 --net=pontpont
docker run -i -t apache2 --net=pontpont -p80:80

10h20 Serveurs Web (docker) OK

Séance 3 & 4 : PrA

Prise de photo de la baie existante et schématisation des câblage

Pour nous assurer d'être en mesure de remettre la baie en état à la fin, nous avons commencé par prendre des photos de l'ancienne baie, et nous avons schématisé les branchements de IMA2A5.

Démontage de l'ancienne baie

Nous avons ensuite démonté la baie, conteneurs par conteneurs. Pour cela nous avons d'abord retiré toutes les cartes du conteneur à retirer en prenant soin de conserver leur ordre. Nous avons profité de l'occasion pour les aspirer.

Nous avons retiré d'abord les élements du haut de la baie pour éviter qu'elle bascule (sauf le bloc de multiprise qui permettait de maintenir la structure solidaire).

Nous avons ensuite récupéré les écrous des anciens rails qui permettent de visser les conteneurs.

Installation de la nouvelle baie

Avant de déplacer la nouvelle baie à l'emplacement de l'ancienne, nous avons retiré la porte arrière pour faciliter l'accès aux câbles une fois la baie installée (nous avons aussi retiré les élements décoratifs en plastique, et les plaques métalliques de la porte arrière).

Nous avons ensuite déplacé la baie à l'emplacement de l'ancienne.

Nous avons ensuite retiré la plaque du côté droit de la baie pour faciliter l'installation des différents éléments.

Nous avons ensuite réinstallé les différents conteneurs, en commencant par marquer l'emplacement des écrous au crayon gris.

Après chaque conteneurs placé, nous avons remis toutes les plaques dans le même ordre.

Grace au schéma réalisé avant le démontage, nous avons pu recâbler la baie.

Nous avons pris soin d'atacher les fibres optiques pour éviter qu'elles ne s'abîment et qu'elles restent accessibles.


Création d'une VM sur Cordouan

Chaque groupe doit créer une machine virtuelle sur le serveur Cordouan en utilisant Xen. Pour cela nous utilisons la commande : xen-create-image

Nous y ajoutons les paramètres suivants :

  • nom de notre machine : --hostname=poseidon
  • son adresse IP : --ip=193.48.57.182
  • l’adresse du routeur
  • le répertoire où les disques virtuels doivent être créés : --dir=/usr/local/xen

On créé la machine avec la commande :

xen-create-image --hostname=poseidon --ip=193.48.57.182 --dir=/usr/local/xen
vi /etc/xen/poseidon.cfg

pour modifier le bridge en "IMA5sc"

xl create poseidon.cfg

Creer une instance de la VM

xl console poseidon

connexion à la VM, avec le login root, mot de passe fourni a la fin de l'installation

passwd

changement du mot de passe

ip route add default via 193.48.57.190 dev eth0 onlink


cd etc/ssh/
vi sshd_config

On décommente : PermitRootLogin yes

Séance 5

Remarques

Suite à la mise en route du deuxième routeur, notre VM n'avait plus accès au réseau (local et internet) Nous avions en fait oublié de préciser le netmask et la gateway :

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
 address 193.48.57.182
 netmask 255.255.255.240
 gateway 10.60.13.254

Ajout et configuration d'un serveur DNS

Pour commencer nous avons installé bind9 puis nous avons acheté le nom de domaine neptune-poseidon.space

Ensuite dans le dossier /etc/bind on ajoute:

On créé le fichier db.neptune-poseidon.space et on ajoute :
@       IN      SOA     ns.neptune-poseidon.space. root.neptune-poseidon.space (
                        2           ; Serial
                        604800      ; Refresh
                        86400       ; Retry
                        2419200     ; Expire
                        604800 )    ; Negative Cache TTL
;
        IN      NS      ns.neptune-poseidon.space. //dns principal
	IN	NS	ns6.gandi.net. //dns secondaire
@	IN	A	193.48.57.182 //permet d'accéder au site sans le "www."
ns      IN      A       193.48.57.182 //permet d'accéder au site avec le "http/https"
www     IN      A       193.48.57.182 //permet d'accéder au site avec le "www."

Ensuite on se rend sur le site Gandi.net -> Domains -> Glue Records :

  • Dans Glue Record -> Add :
    • namespace : neptune-poseidon.space
    • l'adresse IP de notre VM : 193.48.57.182
  • Dans Nameservers on ajoute le DNS principal et secondaire :
    • DNS1 : ns.neptune-poseidon.space
    • DNS2 : ns6.gandi.net

Ajout d'une clef SSL

Premièrement, nous créons un CSR :

openssl rep -nodes -newkey rsa:2048 -sha1 -keyout neptune-poseidon.space.key -out neptune-poseidon.space.csr

Nous remplissons ensuite les informations territoriales utiles à la génération du CSR

Ensuite sur Gandi.net -> SSL Certificates -> Buy et on achète le certificat Pour la vérification, on choisit la méthode de vérification par copie de fichier, on télécharge le fichier de vérification dans : /var/www/html/.well-known/pki-validation

Ajout du DNSSEC

On commence par ajouter dans le fihcier /etc/bind/named.conf.options

dnssec-enable yes;

On génère ensuite des clefs KSK et ZSK :

dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE neptune-poseidon.space
dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE neptune-poseidon.space

Après avoir renommé les 2 clefs on les ajoute au fichier /etc/bind/db.neptune-poseidon.space par le biais de $include

$include /etc/bind/neptune-poseidon.space.dnssec/neptune-poseidon.space_ksk.key
$include /etc/bind/neptune-poseidon.dnssec/neptune-poseidon.space_zsk.key

Attention : le $TTL 604800 doit être au tout début du fichier

Grace aux clefs générées on peut maintenant signer la zone :

dnssec-signzone -o neptune-poseidon.space -k neptune-poseidon.space-ksk ../db.neptune-poseidon.space neptune-poseidon.space-zsk

Sur gandi.net on active le DNSSEC et on entre les 2 clefs générées précedement


Création des partitions

Création de 2 DD virtuels sur Cordouan

lvcreate -L10G -n poseidon-home virtual
lvcreate -L10G -n poseidon-var virtual


On ajoute ensuite les disques dans /etc/xen/poseidon.cfg. disk = [

                 'file:/usr/local/xen/domains/poseidon/disk.img,xvda2,w',
                 'file:/usr/local/xen/domains/poseidon/swap.img,xvda1,w',

'phy:/dev/virtual/poseidon-home,xvdb1,w', 'phy:/dev/virtual/poseidon-var,xvdc1,w'

             ]


Ensuite, de nouveau sur la VM

mkfs -t ext4 /dev/xvdb1
mkfs -t ext4 /dev/xvdc1

Dans /etc/fstab on ajoute

/dev/xvdb1 /home ext4 defaults 0 2

On monte le disque avec

mount -a

On monte temporairement le var sur /mnt, et on copie le contenu de var sur /mnt

mount /dev/xvdc1 /mnt
mv /var/* /mnt

Dans /etc/fstab on ajoute

/dev/xvdc1 /var ext4 defaults 0 2

enfin on fait :

umount /mnt