97 lines
3.3 KiB
Plaintext
97 lines
3.3 KiB
Plaintext
|
[file]
|
||
|
slides.pdf
|
||
|
[duration]
|
||
|
180
|
||
|
[notes]
|
||
|
### 1
|
||
|
Bonjour
|
||
|
Hésitez pas à poser des questions
|
||
|
### 2
|
||
|
Commençons par parler de quelqu'un d'important...
|
||
|
### 3
|
||
|
Test
|
||
|
### 4
|
||
|
- Gestion de l'accès au matériel
|
||
|
- Répartition du temps CPU entre les tâches
|
||
|
- Gestion du contexte des tâches (mémoire, registres, context switch, ...)
|
||
|
- Diverses couches d'abstraction :
|
||
|
- matériel : clavier/souris/...
|
||
|
- FS
|
||
|
### 5
|
||
|
- bootloader: charge le noyau en mem et jump
|
||
|
- détection du matériel
|
||
|
- mise en place des interfaces : réseau, FS, nom de machine, utilisateurs, droits, permissions, ...
|
||
|
- montage de la racine
|
||
|
- /sbin/init
|
||
|
### 6
|
||
|
Le noyau seul ne fait rien, il lui faut des programmes et des données.
|
||
|
|
||
|
Tous les programmes n'ont pas besoin de toutes les données.
|
||
|
Mais certains programmes échangent des données entre-eux (IPC, socket, ...)
|
||
|
Et s'il y a une vulnérabilité ?
|
||
|
### 7
|
||
|
- grosse machine coûte moins cher
|
||
|
- pourquoi partager les données de services qui ne communiquent pas entre eux ?
|
||
|
=> serveur DNS, mails, web, de notation de l'école
|
||
|
### 8
|
||
|
DEMO chroot
|
||
|
- complexe à mettre en œuvre
|
||
|
on peut pas avoir 2 serveurs web/ssh
|
||
|
- faible sécurité (grsec) + DEMO escape
|
||
|
- si un process tombe, on peut lui voler son port et hop
|
||
|
- arbre de process partagé
|
||
|
- pas de limitation des ressources
|
||
|
- coût : maj pas simples, monitoring peu précis (limitation des ports)
|
||
|
### 9
|
||
|
- accès concurent au matos : périphériques émulés
|
||
|
- VT-x/AMD-v
|
||
|
- plusieurs serveurs sur le même port
|
||
|
- limitation des ressources
|
||
|
- non partage des ressources similaires : autant de noyau lancé que de services, FS non partagés
|
||
|
### 10
|
||
|
- partager le même noyau (KVM...), les FS identiques (on met à jour le système de base une seule)
|
||
|
|
||
|
* 1998 : Jails BSD
|
||
|
* 2005 : Zones Solaris
|
||
|
* 2005 : patch Linux OpenVZ
|
||
|
* 2008 : début du projet Linux Container (LXC)
|
||
|
* 2015 : Windows 10
|
||
|
|
||
|
On appel ça des conteneurs !
|
||
|
### 11
|
||
|
Que doit-on implémenter concrétement ?
|
||
|
- matos : non, le noyau l'abstrait déjà (ex webcam/group video) mais limitation des ressources
|
||
|
- processus, interfaces réseau et liste de partitions montées pour éviter l'espionnage et l'accès à des données sensibles
|
||
|
- users, groups, nom de machine et IPC : pas de raison qu'ils soient partagés
|
||
|
- horloge : non, la timezone peut changer
|
||
|
### 12
|
||
|
- isoler plein de choses : Namespace
|
||
|
DEMO make menuconfig
|
||
|
DEMO namespace
|
||
|
- limiter les ressources : cgroups
|
||
|
DEMO make menuconfig
|
||
|
DEMO limitation CPU
|
||
|
DEMO limitation mémoire
|
||
|
DEMO statistiques réseau
|
||
|
- mais dans le monde Unix, root peut tout faire ... => capabilities
|
||
|
DEMO capabilities
|
||
|
### 13
|
||
|
- crée listes distinctes ou ajoute des propriétés
|
||
|
- FS : sous-arbre de la racine comme chroot + AUFS/OverlayFS (cache), LVM (thin provisioning)
|
||
|
- Processus : premier lancé PID 1
|
||
|
### 14
|
||
|
- Réseau : pas évident :
|
||
|
* 1 carte réseau = 1 seule IP
|
||
|
* promiscuité
|
||
|
* routage
|
||
|
- iface physique : Ok
|
||
|
- MAC-VLAN : chaque machine a une MAC différente (promiscuité filtrée par le noyau)
|
||
|
2 modes : VEPA : tous les paquets sortent, le switch doit les renvoyer vers la même machine
|
||
|
Bridge : le noyau analyse les paquets sortant avant transmission
|
||
|
- veth : on partage une interface virtuelle entre l'hôte et l'invité et on relie le tout à un bridge.
|
||
|
### 15
|
||
|
LXC stable depuis
|
||
|
Doit-on tout virtualiser ? avoir toutes les bibliothèques et fichiers de base (init, syslog, cron, sshd, ...) ?
|
||
|
DEMO LXC busybox
|
||
|
!!! QUESTIONS + PAUSE !!!
|