Cahier 2017 groupe n°2 : Différence entre versions
(→Configuration du commutateur) |
(→Certification SSL) |
||
(40 révisions intermédiaires par un autre utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
==Cahier des charges== | ==Cahier des charges== | ||
L'objectif de ce module est de mettre en place le réseau redondant ci-dessous, puis de bénéficier de cette architecture pour s'exercer sur différents points détaillés dans ce wiki. | L'objectif de ce module est de mettre en place le réseau redondant ci-dessous, puis de bénéficier de cette architecture pour s'exercer sur différents points détaillés dans ce wiki. | ||
+ | [[Fichier:Archi pra.png|Architecture du réseau|500px|center]] | ||
− | ==Configuration | + | ==Configuration des commutateurs== |
Notre tâche spécifique était d'installer la baie de brassage et de configurer les commutateurs du réseau. | Notre tâche spécifique était d'installer la baie de brassage et de configurer les commutateurs du réseau. | ||
+ | Nous avons configurer les commutateurs de la manière suivante : | ||
+ | ; 1 VLAN pour chaque groupe (7 au total) | ||
+ | Dans la console du commutateur, après avoir activé les droits root ('''enable''') : | ||
+ | vlan database | ||
+ | vlan 9 name vfruits | ||
+ | Puis on passe en mode configuration ('''conf t''') pour associer des ports aux VLANs : | ||
+ | interface GigabitEthernet 4/1 | ||
+ | switchport access vlan 8 | ||
+ | end | ||
+ | Les ports 2/10 5/2 2/12 (commutateur en E306) et 4/25 1/1 4/27 (commutateur E304) sont configurés en mode trunk : | ||
+ | interface GigabitEthernet 4/25 | ||
+ | switchport trunk encapsulation dot1q | ||
+ | switchport mode trunk | ||
+ | end | ||
+ | [[Fichier:Commus.png|Ports trunk|500px|center]] | ||
==Avancement des tâches communes== | ==Avancement des tâches communes== | ||
− | Lors des premières semaines, nous avons | + | Lors des premières semaines, nous avons créé et configuré la machine virtuelle à l'aide de xen sur cordouan.<br> |
+ | |||
+ | ===CREATION DE LA MACHINE=== | ||
+ | |||
Pour cela, nous avons utilisé les commandes suivantes : | Pour cela, nous avons utilisé les commandes suivantes : | ||
+ | xen-create-image --hostname=IMA5-Durian --dist=wheezy --dir=/usr/local/xen --ip=172.26.76.107 --netmask=255.255.255.224 --gateway=172.26.79.254 | ||
+ | |||
+ | Cette commande permet de créer la VM IMA5-Durian en utilisant la distribution Wheezy et de lui attribuer une IP dans le bridge INSECURE (dans un premier temps) de Cordouan. | ||
+ | Pour ce faire, on modifie le fichier de configuration créé (/etc/xen/IMA5-Durian.cfg) : | ||
+ | |||
+ | vif = [ 'mac=00:16:3E:52:80:93, bridge=INSECURE' ] | ||
+ | |||
+ | Ensuite on lance notre VM avec la commande : | ||
+ | |||
+ | xl create IMA5-Durian.cfg | ||
+ | Pou accéder à notre VM : | ||
+ | |||
+ | xl console IMA5-Durian | ||
+ | |||
+ | ===CONFIGURATION=== | ||
Nous avons également créer des disques virtuels sur cette machine virtuelle (IMA5-Durian) à l'aide de LVM.<br> | Nous avons également créer des disques virtuels sur cette machine virtuelle (IMA5-Durian) à l'aide de LVM.<br> | ||
+ | |||
Ainsi, nous avons utilisé les commandes suivantes : | Ainsi, nous avons utilisé les commandes suivantes : | ||
lvcreate -L10G -nlvDurian-home | lvcreate -L10G -nlvDurian-home | ||
+ | lvcreate -L10G -nlvDurian-var | ||
Puis nous ajoutons ces disques dans le fichier de configuration /etc/xen/IMA5-Durian. | Puis nous ajoutons ces disques dans le fichier de configuration /etc/xen/IMA5-Durian. | ||
− | Ensuite, nous changeons le format de fichier de | + | disk = [ |
+ | 'file:/usr/local/xen/domains/durian/disk.img,xvda2,w', | ||
+ | 'file:/usr/local/xen/domains/durian/swap.img,xvda1,w', | ||
+ | 'phy:/dev/virtual/lv-IMA5-Durian-home,xvdb1,w', | ||
+ | 'phy:/dev/virtual/lv-IMA5-Durian-var,xvdc1,w', | ||
+ | 'phy:/dev/virtual/IMA5-Durian-part1,xvdd1,w', | ||
+ | 'phy:/dev/virtual/IMA5-Durian-part2,xvde2,w', | ||
+ | 'phy:/dev/virtual/IMA5-Durian-part3,xvdf3,w' | ||
+ | ] | ||
+ | |||
+ | Ensuite, nous changeons le format de fichier de la partition /home grâce à la commande : | ||
+ | |||
+ | mkfs -t ext4 /dev/xvdb1 | ||
+ | |||
+ | On modifie le fichier /etc/fstab afin que notre partition soit connue du système de fichier : | ||
+ | |||
+ | /dev/xvdb1 /home ext4 defaults 0 2 | ||
+ | |||
+ | Nous montons le disque avec : | ||
+ | |||
+ | mount -a | ||
+ | |||
+ | Concernant la partition var, il faut effectuer les premières étapes mais il faut monter temporairement le disque car /var est dynamique puis le move : | ||
+ | |||
+ | mount /dev/xvdc1 /mnt | ||
+ | mv /var/* /mnt | ||
+ | |||
+ | Finalement, on le rajoute dans /etc/fstab. | ||
+ | ===SERVICES INTERNET=== | ||
+ | |||
+ | |||
+ | On réserve notre nom de domaine sur le registrar gandi.net : www.durianfruit.space | ||
+ | On installe ensuite les paquetages bind9 et apache2 respectivement utilisés pour configurer notre serveur DNS et apache2 pour déployer le serveur WEB | ||
+ | |||
+ | ====SSH==== | ||
+ | |||
+ | On installe le client ssh puis on modifie le fichier de configuration /etc/ssh/ssh_conf pour permettre la connexion en root. | ||
+ | |||
+ | ====DNS==== | ||
+ | |||
+ | On crée le dossier qui servira à placer nos pages WEB : | ||
+ | |||
+ | mkdir /var/www/www.durianfruit.space | ||
+ | |||
+ | On crée ensuite le fichier de zone db.durianfruit.space permettant de fournir à notre nom de domaine un ensemble d'instructions : | ||
+ | |||
+ | ; | ||
+ | ; BIND data file for local loopback interface | ||
+ | ; | ||
+ | $TTL 604800 | ||
+ | @ IN SOA ns.durianfruit.space. root.durianfruit.space ( | ||
+ | 2 ; Serial | ||
+ | 604800 ; Refresh | ||
+ | 86400 ; Retry | ||
+ | 2419200 ; Expire | ||
+ | 604800 ) ; Negative Cache TTL | ||
+ | ; | ||
+ | IN NS ns.durianfruit.space. | ||
+ | IN NS ns6.gandi.net | ||
+ | ns IN A 193.48.57.180 | ||
+ | www IN A 193.48.57.180 | ||
+ | |||
+ | Puis nous configurons le fichier named.conf.local pour autoriser le transfert de paquets vers le DNS esclave (ici un des serveurs DNS Gandi) | ||
+ | |||
+ | zone "durianfruit.space" { | ||
+ | type master; | ||
+ | file "/etc/bind/db.durianfruit.space"; | ||
+ | allow-transfer {217.70.177.40;}; | ||
+ | }; | ||
+ | |||
+ | On redémarre le service bind9 | ||
+ | |||
+ | service bind9 restart | ||
+ | |||
+ | D'autre part on gère les glue records et on signale les DNS à Gandi : | ||
+ | * Glue records | ||
+ | nom du serveur : ns.durianfruit.space | ||
+ | ip : 193.48.57.180 | ||
+ | |||
+ | * DNS | ||
+ | DNS1 : ns.durianfruit.space | ||
+ | DNS2 : ns6.gandi.net | ||
+ | |||
+ | ====Certification SSL==== | ||
+ | |||
+ | Pour générer un certificat SSL par Gandi, on crée tout d'abord un CSR : | ||
+ | |||
+ | openssl rep -nodes -newkey rsa:2048 -sha1 -keyout durianfruit.space.key -out durianfruit.space.csr | ||
+ | |||
+ | On fournit ensuite le contenu du fichier .csr généré à Gandi pour que ce dernier valide notre certificat. | ||
+ | Une fois les étapes de validation et notre certificat généré on hash la structure pour qu'il soit pris en compte : | ||
+ | |||
+ | c_rehash /etc/ssl/certs | ||
+ | |||
+ | On lie notre serveur apache2 au nom de serveur certifié. Pour cela on crée le fichier 000-durianfruit.space-ssl.conf dans le dossier /etc/apache2/sites-available : | ||
+ | |||
+ | <VirtualHost 193.48.57.180:443> | ||
+ | ServerName www.durianfruit.space | ||
+ | ServerAlias durianfruit.space | ||
+ | DocumentRoot /var/www/www.durianfruit.space/ | ||
+ | CustomLog /var/log/apache2/secure_acces.log combined | ||
+ | |||
+ | SSLEngine on | ||
+ | SSLCertificateFile /etc/ssl/certs/certificate-527696.crt | ||
+ | SSLCertificateKeyFile /etc/ssl/private/durianfruit.space.key | ||
+ | SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem | ||
+ | SSLVerifyClient None | ||
+ | </VirtualHost> | ||
+ | ServerName "www.durianfruit.space" | ||
+ | |||
+ | On configure apache (/etc/apache2/ports.conf) pour que notre serveur écoute sur le port 443 : | ||
+ | |||
+ | Listen 80 443 | ||
+ | |||
+ | <IfModule ssl_module> | ||
+ | Listen 443 | ||
+ | </IfModule> | ||
+ | |||
+ | On active le module ssl d'apache, on active notre site avec le certificat et on relance notre serveur : | ||
+ | a2enmod ssl | ||
+ | a2ensite 000-durianfruit.space-ssl.conf | ||
+ | service apache2 restart | ||
+ | |||
+ | |||
+ | [[Fichier:Https_durian.png | Https durian]] | ||
+ | [[Fichier:Certificate_durian.png | Certificat SSL]] | ||
+ | |||
+ | <br style="clear: both;" /> | ||
+ | |||
+ | ====DNSSEC==== | ||
+ | |||
+ | On active DNSSEC dans le fichier /etc/bind/named.conf.options en ajoutant la ligne suivante : | ||
+ | |||
+ | dnssec-enable yes; | ||
+ | |||
+ | On génère ensuite une clef de signature de zone KSK et une clef de signature des enregistrements ZSK : | ||
+ | |||
+ | dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE durianfruit.space | ||
+ | dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE durianfruit.space | ||
+ | |||
+ | Pour plus de commodité, on renomme les clefs générées et on les ajoute au fichier de zone /etc/bind/db.durianfruit.space | ||
+ | |||
+ | $include /etc/bind/durianfruit.space.dnssec/durianfruit.space-ksk.key | ||
+ | $include /etc/bind/durianfruit.space.dnssec/durianfruit.space-zsk.key | ||
+ | |||
+ | On signe la zone : | ||
+ | |||
+ | dnssec-signzone -o durianfruit.space -k durianfruit.space-ksk ../db.durianfruit.space durianfruit.space-zsk | ||
+ | |||
+ | [[Fichier:Dnssec_verify_signed_durian.png]] | ||
+ | |||
+ | On met aussi à l'heure notre SE avec le package ntp. | ||
+ | On spécifie dans le fichier named.conf.local que l'on veut utiliser le fichier de zone signé db.durianfruit.space.signed | ||
+ | |||
+ | On indique à Gandi les clefs publiques KSK et ZSK et on vérifie la bon fonctionnement de notre DNSSEC. | ||
+ | [[Fichier:Clefs_publiques_durian.png]] | ||
+ | [[Fichier:Durian_dnssec.png]] | ||
+ | |||
+ | ====RAID 5==== | ||
+ | |||
+ | On crée trois disques virtuels qu'on rajoute à notre VM : | ||
+ | |||
+ | lvcreate -L 1G -n /dev/virtual/IMA5-Durian-part1 | ||
+ | lvcreate -L 1G -n /dev/virtual/IMA5-Durian-part2 | ||
+ | lvcreate -L 1G -n /dev/virtual/IMA5-Durian-part3 | ||
+ | |||
+ | [[Fichier:Config_mv_durian.png | Configuration finale VM Durian]] | ||
+ | |||
+ | On installe l'utilitaire mdadm à l'aide duquel on met en place le RAID5 sur nos 3 disques flambant neufs : | ||
+ | |||
+ | mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 /dev/xvdd1 /dev/xvde2 /dev/xvdf3 | ||
+ | |||
+ | On formate notre système de 3 disques, on le monte et on écrit des données dessus (.txt): | ||
+ | |||
+ | mkfs -t ext4 /dev/md0 | ||
+ | mount /dev/md0 /mnt | ||
+ | |||
+ | On teste alors d'enlever un des disques puis de vérifier l'état des données avant et après reconstruction : | ||
+ | |||
+ | |||
+ | [[Fichier:Faulty_xvdf3_durian.png]] | ||
+ | |||
+ | |||
+ | [[Fichier:Donnees_gardees_durian.png]] | ||
+ | |||
+ | |||
+ | On voit bien que nos données sont conservées malgré la perte d'un disque! | ||
+ | |||
+ | On "ré-ajoute" le disque : | ||
+ | |||
+ | |||
+ | [[Fichier:Recovery_durian.png]] | ||
+ | |||
− | + | On observe là aussi que nos données ont été réécrites sur les 3 disques. |
Version actuelle datée du 25 janvier 2018 à 19:14
Sommaire
Cahier des charges
L'objectif de ce module est de mettre en place le réseau redondant ci-dessous, puis de bénéficier de cette architecture pour s'exercer sur différents points détaillés dans ce wiki.
Configuration des commutateurs
Notre tâche spécifique était d'installer la baie de brassage et de configurer les commutateurs du réseau. Nous avons configurer les commutateurs de la manière suivante :
- 1 VLAN pour chaque groupe (7 au total)
Dans la console du commutateur, après avoir activé les droits root (enable) :
vlan database vlan 9 name vfruits
Puis on passe en mode configuration (conf t) pour associer des ports aux VLANs :
interface GigabitEthernet 4/1 switchport access vlan 8 end
Les ports 2/10 5/2 2/12 (commutateur en E306) et 4/25 1/1 4/27 (commutateur E304) sont configurés en mode trunk :
interface GigabitEthernet 4/25 switchport trunk encapsulation dot1q switchport mode trunk end
Avancement des tâches communes
Lors des premières semaines, nous avons créé et configuré la machine virtuelle à l'aide de xen sur cordouan.
CREATION DE LA MACHINE
Pour cela, nous avons utilisé les commandes suivantes :
xen-create-image --hostname=IMA5-Durian --dist=wheezy --dir=/usr/local/xen --ip=172.26.76.107 --netmask=255.255.255.224 --gateway=172.26.79.254
Cette commande permet de créer la VM IMA5-Durian en utilisant la distribution Wheezy et de lui attribuer une IP dans le bridge INSECURE (dans un premier temps) de Cordouan. Pour ce faire, on modifie le fichier de configuration créé (/etc/xen/IMA5-Durian.cfg) :
vif = [ 'mac=00:16:3E:52:80:93, bridge=INSECURE' ]
Ensuite on lance notre VM avec la commande :
xl create IMA5-Durian.cfg
Pou accéder à notre VM :
xl console IMA5-Durian
CONFIGURATION
Nous avons également créer des disques virtuels sur cette machine virtuelle (IMA5-Durian) à l'aide de LVM.
Ainsi, nous avons utilisé les commandes suivantes :
lvcreate -L10G -nlvDurian-home lvcreate -L10G -nlvDurian-var
Puis nous ajoutons ces disques dans le fichier de configuration /etc/xen/IMA5-Durian.
disk = [ 'file:/usr/local/xen/domains/durian/disk.img,xvda2,w', 'file:/usr/local/xen/domains/durian/swap.img,xvda1,w', 'phy:/dev/virtual/lv-IMA5-Durian-home,xvdb1,w', 'phy:/dev/virtual/lv-IMA5-Durian-var,xvdc1,w', 'phy:/dev/virtual/IMA5-Durian-part1,xvdd1,w', 'phy:/dev/virtual/IMA5-Durian-part2,xvde2,w', 'phy:/dev/virtual/IMA5-Durian-part3,xvdf3,w' ]
Ensuite, nous changeons le format de fichier de la partition /home grâce à la commande :
mkfs -t ext4 /dev/xvdb1
On modifie le fichier /etc/fstab afin que notre partition soit connue du système de fichier :
/dev/xvdb1 /home ext4 defaults 0 2
Nous montons le disque avec :
mount -a
Concernant la partition var, il faut effectuer les premières étapes mais il faut monter temporairement le disque car /var est dynamique puis le move :
mount /dev/xvdc1 /mnt mv /var/* /mnt
Finalement, on le rajoute dans /etc/fstab.
SERVICES INTERNET
On réserve notre nom de domaine sur le registrar gandi.net : www.durianfruit.space On installe ensuite les paquetages bind9 et apache2 respectivement utilisés pour configurer notre serveur DNS et apache2 pour déployer le serveur WEB
SSH
On installe le client ssh puis on modifie le fichier de configuration /etc/ssh/ssh_conf pour permettre la connexion en root.
DNS
On crée le dossier qui servira à placer nos pages WEB :
mkdir /var/www/www.durianfruit.space
On crée ensuite le fichier de zone db.durianfruit.space permettant de fournir à notre nom de domaine un ensemble d'instructions :
; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA ns.durianfruit.space. root.durianfruit.space ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; IN NS ns.durianfruit.space. IN NS ns6.gandi.net ns IN A 193.48.57.180 www IN A 193.48.57.180
Puis nous configurons le fichier named.conf.local pour autoriser le transfert de paquets vers le DNS esclave (ici un des serveurs DNS Gandi)
zone "durianfruit.space" { type master; file "/etc/bind/db.durianfruit.space"; allow-transfer {217.70.177.40;}; };
On redémarre le service bind9
service bind9 restart
D'autre part on gère les glue records et on signale les DNS à Gandi :
- Glue records
nom du serveur : ns.durianfruit.space ip : 193.48.57.180
- DNS
DNS1 : ns.durianfruit.space DNS2 : ns6.gandi.net
Certification SSL
Pour générer un certificat SSL par Gandi, on crée tout d'abord un CSR :
openssl rep -nodes -newkey rsa:2048 -sha1 -keyout durianfruit.space.key -out durianfruit.space.csr
On fournit ensuite le contenu du fichier .csr généré à Gandi pour que ce dernier valide notre certificat. Une fois les étapes de validation et notre certificat généré on hash la structure pour qu'il soit pris en compte :
c_rehash /etc/ssl/certs
On lie notre serveur apache2 au nom de serveur certifié. Pour cela on crée le fichier 000-durianfruit.space-ssl.conf dans le dossier /etc/apache2/sites-available :
<VirtualHost 193.48.57.180:443> ServerName www.durianfruit.space ServerAlias durianfruit.space DocumentRoot /var/www/www.durianfruit.space/ CustomLog /var/log/apache2/secure_acces.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/certificate-527696.crt SSLCertificateKeyFile /etc/ssl/private/durianfruit.space.key SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem SSLVerifyClient None </VirtualHost> ServerName "www.durianfruit.space"
On configure apache (/etc/apache2/ports.conf) pour que notre serveur écoute sur le port 443 :
Listen 80 443 <IfModule ssl_module> Listen 443 </IfModule>
On active le module ssl d'apache, on active notre site avec le certificat et on relance notre serveur :
a2enmod ssl a2ensite 000-durianfruit.space-ssl.conf service apache2 restart
DNSSEC
On active DNSSEC dans le fichier /etc/bind/named.conf.options en ajoutant la ligne suivante :
dnssec-enable yes;
On génère ensuite une clef de signature de zone KSK et une clef de signature des enregistrements ZSK :
dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE durianfruit.space dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE durianfruit.space
Pour plus de commodité, on renomme les clefs générées et on les ajoute au fichier de zone /etc/bind/db.durianfruit.space
$include /etc/bind/durianfruit.space.dnssec/durianfruit.space-ksk.key $include /etc/bind/durianfruit.space.dnssec/durianfruit.space-zsk.key
On signe la zone :
dnssec-signzone -o durianfruit.space -k durianfruit.space-ksk ../db.durianfruit.space durianfruit.space-zsk
On met aussi à l'heure notre SE avec le package ntp. On spécifie dans le fichier named.conf.local que l'on veut utiliser le fichier de zone signé db.durianfruit.space.signed
On indique à Gandi les clefs publiques KSK et ZSK et on vérifie la bon fonctionnement de notre DNSSEC.
RAID 5
On crée trois disques virtuels qu'on rajoute à notre VM :
lvcreate -L 1G -n /dev/virtual/IMA5-Durian-part1 lvcreate -L 1G -n /dev/virtual/IMA5-Durian-part2 lvcreate -L 1G -n /dev/virtual/IMA5-Durian-part3
On installe l'utilitaire mdadm à l'aide duquel on met en place le RAID5 sur nos 3 disques flambant neufs :
mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 /dev/xvdd1 /dev/xvde2 /dev/xvdf3
On formate notre système de 3 disques, on le monte et on écrit des données dessus (.txt):
mkfs -t ext4 /dev/md0 mount /dev/md0 /mnt
On teste alors d'enlever un des disques puis de vérifier l'état des données avant et après reconstruction :
On voit bien que nos données sont conservées malgré la perte d'un disque!
On "ré-ajoute" le disque :
On observe là aussi que nos données ont été réécrites sur les 3 disques.