TP sysres IMA5 2022/2023 G2
Taches accomplies :
- Séance 1 :
- Réinstallation de l'Os sur la zabeth14
- Remplissage du fichier /etc/ansible/hosts sur zabeth21
- Création du rôle network pour la configuration du réseau. La machine hôte choisit automatiquement son ipv4 et son ipv6 en fonction de son numéro de zabeth. Ce rôle utilise également un template et un fichier séparé pour les variables.
- Séance 2
- Réinstallation de l'OS sur la zabeth05
- Installation de la machine virtuelle Xem (dio2)
- Séance 3
- Amélioration du coffre-fort
- Création des LVM
- Linkage des LVM vers la Xem
Sommaire
Installation de l'OS
Récupérer le .iso sur internet : fichier .iso
Si ce n'est pas fait : unmount la clé usb
Pour rendre la clé bootable :
dd if=<path_image> of=<path_device> bs=4M status=progress
où :
- <path_image> est le chemin vers l'image .iso
- <path_device> est le chemin vers la clé usb, pour la trouver :
ls /dev/
sans la clé de brancher- un deuxième
ls /dev/
avec la clé, c'est généralement /dev/sda ou /dev/sdb
Reboot le pc, puis aller sur le boot menu, et booter sur la clé usb, réalisez les étapes un à un, rappel :
- Adresse machine = 172.26.145.50+chiffre de la zabeth /24 (mask : 255.255.255.0)
- Adresse routeur = 172.26.145.254
- Server dns = 193.48.57.48
- Proxy = proxy.polytech-lille:3128
- Configuration de l'interface réseau sur eth0
Reboot le PC sans la clé, puis autoriser les connection ssh root :
mettre à true PermitRootLogin dans /etc/ssh/sshd_config
Installer Python pour Ansible
Installation Xem
Pour créer la xen :
xen-create-image --hostname=dio2 --ip=172.26.145.102 --dist=chimaera --nameserver=193.48.57.48 --dir=/usr/local/xen/ --netmask=255.255.255.0 --gateway=172.26.145.254 --force
Pour lancer la Xen :
xen console dio2
Sur Capbreton, il faut créer les LVM /home /var :
lvcreate -L10G -ndio2_home storage ; mkfs /dev/storage/dio2_home
lvcreate -L5G -ndio2_var storage ; mkfs /dev/storage/dio2_var
Ensuite il faut changer le config file (situé dans /etc/xen) ajouter ces deux lignes dans la partie disk =
'phy:/dev/storage/dio2_home,xvdb1,w', 'phy:/dev/storage/dio2_var,xvdb2,w',
Reboot Xen halt
On vérifie si les LVM sont présents et comment ils sont formatés avec cette ligne : lsblk -f
Comme /var
est plein, on doit effectuer ces commandes pour éviter d'écraser ce qu'il y a dans /var
lors du mount :
mount /dev/xvdb2 /mnt mv /var/* /mnt umount /mnt
Dans le fichier /etc/fstab
on ajoute ces deux lignes ci-dessous pour configurer le mount les LVM définitivement :
/dev/xvdb1 /home ext4 defaults 0 2 /dev/xvdb2 /var ext4 defaults 0 2
On lance mount -a
et on reboot la Xen
Services Internet
Pour cette partie, on réalise toute les commandes sur la VM dio2 en root
SSH d'un machine distante
Dans le fichier : /etc/ssh/sshd_config
, mettre PermitRootLogin
à yes
Puis restart du service ssh service ssh restart
Création des clefs et CSR
Réservation du nom de domaine brochette.site
Installation de openssl pour la génération du certificat SSL :
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 : brochette.site EMAIL ADRESS : Florian.Derlique@polytech-lille.net
Apache HTTP/HTTPS
apt install apache2
Configuration apache pour autoriser HTTPS, ajouter ces lignes après le bloc <VirtualHost *:80>
du fichier /etc/apache2/sites-available/000-default.conf
:
<VirtualHost *:443> #ServerName example.com #ServerAlias www.example.com ServerAdmin webmaster@localhost DocumentRoot /var/www/html # directives obligatoires pour TLS SSLEngine on SSLCertificateFile /root/brochette.site.crt SSLCertificateKeyFile /root/myserver.key SSLCertificateChainFile /root/GandiStandardSSLCA2.pem
ErrorLog /var/log/apache2/error.example.com.log CustomLog /var/log/apache2/access.example.com.log combined </VirtualHost>
On recupère le .crt (fichier de certification) et le .pem (fichier de chaine de certification) sur le site du fournisseur de nom de domaine gandi. Le .key (clé de certification) est obtenu normalement par la commande openssl de la partie précédente
Reload le service apache :
a2enmod ssl a2ensite default-ssl.conf service apache2 restart
Forcer la connexion en HTTPS, ajouter cette ligne dans le bloc <VirtualHost *:80>
:
Redirect permanent / https://brochette.site
Pour ajouter vos premiers fichiers dans le site : dans le repertoire /var/www/html
Serveur DNS
Installation de bind9 : apt install bind9
Nom de serveur DNS : ns.brochette.site, ip : 193.48.57.179
Nom de serveur DNS secondaire : ns6.gandi.net, ip : 217.70.177.40
Sur l'interface web gandi :
- Ajouter le glue record pour ns.brochette.site (le glue record est utilisé par les utilisateurs avancés pour associer un nom d'hôte (serveur de noms ou DNS) à une adresse IP au niveau du registre).
- Ajouter les deux noms de server si dessus, dans l'onglet "Nameserver"
Configuration du fichier d'option
Dans le fichier /etc/bind/named.conf.options
, si failed les log sont dans /var/log/daemon.log
options { directory "/var/cache/bind"; // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. forwarders { 8.8.8.8; 4.4.2.2; }; //======================================================================== // If BIND logs error messages about the root key being expired, // you will need to update your keys. See https://www.isc.org/bind-keys //======================================================================== dnssec-validation auto; recursion yes; listen-on-v6 { any; }; listen-on { any; }; allow-recursion { trusted; }; allow-transfer{ none; }; }; acl "trusted" { 193.48.57.179; //ns.brochette.site 217.70.177.40; //ns6.gandi.net };
Configuration forward and reverse lookup zones
- La zone lookup "forward" est check lorsque l'utilisateur demande une adresse ip à partir de son nom de domaine
- La zone lookup "reverse" st check lorsque l'utilisateur demande un nom d'hôte à partir de son adresse ip
Dans le fichier /etc/bind/named.conf.local
zone "brochette.site" { type master; file "/etc/bind/db.brochette.site"; allow-transfer{ 217.70.177.40; }; //ns6.gandi.net notify yes; }; zone "57.48.193.in-addr.arpa" { type master; file "/etc/bind/db.193.48.57"; allow-transfer {217.70.177.40; }; //ns6.gandi.net notify yes; };
Création des fichiers de zones
- Copier le fichier local de base :
cp /etc/bind/db.local /etc/bind/db.brochette.site
pour la forward zone
cp /etc/bind/db.127 /etc/bind/db.193.48.57
pour la reserve zone
- Contenu du nouveau fichier forward zone:
; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA ns.brochette.site. root.brochette.site. ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.brochette.site. @ IN NS ns6.gandi.net. @ IN A 193.48.57.179 @ IN AAAA 2001:660:4401:60b0:216:3eff:fe21:d102 ns IN A 193.48.57.179 ns IN AAAA 2001:660:4401:60b0:216:3eff:fe21:d102 www IN A 193.48.57.179 www IN AAAA 2001:660:4401:60b0:216:3eff:fe21:d102 127 IN A 193.48.57.179
- Contenu du nouveau fichier reverse zone :
; ; BIND reverse data file for local loopback interface ; $TTL 604800 @ IN SOA ns.brochette.site. root.brochette.site. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ;NS records @ IN NS ns.brochette.site. ;PTR records 179 IN PTR ns.brochette.site. ;193.48.57.179
Restart bind9 : service named restart
Tests
- Forward :
root@dio2:~# host -t any brochette.site localhost Using domain server: Name: localhost Address: 127.0.0.1#53 Aliases: brochette.site has SOA record ns.brochette.site. root.brochette.site. 3 604800 86400 2419200 604800 brochette.site name server ns.brochette.site. brochette.site name server ns6.gandi.net. brochette.site has address 193.48.57.179 brochette.site has IPv6 address 2001:660:4401:60b0:216:3eff:fe21:d102
- Reverse :
root@dio2:~# host 193.48.57.179 localhost Using domain server: Name: localhost Address: 127.0.0.1#53 Aliases: 179.57.48.193.in-addr.arpa domain name pointer ns.brochette.site.
Sécurisation DNSSEC
On crée un répertoire pour stocker les clés DNSSEC : mkdir /etc/bind/brochette.site.dnssec
On ajoute ces lignes dans notre /etc/bind/named.conf.options
dnssec-enable yes; dnssec-validation auto;
On crée les deux clés dsnsec ksk et zsk (il y aura sûrement des warning car l'algorithme RSA/SHA1 est obsolète) :
dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE brochette.site dnssec-keygen -a RSASHA1 -b 1024 -n ZONE brochette.site
On les renomme proprement :
mv ./Kbrochette.site.+005+14263.key ./brochette.site-ksk.key mv ./Kbrochette.site.+005+14263.private ./brochette.site-ksk.private mv ./Kbrochette.site.+005+19815.key ./brochette.site-zsk.key mv ./Kbrochette.site.+005+19815.private ./brochette.site-zsk.private
On inclut les clés dans le fichier de zone /etc/bind/db.brochette.site
$INCLUDE "/etc/bind/brochette.site.dnssec/brochette.site-zsk.key"; $INCLUDE "/etc/bind/brochette.site.dnssec/brochette.site-ksk.key";
On signe le fichier de zone : dnssec-signzone -o brochette.site -k brochette.site-ksk.key ../db.brochette.site brochette.site-zsk.key
On modifie le fichier /etc/bind/named.conf.local
pour prendre en compte les fichiers de zones signées :
file "/etc/bind/db.brochette.site.signed";
On ajoute la clé publique ksk sur gandi en précisant algorithme RSA/SHA1
Bannissement Fail2Ban
On regarde qi notre port SSH subit des attaques par force brute :
grep 'sshd' /var/log/auth.log | grep Failed
Sortie :
Nov 18 06:01:00 dio2 sshd[10216]: Failed password for root from 107.172.21.122 port 51698 ssh2 Nov 18 08:08:21 dio2 sshd[10512]: Failed password for root from 46.193.65.70 port 49157 ssh2 Nov 18 08:41:02 dio2 sshd[10680]: Failed password for root from 107.172.21.122 port 52798 ssh2 Nov 18 10:05:25 dio2 sshd[10752]: Failed password for root from 107.172.21.122 port 53856 ssh2 Nov 18 11:01:12 dio2 sshd[10797]: Failed password for root from 172.26.145.74 port 54398 ssh2 Nov 18 11:01:17 dio2 sshd[10797]: Failed password for root from 172.26.145.74 port 54398 ssh2 Nov 18 11:01:23 dio2 sshd[10797]: Failed password for root from 172.26.145.74 port 54398 ssh2 Nov 18 11:01:28 dio2 sshd[10799]: Failed password for root from 172.26.145.74 port 54400 ssh2 Nov 18 12:15:26 dio2 sshd[1417]: Failed password for root from 172.26.145.64 port 53410 ssh2 Nov 18 12:15:32 dio2 sshd[1417]: Failed password for root from 172.26.145.64 port 53410 ssh2
En effet, nous avons des attaques, installons le package fail2ban
puis on run le service :
apt install fail2ban service fail2ban start service fail2ban enable service fail2ban status
Configuration du Réseau
Avec Julien,Thibault,Logan,Quentin,Tom : Configuration en SR52
- Connection vers l'interface Te1/1/2 vers port6 armoire de brassage E304
- Connection vers l'interface Te1/1/5 vers port5 armoire de brassage E304
- Configuration des interface en Vlan 531
Configuration réseau :
Création vlan 531
seulement si n'existe pas (faire (config)#show vlan
#enable #config t (config)#vlan 531 (config-vlan)#name INTERCO-4B (config-vlan)#exit (config)#do write
Configuration interface
(config)#interface Te1/1/2 (config-if)#switchport (config-if)#switchport mode access (config-if)#switchport access vlan 531 (config-if)#exit (config)#interface Te1/1/5 (config-if)#switchport (config-if)#switchport mode access (config-if)#switchport access vlan 531 (config-if)#exit (config)#exit #write
Coffre Fort
Serveur Minecraft
Le but de cette partie est d'installer un serveur Minecraft sur notre dio2.
Méthode 1 : Installation brute
On récupère le fichier server.jar sur notre dio2 avec wget
(on installe le package si n'est pas installé):
wget https://piston-data.mojang.com/v1/objects/f69c284232d7c7580bd89a5a4931c3581eae1378/server.jar
Pour structurer notre VM, on place ce fichier dans le répertoire /root/minecraft
. Avant de procéder à l'installation, on installe la dernière version de open-jdk : apt install openjdk-17-jre
On lance le .jar (-Xmx et -Xms permet de spécifier la ram à allouer):
java -Xmx500M -Xms500M -jar server.jar nogui
Dans le fichier eula.txt
mettre eula=false
à eula=true
, ce que signifie que vous avez accepté les conditions générale d'utilisation
On relance le .jar avec la même commande
Pour que le serveur reste actif, on peut lancer le .jar dans un multiplexeur de terminaux comme screen
par exemple.
Pour ce faire :
- Lancer le package screen
- Pour se détacher du terminal :
[Ctrl+A][D]
- Pour revenir sur le terminal :
screen -dr
On peut se connecter à l'adresse 193.48.57.179
ou brochette.site
si le serveur DNS est correctement configuré (voir partie ci-dessus)
Méthode 2 : En utilisant un conteneur docker
On peut facilement trouver des conteneurs dockers contenant un serveur minecraft, par exemple celui la, puis suivre le README.md pour lancer le server. Cette méthode est assez pratique puisque il ne nécessite pas d'installer les packages open-jdk