Atelier SysRes SE2a5 2023/2024 E11
Création de la VM Rio
Génération du fichier de configuration:
xen-create-image --hostname=rio --ip=172.26.145.113 --netmask=255.255.255.0 --gateway=172.26.145.254 --bridge=bridgeStudents --dir=/usr/local/xen --password=glopglop
Lancer la VM grâce au fichier de configuration crée :
xen create rio.cfg
xen console rio
Modification de l'interface eth0 dans /etc/network/interfaces :
auto eth0
iface eth0 inet static
address 172.26.145.113/24
gateway 172.26.145.254
Configuration de la connexion en ssh, nous nous rendons dans le dossier /etc/ssh/ et nous modifions le fichier sshd_config :
- Décommenter le PermitRootLogin et mettre yes
PermitRootLogin yes
- Redémarrer le ssh :
service ssh restart
Au niveau de capbreton, nous créons les deux partitions LVM :
lvcreate -L10G -n rio-home storage
lvcreate -L10G -n rio-var storage
Se rendre dans le dossier /etc/xen/ et modifier le fichier de configuration de la VM rio.cfg en ajoutant les lignes de configurations des partitions :
# Disk device(s).
#
root = '/dev/xvda2 ro'
disk = [
'file:/usr/local/xen/domains/HG/disk.img,xvda2,w',
'file:/usr/local/xen/domains/HG/swap.img,xvda1,w',
'phy:/dev/virtual/kiev-home,xvdb,w',
'phy:/dev/virtual/kiev-var,xvdc,w',
]
Problème rencontré : Message d'erreur en essayant de redémarrer la VM
Création des deux partitions LVM en virtual et non storage
lvcreate -L10G -n rio-home virtual
lvcreate -L10G -n rio-var virtual
Au niveau de la VM, nous vérifions, grâce à la commande lsblk, la présence des nouvelles partitions :
Montage des disques dans deux répertoires /home et /var :
mkdir /new_home
mkdir /new_var
mkfs /dev/xvdb
mkfs /dev/xvdc
mount /dev/xvdb /new_home
mount /dev/xvdc /new_var
cp -r /var/* /new_var/
Vérification de la nouvelle liste des LVM :
Nous nous rendons dans le dossier /etc/ pour modifier le ficher fstab :
Nous redémarrons la VM, puis nouvelle vérification de la liste des LVM : les partitions sont bien montées.
Création de la VM Mandataire padel
Génération du fichier de configuration:
xen-create-image --hostname=padel --ip=193.48.57.168 --netmask=255.255.255.240 --gateway=193.48.57.161 --bridge=SE2a5 --dir=/usr/local/xen --password=glopglop
Lancer la VM grâce au fichier de configuration crée :
xen create padel.cfg
xen console padel
Ajout de l'IPv6 : Nous nous rendons dans le dossier /etc/network pour modifier le fichier interfaces :
Lien entre les VMs de service et la VM mandataire
Tout d'abord, nous avons crée un bridge sur capbreton qui permet de relier la VM mandataire au réseau. Pour ce faire, nous modifions le fichier /etc/network/interfaces.d/TP_SE2a5 :
Par la suite, nous ajoutons le bridge dans chacun des fichiers de config de nos VMs dans /etc/xen/ en modifiant le vif :
'ip=192.168.162.3 , bridge=padel'] //Dans rio.cfg
'ip=192.168.162.2 , bridge=padel'] //Dans stockholm.cfg
'ip=192.168.162.1 , bridge=padel'] //Dans padel.cfg
- Création des interfaces réseaux eth1 sur nos VMs (services) dans /etc/network/interfaces :
auto eth1
iface eth1 inet static
address 192.168.162.3/24
gateway 192.168.162.1 //IP Mandataire
Pour la VM mandataire :
auto eth1
iface eth1 inet static
address 192.168.162.1
netmask 255.255.255.0
- Passage en IPv6 pour les machines de service :
auto eht0
iface eth0 inet6 auto
Test de ping entre les différentes VMs. - Création de la mascarade et utilisation de iptables-persistent pour conserver les règles en les sauvegardant dans /etc/iptables/rule.v4 :
iptables -t nat -A POSTROUTING -j MASQUERADE -s 192.168.162.0/24
apt install iptables-persistent
iptables-save
iptables-save > /etc/iptables/rules.v4
Nous avons réalisés un ping 8.8.8.8 pour vérifier que les VMs de service et la VM mandataire ont accès à internet. Au niveau de capbreton, nous avons testé de nous connecter en ssh en réalisant un jump :
ssh -J root@193.48.57.162 root@192.168.162.2
Au niveau de padel, nous avons autorisé les redirections IP dans /etc/sysctl.conf :
Nous avons ajouté de nouvelles règles de routage pour pouvoir se connecter aux VMs de service en ssh sur le port 2201 pour stockholm et sur le port 2202 pour rio :
iptables -A PREROUTING -t nat -i eth0 -p tcp -m tcp --dport 2201 -j DNAT --to-destination 192.168.162.2:22
iptables -A PREROUTING -t nat -i eth0 -p tcp -m tcp --dport 2202 -j DNAT --to-destination 192.168.162.3:22
Configuration DNS
Achat du nom de domaine rio71.lol (rio.lol non disponible) sur le site https://www.gandi.net/fr (Compte : pifou / pasglop).
GlueRecords : DNS Principal (VM de service) en IPv6 et DNS Secondaire (VM mandataire) en IPv4 + External nameservers : Nameserver 1 : ns1.rio71.lol | Nameserver 2 : ns6.gandi.net
PS : Télécharger bind9 & apache2 sur les VMs (Attention : apt update avant apt install bind9 et apache2)
Configurer la zone de DNS en local dans nos VMs (/etc/bind/named.conf.local) :
<= Configuration DNS Slave sur la VM mandataire
Configuration DNS Master sur la VM de service =>
Permettre l'écoute des IPv4 et IPv6 sur la VM mandataire dans /etc/bind/named.conf.options
listen-on-v6 { any; }
listen-on { any; };
allow-recursion {127.0.0.1; };
Pour les VMs de service :
listen-on-v6 { any; }
Dans le même dossier, copie de la configuration local sur la configuration db.rio71.lol et modifications :
Vérifier qu'il n'y a aucune erreur de configuration du DNS des différents fichiers grâce à la commande named-checkconf.
Redémarrer le service DNS : service bind9 restart
PS : Penser à installer dnsutils (apt install dnsutils
)
Vérifier la présence du DNS sur la machine en utilisant : dig @localhost rio71.lol
Configuration Apache2
Tout d'abord, installer openssl (apt install openssl)
pour pouvoir générer une CSR (Certificate Signing Request) dans /etc/ssl .
openssl req -nodes -newkey rsa:2048 -sha256 -keyout rio71.lol.key -out rio71.lol.csr -utf8
Remplir le formulaire demandé (email...) mais faire attention Common Name : rio71.lol
Placer la clé privée dans le bon dossier /etc/ssl/private et modifier les droits d'accès (juste en lecture) : chmod 440 stockholm.lol.key
Au niveau de Gandi, acheter un nouveau certificat SSL et renseigner la clé. (Attente de vérification)
Une fois vérifié, télécharger le certificat pour le déplacer par la suite de la machine physique (salle TP) à la VM mandataire, puis de cette dernière vers la VM de service :
/*Physique vers mandataire*/
~/Téléchargements$ scp -r -p rio71.lol.crt root@193.48.57.168:/etc/transfer/
/*Mandataire vers service*/
root@padel:/etc/transfer scp -r -p rio71.lol.crt root@192.168.162.3:/etc/ssl/certs
Activer le mode SSL sur apache2 : a2enmod ssl
Création du nouveau fichier de config (pour configurer apache2 sur le port 443) dans /etc/apache2/sites-available/vhosts-https.conf :
(Modification pour avoir les bons chemins pour les certificats)
Lancer le fichier de configuration : a2ensite vhosts-https.conf
Puis relancer apache2 : service apache2 restart
DNSSEC
Passage sur chimaera pour pouvoir réaliser toutes les mises à jour des packages :
Ensuite, nous pouvons : apt update && apt upgrade -y
Modification du fichier local /etc/bind/named.conf.local :
PS : Erreur des temps d'attente sur le fichier db.rio71.lol => passage à 3600
Après un service named restart, les clefs sont bien générées automatiquement dans le dossier keys.
De retour sur Gandi, pour renseigner la clef DNSSEC. (Gandi keys were automatically set because you are using Gandi 's LiveDNS nameservers)
Le DNS n'était pas bien configuré, après résolutions des problèmes, nous avons ajouté le External NameServer (Principal : ns1.rio71.lol | Secondaire : ns6.gandi.net).