Cahier 2017 groupe n°6

De Wiki d'activités IMA
Révision datée du 26 octobre 2017 à 20:31 par Ldamiens (discussion | contributions) (Sécurisation du DNS via un DNSSEC)

Tâche spécifique

Présentation de la tâche

Définition d'un DNSSEC

Installation du matériel

Tâches communes

Installation de la machine virtuelle

Création

Les machines virtuelles que nous installons sont sur le serveur cordouan que nous accédons via SSH. La création des machines virtuelles (VMs) s'effectue grâce à la commande "xen". Ainsi, depuis cordouan, nous lançons la commande xen-create-image en prenant soin d'y ajoutant les paramètres importants. Il est à noter que nous changerons l'adresse IP initiale car lors de la première séance nous avions travaillé sur le réseau insecure qui n'est pas notre réseau définitif.

xen-create-image --hostname=papaye --ip=172.26.79.101 --netmask=255.255.255.224 --gateway=172.26.79.254 --dir=/usr/local/xen

Une fois la VM créée, il est possible de la démarrer de la manière suivante :

 xl create /etc/xen/IMA5-Papaye/cfg 

Ensuite, nous lançons la console de cette manière :

 xl console IMA5-Papaye 
Puis, pour sortir de cette dernière, nous faisons :
 ctrl + alt gr + ] 
Enfin, pour éteindre la machine virtuelle :
 xl shutdown IMA5-Papaye 
Et pour détruire la VM :
 xl destroy IMA5-Papaye 

Configuration

Maintenant, nous devons faire en sorte que les répertoires var et home de notre VM soient sur des partitions de l'hôte. Pour cela, nous utilisons la commande lvcreate.

Il est à noter que pour le répertoire home, la manipulation est un peu plus simple que pour le répertoire var. Tout d'abord, nous faisons appel à lvcreate de la manière suivante, depuis cordouan :

lvcreate -L10G -IMA5-Papaye-home
lvcreate -L10G -IMA5-Papaye-var

