TP sysres SE2a5 2022/2023 G4

De Wiki d'activités IMA

Réinstallation de la zabeth03

Créer et configurer une machine virtuelle Xen

Tout d'abord, nous nous connectons au serveur Capbreton (serveur commun) en ssh :

 ssh root@capbreton.plil.info

Ensuite nous créons notre VM à l'aide de la commande suivante en précisant son nom VMALAD et son ip : 193.48.57.166 :

xen-create-image --hostname=VMALAD --ip=193.48.57.166 --gateway=193.48.57.188 --netmask=255.255.255.240 --dir=/usr/local/xen --password=glopglopglop --dist=chimera

Une fois connécté sur notre machine virtuelle, nous créons 2 partitions (de 10Go) sur notre espace de stockage :

lvcreate -L10G -n VMALAD-home storage
lvcreate -L10G -n VMALAD-var storage

Puis nous les formatons au format ext 4 :

mkfs.ext4 /dev/storage/home
mkfs.ext4 /dev/storage/var

Une fois cela fait, nous allons devons déclarer ces nouvelles partitions ainsi que le bridge alloué à notre promo (IMA5a) dans le ".cfg" de VMALAD :

cat /etc/xen/VMALAD.cfg
# Configuration file for the Xen instance VMALAD, created
# by xen-tools 4.8 on Tue Oct  4 10:20:08 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/VMALAD/disk.img,xvda2,w',
                  'file:/usr/local/xen/domains/VMALAD/swap.img,xvda1,w',
                  'phy:/dev/storage/VMALAD-home,xvda3,w',
                  'phy:/dev/storage/VMALAD-var,xvda4,w'
              ]


#
#  Physical volumes
#


#
#  Hostname
#
name        = 'VMALAD'

#
#  Networking
#
vif         = [ 'mac=00:16:3E:42:7C:03,bridge=IMA2a5' ]

#
#  Behaviour
#
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'

Maintenant, nous pouvons démarrer VMALAD :

xen create -c /etc/xen/VMALAD.cfg

Grâce à la commande lsblk, nous pouvons vérifier nos partitions sur notre VM :

root@VMALAD:/# 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

Service réseau

Une fois connecté à notre VM (en root) nous observons notre infarce réseau :

cat /etc/networks/interfaces
auto eth0
iface eth0 inet static
 address 193.48.57.166
 netmask 255.255.255.240
 gateway 193.48.57.172

Puis nous la configurons à l'aide des commandes suivante :

ifdown eth0
ifup eth0

Pour vérifier que notre interface réseau est bel et bien configuré, nous rentrons :

ip r
default via 193.48.57.172 dev eth0 onlink
193.48.57.160/28 dev eth0 proto kernel scope link src 193.48.57.166

Connexion SSH

Maintenant, nous installons ssh sur notre VM pour pouvoir nous connecter en tant que root sur notre VM

Tout d'abord, avant d’installer SSH sur notre machine, nous nous assurons qu’elle soit à jour :

sudo apt update
sudo apt upgrade

Pour avoir accès en tant que root ça la VM, il faut modifier le fichier de config :

sudo vim /etc/ssh/sshd_config

Ensuite, il faut retirer le commentaire devant « PermitRootLogin » et remplacer la valeur par défaut à "yes" :

PermitRootLogin yes

Nous redémarrons le service

sudo systemctl restart ssh

Nous pouvons désormais nous connecter depuis n'importe quelle machine sur notre VM à l'aide de la commande:

ssh root@193.48.57.166

Fail2Ban

Nous avons installé Fail2Ban afin de proteger un minimum notre VM :

apt install fail2ban


Apache2

Nous installons apache2 sur notre VM

apt install apache2

Nous avons personnalisé notre site via le fichier index.html :

nano /var/www/html/index.html

OPEN SSL

Nous installons OPEN SSL, nous en aurons besoin plus tard afin de générer nos clés server.

Certification X509 via Gandi

Notre groupe, c'est occupé de réaliser ce tuto afin que le reste de la classe puisse obtenir leurs certificats. Nous avons également eu la responsabilité d'acheter tous les domaines de la classe et de leurs attributions.

