TP sysres IMA5sc 2018/2019 G6 : Différence entre versions
(→Séance 5) |
(→Ajout d'une clef SSL) |
||
Ligne 277 : | Ligne 277 : | ||
==Ajout d'une clef SSL== | ==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 | ||
+ | |||
+ | Ensuite sur Gandi.net -> SSL Certificates, on achète la clef |
Version du 10 décembre 2018 à 17:48
Sommaire
- 1 Séance 1 :
- 1.1 Création du dd virtuel :
- 1.2 Formattage du disc :
- 1.3 Création des points d'ancrage dans /tmp
- 1.4 Montage du disk :
- 1.5 Accès au dépôt distant de debian :
- 1.6 Création du système de fichier sur fs1 :
- 1.7 Pour simplifier l'acces :
- 1.8 Démontage du disk :
- 1.9 Copie collage du disk.im en disk1.img disk2.img disk3.img
- 1.10 Isolation des conteneurs (aussi au niveau réseau)
- 1.11 Création d'un commutateur virtuel :
- 1.12 creation des 3 interfaced reseaux, + interface proxy inverse
- 1.13 recuperation des PID :
- 1.14 on relie les vif sur les conteneurs
- 1.15 démarrage des interfaces et du pontpont
- 1.16 Dans le conteneur 1
- 1.17 Dans le conteneur 2
- 1.18 Dans le conteneur 3
- 2 Séance 2 :
- 3 Docker
- 4 Séance 3 & 4 : PrA
- 5 Séance 5
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
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
Ensuite sur Gandi.net -> SSL Certificates, on achète la clef