First part wip

This commit is contained in:
nemunaire 2015-09-28 02:23:15 +02:00
parent 142b06dea6
commit b3d5f320ce
4 changed files with 266 additions and 0 deletions

107
slides/containers.md Normal file
View File

@ -0,0 +1,107 @@
# Voyage par conteneur
## Made in Unix
### Que doit-on isoler ?
* Matériel ?
* Processus ?
* Réseau ?
* Système de fichiers ?
* Utilisateurs et groupes ?
* Nom et domaine de la machine !
* IPC !
* Horloge ?
## Made in Linux
### Pour cette mission, vous disposerez de ...
TODO screen drôle de Spy 2015
----
. . .
#### Namespaces
Isolation des processus (PID Namespace), interface réseau (Network
Namespace), partitions montées (Mount Namespace), utilisateurs et
groupes (User Namespace), nom de machine (UTS Namespace), IPC.
#### CGroups
Statistiques sur l'utilisation des ressources et limitation.
http://kernel.org/doc/FIXME/cgroups.txt
#### Capabilities
Limitation de ce que `root` peut faire.
## pour les nuls
### Mais Jamie, comment ça marche ?
TODO screen C'est pas sorcier
----
#### Système de fichiers
Sous-arbre de la racine
* Union FileSystems
* Thin provisioning
#### Processus
Premier processus contenu = PID 1.
### Le réseau ...
TODO Câbles mélangés
----
#### Interface physique
Facile ! Mais il en faut beaucoup.
#### MAC-VLAN
* **VEPA :** tous les paquets sortants sortent, y compris ceux à destination
d'une autre machine locale. Le switch derrière doit rerouter les paquets vers
la machine.
* **Bridge :** le noyau analyse les paquets avant de les transmettre.
#### Virtual Ethernet
Interfaces virtuelles connectées à un bridge.
## En résumé
### Mais ! (il y a toujours un mais)
. . .
#### LXC stable
Prêt pour la production depuis le XX 2014.
Attention à la configuration et aux erreur de capabilities !
. . .
#### Partage des systèmes de fichiers
Optimise l'utilisation du cache :-)
. . .
N'optimise pas le travail de l'administrateur système :-(

13
slides/intro.md Normal file
View File

@ -0,0 +1,13 @@
# Avant tout...
## John von Neuman
### Un personnage important
TODO ici une photo
---
#### John von Neuman
> Citation de lui sur le langage Assembleur

50
slides/os.md Normal file
View File

@ -0,0 +1,50 @@
# Système d'exploitation
## Est-ce bien nécessaire ...
### ... un noyau ?
TODO Logos de différents noyaux
. . .
Oui !
### ... le temps de boot ?
. . .
* Initialisation du/des processeur(s) et de la mémoire ;
* détection du matériel ;
* préparation des interfaces pour l'userland ;
* montage du système de fichiers racine ;
* lancement de `/sbin/init`
### ... le système de fichiers ?
Eh oui !
### ... d'isoler ?
* Mutualisation des services
TODO 2-3 mots accrocheurs
## Les techniques d'isolation
### `chroot`
* **Difficulté :** hardcore ;
* **Sécurité :** douteuse ;
* **Coûts :** élevés.
### Virtualisation et paravirtualisation
* **Difficulté :** débutant ;
* **Sécurité :** OK ;
* **Coûts :** réduits.
### Mais ...
TODO clipart lumière

96
slides/slides.pdfpc Normal file
View File

@ -0,0 +1,96 @@
[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 !!!