TP sysres IMA5 2022/2023 G8
Séance 1
Installation de la distribution Linux Devuan Chimaera sur la zabeth18 avec quelques adresses à garder en tête pour la configuration :
- adresse IPV4 de la machine : 172.26.145.50+[num_zabeth]/24
- gateway (adresse du routeur) : 172.26.145.254
- serveur DNS : 193.48.57.48
- proxy : proxy.polytech-lille.fr:3128
Ajout de la permission sudo à pifou
Installation de Ansible et de Python et création du rôle configuration files sur la zabeth18
Séance 2
Installation de Linux Devuan Chimaeara sur la zabeth 10
Séance 3
Installation de la machine virtuelle xen :
- On se connecte au serveur avec la commande :
ssh root@capbreton.plil.info
- On crée l'image de la machine virtuelle dio8 avec la commande :
xen-create-image --ip=193.48.57.100+[num_grp] --gateway=193.48.57.161 --netmask=255.255.255.0 --hostname=dio8 --dist=chimaera --dir=/usr/local/xen/
- On crée les 2 partitions home et var:
lvcreate -L10G -ndio8_home storage ; mkfs /dev/storage/dio8_home lvcreate -L10G -ndio8_home storage ; mkfs /dev/storage/dio8_home
- On ajoute le bridgeStudents dans le fichier de config : /etc/xen/dio8.cfg :
vif = [ 'ip=193.48.57.185 ,mac=00:16:3E:9E:8C:5D, bridge=IMA5sc' ]
- On ajoute les disques physiques dans le fichier de config /etc/xen/dio8.cfg :
disk = [ 'file:/usr/local/xen//domains/dio8/disk.img,xvda2,w', 'file:/usr/local/xen//domains/dio8/swap.img,xvda1,w', 'phy:/dev/storage/dio8_home,xvdb1,w', 'phy:/dev/storage/dio8_var,xvdb2,w', ]
- On crée la machine virtuelle dio8 avec la commande :
xen create dio8.cfg
- On se connecte à celle-ci avec la commande avec comme login root et le mdp donné lors de la création de l'image:
xen console dio8
Programmation du code du coffre-fort
Séance 4
Achat du nom de domaine tartiflette.space Génération de la clé csr et key :
openssl req -nodes -newkey rsa:2048 -sha256 -keyout tartiflette.space.key -out tartiflette.space.csr
Câblage de l'interface réseau
Séance 5
Configuration de SSH
Dans le fichier /etc/ssh/sshd_config, ajouter la ligne suivante :
PermitRootLogin yes
Redémarrer le service ssh :
service ssh restart
Tester la connexion depuis le terminal de la zabeth :
ssh root@193.48.57.185
Installation du serveur web Apache2 :
apt update apt install apache2 apt install php libapache2-mod-php service apache2 restart
Configuration de https
- Activer le module SSL
a2enmod ssl
- Télécharger le certificat tartiflette.space.crt ainsi que le certificat intermédiaire dans le site de gandi
- Mettre le certificat tartiflette.space.crt dans /etc/ssl/certs/
- Mettre le certificat intermédiaire GandiStandardSSLCA2.pem dans /etc/ssl/certs/
- Mettre la clé d'accès tartiflette.space.key dans /etc/ssl/private/
- Ajouter les instructions ci-dessous dans /etc/apache2/sites-available/000-default.conf :
<VirtualHost *:443> ServerAdmin webmaster@localhost ServerAlias www.tartiflette.space DocumentRoot /var/www/html SSLEngine on SSLCertificateFile /etc/ssl/certs/tartiflette.space.crt SSLCertificateKeyFile /etc/ssl/private/tartiflette.space.key SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
- Configurer l'affichage de la page web en modifiant le fichier /var/www/html/index.html (Dans notre cas, on affiche seulement un texte et une image) :
<p>Buon Apetito <img src="https://aufilduthym.fr/wp-content/uploads/2020/01/morbiflette-tartiflette-morbier-aufilduthym.jpg" alt="tartiflette" width="700" height="466" /> </p>
- Relancer le serveur Apache :
service apache2 restart
Séance 6
Configuration du DNS
- Glue records crée sur le site de Gandi :
ns1.tartiflette.space 193.48.57.185
- Ajout du nameserver ns1.tartiflette.space ainsi que de ns6.gandi.net dans l'onglet Nameservers de Gandi
- Installation de bind9
- Modification du fichier /etc/bind/named.conf.options :
acl "trusted" { 193.48.57.185; //ns1.tartiflette.space 217.70.177.40; //ns6.gandi.net };
- Modification du fichier /etc/bind/named.conf.local :
zone "tartiflette.space" { type master; file "/etc/bind/db.tartiflette.space"; 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; };
On modifie le fichier de données du dns dans /etc/bind/db.tartiflette.space pour qu'il reconnaisse l'adresse IP quand on lui passe le nom de domaine :
; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA ns1.tartiflette.space. root.tartiflette.space. ( 10 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns1.tartiflette.space. @ IN NS ns6.gandi.net. @ IN A 193.48.57.185 @ IN AAAA 2001:660:4401:60b0:216:3eff:fe9e:8c5d ns1 IN A 193.48.57.185 ns1 IN AAAA 2001:660:4401:60b0:216:3eff:fe9e:8c5d www IN A 193.48.57.185 www IN AAAA 2001:660:4401:60b0:216:3eff:fe9e:8c5d
Puis on fait de même dans l'autre sens (reconnaître le nom de domaine quand on lui passe l'adresse IP) dans le fichier /etc/bind/db.193.48.57 :
; ; BIND reverse data file for local loopback interface ; $TTL 604800 @ IN SOA ns1.tartiflette.space. root.tartiflette.space. ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ;NS records @ IN NS ns1.tartiflette.space. ;PTR records 185 IN PTR ns1.tartiflette.space. ;193.48.57.185
Enfin on teste le bon fonctionnement du DNS avec la commande host :
root@dio8:~# host tartiflette.space localhost Using domain server: Name: localhost Address: 127.0.0.1#53 Aliases: tartiflette.space has address 193.48.57.185 tartiflette.space has IPv6 address 2001:660:4401:60b0:216:3eff:fe9e:8c5d
root@dio8:~# host 193.48.57.185 localhost Using domain server: Name: localhost Address: 127.0.0.1#53 Aliases: 185.57.48.193.in-addr.arpa domain name pointer ns1.tartiflette.space.
Serveur Minecraft
- On télécharge le fichier server.jar selon la version sélectionnée sur le site avec wget :
wget https://piston-data.mojang.com/v1/objects/f69c284232d7c7580bd89a5a4931c3581eae1378/server.jar
- On crée un fichier minecraft où on va installer open-jdk :
apt install openjdk-17-jre
- On lance le fichier .jar dans un multiplexeur de terminal (screen) :
screen [Ctrl+A][D] Pour revenir : screen -dr
- Ensuite on lance le jar :
java -Xmx700M -Xms700M -jar server.jar nogui
Mise en place du RAID 5
On crée des partitions que l'on va configurer en RAID 5 sur capbreton :
lvcreate -L1G -n tartiflette-part1 storage lvcreate -L1G -n tartiflette-part2 storage lvcreate -L1G -n tartiflette-part3 storage
On ajoute ensuite ces volumes au fichier de configuration dans /etc/xen/dio8.cfg dans le bloc disk:
'phy:/dev/storage/tartiflette-part1,xvdb3,w', 'phy:/dev/storage/tartiflette-part2,xvdb4,w', 'phy:/dev/storage/tartiflette-part3,xvdb5,w'
On redémarre ensuite la machine virtuelle dio8 avec la commande :
halt
Puis sur capbreton on tape la commande :
xen create /etc/wen/dio8.cfg
On se rend dans la machine virtuelle et on crée le RAID 5 :
mdadm --create /dev/md0 --level=5 --raid-devices 3 /dev/xvdb3 /dev/xvdb4 /dev/xvdb5
On monte ensuite les volumes avec la commande :
mkfs /dev/md0 mount /dev/md0 /mnt
On ajoute la ligne suivante dans le fichier /etc/fstab pour monter le RAID 5 dès la mise en route de la machine virtuelle :
/dev/md0 /media/raid ext4 defaults 0 2
On peut vérifier si les disques sont configurés en RAID 5 avec la commande :
lsblk
Séance 7
Mise en place du DNSSEC
Premièrement on crée un répertoire où on va stocker nos clés :
mkdir/etc/bind/tartiflette.space.dnssec
Et puis on ajoute ces lignes dans le fichier /etc/bind/named.conf.options
dnssec-enable yes; dnssec-validation auto;
On crée ensuite les deux clés dnssec ksk et zsk dans le fichier tartiflette.space.dnssec :
dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE tartiflette.space dnssec-keygen -a RSASHA1 -b 1024 -n ZONE tartiflette.space
On les renomme pour avoir des noms simples :
mv ./Ktartiflette.space.+xxx+xxxx.key ./tartiflette.space-ksk.key mv ./Ktartiflette.space.+xxx+xxxx.private ./tartiflette.space-ksk.private mv ./Ktartiflette.space.+xxx+xxxx.key ./tartiflette.space-zsk.key mv ./Ktartiflette.space.+xxx+xxxx.private ./tartiflette.space-zsk.private
Dans le fichier de zone /etc/bind/db.tartiflette.space on inclut :
$INCLUDE "/etc/bind/tartiflette.space.dnssec/tartiflette.space-zsk.key"; $INCLUDE "/etc/bind/tartiflette.space.dnssec/tartiflette.space-ksk.key";
Puis on signe notre fichier de zone :
dnssec-signzone -o tartiflette.space -k tartiflette.space-ksk.key ../db.tartiflette.space tartiflette.space-zsk.key
Pour pointer sur le fichier signé on modifie le fichier /etc/bind/named.conf.local :
file "/etc/bind/db.tartiflette.space.signed"
On ajoute la clé publique ksk sur gandi en précisant l'algorithme RSA/SHA1
Mise en place du Fail2Ban
On fait un test préliminaire pour voir si on subit des attaques au niveau du port SSH :
On remarque qu'on recoit des attaques.
- Pour installer fail2ban :
apt install iptables apt install fail2ban service fail2ban start service fail2ban enable service fail2ban status
On active le bannissement sur le service sshd pour le ssh et named-refused pour le serveur DNS. Dans le fichier : /etc/fail2ban/jail.d/defaults-debian.conf on ajoute les lignes suivantes :
[sshd] enabled = true [named-refused] enabled = true
- Ajouter les lignes suivantes dans /etc/bind/named.conf.options :
logging { channel security_file { file "/var/log/named/security.log" versions 3 size 30m; severity dynamic; print-time yes; }; category security { security_file; }; };
- Créer le répertoire /var/log/named et le fichier fichier security.log, et mettre l'utilisateur bind comme owner :
mkdir /var/log/named touch /var/log/named/security.log cd /var/log chown bind -R named/ chown bind named/security.log
- On restart les services :
service named restart
Chiffrement des données
- Dans capbreton on crée une partition pour notre VM :
lvcreate -L1G -n tartiflette_crypted
- On attache la partition sur notre xen dio8 :
'phy:/dev/storage/tartiflette_crypted,xvdb6,w'
- Formatage de la partition :
cryptsetup -y -v luksFormat /dev/xvdb6
- Ouvrir la zone de cryptage :
cryptsetup luksOpen /dev/xvdb6 tartiflette_crypted
- On crée le système de fichier :
mkfs /dev/mapper/tartiflette_crypted
- On ferme la partition crypté:
cryptsetup luksClose tartiflette_crypted
Craquage de clef WEP
Démarrage du logiciel aircrack-ng :
airmon-ng airmon-ng start wlan0mon
On écoute les trames wifi et on repère celle contenant le nom du point d'accès WIFI correspondant à notre groupe (cracotte 08) en WEP et on note son BSSID : 04:DA:D2:9C:50:57 ainsi que son channel (13).
On écoute uniquement notre point d'accès et on récupère les paquets :
airodump-ng -c 13 --bssid 04:DA:D2:9C:50:57 -w cracotte08 wlan0mon
On attend un peu, pour avoir un nombre de données assez conséquent, ces données sont stockées dans le fichier cracotte08-01.cap.
On lance enfin le craquage de la clef WEP :
aircrack-ng cracotte03-01.cap
On trouve la clef WEP qui est : FF:FF:FF:FF:FA:BC:09:CB:AE:EE:EE:EE:EE
Craquage du WPA-PSK
On repère le BSSID du point d'accès en WPA correspondant à notre groupe (kracotte08) et son channel en tapant la commande :
airodump-ng -c wlan0mon
Le BSSID de la kracotte08 est 44:AD:D9:5F:87:07 et son channel est le numéro 6
On récupère ensuite un maximum de données sur le wifi avec la commande :
airodump-ng -c 6 --bssid 44:AD:D9:5F:87:07 -w grp8 wlan0mon
On sait que la clé WPA est composé de 8 chiffres, on génère donc un dictionnaire à l'aide de l'utilitaire crunch contenant toutes les clés possibles :
crunch 8 8 0123456789 -o password.lst
Enfin on lance la procédure de crackage de la clé qui est très longue sur les orids portables, c'est pour cela qu'on envoie les fichiers password.lst et grp8*.cap sur une zabeth pour y effectuer la procédure :
aircrack-ng -w password.lst -b 44:AD:D9:5F:87:07 grp8*.cap