Atelier réseau II

Xavier Redon

1  Introduction

Cet atelier vise à vous faire pratiquer la configuration réseau TCP/IP avec comme prétexte la réalisation d’une architecture classique : une ferme de serveurs Web servie par un mandataire Web inverse.

Pour vous initier à l’isolation et à la virtualisation, l’atelier est décliné en trois sous-ateliers :

2  Atelier "classique"

Pour cet atelier, vous allez utiliser directement les machines de projet. Par contre ces machines vont être connectées sur un réseau que vous allez construire.

2.1  Architecture réseau

Le réseau va être construit à l’aide d’un commutateur et d’un routeur.  
 
Votre réseau va comporter deux VLANs, un VLAN privé (VLAN 100) de réseau IPv4 associé 192.168.60.0/24 et un VLAN connecté à Internet (VLAN 2) de réseau IPv4 associé 10.60.0.0/24. Votre routeur route ces deux VLANs entre-eux mais il n’interconnecte que le second VLAN avec le VLAN STUDENTS-INFO de l’école (VLAN des salles de projet). Pour réaliser ce type de routage restrictif vous devrez ajouter des Access Control Lists sur le routeur.  
 
Les machines de projet implantant un simple serveur Web doivent être uniquement connectées au VLAN privé (VLAN 100). Les mandataires inverses doivent être connectés aux deux VLANs (VLAN 2 et VLAN 100).

2.2  Configuration des serveurs Web

Commencez par trouver un nom pour votre serveur Web. Le domaine de votre nom est plil.space. Ce domaine est géré par le registrar GANDI sous le compte pifou (mot de passe habituel). Vous utiliserez l’interface de GANDI pour ajouter un enregistrement à votre nom de serveur Web pointant vers le mandataire Web inverse.  
 
Il faut ensuite modifier l’adresse IPv4 de la machine de projet pour l’installer sur votre VLAN privé. L’adresse doit être unique dans le réseau IPv4. Comme adresse de passerelle indiquez l’adresse IPv4 de votre routeur dans le VLAN privé. N’oubliez pas de sauver la configuration initiale pour pouvoir la remettre ensuite.  
 
Enfin, configurez votre site Web en créant un site Web virtuel comme indiqué dans le cours. Vous devez, au minimum, installer une page Web bien identifiable.

2.3  Configuration des mandataires Web inverses

Modifiez la configuration IPv4 de la machine de projet pour l’insérer à la fois dans le VLAN privé et dans le VLAN routé. Comme adresse de passerelle indiquez l’adresse de votre routeur dans le réseau routé. N’oubliez pas de sauver la configuration initiale pour pouvoir la remettre ensuite.  
 
Prenez soin de vérifier que les modules Apache proxy et proxy_http sont activés comme indiqué dans le cours. Le mandataire doit avoir un site Web virtuel pour chaque serveur Web référencé.

2.4  Procédure de test

Sur une machine de projet encore connectée normalement au réseau de l’école, ajoutez une route pour votre VLAN routé conduisant sur l’adresse IPv4 de votre routeur dans le VLAN STUDENTS-INFO de l’école. Utilisez ensuite un navigateur pour accéder à votre site par son nom de domaine Internet.

3  Atelier "conteneurs"

Pour cet atelier, vous allez créer trois conteneurs sur votre machine de projet, deux jouant le rôle de serveur Web et un jouant le rôle de mandataire Web inverse. Les trois conteneurs vont être reliés par des réseaux virtuels implantés sur la machine de projet.

3.1  Réalisation "à la main"

Créez trois conteneurs en utilisant l’utilitaire unshare comme vu en cours. Créez trois paires d’interfaces Ethernet virtuelles comme vu en cours. Connectez les conteneurs entre eux grâce à ces interfaces et à un commutateur virtuel comme vu en cours. Pour le conteneur du mandataire Web inverse, créez une paire supplémentaire pour obtenir une interface réseau supplémentaire, ajoutez l’extrémité au commutateur virtuel "bridge" de la machine de projet. Vous pouvez utiliser le réseau IPv4 192.168.60.0/24 pour l’interconnexion des conteneurs. Pour l’adresse sur le VLAN STUDENTS-INFO des salles de projets, trouvez une adresse IPv4 libre.  
 
