« Atelier SysRes SE2a5 2023/2024 E9 » : différence entre les versions
Ligne 115 : | Ligne 115 : | ||
*<code> ip=192.168.163.1, bridge=balltrap' </code> | *<code> ip=192.168.163.1, bridge=balltrap' </code> | ||
Redémarrer les VM et, dans /etc/network/interfaces, leur déclarer une nouvelle interface réseau (eth1) avec une IP privée statique : | Redémarrer les VM et, dans '''/etc/network/interfaces''', leur déclarer une nouvelle interface réseau (eth1) avec une IP privée statique : | ||
* balltrap = 192.168.163.1<br> | * balltrap = 192.168.163.1<br> | ||
* kiev = 192.168.163.2<br> | * kiev = 192.168.163.2<br> |
Version du 11 novembre 2023 à 11:43
Créer la VM
Se connecter au serveur en tant que root :
ssh root@capbreton.plil.info
Créer le fichier de config de la VM :
xen-create-image --hostname=kiev --ip=172.26.145.103 --netmask=255.255.255.0 --gateway=172.26.145.254 --bridge=bridgeStudents --dir=/usr/local/xen --password=glopglopglop
Démarrer la VM :
- < code> xen create /etc/xen/kiev.cfg
Lister les VM :
xen list
Se connecter à la VM depuis capbreton:
xen console
Configurer le SSH
Modifier le fichier /etc/ssh/sshd_config: Autoriser la connexion en root :
PermitRootLogin yes
Redémarrer le service SSH :
service ssh restart
Se connecter en root via SSH :
ssh root@172.26.145.103
Créer les partitions LVM
Créer 2 partitions LVM sur capbreton pour y rattacher, par la suite /home et /var :
lvcreate -L10G -n kiev-home storage
lvcreate -L10G -n kiev-var storage
Dans /etc/xen/kiev.cfg, ajouter les 2 partitions :
phy:/dev/virtual/kiev-home, xvdb, w',
phy:/dev/virtual/kiev-var, xvdc, w',
# 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', ]
Eteindre la VM :
xen shut kiev
La redémarrer et s'y connecter.
Sur la VM, créer 2 répertoires, y placer le contenu de /var et /home pour ensuite monter notre disque dans /home et /var :
mkdir /new_home mkdir /new_var mkfs /dev/xvdb //Formater les partitions LVM au format ext4 et y créer un système de fichier mkfs /dev/xvdc mount /dev/xvdb /new_home mount /dev/xvdc /new_var cp -r /var/* /new_var/
lsblk // Lister les LVM
xvda1 202:1 0 512M 0 disk [SWAP] xvda2 202:2 0 10G 0 disk / xvdb1 202:17 0 10G 0 disk /new-home xvdb2 202:18 0 10G 0 disk /new-var
Dans /etc/fstab, ajouter :
/dev/xvdb /home ext4 defaults 0 2 * /dev/xvdc /var ext4 defaults 0 2 *
Reboot la VM
umount /new_var umount /new_home mount -a // Monter tous les systèmes de fichiers spécifiés dans le fichier "/etc/fstab".
lsblk // Lister les LVM
xvda1 202:1 0 512M 0 disk [SWAP] xvda2 202:2 0 10G 0 disk / xvdb1 202:17 0 10G 0 disk /home xvdb2 202:18 0 10G 0 disk /var
Créer la machine mandataire
xen-create-image --hostname=balltrap --ip=193.48.57.163 --netmask=255.255.255.240 --bridge=SE2a5 --dir=/usr/local/xen --password=glopglop --gateway=193.48.57.161
xen create balltrap.cfg
Se connecter à la VM
xen console balltrap
Vérifier qu'on ping google
- Dans /etc/network/interfaces, obtenir une IPv6 par dhcp :
iface eth0 inet6 auto
Créer la mascarade
Sur capbreton, créer un bridge balltrap (pour ponter la carte réseau virtuelle de la VM à une carte réseau physique). Dans /etc/network/interfaces :
#balltrap_bridge iface balltrap inet manual bridge_ports none post-up ip link set $IFACE up post-down ip link set $IFACE down
Up l'interface du bridge
ifup balltrap
Ajouter le bridge dans le fichier de config de chaque VM (dans vif):
ip=192.168.163.1, bridge=balltrap'
Redémarrer les VM et, dans /etc/network/interfaces, leur déclarer une nouvelle interface réseau (eth1) avec une IP privée statique :
- balltrap = 192.168.163.1
- kiev = 192.168.163.2
- Riga = 192.168.163.3
Monter l'interface réseau eth1 nouvellement créée (et vérifier qu'elle est bien montée) :
ifup -a ip a
Ping les autres IP dans ce réseau privé.
Créer une redirection de l'interface routée et notre interface privée sur la machine mandataire :
iptables -t nat -A POSTROUTING -j MASQUERADE -s 192.168.163.0/24 apt install iptables-persistant iptables-save iptables-save >> /etc/iptables/rules.v4
Vérifier dans /etc/iptables/rules.v4 les nouvelles règles de routage. Ping google.com depuis la machine mandataire et les machines de service.
Se connecter en ssh depuis capbreton à la machine de service en utilisant la machine mandataire comme jump :
ssh -J root@193.48.57.163 root@192.168.163.2
Supprimer l'IPV4 sur l'interface eth0 sur les machines de service :
auto eth0 iface eth0 inet6 auto
Activer le routage (autoriser la redirection d'IP en mode définitif) sur notre machine mandataire. Dans le dossier /etc/sysctl.conf :
sysctl net.ipv4.ip_forward=1
Créer maintenant des règles de routages pour se connecter en ssh aux machines de service en utilisant un port différent.
iptables -A PREROUTING -t nat -i eth0 -p tcp -m tcp --dport 2201 -j DNAT --to-destination 192.168.163.2:22 iptables -A PREROUTING -t nat -i eth0 -p tcp -m tcp --dport 2202 -j DNAT --to-destination 192.168.163.3:22
Se connecter en ssh à la machine de service depuis capbreton en utilisant sur le port 2201 :
ssh root@193.48.57.163 -p 2201 ssh root@193.48.57.163 -p 2202
Configurer le serveur DNS (machine de service + mandataire)
Sur http://www.gandi.net, acheter un nom de domaine : kievjeje.lol
Spécifier les serveurs DNS sur Gandi (glue records + liveDNSrecords) :
- DNS principal (machine de service) -> IPv6
- DNS secondaire (machine mandataire) -> IPv4
+ à rajouter ??? 12h ???
Sur la machine de service, ajouter le serveur DNS de google (8.8.8.8) dans /etc/resolv.conf (nameserver)
- Maintenant on peut télécharger bind9 sur la machine de service.
Configurer le bind9 : Dans /etc/bind/named.conf.local, créer la zone DNS :
zone "kievjeje.lol" { type master; file "/etc/bind/db.kievjeje.lol"; allow-transfer {217.70.184.38; }; };
- 217.70.184.38 est l'adresse de Gandi
Dans /etc/bind/db.kievjeje.lol, créer les enregistrements DNS :
Dans /etc/bind/named.conf.options, ajouter :
listen-on-v6 { any; } listen-on { any; }; allow-recursion {127.0.0.1; };
Vérifier qu'il n'y a pas d'erreur de conf DNS :
cat /var/log/daemon.log
Maintenant redémarrer le service DNS :
service bind9 restart
- (Ne pas oublier d'incrémenter le SN dans named.conf.local à chaque restart)
Tester la résolution DNS de (installer le package dnsutils préalablement) :
dig @localhost kievjeje.lol
dig 192.168.163.2 kiev.jeje.lol
Installer openssl, et générer une CSR (Certificate Signing Request SSL) :
- https://docs.gandi.net/fr/ssl/operations_courantes/csr.html
openssl req -nodes -newkey rsa:2048 -sha256 -keyout kievjeje.lol.key -out kievjeje.lol.csr
- (Attention à bien renseigner kievjeje.lol comme Common Name)
mv totoguigui.site.key /etc/ssl/private mv totoguigui.site.csr /etc/ssl/certificats Il est nécessaire de faire signer le certificat .csr par un registrar tel que Let’s Encrypt ou Gandi afin d’en obtenir le nouveau certificat signé .crt. Puisque le registrar Gandi a été utilisé pour réserver le nom de domaine totoguigui.site, il est alors possible d’utiliser à nouveau ce service pour signer gratuitement le certificat totoguigui.site.csr.
Pour cela, il faut “acheter” un certificat SSL pour un hôte “ailleurs” et coller le contenu du fichier .csr. Une fois le CN entré et reconnu, l’achat devient gratuit et peut être effectué. Après quelques minutes, il est désormais possible de télécharger le certificat signé .crt ainsi que le certificat nommé GandiStandardSSLCA2.pem.
Ces deux certificats sont à copier dans le répertoire /etc/ssl/certificats de la VM.
Copier les certificats sur la VM : scp -r -p totoguigui.site.crt root@193.48.57.168:/etc/ssl/certs scp -r -p GandiStandardSSLCA2.pem root@193.48.57.168:/etc/ssl/certificats Installation du paquet apache2 : apt install apache2