TP sysres IMA5 2022/2023 G8

De Wiki d'activités IMA

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

   DNSSEC1.png

Mise en place du Fail2Ban

On fait un test préliminaire pour voir si on subit des attaques au niveau du port SSH :

   Fail2ban.png

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

Coffre fort

Média:coffre_fort_grp8.zip