(Il est possible de visualiser notre home grâce à la commande lsblk qui affiche tous les périphériques bloc.

Ensuite, nous ajoutons les disques dans le fichier de configuration de cordouan, dans /etc/xen/IMA5-Papaye. Nous appelons le disque home, xvda3 et le disque var, xvda4.

Puis, nous transformons nos disque en partitions ext4 :

mkfs -t ext4 /dev/xvda3
mkfs -t ext4 /dev/xvda4

HOME

Pour la partition home, il suffit de modifier le fichier /etc/fstab de la VM et d'y ajouter la ligne suivante pour que la partition soit montée au démarrage :

 /dev/xvda3 /home ext4 defaults 0 2 

Le "0" indique que nous sauvegardons jamais et le "2" est propre à la sécurité de la partition.

Ainsi, un simple
 mount -a 
suffit à monter à la partition. (Il est possible de la vérifier grâce à la commande df)

VAR

Pour la partition var, c'est un peu plus compliqué car il faut monter la partition dans un /mnt temporaire avant de la déplacer. Nous effectuons donc les instructions suivantes :

mount /dev/xvda4 /mnt
mv /var/* /mnt

Enfin, nous modifions le fichier /etc/fstab de la même manière que pour la partition home :

 /dev/xvda4 /var ext4 defaults 0 2 

Serveur SSH

Dans un premier temps, nous devons changer l'adresse IP de notre machine virtuelle ainsi que son masque dans /etc/config. Notre adresse IP est 193.48.57.178. Et notre masque est 255.255.255.240. Puis, nous avons modifié le fichier /etc/xen/IMA5-Papaye. En effet, nous remplaçons l'id par IMA5sc (pour la première séance, nous utilisions insecure). De plus, nous rajoutons la route par défaut, le gateway : 193.49.57.177 dans le fichier /etc/config.

Il est nécessaire d'installer ssh sur notre machine virtuelle :

apt-get install ssh

De plus, il est important de modifier le fichier /etc/ssh/sshd_config en changeant la ligne suivante :

 PermitRootLogin Prohibited 

par

 PermitRootLogin yes 

Grâce à cela, nous pourrons nous connecter en root sur la machine en ssh.

Nous redémarrons le service :

 service ssh restart 

Serveur DNS

Dans un premier temps, nous avons acheté notre nom de domaine sur Gandi en prenant soin que ce dernier autorise l'installation d'un DNSSEC. Nous avons donc pris le domaine papaye.space.

Puis, nous avons installé bind9 et apache2 :
apt-get install bind9 apache2 
. Nous avons d'ailleurs ajouté au fichier /etc/default/bind9 la ligne suivante :
 OPTIONS="-4 -u bind" 

Ensuite, nous créons le dossier pour la page web qui sera vide pour le moment :

 mkdir /var/www/www.papaye.space 

Dans un second temps, nous créons la table de DNS ou le fichier de zone : dns.papaye.space, en voici le contenu :

 
;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     dns.papaye.space. root.papaye.space (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
        IN      NS      dns.papaye.space.
ns      IN      A       193.48.57.178
www     IN      A       193.48.57.178 

Ensuite, nous configurons le fichier named.conf.local :

 zone "papaye.space" {
        type master;
        file "/etc/bind/dns.papaye.space";
};
 

Ainsi que le fichier named.conf.options (217.70.177.40/32 étant l'adresse IP de Gandi, notre DNS esclave :

 
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;
}
 

Enfin, nous redémarrons notre service bind9 :

 service bind9 restart 

Les configurations depuis notre machine virtuelle sont terminées mais nous avons dû également effectuer un réglage depuis Gandi afin de renseigner nos DNS. Pour les "glues records",

 
'Nom du serveur' : dns.papaye.space
'IP' : 193.48.57.178 

Pour les DNS,

 
'DNS1' : dns.papaye.space
'DNS2' : ns6.gandi.net 

Sécurisation du site web via un certificat

L'objectif de cette partie est d'obtenir un certificat pour notre site web. Le certificat SSL généré par Gandi s'obtient de la manière suivante :

 openssl req -nodes -newkey rsa:2048 -sha1 -keyout papaye.space.key -out papaye.space.csr 

Afin de valider notre certificat par Gandi, nous avons dû ajouter une ligne de code à notre fiche de zone (dns.papaye.space), qui était donné par le site.

Une fois le certificat validé par Gandi, un petit cadenas noir est visualisable à côté de notre nom de domaine. De plus, nous pouvons recopier les fichiers de certification générés par Gandi dans le dossier SSL.

cp certificat.crt /etc/ssl/certs/papaye.space.crt
cp serveur.key /etc/ssl/private/papaye.space.key
cp GandiStandardSSLCA.pem /etc/ssl/certs/GandiStandardSSLCA.pem

Nous faisons un hashage de notre structure afin que notre certificat soit prend en compte :

 c_rehash /etc/ssl/certs 

Puis, nous créons le fichier 000-papaye.space-ssl.conf dans /etc/apache2/sites-available/ pour associer apache2 à notre nom de serveur :

#NameVirtualHost *:443
        <VirtualHost 193.48.57.178:443>
                ServerName www.papaye.space
                ServerAlias papaye.space
                DocumentRoot /var/www/www.papaye.space/
                CustomLog /var/log/apache2/secure_acces.log combined

                SSLEngine on
                SSLCertificateFile /etc/ssl/certs/papaye.space.crt
                SSLCertificateKeyFile /etc/ssl/private/papaye.space.key
                SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA.pem
                SSLVerifyClient None
        </VirtualHost>
        <Directory /var/www/www.papaye.space>
                Require all granted
        </Directory>
ServerName "papaye.space"

Ensuite, nous modifions le fichier ports.conf du serveur Apache afin qu'il écoute le port 443 (SSL):

Listen 80 443

<IfModule ssl_module>
        Listen 443
</IfModule>

Enfin, nous activons le module SSL d'Apache et activons notre site avec notre certificat :

a2enmod ssl 
a2ensite 000-piscinemorte.net-ssl.conf
service apache2 reload

Sécurisation du DNS via un DNSSEC

Dans un premier temps, nous devons activer le DNSSEC en ajoutant l'option dans le fichier /etc/bind/named.conf.options :

 dnssec-enable yes; 

Ensuite, nous créons le répertoire dans lequel nous allons créer nos clef :

mkdir papaye.space.dnssec
cd papaye.space.dnssec

Dans un second temps, nous générons nos clefs KSK et ZSK de la manière suivante :

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

Nous devons inclure ces clefs dans notre fichier de zone (dns.papaye.space) (la 14842 étant la ksk et l'autre la zsk):

$include /etc/bind/papaye.space.dnssec/Kpapaye.space.+005+14842.key
$include /etc/bind/papaye.space.dnssec/Kpapaye.space.+005+62520.key

Enfin, nous signons la zone :

 dnssec-signzone -o papaye.space-k Kpapaye.space.+005+14842 ../dns.papaye.space Kpapaye.space.+005+62520 

Pour finir, nous saisissons dans Gandi la clé publique de la KSK et de la ZSK en allant dans l'onglet "générer DNSSEC". Nous vérifions la sécurisation grâce à la commande :

 dig DNSKEY papaye.space @localhost 

Nous remarquons bien la présence de DNSKEY qui nous certifie la sécurisation de notre DNS.

Sécurisation et cryptage des données

Sécurisation via RAID5

Cryptage