« SE4 IdO sécurité système/réseau » : différence entre les versions

De wiki-se.plil.fr
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
 
(40 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
= Atelier système et réseau =
{{SE4CreationConteneur}}


== Création d'un conteneur ==
{{SE4ArchitectureMigration}}


Le but de cette première manipulation est la création d'un conteneur pas à pas sous Linux.
{{SE4ArchitectureInnovante}}


=== Le système de fichiers ===
{{SEMachinesVirtuelles}}


La première étape est de créer un système de fichiers isolé par rapport au système de la machine hébergeur :
{{SEReseauPremiereApproche}}
* commencez par créer un fichier <code>disk.img</code> de 10Go sur la station de travail, pour cela vous utiliserez la commande <code>dd</code>, comme fichier source utilisez le générateur de zéro <code>/dev/zero</code> et les options <code>bs</code> (block size) et <code>count</code> ;
* en tant qu'administrateur créez un système de fichiers sur <code>disk.img</code> avec la commande <code>mkfs</code> (make filesystem), vous pouvez utilisez le système de fichiers <code>ext4</code> ;
* toujours en tant qu'administrateur, montez le système de fichiers <code>disk.img</code> sur un répertoire vide (par exemple <code>/tmp/disk</code> que vous aurez préalablement créé) ;
* vous pouvez enfin installez un système de fichiers Linux minimal sur votre partition virtuelle par la commande <code>debootstrap stable /dev/disk</code>.


=== Lancement du conteneur ===
{{SEServicesInternet}}


Lancez le conteneur avec la commande du cours. Dans un premier temps n'utilisez que les options <code>-p -m</code>. Vérifiez que les processus du conteneur sont bien isolés, de même pour les montages de systèmes de fichiers. Regardez les interfaces réseau du conteneur, conclusion ? Sortez du conteneur, relancez-le en ajoutant les options <code>-n -u</code>. Vérifiez à nouveau les interfaces réseau du conteneur, conclusion ?
{{SEReseauSecondeApproche}}


Laissez le conteneur tourner dans son terminal de commande, n'en sortez plus.
{{SEEffractionWiFi}}


=== Création d'une interface réseau ===
{{SESecurisationsSystemeReseau}}
 
Créez un commutateur virtuel vide d'interfaces avec les commandes présentées en cours. Créez une interface Ethernet virtuelle avec les commandes présentées en cours. Trouvez le PID du processus <code>unshare</code> du conteneur et déplacez le pair de l'interface Ethernet virtuel dans l'espace de nom du conteneur.
 
Démarrez toutes les interfaces réseau avec la commande <code>ip link set <IF> up</code>, mettez une adresse IPv4 sur le commutateur virtuelle (e.g. <code>192.168.0.1/24</code>) et sur le pair dans le conteneur (e.g. <code>192.168.0.2/24</code>), vérifiez la connexion entre les deux interfaces virtuelles.
 
=== Sortie sur Internet ===
 
Utilisez les commandes vue en cours pour créer une mascarade sur la station de travail pour le réseau du conteneur. Vérifiez que le conteneur a bien accès aux même machines que la station de travail.
 
== Préparation des travaux pratiques "migration" ==
 
=== Schéma synthétique ===
 
[[File:2023_Architecture_TP_Migration.png|thumb|center|400px]]
 
Les machines d'administration doivent être réalisées à partir des anciennes stations de travail Zabeth. Elles auront une adresse dans le réseau des salles projets
du type <code>172.26.145.30+Z</code>. Ces machines doivent être reliées au réseau des salles via deux commutateurs gigabit placés sur une table en E306 et dans la baie serveur en E304.
 
=== Installation de la distribution Devuan ===
 
=== Tâches supplémentaires ===
 
==== Configuration d'un serveur Ansible ====
 
Sur la Zabeth20. Création d'une clef asymétrique. Diffusion par courriel.
 
==== Configuration des rôles Ansible ====
 
Les rôles Ansible ci-dessous doivent être créés.
* un rôle de propagation de fichiers systèmes généraux :
** <code>/etc/network/interfaces</code> ne contenant que la définition de l'interface loopback ;
** <code>/etc/default/ntpdate</code> contenant la référence au serveur NTP de l'école <code>ntp.polytech-lille.fr</code> ;
** <code>/etc/apt/sources.list</code> contenant les lignes pour les dépots Devuan <code>daedalus</code>, regardez les fichiers sur les Zabeth pour référence.
* un rôle d'installation des paquetages nécessaires pour les divers autres rôles :
** paquetage <code>bind9</code> pour le serveur DNS ;
** paquetage <code>nfs-kernel-server</code> pour le serveur NFS ;
** paquetage <code>bridge-utils</code> pour la création de commutateurs virtuels ;
** paquetage <code>ntp</code> et <code>ntpdate</code> pour la mise à l'heure ;
** et tout autre paquetage demandé par un autre groupe.
* un rôle de configuration de l'interface réseau de la carte mère des anciennes stations, placez un fichier de configuration dans <code>/etc/network/interfaces.d</code> créé à partir d'un modèle, l'interface doit avoir son adresse sans le VLAN 50 comme adresse IPv4 principale et son adresse dans le réseau d'administration comme adresse secondaire ;
* un rôle de configuration du commutateur virtuel de stockage englobant les deux interfaces réseau PCI express, placez le fichier de configuration dans <code>/etc/network/interfaces.d</code>, crééz-le à partir d'un modèle, le commutateur doit avoir comme adresse IPv4, son adresse dans le réseau de stockage ;
* un rôle de configuration pour utiliser le serveur NTP de l'école  <code>ntp.polytech-lille.fr</code> ;
* un rôle pour configurer le DNS, en particulier pour envoyer le fichier fixe <code>named.conf.local</code> mais aussi le fichier à adapter <code>db.pifou.lan</code> pour lequel ous utiliserez un modèle ;
* un rôle pour configurer le serveur NFS, à savoir pour propager le fichier <code>/etc/exports</code> mais aussi pour créer le répertoire concerné ;
* rôle d'installation d'une masquarade sur les anciennes stations pour le réseau d'administration vers le réseau de l'école, les règles <code>iptables</code> doivent être rendues permanentes avec le paquetage <code>iptables-persistent</code> ;
* rôle de recopie de l'archive de TP à partir d'un original sur la <code>Zabeth20</code>, la recopie doit être lancée par <code>rsync</code> et en tâche de fond pour ne pas bloquer Ansible.
 
= Annexes =
 
Fichier source schéma architecture des travaux pratiques "Migration" : [[Media:2023_Architecture_TP_Migration.svg]]

Version actuelle datée du 5 mars 2024 à 21:08

Création d'un conteneur

Le but de cette première manipulation est la création d'un conteneur pas à pas sous Linux.

Le système de fichiers

La première étape est de créer un système de fichiers isolé par rapport au système de la machine hébergeur :

  • commencez par créer un fichier disk.img de 10Go sur la station de travail, pour cela vous utiliserez la commande dd, comme fichier source utilisez le générateur de zéro /dev/zero et les options bs (block size) et count ;
  • en tant qu'administrateur créez un système de fichiers sur disk.img avec la commande mkfs (make filesystem), vous pouvez utilisez le système de fichiers ext4 ;
  • toujours en tant qu'administrateur, montez le système de fichiers disk.img sur un répertoire vide (par exemple /tmp/disk que vous aurez préalablement créé) ;
  • vous pouvez enfin installez un système de fichiers Linux minimal sur votre partition virtuelle par la commande debootstrap stable /dev/disk.

Lancement du conteneur

Lancez le conteneur avec la commande du cours. Dans un premier temps n'utilisez que les options -p -m. Vérifiez que les processus du conteneur sont bien isolés, de même pour les montages de systèmes de fichiers. Regardez les interfaces réseau du conteneur, conclusion ? Sortez du conteneur, relancez-le en ajoutant les options -n -u. Vérifiez à nouveau les interfaces réseau du conteneur, conclusion ?

Laissez le conteneur tourner dans son terminal de commande, n'en sortez plus.

Création d'une interface réseau

Créez un commutateur virtuel vide d'interfaces avec les commandes présentées en cours. Créez une interface Ethernet virtuelle avec les commandes présentées en cours. Trouvez le PID du processus unshare du conteneur et déplacez le pair de l'interface Ethernet virtuel dans l'espace de nom du conteneur.

Démarrez toutes les interfaces réseau avec la commande ip link set <IF> up, mettez une adresse IPv4 sur le commutateur virtuelle (e.g. 192.168.0.1/24) et sur le pair dans le conteneur (e.g. 192.168.0.2/24), vérifiez la connexion entre les deux interfaces virtuelles.

Sortie sur Internet

Utilisez les commandes vue en cours pour créer une mascarade sur la station de travail pour le réseau du conteneur. Vérifiez que le conteneur a bien accès aux même machines que la station de travail.

Préparation des travaux pratiques "migration"

Vous allez préparer le terrain pour les travaux pratiques de migration de machine virtuelles créées dans un environnement de type VMWare. Cette préparation doit se faire proprement en utilisant Ansible pour configurer les machines.

Schéma synthétique

Comme indiqué sur le schéma ci-dessous les travaux pratiques de migration se font en utilisant, par binôme, deux hyperviseurs et une machine de services fournissant , principalement, un service de stockage. Les deux hyperviseurs sont implantés sur deux stations de travail de même type via l'installation du système d'exploitation ESXi de VMWare.

2023 Architecture TP Migration.png

Les machines d'administration doivent être réalisées à partir des anciennes stations de travail que vous devez renommer en NASXX et repérer avec les étiquettes données. Ces machines doivent avoir une adresse dans le réseau des salles projets de la forme 172.26.145.30+XX. Ces machines doivent être reliées au réseau des salles via deux commutateurs gigabit à installer en E304 et E306.

Pour réaliser le câblage du réseau de stockage votre NAS doit être à coté de vos hyperviseurs. Pour savoir où installer physiquement votre NAS la liste des postes de travail est donnée ci-dessous.

Poste de travail Salle Hyperviseur 1 Hyperviseur 2
Poste n°1 E302 zabeth26 zabeth27
Poste n°2 E304 zabeth02 zabeth03
Poste n°3 E304 zabeth04 zabeth05
Poste n°4 E304 zabeth06 zabeth07
Poste n°5 E304 zabeth08 zabeth10
Poste n°6 E304 zabeth09 zabeth11
Poste n°7 E304 zabeth12 zabeth28 (à rapatrier de la E302 à la E304)
Poste n°8 E306 zabeth13 zabeth17
Poste n°9 E306 zabeth14 zabeth16
Poste n°10 E306 zabeth18 zabeth19
Poste n°11 E306 zabeth20 zabeth21

Le numéro de la zabeth utilisée en premier hyperviseur est noté A et le numéro de la zabeth utilisée en second hyperviseur est noté B. Attention ces notations sont utilisées pour la description des rôles Ansible.

Installation de la distribution Devuan

Tous les binômes doivent installer une distribution Linux Devuan daedalus sur les machines d'administration, i.e. les anciennes stations de travail. Pour ce faire vous devez récupérer la bonne version de l'image ISO du DVD d'installation netinst, vous devez installer cette image sur une clef USB et vous devez démarrer la station de travail en amorçant sur la clef. Le plus simple pour copier l'image sur la clef est d'utiliser l'utilitaire dd avec comme "input file" (if) l'image ISO et comme "output file" (of) le périphérique bloc correspondant à la clef. Pour récupérer le périphérique bloc de la clef utilisez l'utilitaire lsblk.

Tâches supplémentaires

Câblage des anciennes stations

Un binôme s'occupe de la mise en place des commutateurs gigabit, un sur une table en E304, un autre dans la baie serveurs en E306. Les commutateurs doivent avoir tous leurs ports configurés dans le VLAN 50. Le même binôme effectue les câblages en utilisant des câbles de longueur adaptée et en utilisant le chemin de câble de la E306. Le câblage doit pouvoir rester en place jusqu'aux travaux pratiques de migration sans entraver le moins du monde le fonctionnement des salles.

Installation de disques

Un binôme se charge d'ajouter un second disque dans les stations de travail optiplex 7060 qui vont être utilisée comme hyperviseur et qui ne possédent qu'un disque.

Configuration d'un serveur Ansible

Le serveur Ansible doit être installé sur la zabeth15 qui n'est pas utilisée comme hyperviseur. Vous commencez par créer une clef asymétrique comme montré en cours et vous diffusez la partie publique par courriel à l'ensemble de la promotion. Charge aux divers binômes d'installer la clef publique dans le fichier /root/.ssh/authorized_keys de leur NAS.

Le binôme en charge de la configuration du serveur Ansible doit aussi :

  • créer le fichier d'inventaire des machines d'administration ;
  • créer le "jeu" (playbook) appliquant les rôles réalisés par les autres binômes à l'ensemble des machines d'administration ;
  • tester la bonne exécution de la commande uname -a sur l'ensemble des machines d'administration.

C'est à la charge des autres binôme de s'assurer que tous les rôles s'exécutent bien sur leur propre machine d'administration et aux binôme chargés des rôles que ceux-ci sont fonctionnels.

Configuration des rôles Ansible

Les rôles Ansible ci-dessous doivent être créés sur le serveur Ansible. Un seul binôme se charge des deux premiers rôles triviaux.

  • un rôle de propagation de fichiers systèmes généraux :
    • /etc/network/interfaces ne contenant que la définition de l'interface loopback,
    • /etc/default/ntpdate contenant la référence au serveur NTP de la plateforme ntp.plil.info,
    • /etc/apt/sources.list contenant les lignes pour les dépots Devuan daedalus, regardez les fichiers sur les zabeth pour référence,
    • et tout autre fichier nécessaire au bon fonctionnement des travaux pratiques de migration ;
  • un rôle d'installation des paquetages nécessaires pour les divers autres rôles :
    • paquetage bind9 pour le serveur DNS,
    • paquetage nfs-kernel-server pour le serveur NFS,
    • paquetage bridge-utils pour la création de commutateurs virtuels,
    • paquetage ntp et ntpdate pour la mise à l'heure,
    • et tout autre paquetage demandé par un autre groupe ;
  • un rôle de configuration de l'interface réseau de la carte mère des anciennes stations, placez un fichier de configuration dans /etc/network/interfaces.d créé à partir d'un modèle et d'une variable de type dictionnaire, l'interface doit avoir son adresse dans le réseau des salles de projets (VLAN 50) comme adresse IPv4 principale et son adresse dans le réseau d'administration des travaux pratiques de migration comme adresse secondaire, soit 10.10.A.4/24;
  • un rôle de configuration du commutateur virtuel de stockage englobant les deux interfaces réseau PCI express, placez le fichier de configuration dans /etc/network/interfaces.d, crééz-le à partir d'un modèle et d'une variable de type dictionnaire, le commutateur doit avoir comme adresse IPv4, son adresse dans le réseau de stockage, soit 10.10.B.4/24 ;
  • un rôle de configuration pour utiliser le serveur NTP de l'école ntp.plil.info ;
  • un rôle pour configurer le DNS, en particulier pour envoyer le fichier statique named.conf.local mais aussi le fichier à adapter db.pifou.lan pour lequel vous utiliserez un modèle et une variable de type dictionnaire, le fichier à adapter est présent dans l'archive des travaux pratiques sur la zabeth15 et le fichier statique est dans le sujet des travaux pratiques disponible dans la même archive ;
  • un rôle pour configurer le serveur NFS, à savoir pour propager le fichier /etc/exports mais aussi pour créer le répertoire concerné ;
  • un rôle pour installer une mascarade sur les machines d'administration concernant leur réseau d'administration pour pouvoir contacter le réseau de l'école, les règles iptables doivent être rendues permanentes avec le paquetage iptables-persistent ;
  • un rôle pour recopier de l'archive des travaux pratiques de migration à partir d'un original sur la zabeth15, la recopie doit être lancée par rsync et en tâche de fond pour ne pas bloquer la propagation des configuration par Ansible, il est conseillé de regarder [1] pour écrire correctement ce rôle.

Annexes

Fichier source schéma architecture des travaux pratiques "Migration" : Media:2023_Architecture_TP_Migration.svg

Préparation du TP "Architecture innovante"

Objectif

Le but est d"installer une application style réseau social (Matrix) sur une architecture de conteneurs installé sur plusieurs machines virtuelles.

Architecture de base

Deux machines virtuelles Linux sont connectées dans un réseau local, plus exactement via un commutateur virtuel. La sortie du réseau local vers Internet est assurée par une machine virtuelle OpenWRT qui implante un routeur virtuel. Les composants de l'application Matrix doivent être installés sur les deux machines virtuelles Linux. Pour assurer un équilibrage de charge les deux machines virtuelles et le routeur virtuel sont sur trois serveurs physiques distincts (penfret, chassiron et capbreton).

Pour relier les trois machines virtuelles, vous allez créer des commutateurs virtuels privés sur les trois hyperviseurs. Les 3 commutateurs virtuels d'un binôme doivent être connectés par des VLAN transportés sur deux liens physiques. Une connexion fibre entre penfret et chassiron et une seconde connexion fibre entre capbreton et chassiron. Ces deux connexions fibres sont à réaliser par la promotion.

Il faut donner une adresse IPv4 publique au routeur OpenWRT, vous utiliserez le même réseau IPv4 que pour les travaux pratiques académiques à savoir 193.48.57.160/27. Plus précisement vous devez donner à votre routeur OpenWRT la même adresse IPv4 routée que celle que vous avez déjà donné à votre machine mandataire. Vous prendrez soin à qu'une seule machine virtuelle avec cette adresse IPv4 soit lancée sur capbreton à la fois.

Configuration sur capbreton

A effectuer par les deux membres du binôme d'identifiants école LOGIN1 et LOGIN2 (binôme de numéro N) :

  • création d'un commutateur virtuel gN_LOGIN1_LOGIN2, ne touchez pas au fichier /etc/network/interfaces, créez-vous un fichier de configuration dans le répertoire /etc/network/interfaces.d de nom gN_LOGIN1_LOGIN2 ;
  • création d'une interface VLAN de numéro 200+N sur l'interface de connexion avec chassiron, la déclaration d'interface est à écrire dans le fichier /etc/network/interfaces.d/gN_LOGIN1_LOGIN2, cette interface est à placer dans votre commutateur virtuel ;
  • création d'une machine virtuelle en virtualisation matérielle avec pygrub pour lancer l'image openWRT (présente dans le répertoire /usr/local/xen/ de l'hyperviseur, vous pouvez mettre une copie de l'image dans /usr/local/xen/domains/gN_router/), une interface sur le commutateur du réseau des SE4, une interface sur le commutateur gN_LOGIN1_LOGIN2 ;
  • connexion par ssh sur l'openWRT en IPv6 de la zabeth avec tunnel ssh vers le port 6443 (option ssh -L 6443:localhost:6443), demandez le mot de passe de root à un intervenant de vive voix ;
  • connexion sur LuCi au travers du tunnel ssh en utilisant un navigateur Web et l'URL https://localhost:6443 ;
  • modification de l'adresse IPv4 WAN (statique) avec la même IPv4 routé que la machine mandataire des travaux pratiques académiques ;
  • ajout d'une route par défaut vers le routeur principal des SE4.

Configuration sur penfret

A effectuer par le premier membre du binôme d'identifiant école LOGIN1 (binôme de numéro N) :

  • création d'un commutateur virtuel gN_LOGIN1, ne touchez pas au fichier /etc/network/interfaces, créez-vous un fichier de configuration dans le répertoire /etc/network/interfaces.d de nom gN_LOGIN1 ;
  • création d'une machine virtuelle Xen avec une distribution debian bookworm, deux interfaces réseau, une dans le commutateur gN_LOGIN1, une dans le commutateur bridgeStudents (réseau des zabeth) ;
  • configuration IPv4 en DHCP pour la première interface, configuration statique pour la seconde (172.26.145.100+2N) ;
  • vérification de l'accès ssh en provenance des zabeth (pour une éventuelle configuration par ansible en provenance des zabeth) ;
  • mise à jour des paquetages debian en passant par le mandataire de l'école ;
  • création d'une interface VLAN de numéro 200+N sur l'interface de connexion avec chassiron, la déclaration d'interface est à écrire dans le fichier /etc/network/interfaces.d/gN_LOGIN1 ;
  • ajout de l'interface VLAN dans le commutateur gN_LOGIN1 ;
  • vérification, à partir de la machine virtuelle Xen que la connexion vers l'adresse du routeur OpenWRT (10.0.69.1) fonctionne.

Configuration sur chassiron

A effectuer par le second membre du binôme d'identifiant école LOGIN2 (binôme de numéro N)  :

  • création d'un commutateur virtuel gN_LOGIN2, ne touchez pas au fichier /etc/network/interfaces, créez-vous un fichier de configuration dans le répertoire /etc/network/interfaces.d de nom gN_LOGIN2 ;
  • création d'une machine virtuelle Xen avec une distribution debian bookworm, deux interfaces réseau, une dans le commutateur gN_LOGIN2, une dans le commutateur bridgeStudents (réseau des zabeth) ;
  • configuration IPv4 en DHCP pour la première interface, configuration statique pour la seconde (172.26.145.100+2N+1) ;
  • vérification de l'accès ssh en provenance des zabeth (pour une éventuelle configuration par ansible en provenance des zabeth) ;
  • mise à jour des paquetages debian en passant par le mandataire de l'école ;
  • création de deux interfaces VLAN de numéro 200+N sur les interfaces de connexion avec penfret et capbreton, ces déclarations d'interfaces sont à écrire dans le fichier /etc/network/interfaces.d/gN_LOGIN2 ;
  • ajout des interfaces VLAN dans le commutateur gN_LOGIN2 ;
  • vérification, à partir de la machine virtuelle Xen que la connexion vers l'adresse du routeur OpenWRT (10.0.69.1) fonctionne.

Atelier système et réseau, les machines virtuelles

Vous devez installer le système d'exploitation des machines virtuelles destinées à héberger vos services.

Création des machines virtuelles

2023 Architecture MV.png

Comme hyperviseur pour la gestion des machines virtuelles nous utilisons le système Xen. Chaque élève configure sa propre machine virtuelle pour installer ses services.

Du au nombre limité d'adresses IPv4 disponibles pour l'atelier, il est nécessaire de créer des machines virtuelles mandataires gérant une adresse IPv4 pour plusieurs machines virtuelles. Partez sur un machine mandataire par binôme.

Les machines de services peuvent contacter Internet et être contactées directement d'Internet via leurs adresses IPv6. Pour contacter Internet en IPv4 les machines de service passent par une mascarade installée sur leur machine mandataire. Pour être contactée d'Internet en IPv4 les machines de services se reposent sur leur machine mandataire qui reçoit les requêtes et qui les redirigent vers la bonne machine de services par des mécanismes dépendant du service accédé (e.g. mécanisme de mandaire inverse pour un service Web).

La connexion IPv4 entre machine de services et machine mandataire se fait par un réseau privé. Chaque type de machine possède donc deux interfaces réseau, une interface dans le réseau routé de la promotion et une interface dans le réseau privé de la machine mandataire. Lisez bien, il doit y avoir un réseau privé par machine mandataire.

Les machines virtuelles sont créées sur le Dom0 capbreton.plil.info.

Pour la création des commutateurs virtuels du réseau routé de la promotion et des réseaux privés vous pouvez :

  • modifier le fichier /etc/network/interfaces du Dom0 pour décrire le commutateur du réseau routé, ce réseau est effectivement à caractère semi-permanent ;
  • créer un fichier dans le répertoire /etc/network/interfaces.d du Dom0 aux noms du binôme concerné, ce réseau est lui plus transitoire et n'est utilisé qu'un semestre.

Pour la création de la machine virtuelle utilisez la commande xen-create-image. Il vous faut préciser à cet utilitaire le nom de votre machine (choisissez un thème commun), une méthode de configuration IP (prenez DHCP dans un premier temps, vous configurerez le fichier /etc/network/interfaces ensuite), le commutateur virtuel sur lesquel accrocher l'interface réseau et le répertoire où les disques virtuels doivent être créés (imposez /usr/local/xen). Il n'est pas inutile de préciser la taille du disque virtuel (autour de 10G). Laissez le script créer un mot de passe fort. Si vous oubliez le mot de passe vous pourrez le retrouver dans le fichier de contrôle au nom de votre machine situé dans le répertoire /var/log/xen-tools/. Installez la dernière version de la distribution Devuan.

Configuration de la machine de services

Dans un second temps, créez deux partitions LVM de 10G pour votre machine virtuelle (rappelez le nom de la machine dans le nom des partitions) et modifiez le fichier de configuration de la machine virtuelle de services pour faire en sorte que les répertoires /var et /home de la machine virtuelle soient implantés sur ces partitions LVM. Attention à bien transférer le contenu du répertoire /var dans la nouvelle partition destinée à être montée sous /var. Pour un montage permanent des deux partitions, voyez le fichier des montages /etc/fstab.

Modifiez le fichier de configuration /etc/network/interfaces pour faire en sorte que votre machine de services obtienne automatiquement une adresse IPv6 routée et pour fixer une adresse IPv4 sur le réseau privé de la machine mandataire.

Installez les paquetages nécessaires pour ssh, le serveur Web apache2 et le serveur DNS bind (voir la partie services).

Configuration de la machine mandataire

Modifiez le fichier de configuration /etc/network/interfaces pour faire en sorte que votre machine de services obtienne automatiquement une adresse IPv6 routée et pour fixer une adresse IPv4 dans le réseau routé de la promotion.

Installez les paquetages nécessaires pour ssh, le serveur Web apache2 et le serveur DNS bind pour pouvoir mettre en place les mécanismes de redirection évoqués plus haut.

Mettez en place la mascarade et les redirections de ports.

Annexes

Fichier source schéma architecture machines virtuelles : Media:2023_Architecture_MV.svg

Architecture réseau, première approche

Cette section détaille la maquette du réseau que vous devez réaliser rapidement pour que les machines virtuelles puissent être connectées à Internet.

Architecture de base

Vous construirez votre première maquette de réseau autour du routeur C9200. Ce routeur doit rester le routeur principal.

Un premier réseau virtuel

Nous disposons d'un réseau IPv4 routé et ouvert : 193.48.57.160/27 (dans le VLAN 110 de l’école soit TP-NET1).

Le routage de site (IPv4)

Routez votre VLAN sur votre routeur. Comme vous le savez, la configuration des routeurs doit initialement se faire via leurs ports série ; utilisez minicom sur un ordinateur Linux pour y accéder.

Le routage de site (IPv6)

Configurez votre routeur pour permettre à vos machines de se construire des adresses IPv6. Utilisez les préfixes IPv6 de Polytech’Lille prévus à cet effet (2001:660:4401:60a0::/60 et 2001:660:4401:60b0::/60). Pour vous aider, voici un extrait de configuration IPv6 sur une interface du routeur de la plateforme maths/info :

interface ...
 ... 
 ipv6 enable
 ipv6 address 2001:660:4401:60A0::/64 eui-64
 ipv6 nd prefix 2001:660:4401:60A0::/64 1000 900
 ipv6 nd router-preference high
 ...
!

En ce qui concerne la configuration globale un simple

ipv6 unicast-routing

va faire l’affaire.

Interconnexion avec Internet (IPv4)

Interconnectez votre routeur de site avec celui de la plateforme. Vous utiliserez comme VLAN d’interconnexion, le VLAN 530 (INTERCO-4A) associé au réseau IPv4 192.168.222.64/28. Le routeur de la plateforme utilise la première adresse disponible.

Faites en sorte que les deux routeurs s’échangent leurs routes par le protocole de routage OSPF. Le routage par OSPF se déclare par un bloc du type ci-dessous où @IPv4 est la plus petite adresse IPv4 du routeur :

router ospf 1                                                                 
 router-id @IPv4
!

Dans ce bloc vous devez ajouter une directive redistribute pour indiquer quel type d'entrées de routage vous souhaitez propager par OSPF et avec quelle métrique. Vous devez aussi ajouter une directive network pour indiquer par quel réseau IPv4 vous passez pour propager et recevoir les annonces, ici c'est le réseau IPv4 du VLAN 530.

Attention ! Le masque pour network est inversé.

Attention ! Il faut aussi que l'area corresponde à celle du pair OSPF. Le routeur de la plateforme utilise area 10.

Attention ! Vos réseaux locaux ne doivent pas sortir par OSPF, rajoutez donc un filtre dans le bloc OSPF, par exemple :

router ospf 1
  ...
  summary-address 10.0.0.0 255.0.0.0 not-advertise
  ...
!

Interconnexion avec Internet (IPv6)

Les VLAN d’interconnexion pour IPv6 sont les mêmes que pour IPv4. Le réseau IPv6 utilisé sur INTERCO-4A est le réseau local IPv6 standard FE80::0/10. Le routeur de la plateforme utilise la première adresse disponible.

Pour interconnecter votre routeur, en ce qui concerne IPv6 cette fois, vous utiliserez RIPv6. Pour vous donner une base de départ voici la configuration RIPv6 du routeur de la plateforme concernant votre réseau de travaux pratiques :

ipv6 router rip tpse
 redistribute connected metric 1
 redistribute rip 1 metric 1
 redistribute static metric 1
!

N’oubliez pas d’activer le protocole RIPv6 sur l’interface interconnexion avec une commande du style ipv6 rip tpse enable.

Testez votre connectivité IPv6 en utilisant les serveurs de google.com.

Services Internet

Le but est ici de configurer sur votre machine des services fonctionnels et sécurisés. Les accès IPv6 doivent être directement gérés par la machine virtuelle de services. Les accès IPv4 doivent être gérés par la machine mandataire.

Serveur SSH

Votre machine virtuelle Xen de services doit être accessible par SSH. Autorisez les accès par l'utilisateur root via le fichier de configuration /etc/ssh/sshd_config et l'option PermitRootLogin.

Pour l'accès avec l'adresse IPv4, effectuez une rediction de ports vers vos machines de services. Vous pouvez utiliser le port 2201 pour la première machine de services et 2202 pour la seconde. La redirection de ports s'effectue en utilisant iptables/nftables.

Serveur DNS

Vous allez réserver un nom de domaine pour associer un nom DNS à chacune de vos adresses IP (les zones inverses devraient, elles aussi, être gérées mais nous n'avons pas la délégation pour ce faire). Il est suggéré d’utiliser le registrar Gandi [http://www.gandi.net}. Une fois le nom de domaine reservé, configurez bind (paquetage bind9) sur votre serveur virtuel de services pour donner les adresses IPv4 et IPv6 correspondant à vos noms de machines. Utilisez l’interface web de votre registrar pour paramétrer votre machine comme serveur DNS principal. Utilisez le serveur DNS de votre binôme comme serveur DNS secondaire.

Comme votre serveur DNS ne peut pas être contacté en IPv4 vous allez configurer la machine mandataire pour servir votre zone en tant que serveur DNS secondaire. Le serveur mandataire se met à jour via le réseau privé du mandataire. Du coup au niveau du registrar vous déclarerez un "glue record" avec l'adresse IPv4 du mandataire et l'adresse IPv6 de la machine de services.

Sécurisation de site Web par certificat

Sur la machine virtuelle de services , configurez apache2 (paquetage du même nom) en mode sécurisé à l’aide d’une clef asymétrique et d’un certificat signé par une autorité de certification (CA). Comme CA, il est conseillé d’utiliser aussi Gandi. Le CA signe un CSR (Certificate Signing Request), vous allez créer vos clefs et le CSR en utilisant l'utilitaire openssl (vous pouvez vous aider du Wiki de Gandi). Une fois le CSR signé par le CA et donc transformé en un certificat vous pourrez configurer apache2 pour gérer du HTTPS sur le port 443. Dans la définition du serveur virtuel pour ce port, il faut insérer la ligne de configuration SSLEngine on. Il faut aussi préciser où se trouve la clef privée du serveur via le mot clef SSLCertificateKeyFile et où se trouve le certificat via le mot clef SSLCertificateFile. Il faut aussi définir la chaîne de certification avec SSLCertificateChainFile.

Faites très attention à la clef privée générée avec openssl si vous la perdez, votre certificat devient inutile. Il est conseillé de la stocker de façon pérenne dans votre machine de services.

Là encore seuls les accès IPv6 peuvent se faire en direct sur votre machine de services. Pour IPv4 vous devez configurer apache2 comme mandataire inverse pour votre site. Pour la fonction mandataire inverse, activez les modules Apache proxy et proxy_http. Dans le fichier de configuration du site vous devez ajouter les directives SSLProxyEngine, ProxyPass et ProxyPassReverse (utilisez l'URL avec le nom de domaine dans les deux dernières directives).

Sécurisation de serveur DNS par DNSSEC

Sécurisez votre serveur DNS en signant la zone correspondant à votre nom de domaine.

Deux méthodes sont disponibles : la gestion manuelle des clefs de chiffrement ou la gestion automatique de ces clefs par bind.

Gestion manuelle des clefs

Vous pouvez vous appuyer sur le document [2] pour réaliser la sécurisation. Testez votre configuration avec l’outil [3].

Pour entrer dans les détails, vous allez devoir effectuer les opération suivantes.

  • ajoutez l’option dnssec-enable yes; dans le fichier named.conf.options ;
  • il est conseillé de créer un répertoire de nom <nom_de_zone>.dnssec pour y générer les clefs ;
  • créez la clef asymétrique de signature de clefs de zone (pour accélerer la génération sur un système de test vous pouvez utiliser l’option -r /dev/urandom) ;
dnssec-keygen -a RSASHA256 -b 2048 -f KSK -n ZONE <nom_de_zone>
  • créez la clef asymétrique de la zone pour signer les enregistrements (pour accélerer la génération sur un système de test vous pouvez utiliser l’option -r /dev/urandom) ;
dnssec-keygen -a RSASHA256 -b 1024 -n ZONE <nom_de_zone>
  • renommez les deux paires de clefs obtenues en utilisant le nom de la zone comme préfixe puis en suffixant d’abord par la destination de la clef (-ksk pour la KSK ou -zsk pour la ZSK) puis par le type de clef (.key pour la clef publique ou .private pour la clef privée) ;
  • incluez les clefs publiques dans votre fichier de zone, incrémentez le numéro de version de la zone ;
$include /etc/bind/<nom_de_zone>.dnssec/<nom_de_zone>-ksk.key
$include /etc/bind/<nom_de_zone>.dnssec/<nom_de_zone>-zsk.key
  • signez les enregistrements de la zone ;
dnssec-signzone -o <nom_de_zone> -k <nom_de_zone>-ksk ../<nom_de_zone> <nom_de_zone>-zsk
  • modifiez le fichier named.conf.local pour utiliser la zone signée de suffixe .signed ;
  • il ne reste plus qu’à communiquer la partie publique de la KSK (présente dans le fichier <nom_de_zone>-ksk.key) à votre registrar (par exemple Gandi, regardez à "Manage DNSSEC" dans la section "DNS servers").

Gestion automatique des clefs

Rajoutez le bloc suivant dans la définition de vos zones :

 key-directory "/etc/bind/keys";
 dnssec-policy "dnspol";
 inline-signing yes;

La ligne dnssec-policy "dnspol"; fait référence au bloc global ci-dessous.

 dnssec-policy "dnspol" {
   keys {
       ksk key-directory lifetime unlimited algorithm 13;
       zsk key-directory lifetime unlimited algorithm 13;
   };
   nsec3param;
 };

Vous avez aussi à communiquer la partie publique de la KSK à votre registrar comme pour la gestion manuelle.

Filtrage des services

Vérifiez dans les fichiers de contrôle de vos machine virtuelle que le port ssh est bien sujet à des attaques par force brute.

Installez un système pour bannir les machines sources des attaques les plus patentes (avec l’utilitaire fail2ban par exemple).

Traitez aussi les attaques sur votre serveur DNS (via le protocole TCP uniquement).

Architecture réseau, finalisation

L’architecture complète

2023 SE Architecture Reseau Redondance.png

Votre réseau doit être redondant. Pour cela vous utiliserez un deuxième routeur ISR4221 pour chaque binôme et deux points d’accès WiFi pour la promotion entière. Les ISR4221 permettent d'assurer la redondance du réseau de l'accès principal à Internet géré, jusque là, par le seul C9200. L'ISR4221 permet aussi d’accèder au fournisseur d’accès à Internet secondaire. Les points d’accès WiFi sont connectés sur le C9200.

Le serveur de virtualisation doit être connecté aux ISR4221 sans passer par le C9200.

Les réseaux virtuels

Vous devez ajouter un VLAN par élève dans votre réseau de promotion. Associez un réseau IPv4 (e.g. un sous-réseau de 10.60.0.0/16) et un réseau IPv6 (e.g. un sous-réseau de 2001:660:4401:60b0::/60) aux nouveaux VLAN. Ces VLAN seront utilisés pour connecter les clients WiFi de chaque élève.

Il est demandé d’établir un tableau listant tous les VLAN de votre réseau avec les adresses IPv4 et IPv6 utilisées par les routeurs dans chaque VLAN.

Le routage de site (IPv4)

Ajoutez le routage IPv4 pour vos VLAN privés sur le C9200. Configurez votre routeur de secours ISR4221 comme le C9200.

Le routage de site (IPv6)

Configurez votre ISR4221 comme le C9200 en IPv6 mais votre routeur doit être moins prioritaire que le C9200 pour l'annonce de routeur IPv6.

Interconnexion avec Internet (IPv4)

Configurez votre ISR4221 sur le réseau d'interconnexion avec le protocole OSPF comme pour le C9200.

Jouez sur l’option metric de la commande redistribute pour faire en sorte que le C9200 soit l’élément IPv4 prioritaire de votre réseau.

Interconnexion avec Internet (IPv6)

Configurez l'ISR4221 sur le réseau d'interconnexion avec le protocole RIPv6 comme pour le C9200.

Jouez sur l’option metric de la commande redistribute pour faire en sorte que le C9200 soit l’élément IPv4 prioritaire de votre réseau.

Sécurisation du réseau

Pour rendre votre réseau plus robuste, faites en sorte que les machines utilisent un routeur actif en implantant le protocole VRRP sur vos routeurs (C9200 et ISR4221). Pour vous donner une idée de départ voici une configuration VRRP typique :

RTR-A(config)# int fa0/1
RTR-A(config-if)# ip address 10.10.10.1 255.255.255.0
RTR-A(config-if)# vrrp 1 ip 10.10.10.3
RTR-A(config-if)# vrrp 1 preempt
RTR-A(config-if)# vrrp 1 priority 110
RTR-B(config)# int fa0/1
RTR-B(config-if)# ip address 10.10.10.2 255.255.255.0
RTR-B(config-if)# vrrp 1 ip 10.10.10.3
RTR-B(config-if)# vrrp 1 preempt
RTR-B(config-if)# vrrp 1 priority 100

Sous IOS XE, la syntaxe diffère en ce qu’il existe un mode de configuration VRRP et que le mot clef ip devient address mais vous devez pouvoir vous adapter.

Comment le routeur de la plateforme connaitra le routeur à utiliser pour contacter vos machines ?

Pour certains matériels cisco (e.g. C9200) les commandes ci-dessous peuvent aider :

license boot level network-advantage
fhrp version vrrp v3

Interconnexion Internet de secours (IPv4)

Proposez un schéma pour que le flux IPv4 puisse passer par la liaison fibre orange en cas de panne de l'opérateur Internet principal (RENATER).

Le réseau virtuel de la liaison fibre orange se trouve sur le VLAN 510 (LUX). Le réseau IPv4 de ce VLAN est 195.101.204.144/28. Le routeur orange utilise l'adresse la plus haute disponible. Vous pouvez utiliser une adresse IPv4 à partir de 195.101.204.150.

Si vous n’avez pas d’inspiration, une méthode est suggérée mais il en existe certainement d’autres :

  • ajouter l’ISR4221 dans le groupe des serveurs redondants VRRP en tant que routeur le moins prioritaire ;
  • utiliser le mécanisme SLA sur le routeur principal pour décrémenter la priorité VRRP en cas d’incident via RENATER ;
  • implanter une mascarade sur l’ISR4221 vers le routeur orange en utilisant votre adresse IPv4 orange routée ;
  • implanter une redirection de ports sur l’ISR4221 pour que vos machines mandataires puissent être contactables d'Internet en IPv4.

Interconnexion Internet de secours (IPv6)

Proposez un schéma pour que le flux IPv6 puisse passer par la liaison fibre orange en cas de panne de l'opérateur Internet principal (RENATER).

Le reseau IPv6 sur le VLAN 510 est 2a01:c916:2047:C800::/64. Le routeur orange utilise l'adresse la plus basse disponible.

Pour IPv6, l’idée est d’insérer sur les routeurs C9200 et ISR4221, avec le mécanisme SLA, une route pour les adresses IPv6 RENATER vers l’ISR4221 et de mettre en place un vrai NAT sur l’ISR4221 entre le préfixe IPv6 RENATER et le le préfixe IPv6 orange. L’ISR4221 doit aussi mettre en place un routage statique vers le routeur orange.

Annexe

Fichier source schéma architectureé "Redondance" : Media:2023_SE_Architecture_Reseau_Redondance.svg

Effraction WiFi

Vous allez testez dans cette section les méthodes de sécurisation du WiFi.

Cassage de clef WEP d’un point d’accès WiFi

Repérez le nom du réseau sans fil cracotte correspondant à votre binôme (réseau diffusé par le point d’accès Cisco présent dans la salle). Installez le paquetage aircrack-ng et utilisez-le pour trouver la clef WEP associée à votre réseau. Il faudra commencer par trouver le point d’accès (canal, nom des réseaux) puis écouter les trames WiFi avec airodump-ng (la carte WiFi étant passée en mode écoute à l’aide de l’utilitaire airmon-ng). Une fois suffisament de trames échangées, lancez l’algorithme de craquage de la clef WEP (aircrack-ng).

Cassage de mot de passe WPA-PSK par force brute

Utilisez les outils du paquetage aircrack-ng pour lancer une recherche sur le mot de passe de l’identification par WPA-PSK. Repérez le nom du réseau sans fil kracotte correspondant à votre binôme (réseau diffusé par le point d’accès Cisco présent dans la salle). Capturez des dialogues d’identification WPA avec airodump-ng. Attention pour capturer ces paquets d’identification vous devez être à bonne distance du point d’accès du banc d’essai. L’utilitaire indique en haut de son affichage si de telles trames sont capturées. Une fois chose faite, lancez aircrack-ng pour tenter de craquer la clef WPA. Le craquage doit se faire avec l’aide d’un dictionnaire. On va donc supposer que la clef WPA est un nombre sur 8 chiffres. En conséquence, créez un dictionnaire de toutes les clefs de ce format et lancez aircrack-ng.

Sécurisations

Dans cette dernière section vous devez sécuriser, au sens sécurité contre les instrusions, des mécanismes système ou réseau.

Chiffrement de données

Sur votre machine virtuelle ajoutez une partition de quelques Go. Sécurisez la partition en utilisant l’utilitaire cryptsetup (choisissez le type plain), créez un système de fichiers au dessus de la partition sécurisée (faite un tour dans le répertoire /dev/mapper pour trouver le périphérique correspondant) et montez-le à la main. Ajoutez des données sur ce système de fichiers. Rebootez votre machine virtuelle, tentez à nouveau de lire les données. Essayez d'automatiser le montage de la partition chiffrée.

Sécurisation WiFi par WPA2-EAP

Le but est de faire en sorte que l’accès à la borne WiFi soit controlé par WPA2-EAP. L’identification va se faire en utilisant un serveur FreeRadius.

En résumé vous effectuer les actions décrites ci-dessous.

  • Relier les points d'accès, le routeur C9200 et les routeurs ISR4221 par un VLAN privé qui ne doit pas entrer en conflit avec ceux de l'école. Faire que les points d'accès utilisent l'adresse du C9200, sur ce réseau, comme passerelle par défaut.
  • Router, sur le C9200, le réseau IPv4 de votre commutateur virtuel privé vers votre machine virtuelle mandataire.
  • Ajouter à la configuration du point d’accès WiFi un SSID, de même nom que votre machine de services, protégé par la méthode WPA2-EAP. Des exemples de configurations pour point d'accès WiFi sont donnés dans la suite de la section.
  • Le précédent SSID doit utiliser le VLAN personnel que vous vous êtes créé dans la partie réseau avancée.
  • Configurer, sur votre machine de services, un serveur FreeRadius en PEAP-MSCHAPv2, autoriser le point d'accès WiFi à utiliser le serveur d'identification et créer un utilisateur.
  • Implanter un serveur DHCP, pour les adresses d'octet de poids faible 100 à 200 du réseau IPv4 de votre VMAN privé, sur votre ISR4221. Donner l'adresse de votre machine mandataire comme routeur par défaut et comme serveur DNS.

Vous pouvez tester la visibilité de votre SSID, l'identification WiFi, le serveur DHCP et enfin l'accès à Internet en utilisant votre téléphone portable ou la carte WiFi des zabeth.

Exemple de configuration d'un point d'accès WiFi Cisco sous IOS pour l'élève N :

       ...
       aaa new-model
       aaa authentication login eap_studentN group radius_studentN
       radius-server host <IPv4_VM_SERVICES_N> auth-port 1812 acct-port 1813 key secret_studentN
       aaa group server radius radius_studentN
         server <IPv4_VM_SERVICES_N> auth-port 1812 acct-port 1813
       !
       ...
       dot11 ssid VM_SERVICES_N
         vlan Personnel_N
         authentication open eap eap_studentN
         authentication network-eap eap_studentN
         authentication key-management wpa
         mbssid guest-mode
       !
       ...
       interface Dot11Radio0
         encryption vlan Personnel_N mode ciphers aes-ccm
         ...
       !
       ...
       interface Dot11Radio0.Personnel_N
         encapsulation dot1Q Personnel_N
         bridge-group Personnel_N
       !
       interface GigabitEthernet0.Personnel_N 
         encapsulation dot1Q Personnel_N
         bridge-group Personnel_N
       !
       ...