Atelier SysRes SE4 2025/2026 E9

De wiki-se.plil.fr
Aller à la navigation Aller à la recherche

note : si vous voyez des noms entre chevrons, changez-les !

Creation des VMs

se connecter au serveur de promo

Toutes les machines virtuelles sont hébergées sur le serveur capbreton, nous nous y connectons donc:

ssh root@capbreton

Le mot de passe est fourni par l'enseignant.

Attention ! Le serveur est commun à toute la promo et vous êtes en root, donc attention aux rm et mv !

Initialement, on ne pourra se connecter à nos VMs que par capbreton, on corrigera cela lorsque nous exposerons à internet nos VMs.

Creation du commutateur virtuel

Pour que les VMs puissent communiquer entre elles et pour bien séparer les réseaux des binômes, on crée un commutateur virtuel sur le serveur. On crée donc un fichier dans interfaces.d:

vim /etc/nbetwork/interfaces.d/SE4_<login1>_<login2>

dans lequel on écrit:

auto <nom_bridge>
iface <nom_bridge> inet manual
    bridge_ports none
    up ip link set $IFACE up
    down ip link set $IFACE down

On active l'interface virtuelle avec :

ifup <nom_bridge>

initialisation des VMs

pour chacune des 2 VMs de service et la VM mandataire, on crée une image :

xen-create-image --hostname=<nom_VM>  --dhcp --bridge=<nom_bridge> --dir=/usr/local/xen --size=10G --dist=excalibur --memory=2048M --force

on démarre les VMs avec :

xen create /etc/xen/<nom_VM>.cfg

et on ouvre le terminal des VMs avec:

xen console <nom_VM>

sur capbreton, vérifiez que vos VMs sont bien toutes présentes :

xen list

mots de passe

vous pouvez simplement afficher le mot de passe de vos VMs avec la commande :

cat /var/log/xen-tools/<nom_VM>.log | grep Password

chaque VM a initialement un mot de passe long et difficile à retenir, mais sûr. Il est recommandé de le laisser tel quel. vous pouvez toutefois le changer avec :

vim /etc/xen/<nom_VM>.cfg

A partir d'ici, vous devriez avoir accès à vos 3 VMs.

montage des partitions

Nous allons ajouter des partions à nos VMs de service, donc pour seulement deux des trois VMs. On crée des volumes virtuels avec :

lvcreate -n <nom_VM>.var -L 10G virtual
lvcreate -n <nom_VM>.home -L 10G virtual

Lorsque on exécute ces commandes, on nous demande où placer ces volumes. Placez-les sur un disque où de l'espace est disponible, "storage" par exemple. Eteignez ensuite les VMs:

xen shutdown <nom_VM>

Editez le fichier de configuration de chaque VM:

vim /etc/xen/<nom_VM>.cfg

ajoutez dans disk :

'phy:/dev/virtual/<nom_VM>.home,xvda3,w',
'phy:/dev/virtual/<nom_VM>.var,xvdb1,w'

ajoutez dans /etc/fstab :

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

formatez avec :

mkfs -t ext4 /dev/xvda3
mkfs -t ext4 /dev/xvdb1

puis montez avec :

