Update tuto2

This commit is contained in:
nemunaire 2021-09-23 02:55:18 +02:00
commit 2c5317f4f9
35 changed files with 3587 additions and 471 deletions

View file

@ -1,53 +1,20 @@
\newpage
### Clair
Une vision plus Clair de la sécurité
====================================
Nous avons vu, au travers de nos TPs jusqu'à présent, que Docker nous apportait
un certain degré de sécurité d'emblée au lancement du conteneur. Cela peut sans
doute paraître quelque peu rassurant pour la personne chargée d'administrer la
machine hébergeant les conteneurs, car cela lui apporte des garanties quant à
l'effort de cloisonnement mis en place.
Mais doit-on pour autant s'arrêter là et considérer que nous avons réglé
l'ensemble des problématiques de sécurité liées aux conteneurs ?
Évidemment, non : une fois nos services lancés dans des conteneurs, il ne sont
pas moins exposés aux bugs et autres failles applicatives ; qu'elles soient
dans notre code ou celui d'une bibliothèque, accessible par rebond, ...
Il est donc primordial de ne pas laisser ses conteneurs à l'abandon une fois
leur image créée et envoyée en production. Nos conteneurs doivent être
regénérés sitôt que leur image de base est mise à jour (une mise à jour d'une
image telle que Debian, Ubuntu ou Redhat n'apparaît que pour cela) ou bien
lorsqu'un des programmes ou bibliothèques que l'on a installé ensuite.
Convaincu ? Cela sonne encore comme des bonnes pratiques difficile à mettre en
œuvre, pouvant mettre en péril tout un système d'information. Pour s'en
protéger, nous allons avoir besoin de réaliser à intervalles réguliers une
analyse statique de nos conteneurs.
![Rapport d'analyse statique des vulnérabilités d'un conteneur](paclair.png)
## Clair
Le principal outil pour indexer et chercher des vulnérabilités est
Un outil complet indexer et chercher des vulnérabilités est
[`Clair`](https://github.com/coreos/clair/), du projet CoreOS. À partir des
informations mises à disposition par les équipes de sécurités des principales
distributions, cela alimente en continu une base de données qui sera accéder au
moment de l'analyse.
L'outil se présente sous la forme d'un serveur autonome dans la récupération
de ses données sources, auquel nous pourrons interagir au moyen d'une API :
de ses données sources, auquel nous pourrons interagir au moyen d'une API :
pour lui envoyer des images et lui demander une analyse. Les clients de cette
API seront soit les registres directement, soit un programme dédié.
![Scan de vulnérabilités sur le Docker Hub](hubvuln.png)
---
Commençons par lancer notre propre instance de `Clair`, à l'aide d'un
`docker-compose.yml` :
`docker-compose.yml` :
<div lang="en-US">
```yml
@ -77,10 +44,10 @@ services:
```
</div>
Prenez quelques minutes pour comprendre ce `docker-compose.yml` : notez la
présence de la variable d'environnement `POSTGRES_PASSWORD`, non définie : ce
Prenez quelques minutes pour comprendre ce `docker-compose.yml` : notez la
présence de la variable d'environnement `POSTGRES_PASSWORD`, non définie : ce
sera la variable présente dans votre environnement, au moment du
`docker-compose up` qui sera utilisée. N'oubliez pas de la définir :
`docker-compose up` qui sera utilisée. N'oubliez pas de la définir :
<div lang="en-US">
```bash
@ -99,7 +66,7 @@ pas de changer le nom d'hôte et le mot de passe pour se connecter au conteneur
de base de données.**
Une fois lancé, la base nécessite d'être initialisée. L'opération peut prendre
plusieurs minutes. Vous pouvez suivre l'avancement de l'ajout via :
plusieurs minutes. Vous pouvez suivre l'avancement de l'ajout via :
<div lang="en-US">
```bash
@ -109,11 +76,11 @@ curl http://localhost:6060/v1/namespaces/debian:9/vulnerabilities?limit=10
</div>
## PAClair
### PAClair
Afin de pouvoir réaliser à la demande et sans registre privé, l'analyse de
conteneur, nous allons utiliser le programme
[`paclair`](https://github.com/yebinama/paclair) :
[`paclair`](https://github.com/yebinama/paclair) :
<div lang="en-US">
```bash
@ -121,7 +88,7 @@ pip3 install paclair
```
</div>
Il nécessite un fichier de configuration pour être utilisé, essayez :
Il nécessite un fichier de configuration pour être utilisé, essayez :
<div lang="en-US">
```yml
@ -134,7 +101,7 @@ Plugins:
</div>
Pour obtenir un rapport d'analyse, on commence par envoyer les couches de
l'image à `Clair` :
l'image à `Clair` :
<div lang="en-US">
```bash
@ -142,7 +109,7 @@ paclair --conf conf.yml Docker nemunaire/fic-admin push
```
</div>
Puis on lui demande la génération d'un rapport `html` :
Puis on lui demande la génération d'un rapport `html` :
<div lang="en-US">
```bash
@ -150,7 +117,7 @@ paclair --conf conf.yml Docker nemunaire/fic-admin analyse --output-format html
```
</div>
Si l'on souhaite uniquement avoir des statistiques dans la console :
Si l'on souhaite uniquement avoir des statistiques dans la console :
<div lang="en-US">
```bash
@ -161,10 +128,3 @@ Medium: 5
High: 4
```
</div>
## Exercice {-}
Déterminez le nombre de vulnérabilités dans les principales images officielles
du [Docker Hub](https://hub.docker.com/explore), notamment `nginx`, `golang`,
`redis`, ...