TP sysres SE2a5 2022/2023 G6

De Wiki d'activités IMA

Création de la machine virtuelle

  • Connexion au serveur Capbreton :
ssh capbreton.plil.info
  • Créer la variable d’environnement http_proxy :
export http_proxy=http://proxy.plil.fr:3128

En configurant correctement le proxy de la plateforme, il est désormais possible d’accéder aux images et aux paquets Debian pour créer la VM.

  • Création d’une image pour la VM :
xen-create-image --hostname=GUIGUITOTO --ip=193.48.57.168 --gateway=193.48.57.188 --netmask=255.255.255.0 --dir=/usr/local/xen --password=glopglopglop --dist=buster

    → Dossier de stockage des données de la VM : /usr/local/xen/domains/GUIGUIOTO
    → Fichier de configuration de la VM : /etc/xen/GUIGUITOTO.cfg

  • Création des partitions virtuelles :
vgcreate virtual /dev/sda7
lvcreate -L10G -n GUIGUITOTO-home virtual
lvcreate -L10G -n GUIGUITOTO-var virtual
  • Vérification des partitions :
lvdisplay
lsblk
  • Formatage de la partition virtuelle :
mkfs.ext4 /dev/virtual/GUIGUITOTO-home
mkfs.ext4 /dev/virtual/GUIGUITOTO-var
  • Modification de /etc/xen/GUIGUITOTO.cfg :

    → Ajout des partitions virtuelles dans la variable disk :

'phy:/dev/virtual/GUIGUITOTO-home,xvda3,w',
'phy:/dev/virtual/GUIGUITOTO-var,xvda4,w'

    → Ajout du pont dans dans la variable vif :

vif = [ 'mac=00:16:3E:D8:97:68, bridge=IMA2a5' ]

Le fichier de configuration obtenu est le suivant :

#
# Configuration file for the Xen instance GUIGUITOTO, created
# by xen-tools 4.8 on Fri Sep 28 08:53:11 2022.
#

#
#  Kernel + memory size
#
kernel      = '/boot/vmlinuz-4.19.0-9-amd64'
extra       = 'elevator=noop'
ramdisk     = '/boot/initrd.img-4.19.0-9-amd64'

vcpus       = '1'
memory      = '256'


#
#  Disk device(s).
#
root        = '/dev/xvda2 ro'
disk        = [
                  'file:/usr/local/xen/domains/GUIGUITOTO/disk.img,xvda2,w',
                  'file:/usr/local/xen/domains/GUIGUITOTO/swap.img,xvda1,w',
                  'phy:/dev/virtual/GUIGUITOTO-home,xvda3,w',
                  'phy:/dev/virtual/GUIGUITOTO-var,xvda4,w'
              ]


#
#  Physical volumes
#


#
#  Hostname
#
name        = 'GUIGUITOTO'

#
#  Networking
#
vif         = [ 'mac=00:16:3E:BE:BF:2D, bridge=IMA2a5' ]

#
#  Behaviour
#
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'
  • Création de la VM :
xen create /etc/xen/GUIGUITOTO.cfg
  • Affichage de l’état des VM :
xen list
  • Affichage du mot de passe de la VM :
tail -f /var/log/xen-tools/GUIGUITOTO.log
  • Démarrage d’un shell sur la VM :
xen console GUIGUITOTO
  • Changement du mot de passe :
passwd root
  • Mise à jour de la liste des paquets :
apt update
  • Montage des partitions virtuelles :
mount /dev/xvda4 /mnt
  • Copie des données des répertoires /home et /var :
