« Atelier SysRes SE4 2024/2025 E7 » : différence entre les versions

De wiki-se.plil.fr
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Ligne 2 : Ligne 2 :


= Création de la machine =
= Création de la machine =
==Création des VMs avec XEN==
==Création des VMs avec XEN==
Dans ce projet, nous avons créé deux machines de services et une machine mandataire à l'aide de l'outil Xen. Les commandes utilisées sont les suivantes :
Dans ce projet, nous avons créé deux machines de services et une machine mandataire à l'aide de l'outil Xen. Les commandes utilisées sont les suivantes :


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
root@capbreton:~# xen-create-image --hostname=SE4.Vi --dhcp --bridge=ekko_caitlyn --dir=/usr/local/xen --size=10GB --dist=daedalus --memory=2048M --force
xen-create-image --hostname=SE4.Vi --dhcp --bridge=ekko_caitlyn --dir=/usr/local/xen --size=10GB --dist=daedalus --memory=2048M --force
</syntaxhighlight>
</syntaxhighlight>


Ligne 22 : Ligne 23 :


== Configuration des partitions LVM ==
== Configuration des partitions LVM ==
Assigner les partitions dans le fichier `/etc/xen/SE4.Vi` (disk) :
Assigner les partitions dans le fichier `/etc/xen/SE4.Vi` (disk) :


Ligne 31 : Ligne 31 :


=== Affichage des partitions avec lsblk ===
=== Affichage des partitions avec lsblk ===
Voici un aperçu des partitions avec la commande `lsblk` :
[[Fichier:Vi lsblk.png|thumb|center|450px|alt=Affichage de lsblk|Résultat de la commande lsblk]]
[[Fichier:Vi lsblk.png|thumb|center|450px|alt=Affichage de lsblk|Résultat de la commande lsblk]]
<br style="clear: both;" />
<br style="clear: both;" />


== Modification du fichier fstab ==
== Modification du fichier fstab ==
Il faut aussi modifier le fichier `/etc/fstab` pour monter correctement les partitions :
<syntaxhighlight lang="ini">
<syntaxhighlight lang="ini">
/dev/xvda3  /home  ext4  defaults  0  2
/dev/xvda3  /home  ext4  defaults  0  2
Ligne 48 : Ligne 41 :


=== Aperçu du fichier fstab ===
=== Aperçu du fichier fstab ===
[[Fichier:Vi fstab.png|thumb|center|550px|alt=Affichage de fstab|Contenu du fichier /etc/fstab]]
[[Fichier:Vi fstab.png|thumb|center|550px|alt=Affichage de fstab|Contenu du fichier /etc/fstab]]
<br style="clear: both;" />
<br style="clear: both;" />


== Configuration des partitions /var et /home ==
== Configuration des partitions /var et /home ==
=== Formatage et montage de /var (partition critique) ===
=== Formatage et montage de /var (partition critique) ===
Création du système de fichiers et migration des données de `/var` :
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
mkfs -t ext4 /dev/xvdb1
mkfs -t ext4 /dev/xvdb1
Ligne 69 : Ligne 56 :
==== Vérification du contenu de /var ====
==== Vérification du contenu de /var ====
[[Fichier:Vi ls var.png|thumb|center|800px|alt=Affichage du contenu de /var|Résultat des commandes]]
[[Fichier:Vi ls var.png|thumb|center|800px|alt=Affichage du contenu de /var|Résultat des commandes]]
<br style="clear: both;" />
<br style="clear: both;" />


=== Formatage et montage de /home ===
=== Formatage et montage de /home ===
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
mkfs -t ext4 /dev/xvda3
mkfs -t ext4 /dev/xvda3
Ligne 81 : Ligne 66 :
==== Vérification du montage des partitions ====
==== Vérification du montage des partitions ====
[[Fichier:Df mounting varhome.png|thumb|center|450px|alt=Vérification df|On vérifie le montage des disques avec df]]
[[Fichier:Df mounting varhome.png|thumb|center|450px|alt=Vérification df|On vérifie le montage des disques avec df]]
<br style="clear: both;" />
<br style="clear: both;" />


