Cahier 2017 groupe n°2 : Différence entre versions

De Wiki d'activités IMA
(Cahier des charges)
(Certification SSL)
 
(39 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]]
+
[[Fichier:Archi pra.png|Architecture du réseau|500px|center]]
  
==Configuration du commutateur==
+
==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 créer la machine virtuelle à l'aide de xen sur cordouan.<br>
+
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 ce disque grâce à la commande :
+
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]]
 +
 
  
mkfs -t ext4 /dev/nomdudisquecréé
+
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

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.

Architecture du réseau

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
Ports trunk

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


Https durian Certificat SSL


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

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. Clefs publiques durian.png 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

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 :


Faulty xvdf3 durian.png


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 :


Recovery durian.png


On observe là aussi que nos données ont été réécrites sur les 3 disques.