TP sysres IMA2a5 2018/2019 G2
Sommaire
Introduction
Ce projet consiste à réaliser une maquette de réseau permettant de manipuler les protocoles de redondance réseau ainsi que le protocole réseau IPv6.
Création du commutateur logiciel sur Zabeth10
On commence par configurer la Zabeth afin que lorsque l'on connecte un PC sur l'interface eth1 elle commute tous les paquets sur l'interface eth0.
On modifie le fichier /etc/network/interfaces :
auto lo iface lo inet loopback auto eth0 eth1 bridge iface eth0 inet manual up ip link set $IFACE up iface eth1 inet manual up ip link set $IFACE up iface bridge inet dhcp bridge_ports eth0 eth1 bridge_hw LADRESSEETHERNETDELAZABETH
On peut voir que le pont est bien configuré à l'aide de la commande :
brtcl showstp bridge
Les interfaces eth0 et eth1 sont à l'état "forwarding", ce qui signifie que tout fonctionne correctement.
Installation de Devuan sur PC Portable Thon
Cette étape simplissime nous a donné du fil à retordre car lors de l'installation, nous n'arrivions pas à contacter le serveur dhcp et obtenir le proxy de Polytech'Lille. Après une dizaine de tentative d'installation, cela a fini par marcher. Les comptes utilisateurs créés sont ceux habituels.
Machine virtuelle Xen sur Cordouan
Installation
On se connecte en ssh sur cordouan.insecserv.deule.net
Pour créer notre VM Devuan, on lance la commande suivante:
xen-create-image --hostname=PaixDieu --dhcp --dir=/usr/local/xen --dist=ascii --apt-proxy=http://proxy.polytech-lille.fr:3128 --mirror=http://fr.deb.devuan.org/merged/ --force
Nous avons ensuite modifié le mot de passe root et le fichier PaixDieu.cfg pour ajouter StudentsInfo. C'est un bridge qui nous permet d'avoir accès à internet.
vif = [ 'mac=LABELLEADRESSEMAC, bridge=StudentsInfo' ]
Lancer la machine virtuelle
On teste que l'installation s'est bien déroulée en lançant notre VM une première fois. Voici les commandes utilisées pour lancer notre VM PaixDieu (en se plaçant dans /etc/xen/) :
xl create PaixDieu.cfg xl console PaixDieu
Montage /var et /home sur cordouan
Passons aux choses sérieuses avec le montage des dossiers /var et /home sur Cordouan.
Connectés à Cordouan, on a créé les volumes de 10Go correspondant aux répertoires:
lvcreate -L10G -n apIMA5-PaixDieu-home virtual lvcreate -L10G -n apIMA5-PaixDieu-var virtual
Ainsi que les systèmes de fichier
mke2fs /dev/virtual/apIMA5-PaixDieu-home mke2fs /dev/virtual/apIMA5-PaixDieu-var
On indique à notre VM les répertoires fraichement créés en éditant /etc/xen/PaixDieu.cfg :
disk = [ [...] 'phy:/dev/virtual/apIMA5-PaixDieu-home,xvdb1,w', 'phy:/dev/virtual/apIMA5-PaixDieu-var,xvdb2,w', ]
La commande fdisk -l
nous permet de vérifier que les volumes sont bien montés.
On modifie le fichier /etc/fstab
de la VM pour que les volumes soient pris en compte à chaque démarrage de la VM :
/dev/xvdb1 /home ext4 defaults 0 2 /dev/xvdb2 /var ext4 defaults 0 2
Pour le volume /var, nous devons procéder différemment et lançons les commandes suivantes depuis la VM :
mount /dev/xvdb2 /mnt mv /var/* /mnt umount /mnt mount -a
On vérifie que tout est OK avec df
.
Dockers
Docker est un outil permettant la création de containers contenant des services que nous pourrons moduler facilement en choisissant de démarrer ou non ces containers.
Nous avons rencontré un problème pour lancer la commande apt-get update
car la liste de clés de notre VM était celle d'une machine Debian et non Devuan. Nous l'avons résolu grâce à la commande apt-get install devuan-keyring
.
Pour installer les dockers on lance les commandes suivantes :
apt-get install apt-transport-https dirmngr echo 'deb https://apt.dockerproject.org/repo debian-stretch main' >> /etc/apt/sources.list apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys F76221572C52609D apt-get update apt-get install docker-engine service docker restart docker pull httpd docker pull ventz/bind
La commande docker images
nous permet de vérifier que nos images sont correctement installées.
Dans le dossier ~/httpd/ on crée les fichiers index.html et httpd.conf. On les liera par la suite comme point de montage. Ceci nous permet de créer et modifier notre page web à la racine de notre répertoire /root et les modifications se fassent directement dans le container.
On crée un dossier ~/bind/ dans lesquels on met les fichiers suivants :
/etc/bind/named.conf.options
options { directory "/var/cache/bind"; dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; allow-transfer { "allowed_to_transfer"; }; }; acl "allowed_to_transfer" { 217.70.177.40/32; };
/etc/bind/named.conf.local
// // Do any local configuration here // // Consider adding the 1918 zone here, if they are not used in your // organization // include "/etc/bind/zones.rfc1918"; zone "paix-dieu-fdjd-apima5.space" { type master; file "/etc/bind/paix-dieu-fdjd-apima5.space"; };
/etc/bind/paix-dieu-fdjd-apima5.space
$TTL 259200 @ IN SOA dns.paix-dieu-fdjd-apima5.space. admin.paix-dieu-fdjd-apima5.space. ( 10 ; Version 7200 ; Refresh (2h) 3600 ; Retry (1h) 1209600 ; Expire (14j) 259200 ; Minimum TTL (3j) IN NS dns.paix-dieu-fdjd-apima5.space. IN NS ns6.gandi.net. IN MX 100 dns.paix-dieu-fdjd-apima5.space. IN A 193.48.57.162 www IN A 193.48.57.162 IN MX 100 dns.paix-dieu-fdjd-apima5.space. dns IN A 193.48.57.162
Lancer les containers
On stoppe d'abord le service apache sur le port 80 service apache2 stop
.
docker run -d --name=apache -v /root/httpd/index.html:/usr/local/apache2/htdocs/index.html \-v /root/httpd/httpd.conf:/usr/local/httpd.conf -p 80:80 httpd
docker run --name=dns -dit --dns=8.8.8.8 --dns=8.8.4.4 -p 53:53/udp -p 53:53 \ -v "$PWD"/bind/named.conf.local:/etc/bind/named.conf.local \ -v "$PWD"/bind/named.conf.options:/etc/bind/named.conf.options \ -v "$PWD"/bind/paix-dieu-fdjd-apima5.space:/etc/bind/paix-dieu-fdjd-apima5.space ventz/bind
On peut voir que tout fonctionne correctement avec la commande docker ps
Depuis la zabeth on peut accéder à notre site via http://193.48.57.162/ et on tombe sur notre page d'accueil.
Mise en place de notre site internet
Réservation d'un nom de domaine
Réserver un nom de domaine est une étape facile et intuitive sur le registrar gandi.net. Nous avons pris le nom de domaine paix-dieu-fdjd-apima5.space étant donné que paix-dieu.space était déjà réservé. Avec du recul, ce n'est pas le nom le plus évident à référencer et à rentrer dans nos configurations. L'avantage des .space est leur coût très faible (1.20€/an)
Configuration HTTP et DNS
Sur Gandi, on ajoute un Glue Record avec l'IP de notre VM. On modifie les DNS et on met dns.paix-dieu-fdjd-apima5.space en première ligne, ns6.gandi.net en seconde. On supprime les lignes 3 et 4. Il faut attendre le temps de propagation avant de vérifier avec ZoneCheck que nos informations sont bien prises en compte.
On peut accéder à notre site via un navigateur en tapant : http://paix-dieu-fdjd-apima5.space
Sécurisation du site
On veut sécuriser notre site pour le passer en HTTPS.
Génération des clés
On exécute la commande suivante pour générer les clés publiques et privées :
openssl req -nodes -newkey rsa:2048 -sha256 -keyout paix-dieu-fdjd-apima5.key -out paix-dieu-fdjd-apima5.csr
On copie le contenu de la clé publique sur Gandi pour valider notre certificat SSL. En échange, on doit placer un fichier à un endroit bien spécifique de notre site. On le télécharge sur notre VM et on le relie au docker de la manière suivante:
docker run -d --name=apache \ -v /root/httpd/index.html:/usr/local/apache2/htdocs/index.html \ -v /root/httpd/httpd.conf:/usr/local/httpd.conf \ -v /root/httpd/375E80633027A52CAB15C27ACB63868E.txt:/usr/local/apache2/htdocs/.well-known/pki-validation/375E80633027A52CAB15C27ACB63868E.txt \ -p 80:80 \ httpd
On attend que Gandi valide le certificat SSL, chose réalisée au bout d'une heure.
Configuration HTTPS
On attaque la configuration de la VM pour mettre en place le HTTPS.
On modifie le fichier httpd-ssl.conf :
<VirtualHost _default_:443> # General setup for the virtual host DocumentRoot "/usr/local/apache2/htdocs" ServerName paix-dieu-fdjd-apima5.space:443 ServerAdmin fdebruil@polytech-lille.net # SSL Engine Switch: SSLEngine on # Server Certificate: SSLCertificateFile "/usr/local/apache2/conf/paix-dieu-fdjd-apima5.space.crt" [...] # Server Private Key: SSLCertificateKeyFile "/usr/local/apache2/conf/paix-dieu-fdjd-apima5.key" [...] </VirtualHost>
Durant cette étape, nous nous sommes rendus compte que nous ne pouvons pas mapper un fichier qui existe déjà.
Nous avions essayé de modifier le httpd.conf en dehors du docker et de le mapper ensuite mais ça ne marchait pas.
On rentre donc dans le docker avec la commande docker exec -ti apache bash
On modifie le fichier httpd.conf avec la commande sed suivante :
sed -i \ -e 's/^#\(Include .*httpd-ssl.conf\)/\1/' \ -e 's/^#\(LoadModule .*mod_ssl.so\)/\1/' \ -e 's/^#\(LoadModule .*mod_socache_shmcb.so\)/\1/' \ conf/httpd.conf
On relance notre docker avec les fichiers fraichement créés, en supprimant le mappage du httpd.conf et en reliant le port 443 :
docker run -d --name=apache \ -v /root/httpd/index.html:/usr/local/apache2/htdocs/index.html \ -v /root/httpd/375E80633027A52CAB15C27ACB63868E.txt:/usr/local/apache2/htdocs/.well-known/pki-validation/375E80633027A52CAB15C27ACB63868E.txt \ -v /root/httpd/httpd-ssl.conf:/usr/local/apache2/conf/extra/httpd-ssl.conf \ -v /root/httpd/paix-dieu-fdjd-apima5.csr:/usr/local/apache2/conf/paix-dieu-fdjd-apima5.csr \ -v /root/httpd/paix-dieu-fdjd-apima5.key:/usr/local/apache2/conf/paix-dieu-fdjd-apima5.key \ -v /root/httpd/paix-dieu-fdjd-apima5.space.crt:/usr/local/apache2/conf/paix-dieu-fdjd-apima5.space.crt \ -p 80:80 \ -p 443:443 \ httpd
On peut accéder à notre site en lançant https://paix-dieu-fdjd-apima5.space/
Configuration DNSSEC
On se place dans /etc/bind. On génère la clé asymétrique de signature de clés de zone dans un nouveau répertoire paix-dieu-fdjd-apima5.space.dnssec :
dnssec-keygen -r /dev/urandom -a RSASHA1 -b 2048 -f KSK -n ZONE paix-dieu-fdjd-apima5.space
Ainsi que la clé asymétrique de la zone pour signer les enregistrements :
dnssec-keygen -r /dev/urandom -a RSASHA1 -b 1024 -n ZONE paix-dieu-fdjd-apima5.space
On renomme les deux paires de clés obtenues en :
paix-dieu-fdjd-apima5.space-ksk.key paix-dieu-fdjd-apima5.space-zsk.key paix-dieu-fdjd-apima5.space-ksk.private paix-dieu-fdjd-apima5.space-zsk.private
On ajoute ensuite les clés dans le fichier de zone (paix-dieu-fdjd-apima5.space) et on incrémente le numéro de version de la zone :
$include /etc/bind/paix-dieu-fdjd-apima5.space.dnssec/paix-dieu-fdjd-apima5.space-ksk.key $include /etc/bind/paix-dieu-fdjd-apima5.space.dnssec/paix-dieu-fdjd-apima5.space-zsk.key
Après on signe le fichier de configuration pour prendre en compte le DNSSEC :
dnssec-signzone -o paix-dieu-fdjd-apima5.space -k paix-dieu-fdjd-apima5.space.dnssec/paix-dieu-fdjd-apima5.space-ksk paix-dieu-fdjd-apima5.space paix-dieu-fdjd-apima5.space.dnssec/paix-dieu-fdjd-apima5.space-zsk
Cela nous crée un fichier paix-dieu-fdjd-apima5.space.signed.
On modifie ensuite le fichier named.conf.local pour utiliser la zone signée paix-dieu-fdjd-apima5.space.signed.
zone "paix-dieu-fdjd-apima5.space" { type master; file "/etc/bind/paix-dieu-fdjd-apima5.space.signed"; };
On ajoute également l’option dnssec-enable yes; dans le fichier named.conf.options afin d'activer le DNSSEC.
On communique à gandi, sur la partie DNSSEC la clé publique KSK.
On relance notre docker en mappant le dossier /etc/bind :
docker run --name=dns -dit --dns=8.8.8.8 --dns=8.8.4.4 -p 53:53/udp -p 53:53 \ -v /etc/bind/:/etc/bind/ \ ventz/bind
On peut vérifier que notre configuration est bonne à l'aide du site DNSViz. Après un premier test nous avions des erreurs d'heure car notre VM était dans le futur. On a donc installé un serveur NTP sur notre VM pour la remettre à l'heure.
Après correction, on obtient l'arbre suivant sur DNSViz :
Notre DNSSEC est correctement configuré.
Configuration du commutateur
Pour notre projet nous avons 2 commutateurs :
- Un en E304
- L'autre en E306
Nous sommes en charge de celui en E306. Ce sont deux Catalyst 4006. Chacun doit être relié aux 2 routeurs (un dans chaque salle). Chacun doit avoir un port permettant une connexion à un point d'accès WiFi.
On commence par se connecter au port console du commutateur à l'aide d'un câble série.
On accède à l'interface de configuration du switch grâce à :
minicom -o -D /dev/ttyUSB0 -b 9600
On peut connaitre l'état du commutateur à l'aide des commandes:
show interface summary show vlan show run
Déclaration des VLANs
On déclare 7 VLANs, un pour Xen, un pour interconnexion, et un pour chaque groupe pour le wifi dans minicom de la façon suivante :
config termi vlan 42 name Xen exit (x2 pour quitter) write
Supprimer un VLAN (au cas où):
no vlan 42
Branchements
Les branchements ont été réalisés avec soin par Français, Tarik et Yacine en amont de notre travail de configuration.
Affectation d'un port à un VLAN
Pour voir sur quels ports ils ont branché leurs câbles, on lance la commande
show interface summary
On aperçoit une étoile devant la ligne si le port est connecté à un autre dispositif.
On peut créer le tableau suivant :
Nom VLAN | Prise |
---|---|
Cordouan | GigabitEthernet2/2 |
Interconnexion (Routeur E306) | GigabitEthernet2/1 |
Borne Wifi | GigabitEthernet2/3 |
Routeur E304 (en fibre) | GigabitEthernet1/1 |
On lance la configuration pour Cordouan (Xen) :
interface GigabitEthernet 2/2 switchport mode access (rend accessible) switchport access vlan 42 (définit quel VLAN a accès au port) no shut (pré-sauvegarde la config) exit (x2) write
Pour le point d'accès on fait un trunk :
interface GigabitEthernet 2/3 switchport trunk encapsulation dot1q switchport mode trunk no shut exit write
De même pour l'interconnexion des VLANs et la connexion au routeur de la E304.
On vérifie que notre configuration est bonne à l'aide de la commande show int status
Tests
Nous avons modifié le bridge de la VM en remplaçant le StudentsInfo par IMA2a5. Pour réaliser nos tests, on a affecté le port GigabitEthernet 2/7 au VLAN42. On peut ping la machine virtuelle via notre PC Thon connecté en ethernet et vice-versa.
Travail sur le WiFi
Installation du Wifi sur l'ordinateur
L'interface Wifi de la carte réseau de l'ordinateur n'est pas compatible avec notre OS. Nous utilisons alors une clé Wifi Wi-Pi pour avoir une interface WiFi avec l'ordinateur.
Il est nécessaire d'installer les drivers de la clé se trouvant dans le package firmware-ralink.
apt-get install firmware-ralink
Dès lors que le driver est installé, on peut retrouver notre périphérique Wifi via la commande "iwconfig"
Pour lancer l'interface, utiliser la commande suivante :
ifconfig interface up
On peut vérifier avec la commande dmesg que l'interface est bien lancée.
Crackage WEP
Installation des package nécessaires pour le crack :
apt-get install aircrack-ng
Lister les interfaces WiFi disponibles sur l'ordinateur :
airmon-ng
Choisir l'interface souhaitée pour l'écoute puis la déclarer en mode écoute avec la commande suivante :
airmon-ng start 'interface'
S'il y a des erreurs, il peut être nécessaire d'arrêter l'interface ou de tuer les processus qui bloquent le passage en mode écoute de l'interface.
Refaire les deux manipulations précédentes jusqu'à ce que l'écoute se lance.
Le nom de l'interface doit changer pour devenir wlan0mon.
Pour vérifier que le passage en mode écoute est bien effectuée, utiliser la commande suivante :
airodump-ng -i wlan0mon
La commande airodump-ng permet d'écoute tous les réseaux WiFi présents. Afin de sélectionner le réseau ciblé, l'utilisation des commandes suivantes est impérative :
-c numChan : pour indiquer le canal d'écoute -d ESSID : pour indiquer quel réseau écouter en particulier. Attention, le ESSID doit être en héxadécimal -i interface : pour préciser quelle interface réseau utiliser, donc ici wlan0mon -w cheminFichier : pour indiquer dans quel fichier enregistrer les trames écoutées
La commande totale devient donc :"airodump-ng -i wlan0mon -c 1 -d 04:DA:D2:9C:50:50 -w /root/crack.cap" pour me permettre d'écouter les trames sur le wifi "cracotte01" qui émettait alors sur le canal 1.
En parallèle, il faut lancer aircrack-ng pour cracker la clé du réseaux.
La commande demande juste le chemin jusqu'au fichier où sont sauvegardés les trames écoutées sur le réseau.
Attention, le fichier de sauvegarde devient "crack.cap-01.ivs" donc ma commande complète est : "aircrack-ng /root/crack.cap-01.ivs"
La clé WEP s'affiche dès lors que aircrack a terminé son travail.
La clé est affichée en hexadécimal.
Crackage WPA2-PSK
Comme pour le crackage WEP, il nous faut dans un premier temps écouter le réseau afin de récupérer les données nécessaire au crackage.
Ici nous devons attendre jusqu'à récupérer le Handshake.On peut le voir s'afficher en haut de l'écran quand on utilise la 'commande airodump-ng'
Une fois le handshake récupéré, on peut lancer le crackage avec la commande aircrack-ng. Mais pour cracker une clé WPA2, il nous faut un dictionnaire des clé possibles.
Pour avoir ce dictionnaire, on utilise crunch qui est un générateur de liste de combinaison. Il faut lui passer en paramètres les informations suivantes :
- Le nombre de caractères minimum : 8 - Le nombre de caractères maximum : 8 - La liste des caractère possible dans les combinaisons : 0123456789
On a alors la commande suivante : crunch 8 8 0123456789 >> dico.txt
Une fois notre dictonnaire généré, on lance la commande de crakage : Aircrack-ng WPA.cap-01.ivs -w dico.txt
Sujet non abordé
La partie sur FreeRadius n'a pas été réalisée.