==Réseau==
== Réseau ==
Pour la partie réseau de la machine de service j'ai simplement modifié l'interface réseau de celle-ci. J'ai mis en place deux interfaces pour les deux bridges
 
ETH0:
J'ai mis le routage de l'ipv6 en auto et pour l'ipv4 j'ai mit l'adresse privée correspondant à ma machine dans le réseau privé. On utilise l'adresse ipv4 privée de la machine mandataire comme gateway.
[[Fichier:Interface vi.png|thumb|center|450px|alt=Vérification interface réseau|Interface réseau de Vi ETH0]]
[[Fichier:Interface vi.png|thumb|center|450px|alt=Vérification interface réseau|Interface réseau de Vi ETH0]]
[[Fichier:Ip a.png|thumb|center|450px|alt=Vérification des adresses IPV4 et V6|Vérification des adresses IPV4 et V6]]
[[Fichier:Ip a.png|thumb|center|450px|alt=Vérification des adresses IPV4 et V6|Vérification des adresses IPV4 et V6]]
ETH1:
[[Fichier:interface eth1.png|thumb|center|450px|alt=Vérification ET1|Interface réseau de Vi ETH1]]
[[Fichier:interface eth1.png|thumb|center|450px|alt=Vérification ET1|Interface réseau de Vi ETH1]]
[[Fichier:Ipa eth1.png|thumb|center|450px|alt=Vérification de l'adresses V6|Vérification de l'adresses V6]]
[[Fichier:Ipa eth1.png|thumb|center|450px|alt=Vérification de l'adresses V6|Vérification de l'adresses V6]]


=Configuration de la machine mandataire et routeur Cisco=
= Configuration de la machine mandataire et routeur Cisco =
 
[[Atelier_SysRes_SE4_2024/2025_E6|Voir ce Lien]]
[[Atelier_SysRes_SE4_2024/2025_E6|Voir ce Lien]]


=Création des clés et des certificat pour les noms de domaines=
= Création des clés et certificat pour les noms de domaines =
 
Pour activer un certificat SSL, il est nécessaire de générer une CSR ainsi qu’une clé privée. 
 
Les fichiers générés sont enregistrés dans les répertoires suivants sur la machine mandataire Vander : 
* '''/home/cait''' 
* '''/home/ekko'''
 
=== Lancer la commande OpenSSL === 
Depuis un terminal on exécutez la commande suivante : 
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
openssl req -nodes -newkey rsa:2048 -sha256 -keyout myserver.key -out server.csr -utf8
openssl req -nodes -newkey rsa:2048 -sha256 -keyout myserver.key -out server.csr -utf8
</syntaxhighlight>
</syntaxhighlight>


=== Remplir les informations requises === 
== Vérifier et copier la CSR ==
On doit donc remplir des informations comme
* Common Name : Nom de domaine principal 'caitlyn.eu'
* Pays, Région, Ville : Coordonnées de l’organisation.
 
=== Vérifier et copier la CSR ==
Une fois générée, la CSR peut être affichée avec : 
 
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
cat server.csr
cat server.csr
</syntaxhighlight>
</syntaxhighlight>
On copie ainsi le contenu du csr dans Gandi pour obtenir un certificat signé.


<syntaxhighlight lang="plaintext">
<syntaxhighlight lang="plaintext">
Ligne 136 : Ligne 93 :
</syntaxhighlight>
</syntaxhighlight>


=Problème de renouvellement du certificat et validation DNS=
= Problème de renouvellement du certificat et validation DNS =


Lors du renouvellement du certificat SSL pour le domaine <code>caitlyn.eu</code>, un problème a été rencontré : la '''clé privée initialement conservée ne correspondait pas au certificat signé''' reçu via Gandi. Cela a empêché la mise en place du nouveau certificat sur le serveur Apache.
== Résolution du problème ==
 
<syntaxhighlight lang="bash">
==Résolution du problème==
 
