« Atelier SysRes SE2a5 2023/2024 E9 » : différence entre les versions

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


Supprimer apache2 sur ballatrap -> pas besoin... Comment le faire proprement ?
Supprimer apache2 sur ballatrap -> pas besoin... Comment le faire proprement ?
</br>
</br>
</br>


== Sécuriser le DNS ==
== Sécuriser le DNS ==

Version du 22 novembre 2023 à 09:45

WIKI TP Jérôme -> KIEV

Créer la machine de service

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

Sur https://www.gandi.net, acheter le nom de domaine kievjeje.lol et spécifier les serveurs DNS (GlueRecords + externalServerNames):

  • DNS principal (machine de service) -> IPv6
  • DNS secondaire (machine mandataire) -> IPv4
GlueRecord.png
Externalservers kievjeje.lol.png


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 (sur la machine de service et mandataire):

  • Sur la machine de service (master)
 zone "kievjeje.lol" {
   type master;
   file "/etc/bind/db.kievjeje.lol";
   allow-transfer {192.168.163.1; };
 };
  • Sur la machine mandataire (slave)
 zone "kievjeje.lol" {
   type slave;
   file "/etc/bind/db.kievjeje.lol";
   allow-transfer {192.168.163.2; };
 };*

Dans /etc/bind/named.conf.options, ajouter allow-recursion {127.0.0.1} afin d'éviter que notre serveur ne serve de relais DNS ouvert : ???? Allow recursion ????

 listen-on-v6 { any; }
 listen-on { any; };
 allow-recursion {127.0.0.1; };

Le fichier /etc/bind/db.kievjeje.lol contient les enregistrements DNS:

Bind.png

Vérifier qu'il n'y a pas d'erreur de conf DNS :

  • cat /var/log/daemon.log

Redémarrer le service DNS (ne pas oublier d'incrémenter le SN dans named.conf.local à chaque restart :

  • service bind9 restart

Tester la résolution DNS (installer le package dnsutils préalablement) :

  • dig @localhost kievjeje.lol ou dig 192.168.163.2 kiev.jeje.lol
DigLocalHost.PNG

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)
  • kievjeje.lol.key est notre clé privée ( -> elle est très importante, je la range dans /etc/ssl/private/) et je securise son accès : chmod 440 kievjeje.lol.key
  • Copier le certificat (kievjeje.lol.crt) obtenu sur Gandi.net et le copier dans /etc/ssl/certs/


Activer le HTTPS sur Apache2

Configurer apache2 pour gérer du HTTPS sur le port 443 :

  • Créer une nouvelle zone dans /etc/apache2/sites-available/vhosts-https.conf
  • Insérer la ligne de conf SSLEngine On et préciser l'emplacement de la clé privée du serveur et du certificat :
  • Clef privée du serveur (kievjeje.lol.key) via SSLCertificateKeyFile et certificat (kievjeje.lol.crt) via SSLCertificateFile
Vhosts kievjeje.lol.png

??? Ne fonctionne pas encore ???

Supprimer apache2 sur ballatrap -> pas besoin... Comment le faire proprement ?

Sécuriser le DNS