TP sysres SE2a5 2022/2023 G4 : Différence entre versions
(→Test de notre DNSSEC) |
|||
Ligne 352 : | Ligne 352 : | ||
==Test de notre DNSSEC== | ==Test de notre DNSSEC== | ||
− | [[ | + | [[Fichier:dnsviz_minable.png]] |
=Docker + serveur Minecraft= | =Docker + serveur Minecraft= |
Version du 29 novembre 2022 à 19:38
Sommaire
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=bullseye
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
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
Architecture de réseau
Schéma de l'architecture réseau
Voici le schéma du réseau établi en TP : https://wiki-ima.plil.fr/mediawiki//images/e/e1/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 |