mv /var/* /mnt
  • Démontage des partitions virtuelles :
umount /mnt
  • Ajout des partitions au fichier /etc/fstab :
/dev/xvda3 /home ext4 defaults 0 2
/dev/xvda4 /var ext4 defaults 0 2


On obtient les partitions suivantes:

lsblk
NAME  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda1 202:1    0  512M  0 disk [SWAP]
xvda2 202:2    0    4G  0 disk /
xvda3 202:3 0 10G 0 disk /home
xvda4 202:4 0 10G 0 disk /var

Serveur SSH

  • Modification du fichier /etc/ssh/sshd_config :
PermitRootLogin yes

Configuration IP

  • Modification du fichier /etc/network/interfaces :
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 193.48.57.168
gateway 193.48.57.???
netmask 255.255.255.240
iface eth0 inet6 auto 
# post-up  ethtool -K eth0 tx off
#
# The commented out line above will disable TCP checksumming which
# might resolve problems for some users.  It is disabled by default

Serveur DNS

Dans un premier temps, on utilise le registrar Gandi afin de réserver le nom de domaine totoguigui.site.
Une fois le nom de domaine réservé, il est alors possible de configurer les serveurs de noms et les Glue Records :
  → Ajouter le Glue Record vers 193.48.57.168 afin d’associer le nom de domaine totoguigui.site à l’adresse IP 193.48.57.168
  → Modifier les serveurs de noms pour utiliser ns.totoguigui.site et ns6.gandi.net
En attendant que les serveurs de noms soient correctement modifiés, il est possible de changer les enregistrements DNS :
  → Modifier l’enrgistrement DNS @-A avec la valeur 193.48.57.168
  → Ajouter l’enrgistrement DNS ns-A avec la valeur 193.48.57.168
  → Modifier l’enrgistrement DNS www-CNAME avec la valeur ns.totoguigui.site.

  • Installation du paquet bind9
apt install bind9
  • Modification du fichier /etc/resolv.conf :
nameserver 127.0.0.1
  • Modification du fichier /etc/bind/named.conf.local :
zone "totoguigui.site" {
    type master;
    file "/etc/bind/db.totoguigui.site";
    allow-transfer { 217.70.177.40; }; // ns6.gandi.net
};
  • Modification du fichier /etc/bind/named.conf.options :
options{
  directory "/var/cache/bind";
  forwarders {
    8.8.8.8;
    4.4.2.2;
  };
  dnssec-validation auto;
  listen-on-v6 { any; };
  allow-transfer { "allowed_to_transfer"; };
};
acl "allowed_to_transfer" {
  217.70.177.40/32;
};
  • Créer le fichier BIND pour totoguigui.site :
cp /etc/bind/db.local /etc/bind/db.totoguigui.site
  • Modification du fichier /etc/bind/db.totoguigui.site :
;
; BIND data file for totoguigui.site
;
$TTL    604800
@       IN      SOA     ns.totoguigui.site. root.totoguigui.site. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@   IN  NS  ns.totoguigui.site.
@   IN  NS  ns6.gandi.net.
@   IN  A   193.48.57.168
NS  IN  A   193.48.57.168
NS  IN  AAAA    2001:7A8:116E:60A4::1
WWW IN  CNAME   NS
SSH IN  CNAME   NS
  • Redémarrage du service bind9 :
service bind9 restart

Tester DNS :

  • Modification du fichier /etc/resolv.conf
nameserver 193.48.57.168
  • Vérification de la traduction du nom de domaine totoguigui.site :
nslookup totoguigui.site

Configuration DNSSEC

  • Modification du fichier /etc/bind/named.conf.options :
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
  • Création du répertoire totoguigui.site.dnssec :
mkdir /etc/bind/totoguigui.site.dnssec/
cd /etc/bind/totoguigui.site.dnssec/
  • Génération de la clef asymétrique de signature de clefs de zone :
dnssec-keygen -a RSASHA256 -b 2048 -f KSK -n ZONE totoguigui.site
mv Ktotoguigui.site.*.key totoguigui.site-ksk.key
mv Ktotoguigui.site.*.private totoguigui.site-ksk.private
  • Génération de la clef asymétrique de signature des enregistrements :
dnssec-keygen -a RSASHA256 -b 2048 -n ZONE totoguigui.site
mv Ktotoguigui.site.*.key totoguigui.site-zsk.key
mv Ktotoguigui.site.*.private totoguigui.site-zsk.private
  • Modification du fichier /etc/bind/db.totoguigui.site :
$include "/etc/bind/totoguigui.site.dnssec/totoguigui.site-ksk.key"
$include "/etc/bind/totoguigui.site.dnssec/totoguigui.site-zsk.key"
  • Signature des enregistrements de la zone :
dnssec-signzone -o totoguigui.site -k totoguigui.site-ksk ../db.totoguigui.site totoguigui.site-zsk
  • Modification du fichier /etc/bind/named.conf.local :
zone "totoguigui.site" {
    type master;
    file "/etc/bind/db.totoguigui.site.signed";
    allow-transfer { 217.70.177.40; }; // ns6.gandi.net
};

Il ne reste plus qu’à communiquer la partie publique de la KSK (présente dans le fichier totoguigui.site-ksk.key) à Gandi.
L’algorithme utilisé est le 5 (RSA/SHA-1).


Vérifier son DNS avec dnsviz.net

DNSViz est un outil permettant de visualiser l'état d'une zone DNS. Il a été conçu comme une ressource pour comprendre et dépanner le déploiement des extensions de sécurité DNS (DNSSEC). Il fournit une analyse visuelle de la chaîne d'authentification DNSSEC pour un nom de domaine et son chemin de résolution dans l'espace de noms DNS, et il liste les erreurs de configuration détectées par l'outil. Nous avons mis notre nom de domaine et nous obtenons le resultat suivant :

Totoguigui.png

Serveur Web

  • Installation du paquet openssl :
apt install openssl
  • Création d’un certificat TSL :
openssl req -nodes -newkey rsa:2048 -sha256 -keyout totoguigui.site.key -out totoguigui.site.csr

Attention à bien renseigner totoguigui.site comme CN (Common Name) pour la création du certificat.

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
  • Activation du module SSL :
a2enmod ssl
  • Modification du fichier /etc/apache2/ports.conf :
Listen 80

<IfModule mod_ssl.c>
   Listen 443
</IfModule>
<IfModule mod_gnutls.c>
   Listen 443
</IfModule>
  • Ajout du fichier /etc/apache2/sites-available/000-demineur.site-ssl.conf :
<IfModule mod_ssl.c>
        <VirtualHost 193.48.57.168:443>
                ServerName totoguigui.site
                ServerAlias ns.totoguigui.site www.totoguigui.site
                DocumentRoot /var/www/totoguigui.site/
                CustomLog /var/log/apache2/secure_access.log combined
                SSLEngine on
                SSLCertificateFile /etc/ssl/certs/totoguigui.site.crt
                SSLCertificateKeyFile /etc/ssl/private/totoguigui.site.key
                SSLCACertificateFile /etc/ssl/certificats/GandiStandardSSLCA2.pem
                SSLVerifyClient None
        </VirtualHost>
</IfModule>
  • Activation du site totoguigui.site :
a2ensite 000-totoguigui.site-ssl
  • Modification du fichier nano /etc/apache2/apache2.conf :
ServerName totoguigui.site
  • Modification du fichier nano /etc/apache2/sites-available/000-default.conf :
Redirect permanent / https://www.totoguigui.site/
  • Redémarrage du service apache2 :
service apache2 restart

HTTPS

1. Activation du module SSL

a2enmod ssl

2. Configuration du port 443

Dans le fichier /etc/apache2/ports.conf, il y avait :

Listen 80

<IfModule ssl_module>
       Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

Nous avons supprimé le premier if module et nous avons ajouté :

<IfModule mod_ssl.c>
        Listen 443
</IfModule>

3. Création de liens symboliques pour les certificats

c_rehash /etc/ssl/certs

La sortie de cette commande est celle-ci :

Doing /etc/ssl/certs
WARNING: Skipping duplicate certificate ca-certificates.crt
WARNING: Skipping duplicate certificate ca-certificates.crt

4. Hôtes virtuels

Nous avons créé le répertoire /var/www/totoguigui.site/

Nous avons créé le fichier /etc/apache2/sites-available/000-totoguigui.site-ssl.conf dans lequel nous avons mis :

<VirtualHost 193.48.57.168:443>
        ServerName totoguigui.site
        ServerAlias www.totoguigui.site
        DocumentRoot /var/www/www.totoguigui.site/
        CustomLog /var/log/apache2/secure_access.log combined

        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/totoguigui.site.crt
        SSLCertificateKeyFile /etc/ssl/private/totoguigui.site.key
        SSLCACertificateFile /etc/ssl/certificats/GandiStandardSSLCA2.pem
        SSLVerifyClient None
</VirtualHost>

Nous avons activé le site ssl :

a2ensite 000-totoguigui.site-ssl

5. Configuration d'Apache2

Dans le fichier /etc/apache2/apache2.conf

ServerName totoguigui.site

6. Ajout d'un enregistrement

Dans le fichier /etc/bind/db.totoguigui.site, nous avons ajouté un enregistrement de type A pour définir l'adresse de www.totoguigui.site :

www     IN      A       193.48.57.168


Docker & MINECRAFT

Le but de cette partie est de montrer comment installer docker dans un premier temps et ensuite d'installer un serveur minecraft sur notre machine virtuelle

Pour cela nous allons avoir besoin de DOCKER

apt-get install docker

Une fois l'installation faite nous devons prendre une image de serveur minecraft que nous avons trouvé sur un gitub : https://github.com/itzg/docker-minecraft-server

docker run -d -it -p 25565:25565 -e EULA=TRUE itzg/minecraft-server

On précise 25565 car c'est le port utilisé par minecraft

On peut voir si l'opération à été un succès :

docker ps

Il nous reste plus qu'à nous connecter à notre serveur sur MINECRAFT en renseignant l'adresse 193.48.57.168 et de lancer.

Sécurisation des données (RAID 5)

Pour cette partie, nous n'avons pas réalisé le RAID sur notre machine mais en collaboration avec le groupe 1.

Nous avons besoin de 3 LV à rajouter à notre VM :

$ lvcreate -L1G -n Bellerose-raid1 storage
$ lvcreate -L1G -n Bellerose-raid2 storage
$ lvcreate -L1G -n Bellerose-raid3 storage

Nous pouvons ainsi les rajouter à la configuration de notre VM (/etc/xen/Bellerose.cfg):

'phy:/dev/storage/totoguigui-raid1,xvda5,w'
'phy:/dev/storage/totoguigui-raid2,xvda6,w'
'phy:/dev/storage/totoguigui-raid3,xvda7,w'

Nous pouvons ensuite créer le RAID en relançant la VM et en se connectant dessus.

$ apt install mdadm

On va ensuite créer un disque nommé /dev/md0 grâce à mdadm :

$ mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/xvda5 /dev/xvda6 /dev/xvda7

On peut ainsi vérifier que notre RAID 5 est effectif :

$ lsblk
NAME  MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
xvda1 202:1    0  512M  0 disk  [SWAP]
xvda2 202:2    0    4G  0 disk  /
xvda3 202:3    0   10G  0 disk  /home
xvda4 202:4    0   10G  0 disk  /var
xvda5 202:5    0    1G  0 disk  
`-md0   9:0    0    2G  0 raid5 
xvda6 202:6    0    1G  0 disk  
`-md0   9:0    0    2G  0 raid5 
xvda7 202:7    0    1G  0 disk  
`-md0   9:0    0    2G  0 raid5 

Enfin il faut monter ce disque fraîchement créé :

$ mkfs.ext4 /dev/md0
$ mkdir /media/raid

on ajoute cette ligne dans /etc/fstab :

/dev/md0 /media/raid ext4 defaults 0 1

puis

$ mount -a