Configurez vos serveurs Web et serveur mandataire comme expliqué pour l’atelier précédent. Notez que vous devez utiliser deux noms de site cette fois et que les noms doivent se résoudre en l’adresse du VLAN STUDENTS-INFO de l’école que vous avez affecté au conteneur de votre mandataire.

3.2  Réalisation avec Docker

Effectuez le même travail en créant vos conteneurs via Docker. Il est possible que vous deviez installer Docker sur votre machine de projet. L’installation de Docker sur une machine Debian est très bien documentée sur Internet. Pour créer vos conteneurs sur la machine de projet, partez de l’image debian présente sur le dépot de Docker. Attention, pour récupérer cette image vous devez configurer le mandataire Web de l’école dans le fichier /etc/default/docker. Pensez à relancer le démon Docker avec la commande service.  
 
Pour archiver vos images personnelles, démarrez un conteneur "dépot Docker" avec la ligne de commande

# docker run -d -p 5000:5000 --restart=always --name registry registry:2

 
 
Modifiez et archivez vos trois images de conteneurs dans votre dépot local comme vu en cours. Une fois la configuration effectuée, sur le modèle de ce que vous aviez réalisé "à la main", lancez vos trois conteneurs simultanément sans oublier d’exposer le port 80 du conteneur du mandataire inverse. Vous pouvez avoir besoin de la commande docker network inspect bridge pour trouver les adresses IPv4 attribuées aux conteneurs des serveurs Web.

3.3  Procédure de test

Vous pouvez tester l’accès à vos sites directement de votre machine de projet en utilisant un navigateur. Cette fois, il est inutile de changer la table de routage de la machine.

4  Atelier "virtualisation"

Pour ce dernier atelier, vous allez utiliser des machines virtuelles. Chaque binôme doit avoir ses propres machines virtuelles serveurs Web et mandataire Web inverse.

Nous irons un peu plus loin, dans cet atelier, concernant la configuration des serveurs Web puisqu’ils devront être sécurisés. Nous aborderons aussi les notions d’équilibrage de charge et de haute disponibilité.

4.1  Architecture réseau

Les machines virtuelles mandataire Web inverse doivent avoir deux interfaces réseau : une dans le VLAN TP-NET3 et une dans le VLAN STUDENTS-INFO. La première interface permet l’accès en provenance d’Internet et l’interface STUDENTS-INFO permet la communication avec les serveurs Web. Comme adresse dans le VLAN TP-NET3 193.48.65.128/26 vous pouvez utiliser toutes les adresses possibles sauf les trois dernières. Comme adresse de passerelle utilisez la dernière adresse valide du réseau. Le VLAN TP-NET3 est accessible de tout Internet.

Pour les adresses dans le VLAN STUDENTS-INFO, vous utilisez des adresses IPv4 non utilisées.

Comme adresse IPv4 de serveur DNS vous pouvez utiliser 193.48.57.34.

4.2  Machines virtuelles

Vous devez créer des machines virtuelles sur le serveur physique chassiron.insecserv.deule.net (mot de passe administrateur habituel). Tous vos objets (serveurs virtuels et partitions logiques) doivent être préfixés par gis4- puis, par binôme, par un nom pris dans un thème commun à la promotion. D’un point de vue réseau les ponts virtuels à utiliser sont bridgeInternet et bridgeInfoStud.

Commencez par vous créer une partition virtuelle avec la commande lvcreate. Attention à spécifier un nom de partition contenant le nom de votre machine virtuelle pour pouvoir facilement la retrouver.

La création des machines virtuelles se fait par la commande xen-create-image. Il faut préciser à cet utilitaire le nom de votre machine (option --hostname), la configuration réseau (option --dhcp dans un premier temps) et votre partition virtuelle (option --noswap --image-dev). Une fois la machine créée, modifiez son fichier /etc/network/interfaces pour y implanter la configuration réseau correcte. Utilisez ping pour tester la connexion réseau entre votre machine virtuelle, le serveur mandataire et votre machine de TP. Attention la création d’un groupe de volume LVM est à votre charge, prenez garde à ne pas impacter le système du serveur de virtualisation.

Installez des serveurs ssh et Web (paquetages openssh-server et apache2) dans vos serveurs. Créez un petit site Web sur vos serveurs virtuels comme pour les ateliers précédents.