Table du VLAN 40

Groupe @IPv4 MV non routée @IPv4 MV routée Nom de domaine
Antonin / Hugo 172.26.145.76/24 193.48.57.163/28 detestable.site
Clément / Adrien J 172.26.145.77/24 193.48.57.164/28 lamentable.site
Fabrice / Lionel 172.26.145.52/24 193.48.57.165/28 regretable.site
Arthur / Adrien D 172.26.145.53/24 193.48.57.166/28 minable.site
Alex / Alexandre 172.26.145.54/24 193.48.57.167/28 miserable.site
Tom / Guillaume 172.26.145.55/24 193.48.57.168/28 totoguigui.site

Sur le site Gandi.net, après vous être connecté

Aller dans le menu "SSL Certificates", puis dans "buy".

1) WHERE

Vous sélectionnez "Somewhere else"*

2) TYPE

Vous sélectionnez "Standard"

3) CSR

Sur votre terminal Unix (VM) :

apt install openssl
openssl req -nodes -newkey rsa:2048 -sha256 -keyout myserver.key -out server.csr -utf8

COUNTRY NAME : FR

STATE OR PROVINCE NAME : Nord

LOCALITY : Lille

ORGANISATION NAME : PolytechLille

ORGANISATION : SE

COMMON NAME : (votre_nom_de_domaine.site)

EMAIL ADRESS : Votre mail polytech


Après cela vous générer 2 ficher très IMPORTANT, à conserver absolument !

- myserver.key