Afin de corriger cette erreur, j'ai procédé aux étapes suivantes :
 
===Génération d’une nouvelle paire de clés et CSR===
 
Une nouvelle clé privée et une nouvelle demande de certificat ont été générées via la commande suivante :
 
<pre>
openssl req -new -newkey rsa:2048 -nodes -keyout caitlyn.key -out caitlyn.csr
openssl req -new -newkey rsa:2048 -nodes -keyout caitlyn.key -out caitlyn.csr
</pre>
</syntaxhighlight>
 
Cette commande génère une clé privée (<code>caitlyn.key</code>) et un fichier de requête de signature (<code>caitlyn.csr</code>) nécessaire à la création d’un nouveau certificat.
 
===Validation du domaine via DNS===
 
L’autorité de certification exigeait une nouvelle validation de la propriété du domaine. La méthode choisie fut la '''validation par enregistrement DNS'''.
 
Les enregistrements suivants ont été ajoutés dans la zone DNS du domaine <code>caitlyn.eu</code> :


== Validation du domaine via DNS ==
<pre>
<pre>
_mznyn1dwqlil5cvfou9kcwr48c8cfku.caitlyn.eu. 10800 IN CNAME dcv.digicert.com.
_mznyn1dwqlil5cvfou9kcwr48c8cfku.caitlyn.eu. 10800 IN CNAME dcv.digicert.com.
Ligne 165 : Ligne 106 :
</pre>
</pre>


Ces entrées permettent à DigiCert de vérifier automatiquement que nous sommes bien propriétaires du domaine.
== Vérification de la propagation DNS ==
 
Check effectué via dig / nslookup / outils en ligne.
===Vérification de la propagation DNS===
 
Avant de poursuivre, un '''check DNS''' a été effectué (via un outil tel que <code>dig</code>, <code>nslookup</code> ou un site en ligne) pour s'assurer que les enregistrements étaient bien visibles publiquement et correctement propagés.
 
Une fois la validation réussie, le nouveau certificat signé a pu être récupéré et déployé sur le serveur Apache.
 
=Serveur SSH=
 
Afin d'éviter de passer tout le temps par capbreton pour se connecter à nos machines, on met en place un serveur ssh pour pouvoir y accéder directement. Pour vander possédant directement une adresse ipv4 routée il suffit de mettre le PermitRootLogin en yes. Mais nos machines de services n'en possèdant pas, il est nécessaire d'effectuer une redirection de port sur la mandataire, en redirigeant le port 2202 sur Vi.
 
