Académique Documents
Professionnel Documents
Culture Documents
ITESCIA Cours Sécurité OS Virtualisés2
ITESCIA Cours Sécurité OS Virtualisés2
virtualisés
ITESCIA – Master 2 – 2020_2021
2
Sommaire
1. Rappels
2. Virtualisation et conteneurisation des
systèmes
3. Risques liés à la virtualisation
4. Management des systèmes virtualisés
5. TP: Root-me
Les composants
▸ Hardware
▸ OS Généralités
Carte Mère
Loin de n'être qu'une simple « prise » pour vos différents éléments, une carte mère gère et contrôle vos différentes
connexions. Elle doit être compatible avec le processeur que vous avez choisi. Deux éléments essentiels sont à garder en tête
▸ Hardware pour une carte mère vraiment efficace : le chipset et le socket.
▸ OS Généralités
Chipset
▪ Composant central d'une carte mère actuelle, le chipset est l'ensemble des circuits électroniques qui gère
toutes les communications entre d'une part le microprocesseur et tous les autres composants de la carte
▸ Hardware mère d'autre part (mémoire Ram, contrôleurs de disques durs, cartes graphique, audio, réseau ...).
▸ OS Généralités ▪ Comme c'est le point central de la carte mère, il est aussi important que le processeur au niveau des
performances d'un ordinateur. Il est généralement composé de deux éléments :
▪ Le NorthBridge (Pont Nord ou Northern Bridge, appelé également contrôleur mémoire) est chargé de
contrôler les échanges entre le processeur et la mémoire vive…
▪ Le SouthBridge (Pont Sud ou Southern Bridge, appelé également contrôleur d'entrée-sortie ou contrôleur
d'extension) gère les communications avec les périphériques d'entrée-sortie.
Socket
▪ « Réceptacle de processeur » est un connecteur utilisé pour interfacer un processeur avec une
carte mère. Le processeur s'installe dans le socket et permet d'assurer le parfait fonctionnement
entre les éléments connectés.
▪ Il existe plusieurs formes de sockets, plus ou moins protégés et compatibles seulement avec
quelques processeurs précis. Il est donc vital de correctement choisir votre carte mère selon la
compatibilité du socket et du processeur souhaité.
La RAM
▪ RAM est un acronyme pour Random Access Memory en anglais, ce qui signifie Mémoire à accès aléatoire, c’est à
dire que l'on peut accéder à n'importe quel endroit de cette mémoire directement pour y lire ou écrire des
▸ Hardware informations. On l'appelle également la mémoire vive de l'ordinateur ou même tout simplement la mémoire.
▸ OS Généralités ▪ Une différence importante avec les périphériques de stockage est que le temps d'accès à ce type de mémoire est
environ 200 fois plus rapide. Cette mémoire RAM est située très près du processeur et lui sert de mémoire rapide
pour stocker les programmes actifs de même que des données et des résultats intermédiaires dont le processeur
peut avoir besoin.
Serial ATA
La norme Serial ATA ou SATA (Serial Advanced Technology Attachment), permet de connecter à une carte mère tout
périphérique compatible avec cette norme (disque dur, lecteur de DVD, etc.). Elle spécifie notamment un format de transfert de
▸ Hardware données ainsi qu'un format de câble. SATA succède a PATA (Parallèle ATA).
▸ OS Généralités
PATA
PCI Express
▪ Bus d'interconnexion permettant l'ajout de cartes d'extension dans l'ordinateur, le bus PCI Express a été mis au point
en juillet 2002. Contrairement au bus PCI, qui fonctionne en interface parallèle, le bus PCI Express fonctionne en
▸ Hardware interface série, ce qui lui permet d'obtenir une bande passante beaucoup plus élevée que ce dernier.
▸ OS Généralités ▪ Chaque lien série élémentaire fonctionne à 250Mo/s et fonctionne à une tension de 0,8 V avec une puissance dédiée
de 75W pour l'ensemble du bus.
▪ Il est destiné a éventuellement remplacer tous les bus internes d'extension d'un PC, dont le PCI et l'AGP (Si c'est le cas
pour l'AGP qui a complètement disparu, le PCI classique résiste encore).
PCI
BUS
▪ Un bus est un système de transfert de données entre plusieurs unités fonctionnelles de traitement de données par
l'intermédiaire d'une voie de transmission commune, dans laquelle les composants ne prennent aucune part à la
transmission des données entre les autres participants. Le bus peut être décomposé en trois sous-ensembles :
▸ Hardware
✓ Bus de données, soit le message.
▸ OS Généralités
✓ Bus d’adresses, qui identifie le destinataire.
✓ Bus de contrôle, un ensemble de signaux complémentaires identifiant le type d’action (lecture ou écriture, taille du
message, synchronisations).
La séquence de boot
UEFI
Premier secteur adressable (512
octets) contient la table des partitions
▸ Hardware
GPT et routine d’amorçage de grub2
▸ OS Généralités
- Charge l’image Kernel vmLinuz
- Extraction du contenu de l’image
initramfs (drivers, modules) en vue de
monter le FS.
Système d’exploitation
• Applications
• Système d’exploitation
▸ Hardware “ Un système d'exploitation (souvent appelé OS — de
Logique • Pilotes
▸ OS Généralités l'anglais Operating System) est un ensemble de programmes
qui dirige l'utilisation des ressources d'un ordinateur par des
logiciels applicatifs. Il reçoit des demandes d'utilisation des
• Matériel ressources de l'ordinateur (…) de la part des logiciels
Physique applicatifs. Le système d'exploitation gère les demandes ainsi
que les ressources nécessaires, évitant les interférences entre
les logiciels. Le système d'exploitation est un logiciel, le
deuxième et le principal programme exécuté lors de la mise
en marche de l'ordinateur, le premier étant le programme
d'amorçage (appelé également bootloader). ” (source :
Wikipédia)
Familles d’OS
▸ Hardware
▪ Windows : cette famille est notamment celle la plus couramment retrouvée dans le cadre des
▸ OS Généralités
ordinateurs personnels (environ 90% du marché)
▪ Unix : cette famille comporte de nombreuses sous-familles dont les plus populaires sont Mac OS,
GNU/Linux, Android, iOS.
Unix/Linux Chronologie
▸ Hardware
▸ OS Généralités
Distrowatch.com
Copyright © Elysium Security Version 1.0 – 2020/2021
16
Rappels – Définitions
Unix/Linux Chronologie
▸ Hardware
▸ OS Généralités
https://distrowatch.com/images/other/distro-family-tree.png
Copyright © Elysium Security Version 1.0 – 2020/2021
17
Rappels – Définitions
Rôles d’un OS
▸ Hardware
▸ OS Généralités
Composantes d’un OS
Types d’OS
▪ Systèmes monotâches : système n’autorisant qu’un seul utilisateur à n’exécuter qu’une seule
▸ Hardware tâche (un programme par exemple) à la fois.
▪ Systèmes multitâches : système capable d’effectuer plusieurs tâches (ou processus)
▸ OS Généralités simultanément. Cependant, cette simultanéité n’est qu’apparente pour l’utilisateur dans la
mesure où le système attribue à tour de rôle, et pour chaque processus, qu’un laps de temps
défini pour leur exécution (on parle aussi de temps-partagé). On distingue le multitâche
coopératif du multitâche préemptif (un ordonnanceur fixe l’ordre d’exécution des processus
et le temps qui leur est alloué).
▪ Systèmes multiprocesseurs : système capable de partager la mémoire et distribuer la charge
de travail entre plusieurs processeurs. Il est notamment utilisé dans les cas nécessitant une
puissance de calcul importante. On distingue le multiprocessing asymétrique (AMP) de celui
symétrique (SMP).
▪ Systèmes temps réel : système ayant pour vocation à travailler dans un environnement
contraint temporellement. Principalement utilisé dans l’industrie, ce type de système doit
être capable de fonctionner de manière fiable en vue de délivrer des traitements
d’informations corrects selon un intervalle de temps défini (régulier ou non).
▪ Systèmes embarqués : système généralement prévu pour fonctionner sur des équipements
de petite taille (type PDA) ou sur des équipements autonomes (robots, voiture, sonde,
satellite, missile, etc.).
Noyau (1/2)
▸ Afin de garantir que seuls les programmes systèmes accèdent aux ressources (périphériques, mémoire, etc.), les
processeurs gèrent plusieurs niveaux de privilèges dont le mode noyau qui permet aux programmes systèmes
▸ Hardware
d’exécuter des instructions au niveau des périphériques via des appels systèmes.
▸ OS Généralités
▸ Les OS fournissent de base un ensemble d’appels systèmes permettant par exemple de manipuler la mémoire.
Linux fournit plusieurs centaines d’appels systèmes de base tels que : open, read, write, brk, sbrk, etc.
▸ Pour s’adapter aux différents besoins, on distingue plusieurs catégories de noyaux selon le niveau d’abstraction
matérielle qui est utilisé. On distingue notamment 4 grandes catégories de noyaux (présentées dans le prochain
slide).
Noyau (2/2)
On distingue les grandes catégories de noyaux suivantes :
▪ Noyaux monolithiques (Linux par exemple) : le noyau fournit l’ensemble des services (gestion des processus,
▸ Hardware gestion des fichiers, etc.) – abstraction complète du matériel. Appels systèmes peu nombreux garantissant
donc de bonnes performances mais une fiabilité relativement faible.
▸ OS Généralités
▪ Micro-noyaux (AIX par exemple) : le noyau ne fournit qu’un nombre réduit de services, les autres étant
assurés par des programmes utilisateurs – abstraction simple. Performance réduite mais plus de fiabilité.
▪ Noyaux hybrides (Windows NT par exemple) : intermédiaire entre les deux catégories précédentes.
▪ Autres catégories : noyaux mégalithiques (version extrême de noyaux monolithiques), exokernel (version
extrême de micro-noyaux).
Anneaux mémoire
▪ L'OS doit garantir que seuls les programmes systèmes ont accès aux périphériques ou aux registres de
gestion de la mémoire virtuelle. Pour cela, les processeurs actuels incorporent une technique : les
▸ Hardware anneaux mémoires.
▸ OS Généralités ▪ Le processeur gère deux niveaux de privilèges : un mode noyau pour les programmes systèmes, où les
instructions d'accès aux périphériques peuvent s’exécuter, et un mode utilisateur pour les applications,
où ces opérations sont interdites.
▪ Ces anneaux mémoire/niveaux de privilèges, sont gérés en partie par le processeur. Celui-ci contient
un registre qui précise s'il est en espace noyau ou en espace utilisateur. À chaque accès mémoire ou
exécution d'instruction, le processeur vérifie si le niveau de privilège permet l'opération demandée.
Source : Wikipédia
Système de fichiers
➢ Terminologie :
▪ Périphérique de stockage : contient les données et les métadonnées.
▸ Hardware
▪ Fichier de données : contient les données (textes, images, vidéos, audios, etc.).
▸ OS Généralités ▪ Métadonnées : données à propos des données, utiles à leur description et à leur structuration (par exemple
pour un fichier de données : nom, type, taille, droits, dates, adresse, etc.).
➢ Hiérarchie :
▪ Sous Windows : chaque périphérique possède sa propre racine (identifiée par une lettre).
▪ Sous Unix : chaque périphérique ancre sa racine dans un répertoire (hiérarchie unique).
▸ Hardware
▸ OS Généralités
Source : cnrs
▸ Hardware
▸ OS Généralités
Source : cnrs
▪ Linux Standard Base, développé par l'association Free Standard Group, est en fait un ensemble d'API,
de bibliothèques et de standards d'interopérabilité, basé sur les spécifications POSIX qui permettent
▸ Hardware aux développeurs de ne faire qu'un seul portage. Ce portage sera ainsi standard entre toutes les
distributions, ce qui accélère le développement et permet d'utiliser n'importe quel programme sur
▸ OS Généralités n'importe quelle distribution.
▪ Cela favorise la création de programmes et la compatibilité entre les différentes distributions, donc
la possibilité pour l'utilisateur de retrouver sous n'importe quelle distribution conforme LSB les
programmes qu'il utilise.
▪ De même, un développeur ou une entreprise créant un logiciel verra sa diffusion grandement facilitée,
car compatible avec toutes les distributions conforme LSB.
▪ La certification LSB se fait par l'Open Group, en collaboration avec le Free Standard Group.
▪ La LSB spécifie par exemple:
✓ Un ensemble de bibliothèque standards.
✓ Un nombre de commandes et d’utilitaires qui étendent le standard POSIX.
✓ La structure de la hiérarchie du système de fichiers.
✓ Les différents run levels.
✓ Plusieurs extensions à X Window System.
Linux Architecture
▸ Hardware
▸ OS Généralités
http://univermagg.com
Filesystem Hierarchy Standard (« norme de la hiérarchie des systèmes de fichiers », abrégé en FHS) définit
l'arborescence et le contenu des principaux répertoires des systèmes de fichiers des systèmes d'exploitation GNU/Linux
▸ Hardware et de la plupart des systèmes Unix. De nombreuses distributions ne respectent pas strictement le standard.
▸ OS Généralités
Runlevel / Init
▪ Le run level, ou niveau de fonctionnement, est un chiffre (ou une lettre) utilisé par le processus init des systèmes
de type Unix pour déterminer les fonctions activées.
▸ Hardware ▪ Le run level varie généralement de 0 à 6 ou parfois S (single User). Chacun correspond à un ensemble d'applications à
▸ OS Généralités mettre en marche. En général, plus le run level est élevé, plus il y aura de fonctions actives.
Runlevel Description
0 Arrêt
6 Redémarrage
Runlevel / Systemd
▪ Systemd est un remplaçant du démon init system V pour Linux. Il a pour but d'offrir une meilleure gestion des
dépendances entre services, ainsi que de permettre le chargement en parallèle des services au démarrage.
▸ Hardware
▪ Cela permet réduire le temps de démarrage du système et de lancer moins de processus.
▸ OS Généralités ▪ Les distributions Fedora, Mageia, Open SUSE et Debian ont adopté ce système par défaut dans leurs distributions
respectives. Ubuntu utilise upstart (abandonné, remplacé par systemd) et Gentoo utilise OpenRC.
Source: https://wiki.archlinux.fr/Systemd
Systemd
systemd fournit un large panel de commandes qui vous permettent d'avoir des informations ou de modifier l'état de
votre système. Sans être exhaustif, voici les plus importantes :
▸ Hardware ✓ systemctl : contrôle systemd et gère les unités.
▸ OS Généralités ✓ journalctl : consultation du journal de systemd.
✓ loginctl : contrôle des sessions utilisateurs (systemd-logind).
✓ systemd-networkd : gestionnaire des connexions réseaux.
Systemd - System
Commande Description
systemctl reboot Redémarrer le système
Systemd - Unité
Une unité représente un fichier de configuration. Entre autres, une unité peut être un service (*.service), un target
(*.target), un montage (*.mount), un socket (*.socket)…
▸ Hardware
▸ OS Généralités Commande Description
systemctl list-units Liste les unités
Systemd - Target
Commande Description
▸ Hardware systemctl show -p Wants -p Requires Vous pouvez voir ce que regroupe un target
▸ OS Généralités <target>
systemctl isolate multi-user.target Changement de Target
telinit 3
systemctl isolate runlevel3.target
/usr/lib/systemd/system/default.target Fichier qui contient le target par défaut (graphical par défaut si
interface graphique)
systemctl set-default -f multi-user.target Pour spécifier un autre niveau par défaut
Systemd – Debug/Tools
Commande Description
▸ Hardware systemctl --failed Lister les erreurs de lancement au démarrage
▸ OS Généralités
systemd-analyze Permet d’avoir un aperçu de ce qui est démarré et le temps que
ça prend
systemd-analyze blame Permet d’avoir un aperçu détaillé de ce qui est démarré et le
temps que ça prend
La console
▪ Malgré les environnements graphiques, l’utilisation de l’interpréteur de commandes est nécessaire pour des actions
d’administrations plus complexes. Connaître la CLI (Command Line Interface) est fondamental pour tout administrateur.
▸ Hardware
▪ Ce dernier permet d’exécuter des instructions via le clavier ou au sein d’un script et en retourne des résultats.
▸ OS Généralités ▪ Cet interpréteur est appelé Shell (coquille), en lien avec l’image du Kernel (noyau) entouré par la coquille, le shell.
▪ Le shell est donc une interface fonctionnant en mode texte entre le noyau Linux et les utilisateurs, voire les applications.
Les shells
▪ Il existe plusieurs shells, chacun disposant de spécificités propres. Le Bourne Shell (sh) est le shell le plus
connu et le plus courant sur les Unix. Le C-Shell (csh) reprend la structure du langage C. Le Korn Shell
(ksh) est une évolution du Bourne Shell. Le Z-Shell (zsh) est lui-même une évolution du Korn Shell.
▸ Hardware
▪ Le shell de référence sous Linux se nomme le Bourne Again Shell (bash). Voici une liste non exhaustive
▸ OS Généralités d’interpréteurs de commandes que vous pouvez rencontrer sous Linux :
✓ Sh : Thompson Shell (n’existe plus)
✓ Sh: Bourne Shell (a remplacé le précédent)
✓ Bash: Bourne Again Shell
✓ Ksh: Korn Shell
✓ Csh: C Shell
✓ Zsh: Z shell
✓ Etc..
▪ La liste des shells actuellement présents sur votre installation Linux est dans le fichier /etc/shells.
L’inode
▪ Un nœud d'index ou inode est une structure de données contenant des informations à propos d'un fichier
stocké dans certains systèmes de fichiers (notamment de type Linux/Unix).
▸ Hardware ▪ À chaque fichier correspond un numéro d'inode (i-number) dans le système de fichiers dans lequel il réside,
unique au périphérique sur lequel il est situé.
▸ OS Généralités
▪ Chaque fichier a un seul inode, même s'il peut avoir plusieurs noms (chacun de ceux-ci fait référence au même
inode). Chaque nom est appelé link.
▪ Les inodes peuvent, selon le système de fichiers, contenir aussi des informations concernant le fichier, tel que
son créateur (ou propriétaire), son type d'accès (par exemple sous Unix : lecture, écriture et exécution), etc.
bob@machine:/home/bob$ ls –i fichier
X Windows System
▪ Unix et Linux disposent d’une architecture graphique totalement différente des autres systèmes d’exploitation dont
l’interface graphique est intégrée au plus profond.
▪ Le système graphique de base s’appelle, X Windows System, X11 ou tout simplement X.
▸ Hardware
▪ X est un système graphique complet chargé de dessiner et de gérer les évènements des composants habituels d’un
▸ OS Généralités environnement graphique utilisateur (Graphical User Interface): fenêtres, boutons, menus, listes, cases à cocher,
ascenseur, curseur de souris etc.
▪ X peut afficher et gérer ces composants graphiques mais n’est pas chargé de les mettre en place. X ne gère que les
interactions entre l’homme et la machine.
Gestionnaire de fenêtre
▪ Comme X ne fournit pas que le nécessaire de base, il dessine la fenêtre mais ce n’est pas lui qui détermine comment
doivent être dessinés ces éléments. Un autre programme client de X doit dire au serveur comment dessiner la fenêtre:
c’est le gestionnaire de fenêtre. Le serveur X affiche le résultat dessiné par ce gestionnaire: fenêtres, sélections,
▸ Hardware
déplacements et décorations (styles, couleurs etc..).
▸ OS Généralités ▪ Il existe une grande variété de gestionnaire de fenêtre, certains sont très simples et se limitent au strict minimum,
d’autres sont très complets (thèmes, menus contextuels, panneaux de configurations).
TWM
Widgets et toolkits
▪ Un élément d’interface graphique (bouton, menu, champ de saisie, etc.) s’appelle un widget (Windows
Gadget) soit un gadget pour fenêtres. Une bibliothèque graphique en contient plusieurs.
▸ Hardware ▪ La bibliothèque contient à la fois les fonctions pour dessiner les widgets et les fonctions pour les gérer.
▸ OS Généralités Lorsqu’une bibliothèque contient un kit complet et étendu de widget, on la nomme la nomme Widget
toolkit ou toolkit.
▪ Il en existe plusieurs :
✓ Xt (Xtoolkit): toolkit par défaut de X Window.
✓ MOTIF: longtemps utilisé, il est standard POSIX IEEE. Cependant propriétaire jusqu’en 2000 les
développeurs en ont créés deux autres.
✓ GTK (Gimp toolkit): il a été créé pour dessiner l’interface graphique de Gimp. Devenant de plus en
plus performant, de nombreux développeurs l’ont repris pour leur besoin. C’est la bibliothèque
par défaut de l’environnement de bureautique GNOME. Cette bibliothèque est développée en C.
✓ QT: développé en langage C ++ mais peut être exploitée dans une dizaine de langages. En plus des
fonctions de dessin et de gestion des widgets, QT propose un environnement complet de
développement d’applications graphiques et non-graphiques: Base de donnée SQL, XML,
multithreading, gestion de fichiers, internationalisation etc. QT est utilisé par l’environnement
bureautique KDE.
✓ Etc.
Bureaux virtuels
X Window permet l’utilisation de plusieurs espaces de travail dans une même session.
▸ Hardware
▸ OS Généralités
Environnements de bureau
▪ En 1996, Linux est parfaitement mûr pour les entreprises mais il reste un marché a conquérir, les PC de bureau.
▸ Hardware ▪ Les environnements graphiques Unix et Linux ne peuvent absolument pas rivaliser en termes de convivialité et d’offre
logicielle grand public avec les systèmes de Microsoft et de Apple. Tout est à faire: Il faut rattraper les concurrents,
▸ OS Généralités faire mieux et innover.
▪ Ce travail ne décourage pas certains groupes de développeurs. Puisque Linux n’est pas assez convivial pour le grand
public, il faut créer un environnement bureautique graphique adapté aux besoins. Deux équipes démarrent des
projets à quelques mois d’intervalle, KDE (octobre 1996) et GNOME (Aout 1997).
Projet Freedesktop
▪ Les développeurs de KDE et de GNOME ont décidé de travailler sur une base commune de configuration pour une
meilleure intégration des applications GNOME sous KDE et réciproquement.
▸ Hardware ▪ Le résultat est Freedesktop, une zone de communication et de collaboration informelle destinée à travailler à
▸ OS Généralités l’interopérabilité des divers environnements graphiques pour Linux et Unix.
Xorg
▪ Xorg (fork de XFree86 depuis 2004) est toujours l’environnement X Window principal de Linux. Ce logiciel propose une
implémentation libre du protocole X11 datant des années 80.
▸ Hardware ▪ Les usages ont beaucoup changé depuis, avec la généralisation des compositeurs graphiques avec des effets visuels
▸ OS Généralités avancés pour afficher les fenêtres, et donc un rendu complexe. Cela n'était pas du tout optimal, le protocole X11 n'ayant
évidemment pas été conçu pour ça.
▪ De plus, X11 pose un problème de sécurité, puisque les informations sont échangées (entre les fenêtres/applications)
sans aucun souci de confidentialité, autorisant des applications à en "espionner" d'autres…
Wayland
▪ Un nouveau projet de protocole de serveur d'affichage (Wayland) permettant à un compositeur (Window manager)
de communiquer avec ses clients fait son apparition depuis 2008. Wayland est aussi le nom de la librairie
implémentant ce protocole.
▸ Hardware
▪ Wayland lui, isole les entrées/sorties de chaque fenêtre, et limite la quantité de code exécutée en tant que root.
▸ OS Généralités
▪ L'architecture de Wayland optimise le fonctionnement des compositeurs et facilite le rendu aujourd'hui complexe de
l'image des fenêtres, en sécurité et avec de meilleures performances.
▪ Les environnements GNU/Linux majeurs, tels que Gnome et KDE, supportent ou prévoient de supporter Wayland. Un
compositeur nommé Weston a été développé en même temps que Wayland pour servir de référence en terme
d'implémentation du protocole.
https://wayland.freedesktop.org/
▪ L’identification, c’est savoir qui est qui, afin de déterminer les droits de la personne qui se connecte.
Un utilisateur est identifié par un login.
▸ Hardware ▪ L’authentification, c’est apporter la preuve de qui on est, par exemple, via un secret partagé entre
▸ OS Généralités l’utilisateur et le système. L’utilisateur est authentifié par un mot de passe.
▪ Un utilisateur est l’association d’un login, d’un UID (user ID) et d’au moins un GID (group ID).
▪ L’utilisateur dispose des attributs de base suivants:
✓ Login
✓ Mot de passe
✓ UID/GID
✓ Descriptif
✓ Répertoire de connexion
✓ Commande de connexion
▪ Les UID d’une valeur < 100 sont en principe associés à des comptes spéciaux avec des droits étendus
(root = 0). Selon les distributions, les UID à partir de 500, 1000 et ce jusqu’à 60000, sont des uids sans
pouvoirs particuliers.
▪ Le fichier /etc/passwd contient la liste des utilisateurs du système local. Il est lisible par tout le monde. Les
▸ Hardware informations qu’il contient sont publiques (Login, Shadow, UID, GID, commentaire, répertoire, shell)
▸ OS Généralités ▪ Le fichier /etc/group contient la définition des groupes d’utilisateurs et pour chacun la liste des utilisateurs dont il
est le groupe secondaire.
▪ Le fichier /etc/shadow accompagne le fichier /etc/passwd. Il contient le condensat des mots de passe utilisateurs
et les informations associées (validité..). L’algorithmes de hash peut être changé via les fichiers :
✓ /etc/login.defs : ENCRYPT_METHOD SHA512»
✓ le module PAM /etc/pam.d/common-password: password [success=1 default=ignore]
pam_unix.so obscure sha512
▪ La commande passwd permet de gérer les mots de passe mais aussi les autorisations de connexion et la plupart
▸ Hardware des champs présents dans /etc/shadow.
▸ OS Généralités ▪ Les modules PAM (Pluggable Authentification Module) peuvent imposer des contraintes pour le choix du mot
de passe : longueur, dictionnaire etc.
▪ La commande pwck effectue une vérification des fichiers /etc/passwd et /etc/shadow et reporte les erreurs. La
commande grpck fait la même chose pour les groupes.
▪ Vérifier les connexions : lastlog –u username | Last
Le Cloud correspond à l’accès des services informatiques via Internet à partir de fournisseur.
Dans le cloud, l’ensemble de matériels, de raccordements réseau et de logiciels fournissant des services
▸ Cloud
qu'individus et collectivités peuvent exploiter n'importe où dans le monde. Dans cette philosophie, la puissance
▸ Couche d’abstraction de calcul est remplacée par la disposition de la puissance d’un fournisseur.
▸ Conteneurs
▸ Virtualisation Le Nuagique se caractérise par plusieurs principes :
• les ressources en libre-service : avec adaptation automatique à la demande de la capacité de stockage et
puissance de calcul, selon le besoin du consommateur, tant qu'il peut payer. En cloud computing la demande
est automatique et la réponse immédiate ;
• l’ouverture : les services de cloud computing sont accessibles via l'Internet, via des techniques standardisées,
HTTPS everywhere ;
• la mutualisation : elle permet de combiner des ressources hétérogènes (matériel, logiciel, trafic réseau) pour
servir plusieurs consommateurs à qui les ressources sont automatiquement attribuées ;
▸ Cloud
▸ Couche d’abstraction
▸ Conteneurs
▸ Virtualisation
https://wikitroll.org/
Le Nuagique PaaS
▪ Plate-forme en tant que service est l'un des types de Cloud, destiné à héberger des applications. L'entité
▸ Cloud cliente (développeurs ou entreprise) maintient les applications proprement dites. Le fournisseur cloud
maintient la plate-forme d'exécution de ces applications : le matériel du ou des serveurs (la carte mère, la
▸ Couche d’abstraction mémoire vive…), les logiciels de base (c'est-à-dire le ou les systèmes d'exploitation, le ou les moteurs de
▸ Conteneurs bases de données…) et l'infrastructure (de connexion au réseau, de stockage, de sauvegarde).
▸ Virtualisation ▪ La démocratisation des Conteneurs Linux notamment via le projet open-source Docker a permis
l’expansion des offres de type PaaS.
Le Nuagique IaaS
Infrastructure en tant que service est un modèle de Cloud qui apporte la gestion du matériel serveur,
des couches de virtualisation, du stockage, du réseaux par le fournisseur. Le client n’a plus qu’à gérer le
Middleware des serveurs, et les logiciels applicatifs (programmes, configurations, services applicatifs)
C'est un modèle où l'entreprise dispose sur abonnement payant d'une infrastructure informatique
(serveurs, stockage, sauvegarde, réseau) qui se trouve physiquement chez le fournisseur qui est aussi
responsable pour la sécurité de l'infrastructure.
Les fournisseurs de services proposent différents types d’IaaS: des infrastructures virtuels
développées à partir de solutions Qemu-KVM, Xen, Vmware et HyperV.
Wine
▪ Les technologies de couche d’abstractions sont des programmes qui s’interfacent avec des composants systèmes afin de
modifier le comportement du processus. Ils permettent sans compartimentation, ni virtualisation de prendre le contrôle
▸ Cloud du flux d’exécution lorsque le processus demande des ressources externes au programme.
▸ Couche d’abstraction ▪ Le cas de Wine permet à des programmes compilés au format PE32 d’être exécuté sur les systèmes Linux. Wine détourne
les appels systèmes, le chargement de bibliothèque, l’appel de fonction permettant de simuler sans émuler, ni virtualiser,
▸ Conteneurs un environnement de type Windows.
▸ Virtualisation
https://www.playonlinux.com/fr
https://www.winehq.org/ https://www.cedega.com/
https://lutris.net/
Cedega
▪ Cedega est un logiciel propriétaire de couche d’abstraction basé sur wine pour simuler des programmes Windows sur Linux.
Il a pour but d’exécuter des jeux vidéos sur linux.
▸ Cloud ▪ Visant à obtenir une large compatibilité avec ces derniers, son développement implique, entre autres, l'implémentation la
plus large possible de l'interface de programmation DirectX.
▸ Couche d’abstraction
▸ Conteneurs
▸ Virtualisation
▪ L'environnement d'exécution du sous-système est fourni par deux fichiers : psxss.exe et psxdll.dll.
Une application POSIX utilise psxdll.dll pour communiquer avec le sous-système tout en
communiquant avec posix.exe afin de fournir des capacités d'affichage sur le bureau Windows.
▪ Le sous-système POSIX a été remplacé dans Windows XP et Windows Server 2003 par "Windows
Services for UNIX", (SFU) qui est en partie basé sur le code OpenBSD et d'autres technologies
développées par Interix, une société achetée plus tard par Microsoft. SFU a été supprimé des versions
ultérieures de Windows 8 et Windows Server 2012. SFU est logiquement, mais pas formellement,
remplacé par le sous-système Windows pour Linux (WSL) dans la mise à jour anniversaire de
Windows 10 et Windows Server 2016 version 1709 respectivement.
▪ L’espace de protection de mémoire en anneaux 3 est un moyen sûr et sécurisé d'exécuter des processus. Si un
programme a une erreur fatale, le système fonctionne toujours (sauf pour systemd).
▸ Cloud ▪ UML permet d’exécuter le noyaux linux en mode utilisateur (ring 3) pour lancer d’autres systèmes
▸ Couche d’abstraction d’exploitation de type linux. UML est une technologie ancienne, on lui préférera la virtualisation.
▸ Conteneurs
▸ Virtualisation
Définition Conteneurs
▪ Un conteneur est une enveloppe virtuelle qui permet de distribuer une application avec tous les éléments
dont elle a besoin pour fonctionner : fichiers source, environnement d'exécution, librairies, outils et fichiers.
▸ Cloud ▪ Ils sont assemblés en un ensemble cohérent et prêt à être déployé sur un serveur et son système
▸ Couche d’abstraction d'exploitation.
▪ Contrairement à la virtualisation de serveurs et à une machine virtuelle, le conteneur n’intègre pas de noyau,
▸ Conteneurs
il s’appuie directement sur le noyau de l'ordinateur sur lequel il est déployé.
▸ Virtualisation
▪ La fonctionnalité chroot (pour « change root ») permet à une application de changer de racine sur Linux. Une
application cible un dossier qui devient la nouvelle arborescence du système de fichier pour ce processus et ses
nouveaux processus enfants. Le dossier cible doit contenir toutes les ressources fichiers de l’application pour que
▸ Cloud celle-ci fonctionne correctement.
▸ Couche d’abstraction ▪ On peut monter un disque dur qui contient un autre linux et utiliser la commande chroot pour effectuer des
▸ Conteneurs opérations de maintenance sur un autre linux. Cette technique permet de réparer son système sans le démarrer.
▪ Les conteneurs utilisent chroot pour changer leurs racines sur le système de fichier du conteneur.
▸ Virtualisation
BSD Jails
▪ Les BSD Jails (« Jail » signifie prison en anglais) sont une technologie propre au système d'exploitation
FreeBSD, qui permettent de compartimenter des processus et leurs descendants.
▸ Cloud ▪ BSD Jail recopie les fonctionnalités de chroot et y applique plus de restriction. On y retrouve des
outils de gestion des systèmes sous Jail :
▸ Couche d’abstraction
➢ Installer un système
▸ Conteneurs
▪ bsdinstall jail /here/is/the/jail
▸ Virtualisation ➢ Démarrer un jail
▪ service jail start www
➢ Stoper un jail
▪ service jail stop www
▪ Les Jails permettent de contraindre l'exécution d'une application sensible (une application tournant
avec des privilèges importants, comme un serveur HTTP par exemple) ; cela permet de garder le
système hôte sain en cas de problèmes avec l'application « emprisonnée » à la suite d'une activité
malveillante ou tout simplement lors de tests/debug.
▪ Autre particularité des jails, les images dites virtuelles systèmes permettent l'exécution de multiples
applications ; les objectifs sont les mêmes que précédemment, mais à plus large échelle.
▪ Les cgroups (control groups) sont une fonctionnalité du noyau linux pour limiter, compter et isoler l'utilisation
des ressources (processeur, mémoire, utilisation disque, etc.).
▸ Cloud ✓ Limitation des ressources : des groupes peuvent être mis en place afin de ne pas dépasser une limite de
▸ Couche d’abstraction mémoire
✓ Priorisation : certains groupes peuvent obtenir une plus grande part de ressources processeur ou de
▸ Conteneurs
bande passante d’entrée-sortie
▸ Virtualisation ✓ Comptabilité : permet de mesurer la quantité de ressources consommées par certains systèmes en vue
de leur facturation par exemple
✓ Isolation : séparation par espace de nommage pour les groupes, afin qu'ils ne puissent pas voir les
processus des autres namespace, ainsi que leurs connexions réseaux ou leurs fichiers
▪ Les Namespaces sont une fonctionnalité du noyau Linux qui permettent à différents processus d'avoir chacun une
vue différente sur le système de fichier. Normalement, vous n'avez qu'une seule et unique arborescence de
fichiers avec les mêmes montages, la même arborescence de processus et les mêmes droits (UID et GID) pour
▸ Cloud l’ensemble du système.
▸ Couche d’abstraction ▪ Les Namespaces définissent un nouveau point de montage de la racine, peuvent exclure des dossiers (point de
▸ Conteneurs montage spécial), définissent un sous ensemble d’arborescence de processus (chaque processus à son PID de
Namespaces en plus du PID réel), une sous gestion de droit UID et GID et un sous gestionnaire IPC.
▸ Virtualisation
▪ Les Namespaces peuvent aussi appliquer des changements réseaux en créant une nouvelle interface réseau et en
changeant le nom d’hôte.
Linux – seccomp
▪ Seccomp permet a un processus d'effectuer une transition unidirectionnelle vers un état de sécurité dans
lequel il ne peut plus effectuer d'appel système excepté exit(), sigreturn(), read() and write() sur des
descripteurs déjà ouvert.
▸ Cloud ▪ Si le processus essaie d'effectuer un autre appel système, le noyau terminera le processus avec le signal SIGKILL
▸ Couche d’abstraction or SIGSYS2,3.
▪ Ce mécanisme ne virtualise pas les ressources systèmes mais isole entièrement les processus les uns par
▸ Conteneurs
rapport aux autres.
▸ Virtualisation ▪ Seccomp via BPF étant paramétrable, il est possible d’effectuer des listes blanches ou noires des appels
systèmes.
▪ Dans les nouvelles versions, le gestionnaire de démon systemd permet de configurer des services et des
conteneurs en utilisant les namespaces et cgroups. L’outil systemd-nspwan permet de créer un conteneur
entier et de bloquer le service dans une nouvelle arborescence.
▸ Cloud ▪ D’autres options permettent de cacher des répertoires, donner un accès lecture à un répertoire et mettre une
▸ Couche d’abstraction limite de mémoire et CPU à votre service. Grâce à seccomp, systemd possède des fonctionnalités similaires
▸ Conteneurs pour bloquer les appels systèmes d’un service avec l’option SystemCallFilter.
▸ Virtualisation
Linux - systemd-nspawn
▪ À la marge et peu connu, systemd peut gérer des conteneurs : systemd-nspawn à un positionnement particulier,
une sorte de chroot sous stéroïdes, un conteneur « système ».
▸ Cloud ▪ systemd-nspawn peut être utilisé pour exécuter une commande ou un système d'exploitation dans un conteneur
namespace. Il est plus puissant que chroot car il virtualise entièrement la hiérarchie du système de fichiers, ainsi
▸ Couche d’abstraction que l'arborescence des processus, les différents sous-systèmes IPC et le nom d'hôte et de domaine.
▸ Conteneurs
▸ Virtualisation
Linux - systemd-nspawn
▸ Cloud
▸ Couche d’abstraction
▸ Conteneurs Ring 3
▸ Virtualisation
Ring 0 [
Copyright © Elysium Security Version 1.0 – 2020/2021
71
Conteneurs
Linux - OpenVZ
▪ OpenVZ est un outil obsolète de conteneur sur linux. Il fonctionne avec un kernel modifié proche des
fonctionnalité en version 2.6.X de Linux (cette version ne gère que 64 Go de mémoire vive).
▪ OpenVZ permet d'exécuter de multiples instances de systèmes d'exploitation isolés, qualifiées de serveurs
▸ Cloud privés virtuels (VPS) ou environnements virtuels (VE).
▸ Couche d’abstraction
▸ Conteneurs
▸ Virtualisation
Linux - LXC
Linux - Docker
▪ Comme LXC, Docker reprend les fonctionnalités des namespaces et cgroups pour les environnements conteneurisés.
L’approche de Docker est différente de LXC. Dans LXC nous avons un système d’exploitation complet qui tourne et
évolue en permanence. Dans Docker, nous avons des images fixes non évolutives qui contiennent un ensemble de
▸ Cloud programme pour exécuter une application.
▸ Couche d’abstraction ▪ Lors de l’exécution des images, Docker applique un OverlayFS laissant l’image en lecture seule et l’écriture ou la
modification dans chemin spécifique au conteneur. Si le conteneur s’arrête, les modifications au sein du système de
▸ Conteneurs fichier sont perdues. Il est donc possible de lancer plusieurs fois une image qui s’exécute dans un conteneur différent
▸ Virtualisation pour chaque instance.
▪ L’OverlayFS permet des points de montage multiples sur le même dossier permettant de fusionner des fichiers et
dossiers. Chaque modification se retrouve sur la partition de montage la plus haute. Les autres points de montage
sont en lectures seules.
▸ Cloud
▪ La création d’image Docker se base notamment sur la fusion des points de montage (les successions de commande
▸ Couche d’abstraction dans le Dockerfile) ou via la commande docker commit.
▸ Conteneurs ▪ Docker gère la persistance par un système de volume. Les volumes sont des points de montage dans le conteneur
différents de l’application de l’OverlayFS. Les volumes sont généralement rattachés au système de fichier hôte.
▸ Virtualisation
Modification
▪ Pour communiquer entre conteneurs et vers l’extérieur Docker crée des bridges permettant l’isolation de la partie
réseau des conteneurs. Par défaut, il n’existe qu’un bridge, c’est à l’utilisateur ou aux applications tiers de
configurer de nouveau bridge. Docker manipule en partie le firewall pour appliquer des restrictions ou
▸ Cloud redirections de flux réseaux.
▸ Couche d’abstraction
▪ Il est possible de lier des ports de la machine hôte ou des conteneurs vers un conteneur. Voir exemple ci-dessous.
▸ Conteneurs
▸ Virtualisation
Dans les faits, Docker se manipule en lançant un docker build ou en sélectionnant une image dans son catalogue en ligne.
LXC vs Docker
▪ LXC contient un système entier dans chaque conteneur (excepté le kernel). Les principes d’administration d’un
système d’exploitation restent les mêmes que sur les systèmes standards.
▪ La philosophie de Docker est différente dans son approche de contenerisation. Avec des fonctionnalité de
▸ Cloud gestionnaire de version, des connexions entre conteneur et sa gestion de fichier, Docker est outil orienté devOps.
▸ Couche d’abstraction ▪ En comparaison LXC est plus proche d’un mode traditionnel de gestion de VPS. Là où Docker permet le déploiement
rapide d’application compartimentée et orchestrée.
▸ Conteneurs
▸ Virtualisation
Kubernetes
▪ Kubernetes abrégé k8s est un orchestrateur de conteneur écrit en langage de programmation Go. Il gère le placement des
conteneurs, le failover, l’affectation de ressources, la gestion réseau des conteneurs, la supervision, la mise à échelle dans un
▸ Cloud cluster (sur plusieurs machines).
▪ K8S s’appuie sur Docker pour la gestion des conteneurs sur l’hôte mais également sur des alternatives à docker comme CR
▸ Couche d’abstraction ▪ I-O, containerd, Kata container..
▸ Conteneurs ▪ Pour gérer l’ensemble du parc, k8s utilise des machines de type « node master » qui organisent le travail des autres
machines nommées « node worker ».
▸ Virtualisation
Kata Containers
▪ Kata Containers est un projet open source qui crée un environnement d'exécution de conteneur sécurisé avec des
▸ Cloud machines virtuelles. L’isolation est plus forte en utilisant la technologie de virtualisation matérielle comme deuxième
couche de défense.
▸ Couche d’abstraction
▪ Les machines virtuelles n’embarquent que le noyaux linux et les outils nécessaires pour la gestion de conteneurs.
▸ Conteneurs ▪ Kata Containers permet d'améliorer la sécurité dans l'écosystème des conteneurs en ajoutant des VM et des hyperviseurs
▸ Virtualisation légers comme couche d'isolation des charges de travail. Annoncé il y a un an et demi à la conférence KubeCon, ce projet est
développé par des programmateurs employés par 14 entreprises différentes. La promesse ? La vitesse des conteneurs, avec
un boot sous la seconde associée à la sécurité des machines virtuelles.
Définitions
▪ Une machine virtuelle est une simulation de l’exécution d’un système d’exploitation. Les composants aussi bien
matériels que logiciels peuvent être émulés afin de garantir la cohérence du fonctionnement du système
▸ Cloud d’exploitation. On retrouve plusieurs logiciels capables de lancer des machines virtuelles notamment les Hyperviseurs.
▸ Couche d’abstraction
▪ L’Hyperviseur est une plate-forme de virtualisation qui permet à plusieurs systèmes d'exploitation de travailler sur
▸ Conteneurs une même machine physique en même temps. On distingue plusieurs classes d’Hyperviseur.
▸ Virtualisation
Hyperviseur de type 1
▪ L’hyperviseur de type 1 (Natif ou « bare metal ») est un logiciel qui s’exécute dans un mode privilégié au niveau
matériel. Ce mode lui permet de prendre la main sur les systèmes d’exploitations. L’hyperviseur est intiment lié au
processeur.
▸ Cloud ▪ Le code d’un hyperviseur doit être compatible avec le processeur sur lequel, il tourne. Pour Intel ou AMD, on
▸ Couche d’abstraction retrouve les technologies sous-jacentes pour l’hyperviseur se nommant AMD-V et Intel VT-x. La plupart des logiciels
hyperviseurs gèrent ces deux technologies. Les systèmes d’exploitation qui tournent dans ce mode doivent être
▸ Conteneurs aussi compatibles avec l’hyperviseur.
▸ Virtualisation ▪ Un driver de virtualisation pour chaque hyperviseur doit être intégré dans les systèmes d’exploitation. On dit alors
que les machines virtuelles sont conscientes d’être virtualisées (Paravirtualisation).
▪ Des hyperviseurs sont compatibles avec des systèmes non conscients. Dans ce cas, un logiciel d’émulation
matérielle est nécessaire en plus de l’hyperviseur.
▪ Pour ce qui est des hyperviseur nous retrouvons le VMWare ESXi de VMWare, Xen, Qemu-KVM hyperviseur
communautaire Linux et Hyper-V de Microsoft.
Hyperviseur de type 2
▪ L’hyperviseur de type 2 (Hosted) exécute des machines virtuelles dans un système d’exploitation hôte.
L’hyperviseur sera un processus en ring 3 qui contiendra l’ensemble du système d’exploitation ainsi que de
▸ Cloud l’émulation matérielle.
▸ Couche d’abstraction
▪ Pour ce qui est des hyperviseur de type 2 nous retrouvons le VMWare Workstation de VMWare, VirtualBox
▸ Conteneurs d’Oracle, Qemu (sans KVM), etc.
▸ Virtualisation
KVM
▪ KVM (pour Kernel-based Virtual Machine) est un hyperviseur open source de type 1 pour Linux.
▸ Cloud KVM est disponible depuis la version 2.6.20 du noyaux Linux. Il fonctionne sur les processeur Intel
▸ Couche d’abstraction grâce Intel VT ou processeur AMD grâce à AMD-V . Depuis, KVM supporte les architectures de
processeurs suivants Power PC3, IA-64.
▸ Conteneurs
▪ Les processeurs Intel et AMD intègrent des mécanismes d'isolation qui permettent à un système
▸ Virtualisation d’exploitation virtualisé d'être exécuté directement sur le processeur quels que soient les anneaux
de protection qu'il requiert pour fonctionner, tout en assurant la protection contre la lecture et
l'écriture dans la mémoire n'appartenant pas à la machine virtuelle.
▪ Cela est principalement possible grâce à une « MMU » dédiée à chaque machine virtuelle sur le
processeur et grâce à une redirection des interruptions matérielles vers l'hyperviseur de machines
virtuelles (KVM en l'occurrence) afin d'émuler le matériel dont a besoin le système.
▪ Le module KVM se décline en deux sous-modules : kvm-intel et kvm-amd.
▪ Les pilotes Virtio permettent l’extension de fonctionnalité de KVM. Ce mécanisme permet une
vitesse d'exécution accrue car il n'est plus nécessaire d'émuler des périphériques matériels.
KVM
▸ Cloud
▸ Couche d’abstraction
▸ Conteneurs
▸ Virtualisation
Xen
▸ Cloud ▪ Xen est un hyperviseur de type 1. Il est intégré dans linux à travers un patch kernel. Xen
sépare les machines virtuelles sous forme de « domaine » (dom0, dom1, dom2). Dom0
▸ Couche d’abstraction
correspond au système natif qui permet de contrôler l’hyperviseur.
▸ Conteneurs ▪ Xen possède trois techniques permettant d’effectuer des E/S sur les systèmes
▸ Virtualisation d’exploitation virtualisés :
✓ Le modèle de pilote PV partagé: un pilote de périphérique frontal virtuel
communique avec un pilote de périphérique principal virtuel qui à son tour
communique avec le périphérique physique via le pilote de périphérique (natif).
Cela permet à plusieurs machines virtuelles d'utiliser la même ressource matérielle
tout en pouvant réutiliser le support matériel natif.
✓ E/S basées sur l'émulation de périphérique: les invités HVM émulent des
périphériques matériels dans le logiciel. Dans Xen, QEMU est utilisé comme
émulateur de périphérique.
✓ Passthrough: vous permet de donner le contrôle des périphériques physiques aux
invités. Dans ce mode, les machines virtuelles ont un accès direct aux
périphériques PCI (NIC, contrôleur de disque, contrôleur USB, contrôleur Firewire,
carte son, etc.).
VMWare ESXi
▪ ESXi est un système d’exploitation Linux (distribution basé sur RED Hat) non libre qui intègre un hyperviseur de type 1.
▪ VMware décrit le système ESXi comme similaire à un noeud informatique sans état. Les informations d'état peuvent être
▸ Cloud téléchargées à partir d'un fichier de configuration enregistré.
▸ Couche d’abstraction ▪ Vmkernel, le système d'exploitation d'ESXi, assure directement l'interface avec les agents VMware et les modules tiers.
▸ Conteneurs ▪ Les administrateurs chargés de la virtualisation peuvent configurer ESXi via sa console ou le client VMware vSphere.
▪ ESXi, vSphere client et vCenter sont des composants de VMware vSphere. vSphere client permet aux administrateurs de
▸ Virtualisation se connecter aux serveurs ESXi et d'accéder ou de gérer des machines virtuelles. Le client vSphere est un portail de
gestion HTML5 / Web.
▪ VMware vCenter Server est une application de gestion centralisée qui vous permet de gérer des machines virtuelles et
des hôtes ESXi de manière centralisée. Le client vSphere est à nouveau utilisé pour accéder à vCenter Server et
finalement gérer les serveurs ESXi. vCenter Server est obligatoire pour les entreprises qui ont besoin de fonctionnalités
telles que vMotion, VMware High Availability, VMware Update Manager, VMware Distributed Resource Scheduler
(DRS), etc.
Personne qui
Personne qui se demande ce
squatte l’écran d’un
qu’il a acheté
collègue.
HyperV
▪ Hyper-V est une preuve de concept de Microsoft dans l’univers de la virtualisation, il s’agit d’un hyperviseur de type
1 se lançant à travers le système d’exploitation Windows.
▸ Cloud ▪ Hyper-V fait pareil que son homologue VMWare ESXi en moins performant.
▸ Couche d’abstraction ATTENTION : Si par malchance vous avez activé le service Hyper-V avec vos serveurs Windows sur un disque dur
▸ Conteneurs plateau, surtout ne redémarrez pas le serveur ! Cela pourrait prendre la journée.
▸ Virtualisation
Image de présentation de l’outil Hyper-V sur le site de Microsoft
Microsoft
Vulnérabilité Hyper-V de l’isolation qui n’active
entre machines virtuelles. Une pas ses
machine virtuelle peut en contrôler licences
une autre.
Vulnérabilités
▪ Les vulnérabilités applicatives et matérielles s’appliquent de la même manière sur une machine virtuelle
qu’une machine physique. Les principes de sécurité restent les mêmes.
▸ Risques Virtualisation ▪ Les outils et l’application des directives peuvent changer en matière opérationnelle mais les catégories de
▸ Corruption mémoire faille restent les mêmes. Et les principes de cloisonnement réseaux restent aussi les mêmes.
▸ Kernel et Hyperviseur
“La virtualisation semble avoir de nombreux avantages en matière de sécurité.
Vous avez fumé quelque chose qui altère votre esprit. La virtualisation x86 consiste essentiellement à placer
un autre noyau presque complet, plein de nouveaux bugs, au-dessus d'une architecture x86 désagréable qui
a à peine une protection de page correcte. Ensuite, vous exécutez votre système d'exploitation à côté de ce
tout nouveau tas de merde.
Vous vous êtes fourvoyés. Vous êtes stupide, si vous pensez qu'une collection mondiale d'ingénieurs en
logiciel qui ne peuvent pas écrire des systèmes d'exploitation ou des applications sans failles de sécurité,
peuvent alors écrire soudainement des couches de virtualisation sans failles de sécurité.
Vous avez vu quelque chose sur une étagère, et il y a pleins de jolies couleurs dessus donc vous l'avez
acheté.
C'est ça, la virtualisation x86. “
Citation de Theo de Raadt créateur d’OpenBSD - 2007
Source https://marc.info/?l=openbsd-misc&m=119318909016582
Vulnérabilités « Cloud »
▸ Risques Virtualisation
▸ Corruption mémoire
▸ Kernel et Hyperviseur
threatpost.com
www.infosecmatter.com
Vulnérabilités « Cloud »
▸ Risques Virtualisation
▸ Corruption mémoire
▸ Kernel et Hyperviseur
➢ Une des autres familles de vulnérabilités particulièrement importantes porte sur le mauvais traitement des
▸ Risques Virtualisation données mutualisées.
➢ L’import d’une VM au sein d’une solution IaaS peut être une source de vulnérabilités.
▸ Corruption mémoire
« La faille la plus critique est identifiée sous le nom CVE-2012-3288. Elle est issue d'une validation incorrecte
▸ Kernel et Hyperviseur des données entrantes, lorsque les fichiers de chargement de la machine virtuelle sont contrôlés, précise
VMware. Des pirates peuvent utiliser cette vulnérabilité en corrompant la mémoire et en exécutant du code
arbitraire sur le système hôte » (source : Le monde informatique).
Vulnérabilités de conception
▪ Certaines failles de conception des outils autour de la virtualisation peuvent avoir un impact significatif sur
l’environnement virtualisé.
▸ Risques Virtualisation
▪ VMWare Vsphère expose sur le réseau une interface JMX/RMI qui est synonyme de vulnérabilité RCE.
▸ Corruption mémoire
▸ Kernel et Hyperviseur « Un cryptolocker s'attaque depuis quelques mois à deux produits VMware : ESXi et vCenter. Des entreprises
confirment avoir été victimes de ce ransomware, un fichier texte est placé sur les datastore en demandant 5
bitcoins pour la restitution des données par machine. Voir CVE-2015-2342, CVE-2015-5177, CVE-2015-1047 »
▪ Les vulnérabilités Spectre et Meltdown touchent le pipeline d’exécution des processeurs (Intel et AMD).
L’exploit introduit des échecs dans la gestion de mémoire virtuelle qui ne sont pas exécutés par le
▸ Risques Virtualisation programme mais tout de même interprétés par le processeur. Ces échecs ne devraient avoir aucune
influence sur le flux d’exécution. Cependant le processeur peut interpréter des déplacements du contenu
▸ Corruption mémoire
d’adresses mémoire physiques depuis des processus en mode utilisateur (ring 3).
▸ Kernel et Hyperviseur
▪ Les vulnérabilités Meltdown et Spectre cassent les protections de mémoire en anneaux. Il est donc possible
de lire la mémoire de machine virtuelle depuis un processus d’une autre machine virtuelle.
https://meltdownattack.com/meltdown.pdf
Copyright © Elysium Security Version 1.0 – 2020/2021
96
Rappels corruption mémoire
▪ Lorsque un programme est exécuté par le système d’exploitation, il est entièrement chargé dans la mémoire
vive de la machine (RAM)
▸ Risques Virtualisation ▪ Le flux d’exécution d’un programme manipule donc des zones mémoires (variables du programme, code, I/O, …)
▸ Corruption mémoire ▪ Corrompre la mémoire d’un programme = potentiellement maîtriser son flux d’exécution et donc la capacité
d’exécuter du code arbitraire.
▸ Kernel et Hyperviseur
▪ => Débordements de tampons, de piles, bugs de format, …
▸ Risques Virtualisation
▸ Corruption mémoire
▸ Kernel et Hyperviseur
Exploitation Typique
▸ Charger des opcodes en mémoire (via une entrée aléatoire) puis rediriger le flux d’exécution vers ces
opcodes.
▸ Risques Virtualisation
▸ Corruption mémoire
▸ Kernel et Hyperviseur
AIE
▪ NX Bit: « No eXecute »
▪ DEP: « Data Execution Prevention »
▸ Risques Virtualisation ▪ W^X: « Write XOR Execute »
▸ Corruption mémoire
▪ 3 noms différents pour une même protection.
▸ Kernel et Hyperviseur
▪ Globalement, rend les zones mémoire dans lesquelles il est possible d’écrire non exécutables.
▪ Un attaquant peut charger des opcodes mais n’est plus capable de les exécuter directement.
ASLR
▪ À chaque exécution du programme, ses zones mémoire sont mappées différemment. Il n’est
plus possible de prévoir de manière fiable une adresse ou sauter.
ASLR
▸ Risques Virtualisation ▪ Du fait de la taille des adresses mémoire, l’ASLR est plus efficient sur systèmes 64bits :
▸ Corruption mémoire
▸ Kernel et Hyperviseur
Stack Canary
▪ Protège la mémoire contre les attaques de type « débordement de tampons » en plaçant des valeurs
randomisées à certains points stratégiques de la mémoire.
▸ Risques Virtualisation ▪ A intervalle régulier, le programme vérifie la valeur de ces canaries, si elle a changé, l’exécution est stoppée
▸ Corruption mémoire ▪ La présence ou non de canaries dans un programme dépend du compilateur utilisé.
▸ Kernel et Hyperviseur ▸ De 2001 à 2005 : ProPolice est un patch d’IBM ajoutant les fonctionnalités de stack canary à GCC. Sera ensuite
réimplémenté sous GCC 4.1.
▸ Depuis 2003 sous Visual Studio en option, non activée par défaut jusqu’à 2005.
▪ Dans les rappels, nous avons vu des mécanismes de protection contre la corruption mémoire des processus
en mode utilisateur (ring 3).
▸ Risques Virtualisation ▪ Les techniques au niveau de l’hyperviseur ressemblent à des protections de ring 3, cependant ce mode est
permissif n’est pas soumis au même type de contrainte qu’en ring -1.
▸ Corruption mémoire
▪ Bien que le processeur inclue des mécanismes de protection, c’est à l’hyperviseur d’utiliser toutes les
▸ Kernel et Hyperviseur fonctionnalités lui permettant de se protéger.
VMCALLS - HYPERCALLS
▪ Dans les rappels, nous avons vu que le passage entre kernel mode et user mode se
▸ Risques Virtualisation fait au travers des appels systèmes, des interruptions matérielles et des erreurs
graves de programme. Ce même principe existe entre l’hyperviseur et les kernels.
▸ Corruption mémoire
▪ L’hyperviseur est un programme qui contrôle les registres des processeurs et toute
▸ Kernel et Hyperviseur la mémoire. Il peut interférer dans le flux d’exécution lorsque une erreur de page de
mémoire survient, lors d’une affection registre processeur.
▪ Ce blocage d’exécution de la machine virtuelle est nommé VM-exit (machine
virtuelle qui sort). Le reprise du flux d’exécution de la machine virtuelle par
l’hyperviseur est quant à lui nommé VM-entry (pour l’entrée de la machine
virtuelle).
▪ Pour rappel les kernels savent qu’ils sont dans un environnement virtualisé
(paravirtualisation), au travers de l’instruction processeur VMCALL aussi appelés
hypercalls, ils communiquent avec l’hyperviseur. Les drivers de machines virtuelles
sont spécialisés pour l’hyperviseur et permettent d’entendre des fonctionnalités des
machines virtuelles.
Httpsring,org
VM Exit Raison
▸ Risques Virtualisation EPTV Une tentative d'accès à la mémoire avec une adresse physique d'invité a été interdite par la configuration
des structures de pagination ETP. (Extend Page Table)
▸ Corruption mémoire
APICACC Le logiciel invité a tenté d'accéder à la mémoire à une adresse physique sur la page d'accès APIC
▸ Kernel et Hyperviseur
MSRWR Le logiciel invité a tenté d'écrire un registre spécifique à la machine, MSR.
CRACC Le logiciel invité a tenté d'accéder aux registres de contrôle CR0, CR3, CR4 ou CR8 x86.
CPUID Le logiciel invité a tenté d’exécuter une instruction CPUID. (caractéristiques du processeur)
PNDVINT En attente d'interruption virtuelle
EXTINT Une interruption externe est arrivée.
EXCNMI Exception ou non-masquable interruption, NMI. (interuption matériel impossible à ignorer, typiquement
un problème matériel)
▪ Le MMU est un composant CPU permettant de contrôler les accès mémoires du processeur. Il permet
de translater les adresses mémoires physiques en adresses mémoires linéaires. Le kernel ne voit pas
▸ Risques Virtualisation différentes barrettes de RAM mais un bloc continu d’adresses mémoire. Ce mécanisme est nommé
▸ Corruption mémoire pagination. Ce même MMU gère la translation des adresses mémoire paginées en adresses mémoire
▸ Kernel et Hyperviseur virtuelles. Cet autre mécanisme est nommé segmentation.
▪ En parlant de segmentation lorsqu’un processus écrit sur un segment de mémoire qui n’existe pas ou
dont il n’a pas le droit, le MMU déclenche une exception Segment Violation. Cette violation de
segment se traduit par le signal SIGSEGV (Signal Segmentation Violation) sous Linux.
▪ Le système de pagination de la mémoire découpe sous forme de page la mémoire virtuelle, les fameux
Page Table Entry (PTE). Les pages pouvant se situer n’importe où en mémoire, une structure conserve
les entrées des pages (Page Table Base Register pour PTBR dans le processus en cours). Chaque page
contient en entrée des informations relatives à la page mémoire. Enfin, les tables de page se trouvent
dans des répertoires nommés Page Directory Base Register.
▪ Depuis les processeurs de la famille AMD64 (AMD et Intel), les entrées de page mémoire conservent en
plus des bits de protections notamment le bit NX.
▪ La mémoire virtuelle est composée de deux parties : le numéro de la table de page et le déplacement.
▪ Dans la table des pages se trouve l’entrée de la page. Cette page d’entrée PTE contient entre autre, un bit de
▸ Risques Virtualisation validation, les bit PROT et le numéro de frame. Le numéro de frame associé au déplacement donne l’adresse
▸ Corruption mémoire physique.
▸ Kernel et Hyperviseur
▪ Le bit 24, N (Non-cachée), signifie que la page n'est pas en cache et que le système doit lire ou écrire directement
depuis ou vers la mémoire.
▸ Risques Virtualisation ▪ Le bit M (Modifiée) est modifié par le matériel si le contenu de la page est modifié.
▸ Corruption mémoire ▪ Le bit U (Utilisée) indique si la page a été lue ou écrite par un processus. Il est utile pour la détermination de
l'espace de travail d'un processus. Dont les processus qui partagent les mêmes zones mémoires (notamment
▸ Kernel et Hyperviseur utilisé pour le mappage de programme, bibliothèque et l’usage de plusieurs instances de processus)
Valeur Protection
0000 Aucun accès
1000 Lecture pour le noyau
1100 Lecture/écriture pour le noyau
1010 Lecture utilisateur et noyau
Lecture utilisateur, lecture/écriture pour le
1110
noyau
1111 Lecture/écriture utilisateur et noyau
IOMMU
▪ En informatique, une unité de gestion de mémoire d'entrée-sortie (IOMMU) est une unité de
▸ Risques Virtualisation gestion de mémoire (MMU) qui connecte un bus d'E/S à accès direct à la mémoire
(compatible DMA) à la mémoire principale.
▸ Corruption mémoire
▪ À l'instar d'une MMU traditionnelle, qui traduit les adresses virtuelles visibles par le
▸ Kernel et Hyperviseur processeur en adresses physiques, l'IOMMU mappe les adresses virtuelles device-visible
(également appelées adresses device ou adresses d'E/S dans ce contexte) aux adresses
physiques. Certaines unités offrent également une protection de la mémoire contre les
périphériques défectueux ou malveillants.
▪ L’IOMMU permet de modifier/filtrer à la volée les accès à la mémoire vers et part les
périphériques.
▪ En terme de sécurité, l’IOMMU permet à l’hyperviseur de ne pas être ré-écrit par un
périphérique physique.
http://iommuinside.uk
▸ Cluster Management
https://kb.vmware.com/
Migration/ replication
▪ La migration permet de transmettre l’état d’une machine virtualisée vers un autre hyperviseur. Plusieurs hôtes
physiques pourront virtualiser la même machine. Le transfert est transparent pour la machine virtualisée. On
▸ Réplication parle alors de migration à chaud car la machine virtuelle est toujours en activité lors de la migration.
▸ Storage ▪ Grâce à cette technologie deux hyperviseurs peuvent manager plusieurs machines virtuelles de façon pro-
active. On parle alors de réplication. L’ensemble des serveurs forme un cluster haut disponibilité. Si un
▸ Cluster Management hyperviseur est coupé alors un autre hyperviseur prend le relais des exécutions des machines virtuelles.
https://vmware.com/
Gestion de stockage
▪ Dans les architectures virtualisées, les ressources associées aux hyperviseurs s’appuient essentiellement
sur les composants mémoires et CPUs nécessaires au fonctionnement des machines Virtuels exécutées. Le
▸ Réplication stockage est ainsi délégué à des équipements dédiés afin d’en assurer la centralisation et la disponibilité.
▸ Storage ▪ Ces équipements peuvent prendre la forme de différentes technologies (Baie, cluster logiciel de stockage)
▸ Cluster Management interconnectées aux hyperviseurs ou actifs consommateurs de données par différents moyens (Isci, Fibre,
Nvme over-fabric, etc..).
▪ Une baie de stockage a pour but de fournir de l’espace disque présenté au système d’exploitation sous
forme de disques logiques. Une baie de stockage est composée de deux principaux éléments : de disques
durs (d’une dizaine à quelques milliers) et d’un ou plusieurs contrôleurs.
▪ Une baie de stockage propose des options de protection et de virtualisation au travers des technologies
RAID, elle intègre du cache pour bufferiser et optimiser les accès aux disques et dispose d’un certain
nombre de port d’accès pour la connexion avec les serveurs. Il existe plusieurs types de ports : SAS, Fiber
Channel ou encore iSCSI.
https://vmware.com/
Copyright © Elysium Security Version 1.0 – 2020/2021
117
Storage
Fiber channel
▪ Fibre Channel est un protocole défini par la norme ANSI X3T11 permettant une connexion haut débit (de
l'ordre de 16 GB/s par seconde) entre un ordinateur et son système de stockage ou d'autre type de
▸ Réplication périphérique.
▸ Storage ▪ Il garantit l’arrivée des données, il permet de créer un réseau pouvant transporter plusieurs protocoles de
façon native comme l'IP (Internet Protocol) et il offre la possibilité d'un mode canal utilisé pour transporter le
▸ Cluster Management
protocole SCSI dans le cas des SAN.
https://mylovestorage.com/
iSCSI
▪ iSCSI est une abréviation de Internet Small Computer System Interface. C'est un protocole
de stockage en réseau basé sur le protocole IP destiné à relier les installations de stockage
▸ Réplication de données.
▸ Storage ▪ En transportant les commandes SCSI sur les réseaux IP, iSCSI est utilisé pour faciliter les
▸ Cluster Management transferts de données sur les longues distances. iSCSI peut être utilisé pour transmettre
des données sur des réseaux locaux (LAN), réseaux étendus (WAN) ou Internet et peut
permettre d'être indépendant sur l'emplacement physique du stockage ou de la
récupération de données.
▪ Le protocole permet aux clients (appelés initiateurs) d'envoyer des commandes SCSI (CDB)
à des périphériques de stockage SCSI (targets) sur des serveurs distants. Il s'agit d'un
protocole de SAN (Storage Area Network), qui permet de rassembler les ressources de
stockage dans un centre de données tout en donnant l'illusion que le stockage est local.
▪ Contrairement au fibre channel, qui nécessite une infrastructure matérielle dédiée, iSCSI
peut s'utiliser en conservant une infrastructure existante.
NVMe-over-fabric
▪ NVMe over Fabrics (NVMe-oF) est une extension du protocole réseau NVMe pour les
systèmes Ethernet et Fibre Channel, qui accélère et renforce la connectivité entre les
▸ Réplication solutions de stockage et les serveurs.
▸ Storage ▪ Il permet de moins solliciter les processeurs des serveurs hôtes d’applications. La
▸ Cluster Management principale différence entre NVMe et NVMe over Fabrics réside dans le mécanisme de
mappage du mode de transport pour l'envoi et la réception des commandes et des
réponses.
▪ NVMe over Fabrics utilise un modèle à messages pour communiquer entre un hôte et
un périphérique de stockage cible. Le protocole NVMe local mappe les commandes et
les réponses sur la mémoire partagée de l'hôte via le protocole d'interface PCIe.
▪ Le consortium NVM Express définit la spécification NVMe-oF comme une architecture
commune prenant en charge un large éventail de fabrics de réseau de stockage pour le
protocole de stockage par blocs.
▪ Elle fournit notamment une interface frontale avec les systèmes de stockage, s'étend à
un grand nombre de périphériques NVMe et augmente la distance d'accès aux
périphériques et sous-systèmes NVMe au sein d'un datacenter.
▪ NVMe-Over-Fabric est supporté officiellement à partir de la version 5.0 du noyau Linux.
GLUSTER
▪ Exemple d’architecture de baie de stockage type cloud sur Amazon Web Service.
▸ Réplication
▸ Storage
▸ Cluster Management
TP – Durée 1h
Saltstack
▸ Réplication ▪ ORBIT introduit un paradigme de consolidation des ressources virtualisées dans lequel la
▸ Storage mémoire et les ressources d'E/S utilisées par une machine virtuelle invitée (VM) sont
fournies par plusieurs hôtes externes au lieu d'être limitées à un seul serveur physique.
▸ Cluster Management
▪ La virtualisation des entrées / sorties (E / S) est une méthodologie visant à simplifier la
gestion, à réduire les coûts et à améliorer les performances des serveurs dans les
environnements d'entreprise. Les environnements de virtualisation d'E / S sont créés en
faisant abstraction des protocoles de couche supérieure des connexions physiques. L'un
des objectifs de ce workpackage est d'externaliser les ressources d'E / S et de les
regrouper toutes dans une seule appliance dédiée.
▪ Les applications non distribuées sont vulnérables à la défaillance de l'hôte. Bien qu'il soit
possible d'acheter du matériel coûteux à plus haute fiabilité, ce n'est pas une garantie
contre les problèmes. Orbit WP4 permet à une machine virtuelle de continuer à
fonctionner, sans interruption, même si l'hôte sur lequel elle s'exécute échoue.
▪ https://www.orbitproject.eu/
Openstack
kubernetes
▪ Kubernetes est une plate-forme open-source extensible et portable pour la gestion de charges de
travail (workloads) et de services conteneurisés.
▸ Réplication ▪ Elle favorise à la fois l'écriture de configuration déclarative et l'automatisation. C'est un large
▸ Storage écosystème en rapide expansion. Les services, le support et les outils Kubernetes sont largement
disponibles.
▸ Cluster Management
Fin document