Cahier 2017 groupe n°7 : Différence entre versions
(→Présentation) |
(→Cryptage des données) |
||
(18 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 37 : | Ligne 37 : | ||
On modifie le fichier de configuration de notre VM pour qu'elle prenne en compte ces disques et on la relance. | On modifie le fichier de configuration de notre VM pour qu'elle prenne en compte ces disques et on la relance. | ||
− | Nos disques home et var s’appelleront donc | + | <pre> |
+ | 'phy:/dev/virtual/IMA5-Ananas-home,xvdb1,w', | ||
+ | 'phy:/dev/virtual/IMA5-Ananas-var,xvdc1,w'</pre> | ||
+ | |||
+ | Nos disques home et var s’appelleront donc xvdb1 et xvdc1. | ||
Dans notre machine nous transformons nos disque en partitions ext4. | Dans notre machine nous transformons nos disque en partitions ext4. | ||
<pre> | <pre> | ||
− | mkfs -t ext4 /dev/ | + | mkfs -t ext4 /dev/xvdb1 |
− | mkfs -t ext4 /dev/ | + | mkfs -t ext4 /dev/xvdc1 |
</pre> | </pre> | ||
Pour la partition home, nous modifier simplement le fichier /etc/fstab de la VM en y ajoutant la ligne suivante: | Pour la partition home, nous modifier simplement le fichier /etc/fstab de la VM en y ajoutant la ligne suivante: | ||
− | <pre> /dev/ | + | <pre> /dev/xvdb1 /home ext4 defaults 0 2 </pre> |
Pour la partition var, il faut faire attention à ne pas perdre les données existante. Pour cela, on va monter notre partition et y déplacer le contenue de notre dossier var: | Pour la partition var, il faut faire attention à ne pas perdre les données existante. Pour cela, on va monter notre partition et y déplacer le contenue de notre dossier var: | ||
<pre> | <pre> | ||
− | mount /dev/ | + | mount /dev/xvdc1 /mnt |
mv /var/* /mnt | mv /var/* /mnt | ||
</pre> | </pre> | ||
Ligne 58 : | Ligne 62 : | ||
Une fois ceci effectué, nous pouvons répéter l'opération de la partition home: | Une fois ceci effectué, nous pouvons répéter l'opération de la partition home: | ||
− | <pre> /dev/ | + | <pre> /dev/xvdc1 /var ext4 defaults 0 2 </pre> |
− | == Serveur SSH == | + | == Service internet == |
+ | === Serveur SSH === | ||
Nous souhaitons pouvoir nous connecter grâce à SSH à notre VM (pour ne plus passer par xl console). | Nous souhaitons pouvoir nous connecter grâce à SSH à notre VM (pour ne plus passer par xl console). | ||
Ligne 81 : | Ligne 86 : | ||
<pre> ssh 193.48.57.181 -l root </pre> | <pre> ssh 193.48.57.181 -l root </pre> | ||
− | == Serveur DNS == | + | === Serveur DNS === |
Pour réaliser notre serveur DNS, nous allons acheter un nom de domain sur le site Gandi. En s'assurant qu'il autorisera l'installation d'un DNSSEC pour la suite du TP. On achète donc le nom de domain kerval.space. | Pour réaliser notre serveur DNS, nous allons acheter un nom de domain sur le site Gandi. En s'assurant qu'il autorisera l'installation d'un DNSSEC pour la suite du TP. On achète donc le nom de domain kerval.space. | ||
Ligne 144 : | Ligne 149 : | ||
</pre> | </pre> | ||
− | == Sécurisation par certificat SSL == | + | === Sécurisation par certificat SSL === |
Pour avoir un certificat SSL de Gandi, on génére dans un premier temps un CSR | Pour avoir un certificat SSL de Gandi, on génére dans un premier temps un CSR | ||
Ligne 216 : | Ligne 221 : | ||
</pre> | </pre> | ||
− | == Sécurisation par DNSSEC == | + | === Sécurisation par DNSSEC === |
Pour mettre en place un DNSSEC, on modifie d'abord les options de blind9, dans /etc/blind/named.conf.options: | Pour mettre en place un DNSSEC, on modifie d'abord les options de blind9, dans /etc/blind/named.conf.options: | ||
Ligne 246 : | Ligne 251 : | ||
Du coté de Gandi, il faut renseigner les clefs publique de la KSK et ZSK dans la section "Gérer DNSSEC" | Du coté de Gandi, il faut renseigner les clefs publique de la KSK et ZSK dans la section "Gérer DNSSEC" | ||
− | == RAID5 == | + | == Sécurisation des données == |
+ | === RAID5 === | ||
Afin de protéger nos données, nous allons installer un systeme raid5 sur notre VM. Pour ce faire, nous allons créer 3 disques virtuels sur cordouan. | Afin de protéger nos données, nous allons installer un systeme raid5 sur notre VM. Pour ce faire, nous allons créer 3 disques virtuels sur cordouan. | ||
Ligne 296 : | Ligne 302 : | ||
avec la commande: cat /proc/mdstat on peut observer la reconstruction du disque. | avec la commande: cat /proc/mdstat on peut observer la reconstruction du disque. | ||
− | == Cryptage des données == | + | === Cryptage des données === |
On souhaite crypter nos données pour les sécuriser. Pour cela on va ajouter un disque xvdd4 a notre VM comme précédemment pour les disques RAIDs. | On souhaite crypter nos données pour les sécuriser. Pour cela on va ajouter un disque xvdd4 a notre VM comme précédemment pour les disques RAIDs. | ||
Ligne 317 : | Ligne 323 : | ||
On entre un mot de passe: bandederelou | On entre un mot de passe: bandederelou | ||
− | Puis on vérifie les infos de la | + | Puis on vérifie les infos de la partition: |
<pre> | <pre> | ||
Ligne 323 : | Ligne 329 : | ||
</pre> | </pre> | ||
− | On peut ensuite ouvrir la | + | On peut ensuite ouvrir la partition, la monter et la démonter: |
<pre> | <pre> | ||
cryptsetup luksOpen /dev/xvdd4 | cryptsetup luksOpen /dev/xvdd4 | ||
− | mkfs | + | mkfs ext4 /dev/mapper/crypt |
mount -t ext4 /dev/mapper/crypt /mnt/ | mount -t ext4 /dev/mapper/crypt /mnt/ | ||
umount /mnt/ | umount /mnt/ | ||
</pre> | </pre> | ||
− | Si | + | Si on demonte la partition, il faut la re-crypter: |
<pre> | <pre> | ||
Ligne 345 : | Ligne 351 : | ||
== Installation et configuration de Windows == | == Installation et configuration de Windows == | ||
+ | |||
+ | Sur une machine de TP, on installe Windows 10 ( on remplace la la version présente de Windows 7). | ||
+ | |||
+ | Une fois installé, il faut ré-installer Grub pour pouvoir continuer d'utiliser Linux. | ||
+ | |||
+ | Afin de pouvoir avoir internet et communiquer avec les autres machines de TP, il faut configurer manuellement l'adresse ip de la machine et ouvrir le pare-feu de Windows. | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | | [[Fichier:configInternetWin10.PNG|thumb|upright=1|Configuration internet de windows 10]] | ||
+ | | [[Fichier:ParefeuWIN10.PNG|thumb|upright=1|Parefeu de Win 10]] | ||
+ | |} | ||
+ | </center> | ||
== Installation de docker == | == Installation de docker == | ||
+ | |||
+ | On se rend sur le site de Docker pour télécharger sa version pour Windows. | ||
+ | |||
+ | Une fois installer, on peut configurer son proxy pour pouvoir télécharger des conteneurs. La configuration Internet de Docker est dupliquée sur ses conteneurs. | ||
+ | |||
+ | [[Fichier:Proxiesdocker.PNG||400px||center|Configuration proxy de Docker]] | ||
== lancement d'un conteneur == | == lancement d'un conteneur == | ||
+ | |||
+ | === Docker === | ||
+ | |||
+ | La version de Docker pour Windows ne comporte pas d'interface graphique. Pour créer nos conteneurs, on utilise PowerShell. | ||
+ | |||
+ | on peut vérifier la version de docker avec la commande | ||
+ | |||
+ | <pre> | ||
+ | docker version | ||
+ | </pre> | ||
+ | |||
+ | [[fichier:VersionDocker.PNG||400px||center]] | ||
+ | |||
+ | On constate donc bien que notre client a un OS Windows et que notre serveur a un OS Linux. | ||
+ | |||
+ | === Lancement === | ||
+ | |||
+ | Avec la commande "run", docker lance un conteneur de l'application souhaitée. Si l'application n'est pas installé, docker se charge de la télécharger. | ||
+ | |||
+ | <pre>docker run -it debian</pre> | ||
+ | |||
+ | A noter que l'option "it", permet de lancer l'application et de se connecter au conteneur. | ||
+ | |||
+ | Avec la commande ps on peut voir la liste des conteneurs: | ||
+ | [[fichier:PSDocker.PNG||600px||center]] | ||
+ | |||
+ | Avec les commandes start <id> et attach <id>, on démarre un conteneur existant, et on se connecte. | ||
+ | |||
+ | [[fichier:execDocker.PNG||600px||center]] | ||
+ | |||
+ | === Conteneur === | ||
+ | |||
+ | Un fois dans le conteneur, on peut exécuter la commande "ip a" pour vérifier la prise en compte d'internet. | ||
+ | |||
+ | [[fichier:conteneurDocker.PNG||600px||center]] | ||
+ | |||
+ | Notre conteneur Linux prend en charge une connexion internet, on a la possibilité d'avoir une application Linux fonctionnelle sous Windows. | ||
+ | |||
+ | == Cohabitation de Windows et Linux == | ||
+ | |||
+ | On a la possibilité de faire cohabiter un serveur Linux et Windows avec Docker. | ||
+ | On exécuter la commande: | ||
+ | |||
+ | <pre>dockerd.exe -H npipe:////./pipe/win_engine --service-name=com.docker.windows --register-service</pre> | ||
+ | |||
+ | Une fois cette commande exécuter, si on lance Docker sans l'option -H, on lance un serveur Linux et avec l'option -H on lance un serveur Windows sans interrompre le précédent. |
Version actuelle datée du 15 novembre 2017 à 10:48
Sommaire
Tâches communes
Afin de réaliser ce TP, nous allons créer une machine virtuelle sur le serveur cordouan de l'école.
Installation et configuration de la machine
Installation
La création d'une machine virtuelle se fait grâce à la commande xen. On exécute la commande xen-create-image afin de créer l'image de notre VM
xen-create-image --hostname=IMA5-Ananas --ip=193.48.57.181 --netmask=255.255.255.240 --dir=/usr/local/xen
Une fois l'image créée, on peut créer notre VM grâce à la commande:
xl create /etc/xen/IMA5-Ananas.cfg
On se connecte à la VM grâce à la commande:
xl console IMA5-Ananas
Et on peut éteindre ou détruire la VM grâce au commande:
xl shutdown IMA5-Ananas xl destroy IMA5-Ananas
Configuration
Un fois la VM Créée, nous allons modifier son répertoire var et home afin qu'ils soient une partition de l'hôte. Pour cela, on va utiliser la commande lvcreate.
lvcreate -L10G -IMA5-Ananas-home lvcreate -L10G -IMA5-Ananas-var
On modifie le fichier de configuration de notre VM pour qu'elle prenne en compte ces disques et on la relance.
'phy:/dev/virtual/IMA5-Ananas-home,xvdb1,w', 'phy:/dev/virtual/IMA5-Ananas-var,xvdc1,w'
Nos disques home et var s’appelleront donc xvdb1 et xvdc1.
Dans notre machine nous transformons nos disque en partitions ext4.
mkfs -t ext4 /dev/xvdb1 mkfs -t ext4 /dev/xvdc1
Pour la partition home, nous modifier simplement le fichier /etc/fstab de la VM en y ajoutant la ligne suivante:
/dev/xvdb1 /home ext4 defaults 0 2
Pour la partition var, il faut faire attention à ne pas perdre les données existante. Pour cela, on va monter notre partition et y déplacer le contenue de notre dossier var:
mount /dev/xvdc1 /mnt mv /var/* /mnt
Une fois ceci effectué, nous pouvons répéter l'opération de la partition home:
/dev/xvdc1 /var ext4 defaults 0 2
Service internet
Serveur SSH
Nous souhaitons pouvoir nous connecter grâce à SSH à notre VM (pour ne plus passer par xl console).
Pour cela, on installe ssh sur notre machine:
apt-get install ssh
On modifier par la suite le fichier /etc/ssh/ssh_config pour autoriser la connexion en temps que root:
PermitRootLogin yes
Puis on redemarre le service:
service ssh restart
Une fois cela fait, on peut se connecter à la machine depuis une machine de l'école grâce à la commande
ssh 193.48.57.181 -l root
Serveur DNS
Pour réaliser notre serveur DNS, nous allons acheter un nom de domain sur le site Gandi. En s'assurant qu'il autorisera l'installation d'un DNSSEC pour la suite du TP. On achète donc le nom de domain kerval.space.
Sur notre VM, on installe blind9 et apache2:
apt-get install bind9 apache2
Dans le dossier /var/www on créer un dossier www.kerval.space pour plus tard
mkdir /var/www/www.kerval.space
Une fois ceci fait, nous allons écrire la table DNS db.kerval.space dans le dossier /etc/bind/
; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA ns.kerval.space. root.kerval.space ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; IN NS ns.kerval.space. ns IN A 193.48.57.181 www IN A 193.48.57.181
On modifie le fichier named.conf.options. On note que l'adresse 217.70.177.40 est celle de notre DNS esclave (Gandi).
options { directory "var/cache/bind" dnssec-validation auto; auth-nxdomain no; allow-transfer {"allowed_to_transfer";} listen-on-v6 {any;} } acl "allowed_to_transfer" { 217.70.177.40/32; }
Une fois ces modifications apportée, on peut redémarrer notre service.
service bind9 restart
Afin que le serveur fonctionne, nous devons aussi configurer Gandi pour y renseigner notre DNS
Dans les "glues records":
'Nom du serveur' : ns.kerval.space 'IP' : 193.48.57.181
Les DNS:
'DNS1' : ns.kerval.space 'DNS2' : ns6.gandi.net
Sécurisation par certificat SSL
Pour avoir un certificat SSL de Gandi, on génére dans un premier temps un CSR
openssl req -nodes -newkey rsa:2048 -sha1 -keyout kerval.space.key -out kerval.space.csr
On entre les différents informations demandées.
Country Name (2 letter code) [AU]:FR State or Province Name (full name) [Some-State]:Nord Locality Name (eg, city) []:Lille Organization Name (eg, company) [Internet Widgits Pty Ltd]:kerval.space Organizational Unit Name (eg, section) []:kerval.space Common Name (e.g. server FQDN or YOUR name) []:kerval.space
Une fois notre certificat généré puis validé par Gandi ( très long), on place les fichiers dans les bons dossiers. On note que le fichier GandiStandardSSLCA2.pem est un certificat intermédiaire.
cp kerval.space.crt /etc/ssl/certs/kerval.space.crt cp kerval.space.key /etc/ssl/private/kerval.space.key cp GandiStandardSSLCA2.pem /etc/ssl/certs/GandiStandardSSLCA2.pem
Une fois cela fait, on peut refaire un hachage pour prendre notre certificat en compte.
c_rehash /etc/ssl/certs
On vas devoir associer notre service apache2 avec notre nom de serveur. Pour cela on créé un fichier 000-kerval.space-ssl.conf dans notre dossier apache:
touch /etc/apache2/sites-available/000-kerval.space-ssl.conf
#NameVirtualHost *:443 <VirtualHost 193.48.57.181:443> ServerName www.kerval.space ServerAlias kerval.space DocumentRoot /var/www/www.kerval.space/ CustomLog /var/log/apache2/secure_acces.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/kerval.space.crt SSLCertificateKeyFile /etc/ssl/private/kerval.space.key SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem SSLVerifyClient None </VirtualHost> <Directory /var/www/www.kerval.space> Require all granted </Directory> ServerName "kerval.space"
On modifie ensuite le fichier ports.conf d'apache pour qu'il puisse écouter le port 443
Listen 80 443 <IfModule ssl_module> Listen 443 </IfModule>
il ne reste plus qu'a activer le module SSL d'apache et notre site:
a2enmod ssl a2ensite 000-kerval.space-ssl.conf service apache2 reload
Sécurisation par DNSSEC
Pour mettre en place un DNSSEC, on modifie d'abord les options de blind9, dans /etc/blind/named.conf.options:
dnssec-enable yes;
On va générer nos clefs KSK et ZSK grâce aux commandes:
dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE kerval.space dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE kerval.space
Pour falicité le travail, on renomme les clefs en kerval.space-ksk.key et kerval.space-zsk.key.
Dans notre fichier db.kerval.space, on ajoute les lignes suivante:
$include /etc/bind/kerval.space.dnssec/kerval.space-ksk.key $include /etc/bind/kerval.space.dnssec/kerval.space-zsk.key
A noter que le dossier kerval.space.dnssec a été créé avant la génération des clefs.
Coté VM, il ne nous reste plus qu'a signer la zone:
dnssec-signzone -o kerval.space -k kerval.space-ksk ../db.kerval.space kerval.space-zsk
Du coté de Gandi, il faut renseigner les clefs publique de la KSK et ZSK dans la section "Gérer DNSSEC"
Sécurisation des données
RAID5
Afin de protéger nos données, nous allons installer un systeme raid5 sur notre VM. Pour ce faire, nous allons créer 3 disques virtuels sur cordouan.
lvcreate -L 1G -n /dev/virtual/Ananas-raid1 lvcreate -L 1G -n /dev/virtual/Ananas-raid2 lvcreate -L 1G -n /dev/virtual/Ananas-raid3
Puis les ajouter à la configuration de notre VM:
'phy:/dev/virtual/Ananas-raid1,xvdd1, w', 'phy:/dev/virtual/Ananas-raid2,xvdd2, w', 'phy:/dev/virtual/Ananas-raid3,xvdd3, w',
Une fois cela fait, on redemare notre VM pour que les nouveaux disque soient pris en compte et on installe mdadm:
apt-get install mdadm
On peut ensuite créer un disque RAID5 nommé md0:
mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 /dev/xvdd1 /dev/xvdd2 /dev/xvdd3
on transforme notre disque en partition ext4 et on la monte:
mkfs -t ext4 /dev/md0 mount /dev/md0 /mnt
On crée un fichier sur notre disque et on supprime une partitions pour vérifier la reconstitution du fichier par RAID5:
mdadm --set-faulty /dev/md0 /dev/xvdd3 mdadm --remove /dev/md0 /dev/xvdd3
On constate que notre fichier est toujours présents et on ajoute de nouveau la partition
mdadm -add /dev/md0 /dev/xvdd3
avec la commande: cat /proc/mdstat on peut observer la reconstruction du disque.
Cryptage des données
On souhaite crypter nos données pour les sécuriser. Pour cela on va ajouter un disque xvdd4 a notre VM comme précédemment pour les disques RAIDs.
Une fois monter en partition ext4, on configure la partition:
fdisk /dev/xvdd4 "d pour supprimer les partitions 1-2-3" "n pour ajouter des partitions" "w pour enregistrer"
On configure la partition en type Lucks avec un algorithme de hachage SHA256:
cryptsetup luksFormat -c eas -h sha256 /dev/xvdd4
On entre un mot de passe: bandederelou
Puis on vérifie les infos de la partition:
cryptsetup luksDump /dev/xvdd4
On peut ensuite ouvrir la partition, la monter et la démonter:
cryptsetup luksOpen /dev/xvdd4 mkfs ext4 /dev/mapper/crypt mount -t ext4 /dev/mapper/crypt /mnt/ umount /mnt/
Si on demonte la partition, il faut la re-crypter:
cryptsetup luksClose crypt
Tâche spécifique
Présentation
Microsoft propose avec la nouvelle version de son OS Windows 10, une solution Docker permettant de mettre en place des conteneurs Linux sous Windows. Notre but est donc de tester les conteneurs proposés par Windows afin de voir si une application Linux peut être fonctionnelle. Microsoft indique que les conteneurs Linux ne peuvent pas prendre de connexion réseau en charge. Nous allons donc voir si une prise en charge du réseau est possible.
Installation et configuration de Windows
Sur une machine de TP, on installe Windows 10 ( on remplace la la version présente de Windows 7).
Une fois installé, il faut ré-installer Grub pour pouvoir continuer d'utiliser Linux.
Afin de pouvoir avoir internet et communiquer avec les autres machines de TP, il faut configurer manuellement l'adresse ip de la machine et ouvrir le pare-feu de Windows.
Installation de docker
On se rend sur le site de Docker pour télécharger sa version pour Windows.
Une fois installer, on peut configurer son proxy pour pouvoir télécharger des conteneurs. La configuration Internet de Docker est dupliquée sur ses conteneurs.
lancement d'un conteneur
Docker
La version de Docker pour Windows ne comporte pas d'interface graphique. Pour créer nos conteneurs, on utilise PowerShell.
on peut vérifier la version de docker avec la commande
docker version
On constate donc bien que notre client a un OS Windows et que notre serveur a un OS Linux.
Lancement
Avec la commande "run", docker lance un conteneur de l'application souhaitée. Si l'application n'est pas installé, docker se charge de la télécharger.
docker run -it debian
A noter que l'option "it", permet de lancer l'application et de se connecter au conteneur.
Avec la commande ps on peut voir la liste des conteneurs:
Avec les commandes start <id> et attach <id>, on démarre un conteneur existant, et on se connecte.
Conteneur
Un fois dans le conteneur, on peut exécuter la commande "ip a" pour vérifier la prise en compte d'internet.
Notre conteneur Linux prend en charge une connexion internet, on a la possibilité d'avoir une application Linux fonctionnelle sous Windows.
Cohabitation de Windows et Linux
On a la possibilité de faire cohabiter un serveur Linux et Windows avec Docker. On exécuter la commande:
dockerd.exe -H npipe:////./pipe/win_engine --service-name=com.docker.windows --register-service
Une fois cette commande exécuter, si on lance Docker sans l'option -H, on lance un serveur Linux et avec l'option -H on lance un serveur Windows sans interrompre le précédent.