[[Fichier:PermitRootLogin yes.png|thumb|center|450px|alt=Vérification de l'adresses V6|PermitRootLogin Yes]]


= Serveur SSH =
[[Fichier:PermitRootLogin yes.png|thumb|center|450px]]
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
iptables -t nat -A PREROUTING -p tcp --dport 2202 -j DNAT --to-destination 192.168.1.2:22
iptables -t nat -A PREROUTING -p tcp --dport 2202 -j DNAT --to-destination 192.168.1.2:22
Ligne 184 : Ligne 116 :
</syntaxhighlight>
</syntaxhighlight>


[[Fichier:Ssh reussi.png|thumb|center|450px|alt=Vérification de l'adresses V6|SSH Réussi]]
[[Fichier:Ssh reussi.png|thumb|center|450px]]


= Serveur DNS =


=Serveur DNS=
== Configuration du fichier named.conf.options ==
== Configuration du fichier named.conf.options ==
J'ai édité le fichier de configuration named.conf.options:
J'ai aussi rajouter l'emplacement de mes clés dans la définition de ma zone
<pre>
<pre>
key-directory "/etc/bind/keys";  
key-directory "/etc/bind/keys";  
dnssec-policy "dnspol";
dnssec-policy "dnspol";
inline-signing yes;
inline-signing yes;
</pre>


J'ai ajouté les lignes suivantes pour activer DNSSEC via les clés:
dnssec-policy "dnspol" {
<pre>
dnssec-policy "dnspol" {
   keys {
   keys {
       ksk key-directory lifetime unlimited algorithm 13;
       ksk key-directory lifetime unlimited algorithm 13;
Ligne 206 : Ligne 132 :
   };
   };
   nsec3param;
   nsec3param;
};
};
</pre>
</pre>


J'indique que cette zone représente ma zone principale, puis j'autorise tout le monde à interroger mon serveur DNS. Puis pour terminer j'ajoute le transfer de ma zone à la machine mandataire Vander ainsi qu'a la deuxième machine de service Jinx en les tenant au courant d'une modification de la zone grâce au notify.
[[Fichier:Named.conf.local vi.png|thumb|center|]]
 
[[Fichier:Named.conf.local vi.png|thumb|center|Modification du fichier named.conf.options]]
 
Afin de permettre à l'autre machine de service de faire fonctionner mon DNS je dois spécifier une zone dans son named.conf.local


[[Fichier:Named ekko.png|thumb|center|Modification du fichier named.conf.options de la machine ekko]]
[[Fichier:Named ekko.png|thumb|center|]]


== Création du fichier de zone ==
== Création du fichier de zone ==
Puis ensuite j'ai créé le fichier de zone. Pour cela on y spécifie:
-Le SOA spécifie le serveur DNS principal ns1.caitlyn.eu et l’adresse e-mail de l’administrateur admin.caitlyn.eu
-A et AAAA associent le domaine à ses adresses IPv4 et IPv6 respectives
-CNAME redirige www.caitlyn.eu vers caitlyn.eu, évitant ainsi d’avoir à dupliquer les enregistrements IP.
[[Fichier:Zonevi.png|thumb|center|Création du fichier de zone]]
[[Fichier:Zonevi.png|thumb|center|Création du fichier de zone]]


== 5. Configuration du serveur mandataire comme DNS secondaire ==
== Configuration du serveur mandataire comme DNS secondaire ==
Nous avons ajouté sur le serveur mandataire :
<pre>
zone "caitlyn.eu"{
type secondary; // version politiquement correcte de slave
file "/etc/bind/caitlyn.eu";
primariest{ 2001:660:4401:60a0:216:3eff: fe5b:8277; };
</pre>
 
([[Fichier:Named.local.conf vander.png|thumb|center|Configuration du serveur DNS secondaire]])
 
== 6. Activation de DNSSEC ==
J'ai ajouté la politique DNSSEC dans `/etc/bind/named.conf` :
<pre>
<pre>
dnssec-policy "dnspol" {
zone "caitlyn.eu" {
  keys {
  type secondary;
      ksk key-directory lifetime unlimited algorithm 13;
  file "/etc/bind/caitlyn.eu";
      zsk key-directory lifetime unlimited algorithm 13;
  primariest { 2001:660:4401:60a0:216:3eff:fe5b:8277; };
  };
}
  nsec3param;
};
</pre>
</pre>
[[Fichier:Named.local.conf vander.png|thumb|center|]]


Puis j'ai activé DNSSEC :
== Activation de DNSSEC ==
<pre>
<pre>
sudo systemctl restart bind9
sudo systemctl restart bind9
</pre>
</pre>


 
== Ajout des enregistrements DNS chez Gandi ==
== 7. Ajout des enregistrements DNS chez Gandi ==
Nous avons ajouté les glue records dans l’interface de Gandi en spécifiant :
- `ns1.caitlyn.eu` avec l’adresse IPv6 du serveur de services
- `ns2.caitlyn.eu` avec l’adresse IPv4 du serveur mandataire 
 
[[Fichier:Capture d’écran 2025-03-17 à 15.13.04.png|thumb|center|450px]]
[[Fichier:Capture d’écran 2025-03-17 à 15.13.04.png|thumb|center|450px]]
[[Fichier:Capture d’écran 2025-03-17 à 15.12.55.png|thumb|center|450px]]
[[Fichier:Capture d’écran 2025-03-17 à 15.12.55.png|thumb|center|450px]]
Ligne 267 : Ligne 164 :


== Conclusion ==
== Conclusion ==
Le serveur DNS est maintenant configuré avec Bind9 et sécurisé avec DNSSEC. 
[[Fichier:Capture d’écran 2025-03-17 à 15.10.17.png|thumb|center|Serveur DNS opérationnel]]
Le serveur mandataire joue le rôle de serveur DNS secondaire et permet l'accès via IPv4. 
La configuration est testée et fonctionnelle.
[[Fichier:Capture d’écran 2025-03-17 à 15.10.17.png|thumb|center|Serveur DNS operationnel]]


= Apache =
= Apache =


Pour configurer un serveur web HTTPS, la première étape consiste à récupérer le certificat signé (.crt) ainsi que le certificat de chaîne (.pem) depuis Gandi. La clé privée, obtenue précédemment via OpenSSL, doit être conservée. 
[[Fichier:Conf apache.png|thumb|center|alt=apache2|Configuration Apache]]
<br style="clear: both;" />


Le fichier de configuration Apache pour *caitlyn.eu* est présenté ci-dessous : 
== Configuration de l'accès IPv4 ==
[[Fichier:Conf apache.png|thumb|center|alt=apache2|Configuration Apache]] 
<br style="clear: both;" /> 


Toutes les requêtes arrivant sur le port 80 sont redirigées vers le port 443 afin d'imposer l'utilisation du protocole HTTPS.
[[Fichier:Apache2 vander.png|thumb|center|alt=Vander apache2|Configuration Vander Apache2]]
<br style="clear: both;" />


La directive *DocumentRoot* définit le répertoire dans lequel seront stockés les fichiers HTML et autres ressources du site. 
<syntaxhighlight lang="bash">
 
a2enmod proxy
Les paramètres liés à SSL spécifient les emplacements des certificats et de la clé privée. Il est essentiel de vérifier les permissions des fichiers et répertoires pour s'assurer que l'utilisateur/groupe *www-data* puisse y accéder correctement. 
a2enmod proxy_http
 
a2ensite ekko.my.conf
De plus, il convient de vérifier les ports écoutés par Apache dans */etc/apache2/ports.conf*. 
service apache2 reload
 
service apache2 restart
== Configuration de l'accès IPv4 == 
</syntaxhighlight>
 
Il est nécessaire d'autoriser l'accès en IPv4 à HTTPS. Initialement, l'accès au site était impossible depuis mon réseau (FAI : Crous, Planet Campus) car celui-ci ne fournissait qu'une connexion IPv6. 
 
Pour contourner cette limitation, on utilise une machine mandataire et on configure Apache2 en proxy inverse sur celle-ci. 
 
Voici un exemple de fichier de configuration correspondant : 
[[Fichier:Apache2 vander.png|thumb|center|alt=Vander apache2|Configuration Vander Apache2]] 
<br style="clear: both;" /> 
 
L'ajout de la directive suivante est requis pour assurer des redirections correctes vers les sites ciblés : 
<code>ProxyPreserveHost on</code> 
 
Il est également indispensable d'activer les modules *proxy* et *proxy_http*, ainsi que le site concerné : 
 
<code>
a2enmod proxy
a2enmod proxy_http
a2ensite ekko.my.conf
service apache2 reload
service apache2 restart
</code>
 
Une fois ces étapes complétées, le serveur Apache est prêt à gérer les connexions HTTPS correctement.

Version du 13 avril 2025 à 19:12

Création de la machine

Création des VMs avec XEN

Dans ce projet, nous avons créé deux machines de services et une machine mandataire à l'aide de l'outil Xen. Les commandes utilisées sont les suivantes :

xen-create-image --hostname=SE4.Vi --dhcp --bridge=ekko_caitlyn --dir=/usr/local/xen --size=10GB --dist=daedalus --memory=2048M --force

Par la suite pour les démarrer on utilise:

xen create /etc/xen/SE4.Vi.cfg

Et pour y rentrer:

xen console SE4.Vi

Configuration des partitions LVM

Assigner les partitions dans le fichier `/etc/xen/SE4.Vi` (disk) :

'phy:/dev/virtual/SE4.Vi-home,xvda3,w',
'phy:/dev/virtual/SE4.Vi-var,xvdb1,w',

Affichage des partitions avec lsblk

Affichage de lsblk
Résultat de la commande lsblk


Modification du fichier fstab

/dev/xvda3  /home  ext4  defaults  0  2
/dev/xvdb1  /var   ext4  defaults  0  2

Aperçu du fichier fstab

Affichage de fstab
Contenu du fichier /etc/fstab


Configuration des partitions /var et /home

Formatage et montage de /var (partition critique)

mkfs -t ext4 /dev/xvdb1
mount /dev/xvdb1 /mnt
mv /var/* /mnt
umount /mnt
mount -a

Vérification du contenu de /var

Affichage du contenu de /var
Résultat des commandes


Formatage et montage de /home

mkfs -t ext4 /dev/xvda3
mount -a

Vérification du montage des partitions

Vérification df
On vérifie le montage des disques avec df


Réseau

Vérification interface réseau
Interface réseau de Vi ETH0
Vérification des adresses IPV4 et V6
Vérification des adresses IPV4 et V6
Vérification ET1
Interface réseau de Vi ETH1
Vérification de l'adresses V6
Vérification de l'adresses V6

Configuration de la machine mandataire et routeur Cisco

Voir ce Lien

Création des clés et certificat pour les noms de domaines

openssl req -nodes -newkey rsa:2048 -sha256 -keyout myserver.key -out server.csr -utf8

Vérifier et copier la CSR

cat server.csr
-----BEGIN CERTIFICATE REQUEST-----
… texte ….
-----END CERTIFICATE REQUEST-----

Problème de renouvellement du certificat et validation DNS

Résolution du problème

openssl req -new -newkey rsa:2048 -nodes -keyout caitlyn.key -out caitlyn.csr

Validation du domaine via DNS

_mznyn1dwqlil5cvfou9kcwr48c8cfku.caitlyn.eu. 10800 IN CNAME dcv.digicert.com.
_mznyn1dwqlil5cvfou9kcwr48c8cfku.www.caitlyn.eu. 10800 IN CNAME dcv.digicert.com.

Vérification de la propagation DNS

Check effectué via dig / nslookup / outils en ligne.

Serveur SSH

PermitRootLogin yes.png
iptables -t nat -A PREROUTING -p tcp --dport 2202 -j DNAT --to-destination 192.168.1.2:22
iptables -A FORWARD -p tcp -d 192.168.1.2 --dport 22 -j ACCEPT
Ssh reussi.png

Serveur DNS

Configuration du fichier named.conf.options

key-directory "/etc/bind/keys"; 
dnssec-policy "dnspol";
inline-signing yes;

dnssec-policy "dnspol" {
   keys {
       ksk key-directory lifetime unlimited algorithm 13;
       zsk key-directory lifetime unlimited algorithm 13;
   };
   nsec3param;
};
Named.conf.local vi.png
Named ekko.png

Création du fichier de zone

Création du fichier de zone

Configuration du serveur mandataire comme DNS secondaire

zone "caitlyn.eu" {
  type secondary;
  file "/etc/bind/caitlyn.eu";
  primariest { 2001:660:4401:60a0:216:3eff:fe5b:8277; };
}
Named.local.conf vander.png

Activation de DNSSEC

sudo systemctl restart bind9

Ajout des enregistrements DNS chez Gandi

Capture d’écran 2025-03-17 à 15.13.04.png
Capture d’écran 2025-03-17 à 15.12.55.png
Capture d’écran 2025-03-17 à 15.12.41.png


Conclusion

Serveur DNS opérationnel

Apache

apache2
Configuration Apache


Configuration de l'accès IPv4

Vander apache2
Configuration Vander Apache2


a2enmod proxy
a2enmod proxy_http
a2ensite ekko.my.conf
service apache2 reload
service apache2 restart