« Atelier SysRes SE4 2024/2025 E3 » : différence entre les versions
(→DNS) |
|||
(51 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 99 : | Ligne 99 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==DNS== | ==DNS et page WEB== | ||
===DNS=== | |||
J'ai acheté, via les fonds d'un célèbre mécène, le nom de domaine jeanluc.site sur le site : https://gandi.net | J'ai acheté, via les fonds d'un célèbre mécène, le nom de domaine jeanluc.site sur le site : https://gandi.net | ||
J'ai ensuite crée des fichiers de zone après avoir installé le paquetage bind9. | |||
[[Fichier:Fichier de zone jeanluc.site.png|centré|vignette|Contenu de mon fichier de zone]] | |||
Puis ajouter mon DNS au fichier named.conf ( ici j'ai modifié le fichier named.conf.local qui est inclus dans named.conf ). | |||
[[Fichier:Contenu de fichier named.conf.local.png|centré|vignette|Contenu du fichier named.conf.local]] | |||
Sur la machine mandataire, il faut aussi rajouter dans le named.conf.local l'ipv6 de la machine de service dans les acl en secondaire pour que la machine mandataire gère les connexions IPv4 et les redirigent vers la machine de service. | |||
Pour vérifier les fichiers named.conf et les fichiers de zone, on peut utiliser respectivement : | |||
<syntaxhighlight> | |||
named-checkzone jeanluc.zone /etc/bind/jeanluc.site/jeanluc.zone | |||
named-checkconf /etc/bind/named.conf | |||
</syntaxhighlight> | |||
Maintenant que les fichiers sont corrects, on peut ajouter le DNS dans le fichier /etc/resolv.conf | |||
<syntaxhighlight> | |||
search jeanluc.site | |||
nameserver 192.168.42.41 #l'ip de ma VM comme nameserver principal | |||
nameserver 192.168.42.69 #l'ip de la VM de mon binôme comme nameserver secondaire | |||
</syntaxhighlight> | |||
Une fois cela de fait, nous pouvons relancer le service : | |||
<syntaxhighlight> | |||
service named restart | |||
</syntaxhighlight> | |||
Si le service ne restart pas, il faut aller chercher le problème dans les logs et le résoudre, sinon on peut retourner sur https://gandi.net pour ajouter le Glue Record de mon DNS. | |||
[[Fichier:GLUE RECORD JW.png|vignette|Glue Record sur https://gandi.net|centré]] | |||
Après cela, on peut voir la propagation du DNS avec DNS Checker. | |||
[[Fichier:Propagation de mon DNS sur DNS Checker.png|vignette|Propagation de mon DNS sur https://dnschecker.org/|centré]] | |||
===Apache2=== | |||
Maintenant que le DNS est en place, on va pouvoir ajouter une page web via apache2. | |||
Tout d'abord, il faut installer apache2 sur les machines mandataire et de service. Ensuite il faut récupérer le certificat signé par https://gandi.net, il y a un fichier .crt, un fichier .pem et un fichier .key a récupérer. | |||
Il faut maintenant créé une paire de clé asymétrique via openssl. | |||
<syntaxhighlight> | |||
openssl req -sha256 -nodes -newkey rsa:2048 -keyout myserver.key -out myserver.csr | |||
</syntaxhighlight> | |||
Cette commande a été trouvé sur le site : https://www.sylvaincoudeville.fr/2020/06/generer-une-paire-de-cles-et-une-csr-avec-openssl/. | |||
Il faut aussi communiquer ces clés à https://gandi.net. | |||
Une fois cela fait, j'ai créé un fichier sur la machine mandataire et de service dans le dossier /etc/apache2/sites-available. Ce fichier sert à sécuriser ma page web avec les certificats récupéré sur gandi, et à mettre en place les proxy et reverse proxy. | |||
Sur la machine de service : | |||
[[Fichier:Fichier de conf sur la machine de service.png|centré|vignette|fichier de conf apache2 sur la machine de service]] | |||
Sur la mandataire : | |||
[[Fichier:Capture d'écran 2025-04-13 110303.png|centré|vignette|Fichier de conf de apache2 sur la mandataire]] | |||
J'ai fait exactement la même chose dans le dossier /etc/apache2/sites-enabled car je n'ai pas compris la différence entre les dossier. | |||
Il ne faut pas oublié d'activité certains modules apache2 et de redémarrer le service apache2 : | |||
<syntaxhighlight> | |||
a2enmod proxy | |||
a2enmod proxy_http | |||
a2ensite /etc/apache2/sites-enabled/jeanluc.site.conf | |||
a2ensite /etc/apache2/sites-available/jeanluc.site.conf | |||
service apache2 restart #pour redémarrer apache2 | |||
</syntaxhighlight> | |||
Par manque de créativité, je n'ai presque pas modifié le fichier index.html. J'ai retiré le titre de la page pour le index.html de la machine mandataire et je l'ai remplacé par "Robotech.monster = NUL". | |||
Voici ma page web en http.[[Fichier:Photo du site.png|vignette|http://www.jeanluc.site|475x475px|centré]] | |||
[[Fichier:Photo du site sans www.png|vignette|http://jeanluc.site|475x475px|centré]] | |||
Je pense que c'est la page de la mandataire car la page de ma machine de service contient la mention "Robotech.monster = NUL" en titre. | |||
Il doit y avoir un problème avec la redirection du site vers le site de la machine mandataire néanmoins on peut voir que le CNAME fonctionne. | |||
Résultat de dig :[[Fichier:Dig http---jeanluc.site.png|vignette|[http://jeanluc.site dig http://www.jeanluc.site]|475x475px|centré]] | |||
[[Fichier:Capture d'écran 2025-04-12 161737.png|centré|vignette|dig http://jeanluc.site|475x475px|centré]] | |||
===DNSSEC=== | |||
Pour le DNSSEC, le but est d'avoir un site en https, pour cela, il faut que le site soit sécurisé et donc qu'il soit certifié par une autorité de certification. <syntaxhighlight> | |||
key-directory "/etc/bind/keys"; | |||
dnssec-policy "dnspol"; | |||
inline-signing yes; | |||
dnssec-policy "dnssecpolicy" { | |||
keys { | |||
ksk key-directory lifetime unlimited algorithm 13; | |||
zsk key-directory lifetime unlimited algorithm 13; | |||
}; | |||
nsec3param; | |||
}; | |||
</syntaxhighlight> | |||
Et sur https://gandi.net, j'ai communiqué les 2 clés générés par la commande openssl et activé le DNSSEC. | |||
Voici l'état de mon DNSSEC selon https://dnsviz.net/ et selon https://dnsviz.net/. | |||
Lien vers les pages d'où proviennent les captures d'écran : https://dnsviz.net/d/jeanluc.site/dnssec/ & https://dnssec-debugger.verisignlabs.com/jeanluc.site[[Fichier:Etat de mon DNS d'après DNSViz.net.png|vignette|Etat de mon DNS sur https://dnsviz.net/|centré]][[Fichier:Etat de mon DNSSEC selon DNSSEC Debugger.png|vignette|Etat de mon DNS sur https://dnssec-debugger.verisignlabs.com|centré]]C'est assez explicite, ça ne marche pas. J'ai dû oublié d'inclure les clés dans un fichier ou je l'ai mal fait, et par manque de temps ( et/ou de courage ), je n'ai pas corrigé le problème. | |||
Malgré tout, on peut accéder à ma page web en https car mon binôme, lui, a réussi à créer un DNSSEC correct. | |||
Voici ma page web en https. | |||
[[Fichier:Https---jeanluc.site.png|centré|vignette|https://jeanluc.site]] | |||
Cette capture d'écran a été réalisé par Pierre qui lui arrive à accéder à ma page en https. | |||
Résultat de dig pour l'https : | |||
[[Fichier:Dig de mon site en https.png|centré|vignette|dig https://jeanluc.site]] | |||
==Conclusion== | |||
J'ai réalisé dans gloabalement les tâches demandés jusqu'à la partie [[SE4 IdO sécurité système/réseau#Sécurisation de serveur DNS par DNSSEC]]. | |||
J'ai installé fail2ban pour la partie suivante mais sans intérêt puisque mon DNSSEC ne fonctionne pas. |
Version actuelle datée du 13 avril 2025 à 09:53
Conteneur
Pour débuter ce TP, nous devons faire un conteneur sous Linux.
Tout d'abord, il faut créer un système de fichier isolé avec la commande mkfs sur un fichier vide mais contenant dnas 10Go de mémoire avec la commande dd.
Puis on peut utiliser la commande mount pour monter le système de fichier dans un fichier vide ( /mount ) et enfin à y installer un système de fichier Linux avec debootstrap.
Maintenant que le conteneur est crée, nous allons pouvoir le démarrer en tant que processus isolé avec unshare.
Unshare possède plusieurs options dont certaines contrôlent les différents types d'isolation ( tables des auxiliaires, PID, tables de routage, ... ).
Maintenant que le conteneur est allumé, on va pouvoir réaliser une mascarade pour accéder à internet.
Il faut d'abord créer des interfaces Ethernet liées et en envoyer une dans le conteneur et y configurer l'autre en tant que Gateway.
Il faut aussi accepter le conteneur pour la maquarade via iptables ou nftables.
Et maintenant le conteneur peut accéder Internet.
Virtualisation
Création des VM
Pour créer les VM, on utilise xen :
xen-create-image --hostname=SE4.jeanluc --dir=/usr/local/xen --dist=daedalus --size=10GB --memory=1024M --bridge=norman --dhcp
#Pour créer un image avec laquelle, on pourra lancer une VM, il faut bien évidemment créer le bridge avant de faire la commande
xen-create /etc/xen/SE4.jeanluc.cfg
#Pour démarrer un VM ( ici SE4.jeanluc )
xen list
#Pour voir les VM démarrées
xen console SE4.jeanluc
#Pour se connecter à une console
xen shut SE4.jeanluc
#Pour éteindre la VM
Création de la passerelle
Avant de créer les VMs, il faut créer une passerelle ou bridge en patois. Pour cela, on modifie le fichiers /etc/network/interfaces Mais étant donné que nous sommes sur l'hyperviser, nous allons plutôt créer un fichier à notre nom dans /etc/network/interfaces.d/ Dans ce fichier, il faut écrire :
auto norman
iface norman inet manual
bridge_ports none
up ip link set $IFACE up
down ip link set $IFACE down
Configuration des machines de services
Ajout des partitions
On ajoute dans le /etc/xen/<VM>.cfg les partitions home et var.
On modifie ensuite le /etc/fstab sur la VM.
On effectue les instructions suivantes :
mkfs -t ext4 /dev/<Partition associée ( ici xvda3 et xvdb1 )>
[mount /dev/<Partition associée> /tmp #ce qui est entre crochet est pour le /var
mv /var/* /tmp
umount /tmp]
mount -a
Après redémarrage de la VM, on vérifie l'ajout des partitions avec lsblk.
Accès Internet
Pour pouvoir avoir accès à Internet en IPV6, on a rajouté, à la configuration de la VM, un 2ème VIF :
Et il faut aussi ajouter une deuxième interface, eth1, configuré en IPV6 :
Maintenant, on peut ping en IPv6 www.google.com.
IPV6
Grâce à Kévan TOURON, nous pouvons maintenant accéder à Internet en IPV6. Il a fait la configuration Cisco.
Machine Mandataire
Interfaces
On effectue les mêmes manipulations que pour les machines de service.
auto eth0
iface eth0 inet static
address 193.168.42.42/24
auto eth1
iface eth1 inet6 auto
iface eth1 inet static
address 193.48.57.168/28
gateway 193.48.57.161
Redirection de Port et Masquarade
Pour pouvoir autoriser les autres machines du VLAN50 à se connecter via ssh sur notre machine mandataire, nous avons décommenter la ligne "#PermitRootLogin prohibit-password" et remplacer "prohibit-password" par "yes".
Pour la redirection de port, on a fait :
nft add table ip NAT
nft add chain NAT PREROUTING { type nat hook prerouting priority 0\; }
nft add rule NAT PREROUTING tcp dport 2201 dnat to 192.168.42.41:22 #redirection de requete reçu sur le port 2201 vers le port 22 de SE4.jeanluc
nft add rule NAT PREROUTING tcp dport 2202 dnat to 192.168.42.69:22 #redirection de requete reçu sur le port 2202 vers le port 22 de SE4.ElMordjene
DNS et page WEB
DNS
J'ai acheté, via les fonds d'un célèbre mécène, le nom de domaine jeanluc.site sur le site : https://gandi.net
J'ai ensuite crée des fichiers de zone après avoir installé le paquetage bind9.
Puis ajouter mon DNS au fichier named.conf ( ici j'ai modifié le fichier named.conf.local qui est inclus dans named.conf ).
Sur la machine mandataire, il faut aussi rajouter dans le named.conf.local l'ipv6 de la machine de service dans les acl en secondaire pour que la machine mandataire gère les connexions IPv4 et les redirigent vers la machine de service.
Pour vérifier les fichiers named.conf et les fichiers de zone, on peut utiliser respectivement :
named-checkzone jeanluc.zone /etc/bind/jeanluc.site/jeanluc.zone
named-checkconf /etc/bind/named.conf
Maintenant que les fichiers sont corrects, on peut ajouter le DNS dans le fichier /etc/resolv.conf
search jeanluc.site
nameserver 192.168.42.41 #l'ip de ma VM comme nameserver principal
nameserver 192.168.42.69 #l'ip de la VM de mon binôme comme nameserver secondaire
Une fois cela de fait, nous pouvons relancer le service :
service named restart
Si le service ne restart pas, il faut aller chercher le problème dans les logs et le résoudre, sinon on peut retourner sur https://gandi.net pour ajouter le Glue Record de mon DNS.

Après cela, on peut voir la propagation du DNS avec DNS Checker.

Apache2
Maintenant que le DNS est en place, on va pouvoir ajouter une page web via apache2.
Tout d'abord, il faut installer apache2 sur les machines mandataire et de service. Ensuite il faut récupérer le certificat signé par https://gandi.net, il y a un fichier .crt, un fichier .pem et un fichier .key a récupérer.
Il faut maintenant créé une paire de clé asymétrique via openssl.
openssl req -sha256 -nodes -newkey rsa:2048 -keyout myserver.key -out myserver.csr
Cette commande a été trouvé sur le site : https://www.sylvaincoudeville.fr/2020/06/generer-une-paire-de-cles-et-une-csr-avec-openssl/.
Il faut aussi communiquer ces clés à https://gandi.net.
Une fois cela fait, j'ai créé un fichier sur la machine mandataire et de service dans le dossier /etc/apache2/sites-available. Ce fichier sert à sécuriser ma page web avec les certificats récupéré sur gandi, et à mettre en place les proxy et reverse proxy.
Sur la machine de service :
Sur la mandataire :
J'ai fait exactement la même chose dans le dossier /etc/apache2/sites-enabled car je n'ai pas compris la différence entre les dossier.
Il ne faut pas oublié d'activité certains modules apache2 et de redémarrer le service apache2 :
a2enmod proxy
a2enmod proxy_http
a2ensite /etc/apache2/sites-enabled/jeanluc.site.conf
a2ensite /etc/apache2/sites-available/jeanluc.site.conf
service apache2 restart #pour redémarrer apache2
Par manque de créativité, je n'ai presque pas modifié le fichier index.html. J'ai retiré le titre de la page pour le index.html de la machine mandataire et je l'ai remplacé par "Robotech.monster = NUL".
Voici ma page web en http.
Je pense que c'est la page de la mandataire car la page de ma machine de service contient la mention "Robotech.monster = NUL" en titre.
Il doit y avoir un problème avec la redirection du site vers le site de la machine mandataire néanmoins on peut voir que le CNAME fonctionne.
Résultat de dig :
DNSSEC
Pour le DNSSEC, le but est d'avoir un site en https, pour cela, il faut que le site soit sécurisé et donc qu'il soit certifié par une autorité de certification.
key-directory "/etc/bind/keys";
dnssec-policy "dnspol";
inline-signing yes;
dnssec-policy "dnssecpolicy" {
keys {
ksk key-directory lifetime unlimited algorithm 13;
zsk key-directory lifetime unlimited algorithm 13;
};
nsec3param;
};
Et sur https://gandi.net, j'ai communiqué les 2 clés générés par la commande openssl et activé le DNSSEC.
Voici l'état de mon DNSSEC selon https://dnsviz.net/ et selon https://dnsviz.net/.
Lien vers les pages d'où proviennent les captures d'écran : https://dnsviz.net/d/jeanluc.site/dnssec/ & https://dnssec-debugger.verisignlabs.com/jeanluc.site


C'est assez explicite, ça ne marche pas. J'ai dû oublié d'inclure les clés dans un fichier ou je l'ai mal fait, et par manque de temps ( et/ou de courage ), je n'ai pas corrigé le problème.
Malgré tout, on peut accéder à ma page web en https car mon binôme, lui, a réussi à créer un DNSSEC correct.
Voici ma page web en https.
Cette capture d'écran a été réalisé par Pierre qui lui arrive à accéder à ma page en https.
Résultat de dig pour l'https :
Conclusion
J'ai réalisé dans gloabalement les tâches demandés jusqu'à la partie SE4 IdO sécurité système/réseau#Sécurisation de serveur DNS par DNSSEC.
J'ai installé fail2ban pour la partie suivante mais sans intérêt puisque mon DNSSEC ne fonctionne pas.