- server.csr (c'est ce fichier qui contient votre clé CSR que vous devez coller sur le site "Gandi")


Vous collez votre certificat en entier (---BEGIN CERTIFICATE--- & ---END CERTIFICATE REQUEST--- compris)


Tuto pour obtenir votre clé SSL :

https://docs.gandi.net/en/ssl/common_operations/csr.html

Serveur DNS

Tout d'abord, il faut savoir que le serveur DNS permet de lier notre domaine et son adresse IP.

Puis, nous renseignons notre IP dans "resolv.conf" :

nameserver 193.48.57.166

Nous installons bind9 :

$ apt install bind9

Pour configurer notre serveur DNS nous allons dans :

cat /etc/bind/named.conf.local
options {
    directory "/var/cache/bind";

    forwarders {
    8.8.8.8;
    4.4.2.2;
    };

   listen-on-v6 { any; };
   allow-transfer { "allowed_to_transfer"; };
};
acl "allowed_to_transfer" {
217.70.177.40/32;
 
};

Pour associer notre adresse IP à notre hostname, nous allons dans le menu "glue record" sur Gandi.net

ns1.minable.site
193.48.57.166

Les serveurs de noms permettent d'accéder à des réseaux ou à des contenus sur Internet à partir d'un nom de domaine :

ns1.minable.site
ns6.gandi.net

Nous les implémentons dans notre fichier db.minable.site

$TTL 3600
$include /etc/bind/minable.site.dnssec/minable.site-ksk.key
$include /etc/bind/minable.site.dnssec/minable.site-zsk.key
@ IN SOA minable.site. postmaster.minable.site (
     4               ; Version
     1800             ; Refresh (30m)
     600             ; Retry   (10m)
     3600             ; Expire (1h)
     3600 )           ; Minimum TTL (1h)
@ IN NS ns1.minable.site.
@ IN NS ns6.gandi.net.
ns1     IN A       193.48.57.166
ns      IN AAAA    2001:660:4401:60a0:216:3eff:fe42:7c03

Après quelques minutes d'attente et un reset du cache navigateur, notre site web est accésible : www.minable.site

Sécurisation HTTPS

Désormais, nous souhaitons sécuriser notre site web. Pour cela, nous rajoutons l'adresse suivante dans notre db.minable.site :

 www  IN A  193.48.57.166

Nous redémarrons bind9 :

systemctl restart bind9

Nous générons les fichiers myserver.key et server.csr à l'aide de la commande :

openssl req -nodes -newkey rsa:2048 -sha256 -keyout minable.key -out minable.csr
Generating a RSA private key
.+++++
..............+++++
writing new private key to 'minable.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:Nord
Locality Name (eg, city) []:Lille
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Polytech Lille
Organizational Unit Name (eg, section) []:IMA2A5      
Common Name (e.g. server FQDN or YOUR name) []:minable.site
Email Address []:a.detres@polytech-lille.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:glopglopglop
An optional company name []:

Nous achetons un certificat de clé pour nous connecter en toute sécurité sur Gandi.net via le menu "Certificat SSL". Je partage ma clé.csr avec Gandi, qui recherche la validité de mon domaine minable.site.

DNSSEC

On ajoute l'option dans le fichier named.conf.options :

dnssec-enable yes 

Nous créons le répertoir minable.site.dnssec

mkdir minable.site.dnssec

Nous créons les clés asymétriques de zonz et de siganture dans ce dossier à l'aide de la commande :

dnssec-keygen -a RSASHA256 -b 2048 -f KSK -n ZONE minable.site
dnssec-keygen -a RSASHA256 -b 1024 -n ZONE minable.site

Nous renommons les deux paires de clés obtenues en utilisant le nom de la zone comme préfixe et en suffixe :

- la destination de la clef : ksk pour la clef KSK et zks pour la clef ZSK

- puis par le type de clef : .key pour la clef publique ou .private pour la clef privée

Ensuite nous incluons les cles publiques dans notre fichier de zone sans oublier d'incrémenter le numéro de version

$include /etc/bind/<nom_de_zone>.dnssec/<nom_de_zone>-ksk.key
$include /etc/bind/<nom_de_zone>.dnssec/<nom_de_zone>-zsk.key

Nous signons les enregistrements de zone :

dnssec-signzone -o minable.site -k minable.site-ksk ../minable.site minable.site-zsk

On communique a gandi la partie publique de la KSK dans l'onglet dnssec.

Test de notre DNSSEC

Dans "cd /etc/bind/" nous testons notre DNSSEC et relançons bind9 avant de lancer l'analyze sur DNSVIZ :

dnssec-verify -o minable.site db.minable.site.signed
service bind9 restart

Dnsviz minable.png

Docker + serveur Minecraft

Nous installons Docker sur notre VM

apt-get installons docker-ce docker-ce-cli containerd.io docker-compose-plugin 

On vérifie l'installation de docker en exécutant l'image "hello-word"

docker run hello-world

Maintenant nous pouvons déployer notre serveur minecraft :

docker run -e EULA=TRUE -e VERSION=1.16.4 -e ONLINE_MODE=FALSE -p 26666:25565 --name myserver itzg/minecraft-server

Nous vérfions que le serveur est en cours d'éxécution à l'aide de la commande :

docker ps 

Nous obtenons :

CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS                PORTS                                 NAMES
373658dc127c        42f2b7787421                     "/start"                 7 days ago          Up 5 days (healthy)   25575/tcp, 0.0.0.0:26666->25565/tcp   myserver

Freeradius

Nous avons installé freeradius:

apt install freeradius

Architecture de réseau

Schéma de l'architecture réseau

Voici le schéma du réseau établi en TP :

Global scheme PRA 2020.png


Adressage du réseau

Groupe VLAN Réseau IPv4 Réseau IPv6 @IPv4 virtuelle IPv4/IPv6 6509E (E304) IPv4/IPv6 C9200 (E306) IPv4/IPv6 ISR4331 SSID VM
Arthur / Adrien D 23 10.23.0.0/16 - 10.23.0.250 10.23.0.251 10.23.0.252 10.23.0.253 - VMALAD
INTERCO 530 192.168.222.65/29 - - 192.168.222.67 192.168.222.68 192.168.222.69 - -
XEN 40 193.48.57.162/28 - 193.48.57.172/28 193.48.57.171/28 193.48.57.170/28 192.48.57.169/28 - -

Table du VLAN 40

Groupe @IPv4 MV non routée @IPv4 MV routée Nom de domaine
Arthur / Adrien D 172.26.145.53/24 193.48.57.166/28 minable.site