4.3  Certificat X509

Maintenant, il s’agit de sécuriser vos sites en utilisant HTTPS. Pour cela vous allez utiliser l’autorité de certification "Let’s Encrypt" : https://letsencrypt.org/. La version stretch de la distribution Debian comprend un paquetage letsencrypt. Le certificat X509 s’obtient très facilement avec la commande letsencrypt certonly avec la méthode --webroot. Attention cependant cette méthode doit être utilisée sur vos serveurs Web alors que le certificat est requis sur le serveur de redirection.

4.4  Configuration sécurisée

Modifiez les configurations Apache en utilisant les directives SSL* pour utiliser le protocole HTTPS comme indiqué dans le cours. Attention vous ne pourrez définir de multiples sites sécurisés avec Apache que si votre version d’Apache implante le protocole SNI (Server Name Indication, RFC 4366). La plupart des navigateurs font confiance aux certificats de "Let’s Encrypt", vous ne devriez donc pas avoir à inclure d’autorité de certification dans votre navigateur.

4.5  Procédure de test

Vérifiez que votre site est opérationnel, en particulier qu’il est accessible en dehors de l’école. Faites aussi un test en https, faites afficher le certificat X509 de votre site à votre navigateur.

4.6  Equilibrage de charge

Vous venez de créer une ferme de sites Web sécurisés mais que va-t-il se passer en cas de succès ? Vos serveurs Web vont devoir supporter une charge de plus en plus importante et éventuellement refuser des connexions. Vous allez donc dupliquer vos serveurs Web. Vérifiez que votre machine de projet est configurée comme hyperviseur Xen. Ensuite copiez les fichiers de vos machines virtuelles sur votre machine de projet. N’oubliez pas de mettre à jour adresses Ethernet et IPv4 (utilisez des IPv4 non déjà en activité). Pour modifier le nom de vos nouvelles machines, éditez les fichiers /etc/hostname, /etc/mailname et /etc/hosts. Vous devriez obtenir des clones fonctionnels de vos serveurs Web. Sur le serveur mandataire Web inverse, ajoutez les modules Apache d’équilibrage de charge proxy_balancer et lbmethod_byrequests. Enfin déclarez les deux sites Web dans chaque définition de site virtuel en utilisant les balises Proxy. Vous pouvez tester le gestionnaire de répartition qui peut être intégré au serveur de redirection.

4.7  Haute disponibilité

Ceux qui veulent aller plus loin constateront une faille dans l’architecture de notre système. Si le serveur mandataire inverse tombe, les sites Web deviennent indisponibles. Il est proposé de créer un système résistant aux pannes en couplant des serveurs mandataires inverse. Pour cela il faut définir les sites virtuels sur les deux serveurs mandataire et privilégier une des deux adresses IPv4 routées. Il faut aussi installer un système de gestion d’adresse virtuelle avec le paquetage heartbeat. Le serveur de redirection actif s’attribuera l’adresse IPv4 routée. Si jamais il tombe, le serveur de secours s’appropriera cette adresse. La configuration d’heartbeat s’effectue dans 3 fichiers du répertoire /etc/ha.d/. Ces fichiers de configuration sont ha.cf, haresources et authkeys. Des exemples sont disponibles dans le répertoire /usr/share/doc/heartbeat ou sur Internet.

4.8  Utilisation d’OpenStack

Utilisez OpenStack pour réaliser une ferme de serveurs Web. Une instance avec une adresse IP flottante doit transmettre les requêtes HTTP à des instances privées tout en assurant un équilibrage de charge. Pour cette maquette, une image de type Debian va être nécessaire.

Votre système doit permettre un ajout automatique d’instance privée. Vous devez pouvoir générer un cliché (snapshot) de votre instance implantant un serveur Web privé, ajouter une instance à partir de ce cliché et faire en sorte que cette nouvelle instance soit automatiquement prise en compte. Il suffit qu’au lancement de l’instance un script modifie la configuration apache2 de votre instance d’équilibrage de charge et relance le service.

Un contrôle du bon fonctionnement du système doit pouvoir se faire en utilisant le gestionnaire apache2 de l’équilibrage de charge (voir 4.6).


Ce document a été traduit de LATEX par HEVEA