mount /dev/xvda3 /mnt
mount /dev/xvdb1 /mnt
mv /var/* /mnt
mv /home/* /mnt
umount /mnt
mount -a

puis relancez les VMs de service avec

xen create

et

xen console

.

Configuration réseau des VMs

Configuration des interfaces

Nous allons maintenant configurer les interfaces des VMs:

vim /etc/network/interfaces
On souhaite une adresse statique en IPv4 et une adresse fournie par DHCP en ipv6.

nous allons donner l'adresse IPv4 avec le format suivant: 192.168.<numéro_binôme>.X avec X prenant une valeur différente pour chaque VM.

ce qui nous donne la configuration des machines de service :

auto lo
iface lo inet loopback

#statique ipv4
auto eth0
iface eth0 inet static
    address 192.168.<numéro_binôme>.<numéro_VM_service>/24
    gateway 192.168.<numéro_binôme>.<numéro_VM_mandataire>

#dhcp ipv6
auto eth0
iface eth0 inet6 auto

de plus, sur la mandataire, il faut ajouter une seconde interface dans le fichier de configuration pour pouvoir l'exposer au bridge de promotion.

on éteint la machine mandataire et on édite la partie

vif

du fichier

/etc/xen/<nom_VM>.cfg

et on y ajoute:

'mac=00:11:22:33:44:<numéro_binôme>,bridge=SE4'

On redémarre la mandataire et on édite les interface comme il suit: la variable <valeur_unique_au_binôme> est supérieure à 164 et unique pour chaque binôme, n'oubliez pas de la renseigner. (162 VRRP, 163 Routeur1, 164 Routeur2)

auto lo
iface lo inet loopback

#statique ipv4
auto eth0
iface eth0 inet static
    address 192.168<numéro_binôme>.<numéro_VM_mandataire>/24

auto eth1
iface eth1 inet static
    address 193.48.57.<valeur_unique_au_binôme>/24
    gateway 193.48.57.162
#dhcp ipv6
auto eth1
iface eth1 inet6 auto

pour chaque interface configurée, on la redémarre:

ifdown <interface>
ifup <interface>

Configuration du dns

dans

 /etc/resolv.conf

sur les 3 machines, ajoutez:

nameserver 8.8.8.8

cela nous donnera un serveur dns par défaut (on pourra vérifier le fonctionnement en faisant

ping google.com

dans le terminal)


Installation des packages

Sur les machines de service on met à jour et on installe:

apt update
apt upgrade
apt install ssh bind9 apache2 iptables dnsutils openssl

pour pouvoir nous connecter en ssh de l'extérieur, il est nécessaire d'éditer

/etc/ssh/sshd_config

: Il faut retrouver le paramètre

PermitRootLogin

et le mettre à

yes

, ou bien on peut l'ajouter en exécutant:

echo "PermitRootLogin = yes" > /etc/ssh/sshd_config

on valide les changements en exécutant:

/etc/init.d/ssh restart

Méthodes de routage IPv4

Mascarade

pour pouvoir router nos VMs de service en IPv4, on va d'abord utiliser la mascarade (si vous perdez accès à internet sur les machine de service avec la méthodes suivante, référez-vous à celle-ci).

iptables -t nat -A POSTROUTING -j MASQUERADE -s 192.168.<numéro_binôme>.<numéro_VM_mandataire>/24

on peut se connecter depuis l'extérieur vers nos machines de service en faisant une chaîne de ssh :pc_personnel -> machine mandataire -> machine de service.

Redirection de port

Cette méthode nous permettra de nous connecter en ssh sur les machines de service depuis la mandataire en nous connectant sur d'autres ports. sur la mandataire on exécute:

iptables -t nat -A PREROUTING -p tcp --dport 2202 -j DNAT --to-destination 192.168.<numéro_binôme>.<numéro_VM1>:22
iptables -t nat -A PREROUTING -p tcp --dport 2203 -j DNAT --to-destination 192.168.<numéro_binôme>.<numéro_VM2>:22

et on active la redirection de port avec:

echo "net.ipv4.ip_forward=1" > /etc/sysctl.conf

sur la mandataire

On peut alors se connecter en ssh sur nos machines de service depuis l'extérieur en changeant le port:

ssh root@193.48.57.168 -p2202

ou

ssh root@193.48.57.168 -p2203

on sauvegarde pour avoir une configuration persistante avec:

iptables-save


Serveurs DNS

Création des noms de domaine

On choisit et achète deux noms de domaine auprès de gandi.net avec les logins fournis par l'enseignant avec un carte prépayée (ne pas prendre de noms de domaine trop cher, 2 euros environ). on prendra domain1.name et domain2.name pour l'exemple.

Création des serveurs dns redondants

Afin que bind(le service de serveur dns) puisse accéder aux fichiers de configuration:

chown bind:bind /etc/bind/
chmod 666 /etc/bind/

nous éditons le fichier de configuration locale de bind

/etc/bind/named.conf.local

sur la première machine de service:

zone "domain1.name" {
	type master;
	file "/etc/bind/domain1.name";
	allow-transfer{secondaries;};
	notify yes;
};

acl "secondaries"{
	<adresse_ipv4_machine_service_2>;
	<adresse_ipv6_machine_service_2>;
};

zone "domain2.name" {
	type secondary;
	file "/etc/bind/backup/domain2.name";
	primaries{<adresse_ipv6_machine_service_2>;};
};

sur la seconde machine de service:

zone "domain2.name" {
	type master;
	file "/etc/bind/domain2.name";
	allow-transfer{secondaries;};
	notify yes;
};

acl "secondaries"{
	<adresse_ipv4_machine_service_1>;
	<adresse_ipv6_machine_service_1>;
};

zone "domain1.name" {
	type secondary;
	file "/etc/bind/backup/domain1.name";
	primaries{<adresse_ipv6_machine_service_1>;};
};


et sur la machine mandataire:

zone "domain1.name" {
	type secondary;
	file "/etc/bind/backup/domain1.name";
	primaries{<adresse_ipv6_machine_service_1>;};
};
zone "domain2.name" {
	type secondary;
	file "/etc/bind/backup/domain2.name";
	primaries{<adresse_ipv6_machine_service_2>;};
};

nous créons maintenant les fichiers de zone dns:

sur la première machine de service dans un fichier

/etc/bind/domain1.name

:

$TTL 400

@ IN SOA ns.domain1.name domain1.name (
        4000      ; Numero de version(faire +1 a chaque edition du fichier)
        21600     ; Rafraichissement (6h)
        3600      ; Re-tentative (1h)
        2592000   ; Expiration (30j)
        86400     ; Cache negatif (24h)
);

	IN	NS	ns.domain1.name.
	IN	NS	ns.domain2.name.

@	IN	A	<adresse_ipv4_bridge_SE4_mandataire>
@	IN	AAAA	<adresse_ipv6_bridge_SE4_mandataire>

ns	IN	A	<adresse_ipv4_bridge_SE4_mandataire>
ns	IN	AAAA	<adresse_ipv6_bridge_SE4_mandataire>

www IN CNAME domain1.name

sur la seconde machine de service, on inversera chaque itération de domain1.name par domain2.name du fichier de zone ci-dessus et on le placera dans

/etc/bind/domain2.name

.

Lorsque la configuration du serveur dns est faite, on redémarre bind avec:

service named restart

sur les trois machines.

glue record

Pour que nos serveurs DNS soient reconnus par les autres serveurs DNS d'internet, il faut créer un glue record. On se rend sur gandi.net et on suit la procédure décrite pour ajouter un glue record. On ajoute alors ns.domain1.name et ns.domain2.name.

On peut alors verifier que notre nom de domaine est bien reconnu par les autres serveurs DNS sur le site dnschecker.org, et aussi en exécutant:

dig domain1.name @8.8.8.8

DNSSEC