TP sysres IMA2a5 2019/2020 G6
Jorge Cabral & Hamza Fahim
Sommaire
Introduction
Le projet a pour but de mettre en place un réseau sur 2 salles du bâtiment E de polytech constitué de 2 routeurs, 2 commutateurs, 2 bornes Wifi et un serveur. Chaque groupe dispose de machines virtuelles sur le serveur, qui permettront de constituer chacun un domaine acheté sur GANDI. Les routeurs et commutateurs seront configurés à l'aide de netbooks configurés par nos soins.
Installation du réseau : connexion des routeurs, commutateurs, bornes WiFi et du serveur Cordouan
Mise en place du serveur
Préparation et configuration des machines virtuelles
Création de la machine virtuelle
La machine virtuelle est crée sur le serveur Cordouan :
ssh root@cordouan.insecserv.deule.net
Création de la machine virtuelle :
xen-create-image --hostname=ima2a5-4fun --dhcp --dir=/usr/local/xen --dist=ascii --apt_proxy=http://proxy.polytech-lille.fr:3128 --force
Démarrage/Arrêt/Redémarrage de la machine virtuelle
Avant de démarrer la VM, nous devons modifierle fichier /etc/xen/ima2a5-4fun.cfg afin de rajouter le bridge. Il faut d'abord récuperer le nom du bridge avec la commande:
brctl show
Le du bridge est :IMA2a5 Ensuite nous remplaçons dans le fichier "ima2a5-4fun.cfg" la ligne contenant "vif = [ 'mac=00:16:3E:A8:74:CA']" par :
vif = [ 'mac=00:16:3E:A8:74:CA, bridge=IMA2a5']
Puis,nous pouvons démarrager la machine virtuelle :
xl create /etc/xen/ima2a5-4fun.cfg
et acceder à la VM :
xl console ima2a5-4fun
L'utilisateur étant:
user : root password: c'est le contenu de ligne commençant par "Root Password" du fichier "/var/log/xen-tools/ima2a5-4fun.log"
Pour changer le password root, utiliser:
passwd
On peut revenir à la machine hôte sans arrêter la MV avec la combinaison
Ctrl + AltGr + ]
Arrêt de la machine virtuelle depuis l'hôte :
xl destroy ima2a5-4fun
Adaptation de la machine virtuelle à l'architecture réseau du projet
Coordonnées IP statiques de la machine virtuelle sur le fichier /etc/network/interfaces
iface eth0 inet static address 193.48.57.166 netmask 255.255.255.240 gateway 193.48.57.172
Personnalisation des points de montage /var et /home
Création de 2 volumes de 10GB sur la machine hôte :
lvcreate -L10G -n ima2a5-4fun-home virtual lvcreate -L10G -n ima2a5-4fun-var virtual
Formatage des volumes :
mkfs.ext4 /dev/virtual/ima2a5-4fun-home mkfs.ext4 /dev/virtual/ima2a5-4fun-var
Inclusion des volumes dans la machine virtuelle en modifiant /etc/xen/ima2a5-4fun.cfg :
root = '/dev/xvda2 ro' disk = [ 'file:/usr/local/xen/domains/ima2a5-4fun/disk.img,xvda2,w', 'file:/usr/local/xen/domains/ima2a5-4fun/swap.img,xvda1,w', 'phy:/dev/virtual/ima2a5-4fun-home,xvdb1,w', 'phy:/dev/virtual/ima2a5-4fun-var,xvdb2,w' ]
Afin de vérifier si tout est correct on arrête complétement la VM (et non pas rebboter) et on recréé la VM
puis, vérifier sur la machine hôte et la VM si les deux partitions on bien été créées avec la commande:
fdisk -l
Puis, on modifie le fichier /etc/fstable de la VM pour que l'OS les monte automatiquement au démarrage:
# <file system> <mount point> <type> <options> <dump> <pass> 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 / xt4 noatime,nodiratime,errors=remount-ro 0 1 /dev/xvdb1 /home ext4 defaults 0 2 /dev/xvdb2 /var ext4 defaults 0 2
Installation des serveurs SSH, DNS et https
Installation du serveur apache :
apt install apache2
Installation du serveur ssh :
apt install openssh-server
Création du service sshd lancé au démarrage par runit :
mkdir /etc/service mkdir /etc/service/sshd touch /etc/service/sshd/run
configuration du fichier etc/service/sshd/run:
#!/bin/sh ssh-ketgen -A >/dev/null 2>&1 [ -r conf ] && . ./conf exec /usr/sbin/sshd -D $OPTS
Autorise l'exécution du fichier run
chmod +x /etc/service/sshd/run
Serveur DNS
Nous allons établir la configuration d'un serveur DNS primaire (votre serveur) et d'un serveurs DNS secondaires (celui de l'hébergeur) au cas où le primaire ne réponde plus aux requêtes DNS.
Config dns sur gandi :
Pour cela il faut commencer par allez sur gandi.net dans l'onglet nom de domaine :
il faut ajouter les serveurs de nom :
ns6.gandi.net 217.70.177.40 ns1.ima2a5-4fun.site 193.48.57.166
Ensuite sur l'onglet glue-record on lie l'adresse ip a notre nom de domaine :
Config sur la VM :
on rentre dans le répertoire bind : on crée le fichier db.ima2a5-4fun.site :
$TTL 604800 @ IN SOA ns1.ima2a5-4fun.site. root@ima2a5-4fun.site. ( 19112026 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns1.ima2a5-4fun.site. @ IN NS ns6.gandi.net. IN A 193.48.57.166 ns1 IN A 193.48.57.166
Ensuite il faut allez dans le fichier /etc/bind/named.conf.options
option { dnssec-enable no; dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; allow-transfer{"allowed_to_transfert";}; };
acl "allowed_to_transfert"{ 217.70.177.40/32; };
Ensuite il faut allez dans le fichier /etc/bind/named.conf.local pour configurer l'espace de noms et lui préciser quel fichier de configuration utiliser pour le DNS
zone "ima2a5-4fun.site"{ type master; file "/etc/bind/db.ima2a5-4fun.site"; };
Pour finir on redémarre le service Bind9 :
service bind9 restart
Sécurisation de site web par certificat
Création du certificat avec OpenSSL :
openssl req -nodes -newkey rsa:2048 -sha256 -keyout ima2a5-4fun.key -out ima2a5-4fun.csr
il faut ensuite répondre aux questions suivante :
Country Name (2 letter code) [AU]:FR State or Province Name (full name) [Some-State]:Nord Locality Name (eg, city) []:Lille Organization Name (eg, company) [Internet Widgits Pty Ltd]:Polytech Lille Organizational Unit Name (eg, section) []:IMA2A5 Common Name (e.g. server FQDN or YOUR name) []:ima2a5-4fun.site Email Address []:hfahim@polytech-lille.net Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:IMAOK Optionnal informations :
Il faut acheter sur gandi le certificat, ensuite affecter le certificat .csr . Pour crée le certificat gandi doit s'assurer de la demande. Pour cela il y a plusieurs méthode mail, fichier ou dns. nous avons utiliser l’authentification par fichier qui doit être placer dans notre VM. la validation prend plus de 5H.
Ensuite on le .pem, le .crt et le .key aux emplacements suivants :
/etc/ssl/certs/ima2a5-4fun.site.crt
/etc/ssl/private/ima2a5-4fun.key
/etc/ssl/certs/GandiStandardSSLCA2.pem
Ensuite il faut modifier le fichier /etc/apache2/sites-available/000-ima2a5-4fun.site-ssl.conf
<VirtualHost 193.48.57.166:443> ServerName www.ima2a5-4fun.site:443 ServerAlias ima2a5-4fun.site DocumentRoot /var/www/html/ CustomLog /var/log/apache2/secure_acces.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/ima2a5-4fun.site.crt SSLCertificateKeyFile /etc/ssl/private/ima2a5-4fun.key SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem SSLVerifyClient None </VirtualHost>
Et on ajoute une redirection
<VirtualHost 193.48.57.166:80> ServerName www.ima2a5-4fun.site ServerAlias ima2a5-4fun.site Redirect / https://www.ima2a5-4fun.site </VirtualHost>
puis on active le module ssl
a2enmod ssl
Et active la configuration :
a2ensite 000-ima2a5-4fun.site-ssl.conf
pour finir en relance apache2
service apache2 restart
DNSSEC
Il faut activer DNSSEC en ajoutant l'option dnssec-enable yes; dans le fichier /etc/bind/named.conf.local.
On génère deux couples de clefs (ZSK et KSK) qui permettront de chiffrer ou déchiffrer les enregistrements.
dnssec-keygen -f KSK -a RSASHA256 -b 2048 -n ZONE ima2a5-4fun.site dnssec-keygen -a RSASHA256 -b 2048 -n ZONE ima2a5-4fun.site
Nous avons ensuite renommé ces clefs en ima2a5-4fun-zsk.key, ima2a5-4fun-zsk.private, ima2a5-4fun-ksk.key, ima2a5-4fun-ksk.private
/etc/bind/ima2a5-dnssec
On faut ajouter les include dans le fichier db.ima2a5-4fun.site
$include /etc/bind/ima2a5-dnssec/ima2a5-4fun-zsk.key $include /etc/bind/ima2a5-dnssec/ima2a5-4fun-ksk.key
Ne pas oublié d'incrémenter le serial pour que la modification soit prise en compte
Il faut signer la zone
dnssec-signzone -o ima2a5-4fun.site -k ima2a5-dnssec/ima2a5-4fun-ksk db.ima2a5-4fun.site ima2a5-dnssec/ima2a5-4fun-zsk
Verifying the zone using the following algorithms: RSASHA256. Zone fully signed: Algorithm: RSASHA256: KSKs: 1 active, 0 stand-by, 0 revoked ZSKs: 1 active, 0 stand-by, 0 revoked
cela génere le fichier suivant :
db.ima2a5-4fun.site.signed
Dans le fichier named.conf.local on remplace
db.ima2a5-4fun.site
par
zone "ima2a5-4fun.site"{ type master; file "/etc/bind/db.ima2a5-4fun.site.signed"; };
on fini par restart bind9 :
service bind9 restart
RAID 5
Pour effectuer le raid 5 il faut se connecté en ssh sur cordouan
et ensuite crée 3 disque de 1 GO
root@cordouan:~# lvcreate -L1G -n ima2a5-4fun-disk1 virtual root@cordouan:~# lvcreate -L1G -n ima2a5-4fun-disk2 virtual root@cordouan:~# lvcreate -L1G -n ima2a5-4fun-disk3 virtual
ensuite on fait pointer le système de fichiers sur nos 3 disques.
mke2fs /dev/virtual/ima2a5-4fun-disk1 mke2fs /dev/virtual/ima2a5-4fun-disk2 mke2fs /dev/virtual/ima2a5-4fun-disk3
dans la vm il faut ajouter dans le fichier de config les 3 ligne suivante
disk = [ 'file:/usr/local/xen/domains/ima2a5-4fun/disk.img,xvda2,w', 'file:/usr/local/xen/domains/ima2a5-4fun/swap.img,xvda1,w', 'phy:/dev/virtual/ima2a5-4fun-home,xvdb1,w', 'phy:/dev/virtual/ima2a5-4fun-var,xvdb2,w', 'phy:/dev/virtual/ima2a5-4fun-disk1,xvdb3,w', 'phy:/dev/virtual/ima2a5-4fun-disk2,xvdb4,w', 'phy:/dev/virtual/ima2a5-4fun-disk3,xvdb5,w',
xl create /etc/xen/ima2a5-4fun.cfg
on install mdadm
puis on construis le volume RAID
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/xvdb3 /dev/xvdb4 /dev/xvdb5
mdadm: /dev/xvdb3 appears to contain an ext2fs file system
size=1048576K mtime=Thu Jan 1 00:00:00 1970
mdadm: /dev/xvdb4 appears to contain an ext2fs file system
size=1048576K mtime=Thu Jan 1 00:00:00 1970
mdadm: /dev/xvdb5 appears to contain an ext2fs file system
size=1048576K mtime=Thu Jan 1 00:00:00 1970
Continue creating array? y
Actuellement le raid5 fonctionne correctement mais il faut faire en sorte que a chaque démarrage de la vm il se charge
mdadm --monitor --daemonise /dev/md0
on rajoute la ligne suivante dans le fichier de config
/dev/md0 /media/raid ext4 defaults 0 1
puis on formate le volume
mkdir /media/raid
Cryptage de données
Dans cette partie nous allons crée une partion dans une clé usb que nous allons crypté avec cryptsetup
Création de la partition avec fdisk
Pour visualiser notre clé usb on utilise la commande :
lsblk
Ensuite on utilise la commande fdisk pour supprimer ou crée une partitions
fdisk /dev/sda
Welcome to fdisk (util-linux 2.29.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command.
la commande p permet de lister toutes les partitions
Command (m for help): p Disk /dev/sda: 7,2 GiB, 7736072192 bytes, 15109516 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x2d4ec4c9
On remarque qu'il n'y a aucune donc on crée avec la commande "n" new
Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-15109515, default 2048): +2048 Value out of range. First sector (2048-15109515, default 2048): 4000 Last sector, +sectors or +size{K,M,G,T,P} (4000-15109515, default 15109515): +5000M
Created a new partition 1 of type 'Linux' and of size 4,9 GiB.
j'ai créé une partion de 4.9 GiB
Cryptage de la partition
Pour crypé la clé usb on lance la commande suivante :
cryptsetup luksFormat -c aes -h sha256 /dev/sda1
WARNING! ======== Cette action écrasera définitivement les données sur /dev/sda1. Are you sure? (Type uppercase yes): YES Saisissez la phrase secrète : IMAOK Vérifiez la phrase secrète : IMAOK
j'ai défini le mdp : IMAOK
on rentre dans le partition crypté avec la cmd suivante :
cryptsetup open --type luks /dev/sdb1 IMAG6 (on a utilisé la nouvelle syntax de cryptsetup)
on defini le en système de fichier
mkfs -t ext4 /dev/mapper/IMAG6
on le monte dans le repertoire /mnt
mount mkfs -t ext4 /dev/mapper/IMAG6 /mnt
on ajoute un fichier txt
umount /mnt
on ferme la partition crypté
cryptsetup luksClose IMAG6
Sécurisation Wifi par WPA2-EAP
Configuration des points d'accès Wi-Fi
Dans cette partie, on dispose de deux bornes wifi a configurer, la premiére en E306 et l'autre en E304, en utilisera le server FreeRadius pour l'identification. Tout d'abord effectuons un purge:
apt purge brltty
Puis:
1- Acceder à la configuration de la borne wifi :
minicom -os
On change la configuration pour: Port = /dev/ttyUSB0, 9600 bauds et sans control de flux
2- Se mettre en mode previligié :
enable Password = "Cisco"
3- Se mettre en mode configuration :
config term
(On peut aussi verifier la configuration de la borne avec "show run")
NB : Les commandes 5 à 14, sont à faire pour chaque groupe de la promo.
4- Pour utiliser le system en 'authentication, authorization, and accounting', il faut cette commande :
aaa new-model
5- On crée un server radius pour un groupe :
radius-server host ip_groupe6 auth-port 1812 acct-port 1813 key mot_secret // mot_secret : il faut en choisir un . Par exemple (pour notre groupe) "IMA2a5-4fun". Il faut pas l'oublier cra vous en aurez besoin pour la config de radius
6- On defini le server group :
aaa group server radius radius_groupe6 // on remplace groupe6 par le nom de notre groupe "IMA2a5-4fun"
7- Puis, on associe à ce groupe de serveur le serveur créé sur la VM:
server ip_VM_groupe6 auth-port 1812 acct-port 1813
8- Ensuite, on defini le login et le groupe server par lequel l'utilisateur passera pour s'authentifier :
aaa authentication login eap_groupe6 group radius_groupe6 // remplacer groupe6 par le nom de notre groupe
9- On arrive à la création des SSID, protégé par la méthode WPA2-EAP :
dot11 ssid SSID_groupe6 // pour nous, groupe6="IMA2a5_4fun". Voir tableau Borne Wifi vlan num_vlan authentication open eap eap_groupe6 authentication network-eap eap_groupe6 authentication key-management wpa
10- Configurer les vlans des groupes :
interface Dot11Radio0 // on rentre d'abord dans l'interface Dot11Radio0 encryption vlan num_vlan mode ciphers aes-ccm tkip // Où x est le numéro du vlan . Pour notre groupe x=7 Voir tableau Borne Wifi ssid SSID_groupe6
Pour pouvoir se connecter au réseau, il faudra relier l'interfaces virtuelle à l'interface gigabites, via des 'bridge-groupe', et comme il y a plusieurs grouoes, il faut créer autant des sous-interfaces dot11radio0 et puis la relier
aux sous-interfaces gigabites.
11- Créer une sous-interface pour chaque groupe, en donnant à l'instance le numéro du vlan :
interface dot11Radio0.num_vlan // num_vlan a remplacer par le numéro du vlan Voir tableau Borne Wifi encapsulation dot1Q num_vlan bridge-group num_vlan
12- Créer une sous-interface gigabite pour chaque groupe, en donnant à l'instance le numéro du vlan :
interface gigabite0.num_vlan // num_vlan a remplacer par le numéro du vlan Voir tableau Borne Wifi encapsulation dot1Q num_vlan bridge-group num_vlan
13- Ajouter les SSID à l'interface Dot11Radio0
interface Dot11Radio0 // se mettre dans la bonne interface (i.e Dot11Radio0) dot11 ssid SSID_groupe // on remplace "groupe" par le nom du groupe de la promo Voir tableau Borne Wifi
14- rendre les SSID visibles :
interface Dot11Radio0 mbssid // Il faut rajouter l'option "mbssid" à l'interface Dot11Radio0 dot11 ssid SSID_groupe6 // pour notre groupe groupe6="IMA2a5_4fun" Voir tableau Borne Wifi mbssid guest-mode // mettre les ssid en guest-mode pour qu'il soient visibles.
exit exit write reload
15- Attribuer une ip à la borne
enable conf t int bvi1 ip address 10.60.0.100 255.255.255.0 exit exit
SSID_groupe
on peut maintenant pinger le routeur: ping 10.60.0.254
, mais le les VM
16-Il faut donc rajouter le gateway
enable conf t ip route 0.0.0.0 0.0.0.0 10.60.0.253 exit
maintenant on peut reussir à pinger les VM: ping 193.48.57.166
Mise en place du serveur FreeRadius
Cette partie se fait sur la VM!!!
Installation de freeradius:
apt-get install freeradius
Dans le fichier /etc/freeradius/3.0/users
on ajoute la ligne:
jcabrald Cleartext-Password := "glopglop"
Dans le fichier /etc/freeradius/3.0/mods-enabled/eap
on modifie la ligne:
eap{ default_eap_type = peap }
Dans le fichier /etc/freeradius/3.0//mods-enabled/mschap
on décommente les lignes suivantes et modifie
use_mppe = yes require_encryption = yes require_strong = yes
et on ajoute la ligne suivante:
with_ntdomain_hack = yes
Dans le fichier /etc/freeradius/3.0/clients.conf
rajouter le borne comme un client qui se connectera sur le server radius:
client access-point { // nom attribué au client ipaddr = 10.60.0.100 //adresse ip de la borne secret = secret_IMA2a5-4fun //mot secret saisi lors de la configuration de la borne }
Une fois toutes les confirations terminées, nous alons:
-arrêter le server Freeradius
service freeradius stop
-puis le relancer en mode debug afin de visualiser les reqûetes et logs
freeradius -X
Mise en place serveur DHCP
Une fois la configuration des bornes et de FreeRadius finie, nous devons rajouter un serveur DHCP sur la borne Wi-Fi. Ainsi, les utilisateur pourront avoir une adresse IP attribuée.
sur le terminal de confiration cisco:
ip dhcp pool groupe6 /goupe6 = "IMA2a5-4fun" network 10.60.7.0 ns-server celui_de_polytech ip dhcp pool IMA2a5-4fun excluded-address 10.60.7.252 10.60.7.254
Ca n'a pas marché sur la borne. On le fait donc sur le routeur.
Crackage de la clé WEP
Etape 1: Installation de aircrack-ng
Pour installer aircrack-ng il nous faut etablir la connexion internet par Ethernet dans le eeepc Ensuite :
apt-get install aircrack-ng
Comme le wifi du pc ne fonctionne pas correctement on utilise un module WI-FI Wi-pi pour le visualiser peripherique on utilise la commande
airmon-ng (pour voir le nom du Wi-pi) airmon-ng start wlx40a5ef0125eg
Ensuite il renomme le périphérique en wlan0mon
On peut ensuite ecouté le réseau avec la commande airodump-ng en spécifiant le canal -c et le module wi-fi utilisé
airodump-ng -c 8 wlan0mon
On récupere l'adresse correspondante a cracotte 6 pour nous c'est 04:DA:D2:9C:50:55
Ensuite on capture les packets pour avoir assez IV pour cracker la clé wep cela crée un fichier .cap qu'on utilisera par la suite
airodump-ng -w out -c 8 --bssid 04:DA:D2:9C:50:55 wlan0mon
En parrallèle on lance aircrack pour effectuer des tentatives pour obtenir la clé wep
aircrack-ng out-01.cap
Maintenant il faut attendre d'avoir assez donnée pour casser la clé wep sachant que avec 25 000 IV on a 50% de chance d'obtenir le mdp et 50 000 on 90% de chance
Cassage du WPA2
Dans cette partie, on utilisera la méthode du dictionnaire.
Pour le cassage du WPA on a besoin du handshake pour le recuperer on ecoute le réseau avec la commande airodump-ng
airodump-ng -c 8 wlan0mon
On récupere l'adresse correspondante a Kracotte 6 pour nous c'est 04:DA:D2:9C:50:5D
Ensuite on doit récupérer le handshake pour ça on utilise airodump
airodump-ng -c 2 --bssid 04:DA:D2:9C:50:5D -w -tplink wlan0mon
Cela nous crée un .cap avec le handshake
Comme la puissance de calcul et petite sur les eeepc on utilise une zabeth
on crée le dictionnaire avec crunch :
crunch 8 8 0123456789 >> psw.txt
ensuite lance aircrack avec la commande suivante :
aircrack-ng -0 -w dictionnaire.txt tplink-01.cap
au bout de 45min on trouve la clé wpa.
<VirtualHost *:80>
ServerName ima2a5-4fun.site ServerAlias www.ima2a5-4fun.site DocumentRoot "/var/www/ima2a5-4fun" <Directory "/var/www/ima2a5-4fun"> Options +FollowSymLinks AllowOverride all Require all granted </Directory> ErrorLog /var/log/apache2/error.ima2a5-4fun.site.log CustomLog /var/log/apache2/access.ima2a5-4fun.site.com.log combined
</VirtualHost>