Dans cette activité, nous allons simuler le fonctionnement d'un réseau composé d'ordinateur fonctionnement sous un système d'exploitation ayant un noyau Linux.
Pour cela, nous utiliserons le logiciel de simulation Marionnet.
Marionnet est un laboratoire de réseau virtuel : il permet aux utilisateurs de définir, configurer et lancer des réseaux complexes de machines sans besoin de support physique. Pour cela, Marionnet utilise le principe de la virtualisation.
En informatique, la virtualisation consiste à exécuter sur une machine hôte, dans un environnement isolé, des systèmes d'exploitation complétement indépendant du système hôte. On parle alors de virtualisation système.
Marionnet s'utilise uniquement sous Linux. Son installation peut être compliquée en fonction du système que l'on possède. Pour cela, les développeurs ont mis à disposition une machine virtuelle VirtualBox pour faire fonction utiliser Marionnet très facilement.
Question 1 - Télécharger la machine virtuelle mise à disposition pour faire fonctionner le logiciel Marionnet.
Question 2 - Lancer le logiciel VirtualBox.
Question 3 - Importer la machine virtuelle : Fichier > Importer un appareil virtuel.
Question 4 - Lancer la machine virtuelle. Sélectionner « French user ». Vous devez arriver sur le bureau de la machine virtuelle.
Question 5 - Lancer le logiciel Marionnet en double-cliquant sur l'icône du bureau.
À cette étape, Marionnet est en fonctionnement.
Dans cet exercice, on s'intéresse à la configuration d'un réseau équipé d'ordinateurs fonctionnant sous Linux. Dans un premier temps, nous allons créer le réseau.
Question 1 - Dans Marionnet, créer un nouveau projet : Fichier > Nouveau. Enregistrez-le dans un dossier sur le bureau de la machine virtuelle.
Le menu sur la gauche de la fenêtre permet d'ajouter des équipements et des connexions entre les différents équipements.
Question 2 - Ajouter 3 ordinateurs entre eux à l'aide d'un switch. Pour relier tous les équipements, nous utiliserons des câbles droits. Vous devez obtenir l'architecture suivante :
Question 3 - Démarrer toutes les machines en cliquant sur « Tout démarrer ».
Chaque machine se lance. Le système d'exploitation est Debian, basé sur le noyau Linux, sans interface graphique. L'ensemble de la configuration se fera donc en ligne de commandes.
Pour se connecter aux machines, voici les identifiants :
user : root
password : root
Voici une capture d'écran de ce que vous devez obtenir.
Maintenant que toutes nos machines sont reliées, nous allons devoir configurer chacune des machines afin qu'elles puissent communiquer.
Question 1 - Utiliser la commande ip addr
sur la machine m1
afin d'observer les différentes interfaces. On retrouve 7 interfaces réseaux. Celle utilisée pour la connexion au sein de notre réseau est eth0
. On remarque également qu'aucune adresse IP n'est configurée.
Intéressons-nous à présent à la configuration des adresses IP. Voici le plan d'adressage du réseau :
Machine | Adresse IP |
---|---|
m1 |
192.168.1.1 |
m2 |
192.168.1.2 |
m3 |
192.168.1.3 |
Pour configurer les interfaces réseaux, il est possible de le faire de deux manières :
La commande ip addr
permet d'associer une adresse IP à une interface réseau. Elle s'utilise de la manière suivante :
nsi@pc-nsi:~$ ip addr add [ip] dev [interface]
Question 2 - Configurer les adresse IP des machines m1
et m2
de manière dynamique.
Le système exploitation étant Debian, le paramétrage des interfaces réseaux se trouve dans le fichier /etc/network/interfaces
. Chaque interface se configure de la manière suivante :
auto eth0
iface eth0 inet static
address 192.168.56.20
network 192.168.56.0
netmask 255.255.255.0
gateway 192.168.56.1
La signification des paramètres est la suivante :
auto ethX
: activation de l'interface ethX au boot de la machine.iface ethX inet static
: définition du type de protocole : static
dans notre cas.address
: adresse IP liée à la carte.netmask
: masque de sous-réseau au format décimale.gateway
: (optionnelle) passerelle réseau.Pour une interface en DHCP, on aura par contre :
auto eth0
iface eth0 inet dhcp
Question 3 - Configurer l'adresse IP de la machine m3
de manière statique.
Pour prendre en compte la nouvelle configuration, il faut relancer le service qui gère les connexions réseau.
Question 4 - Utiliser la commande service
afin de prendre en compte la nouvelle configuration.
nsi@pc-nsi:~$ service networking restart
À cette étape, nos trois interfaces sont configurées. Essayer la commande ping
entre les machines m1
et m2
. La connexion semble toujours impossible et cela est normal, car les interfaces ne sont pas activées.
Question 5 - Utiliser la commande ip
pour activer les interfaces des machines m1
, m2
et m3
.
nsi@pc-nsi:~$ ip link set [interface] [up | down]
Question 6 - Utiliser la commande ping
afin de vérifier que l'ensemble des machines puissent communiquer.
Dans cet exercice, on souhaite configurer les machines pour pouvoir les identifier à l'aide d'un nom d'hôte au sein du réseau.
On utilisera les noms suivants : m1
, m2
et m3
du réseau de l'exercice 1. L'objectif est donc de pouvoir réaliser ce genre que commande sans problème :
nsi@pc-nsi:~$ ping m1
Question 1 - Regarder la documentation de hosts
à l'aide la commande man hosts
.
En lisant attentivement la documentation, on peut lire que la résolution locale des noms d'hôtes est effectuée à l'aide du fichier /etc/hosts
. Autrement dit, c'est dans ce fichier que l'on peut associer une adresse IP et un nom d'hôte.
Question 2 - Exécuter la commande cat /etc/hosts
. On peut remarquer que certains noms sont déjà présents par défaut.
Question 3 - Modifier les fichiers hosts
de l'ensemble des machines du réseau afin de pouvoir identifier chaque machine par son nom.
Question 4 - Utiliser la commande ping
pour tester vos connexions.
nc
Sous Linux, il est possible d'ouvrir le port d'une machine pour pouvoir recevoir des données circulant sur le réseau.
Sous Linux, il existe la commande nc
. C'est un outil qui permet de lire et écrire de la donnée en ligne de commande à travers le réseau. Vous pouvez trouver son fonctionnement grâce à la commande man nc
.
Question 1 - Sur la machine m1
et à l'aide de la documentation, trouver la commande permettant d'écouter les connexions entrantes sur le port 1234.
Question 2 - Sur la machine m2
, trouver la commande permettant d'envoyer un message à m1
sur le port 1234.
Question 3 - Essayer de reproduire ce fonctionnement avec vos camarades voisins sur le réseau de la salle de NSI. Vous utiliserez le port 1234.
Question 4 - Trouver et essayer la commande permettant d'envoyer le fichier complet sur la machine serveur.
Question 5 - Construire un programme en python qui peut dialoguer avec votre serveur sur le port 1234.
La commande nc
peut également servir à diagnostiquer un problème réseau ou de performance. Elle permet notamment d'effectuer un balayage des ports. Ce balayage vérifiera l'état de l'ensemble des ports du domaine ou de l'adresse IP passée en paramètre, ce qui vous permettra de déterminer si un firewall ou un autre mécanisme de blocage est à l'œuvre.
Question 6 - À l'aide de la commande nc
, demander à votre voisin d'ouvrir un serveur sur un port qu'il choisira sans que vous puissiez le savoir.
Question 7 - Maintenant, à vous de trouver le bon port et de réussir à envoyer un message.
Il est possible, au sein d'un réseau, d'envoyer les commandes bash vers un ordinateur depuis un autre ordinateur. Ce système peut ressembler à la mise en place d'une backdoor, afin d'avoir un accès complet à un ordinateur.
Pour cela, il suffit de lancer une écoute sur un port dédié de la machine, et d'exécuter l'ensemble des données envoyées comme des commandes bash.
Question 1 - Sur l'ordinateur m1
, ouvrir le port 5555 afin d'exécuter les données entrantes comme des commandes.
nsi@pc-nsi:~$ nc -n -v -l -p 5555 -e /bin/bash
Question 2 - Depuis un autre ordinateur, utiliser la commande nc
afin d'ouvrir une connexion distance vers m1
. Essayer quelques fonctions de base afin de tester la bonne exécution des commandes.