Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
elearning:workbooks:docker3:drf06 [2021/11/23 08:52] – admin | elearning:workbooks:docker3:drf06 [2024/02/21 13:40] (Version actuelle) – admin | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | |||
~~PDF: | ~~PDF: | ||
- | Version : **2021.01** | + | Version : **2024.01** |
Dernière mise-à-jour : ~~LASTMOD~~ | Dernière mise-à-jour : ~~LASTMOD~~ | ||
- | ======DOF608 | + | ======DOF607 |
=====Contenu du Module===== | =====Contenu du Module===== | ||
- | * **DOF608 | + | * **DOF607 |
* Contenu du Module | * Contenu du Module | ||
- | * LAB #1 - Travailler avec les CGroups | + | * LAB #1 - Utilisation des Docker Secrets |
- | * 1.1 - Présentation des Namespaces | + | * LAB #2 - Création d'un Utilisateur de Confiance pour Contrôler le Daemon Docker |
- | * 1.2 - Présentation des CGroups | + | * LAB #3 - Le Script docker-bench-security.sh |
- | * 1.3 - Limitation de la Mémoire | + | * LAB #4 - Sécurisation de la Configuration de l' |
- | * 1.4 - Le Paquet cgroup-tools | + | * LAB #5 - Sécurisation de la Configuration du daemon Docker |
- | * La commande cgcreate | + | * 5.1 - Le Fichier / |
- | * La Commande cgexec | + | * LAB #6 - Sécurisation des Images et les Fichiers de Construction |
- | * La Commande cgdelete | + | * LAB #7 - Sécurisation du Container Runtime |
- | * Le Fichier / | + | * LAB #8 - Sécurisation des Images avec Docker Content Trust |
- | * LAB #2 - Utilisation des Docker Secrets | + | * 8.1 - DOCKER_CONTENT_TRUST |
- | * LAB #3 - Création d'un Utilisateur de Confiance pour Contrôler le Daemon Docker | + | * 8.2 - DCT et la commande docker pull |
- | * LAB #4 - Le Script docker-bench-security.sh | + | |
- | * LAB #5 - Sécurisation de la Configuration de l' | + | |
- | * 5.1 - [WARN] 1.2.1 - Ensure a separate partition for containers has been created | + | |
- | * 5.2 - [WARN] 1.2.3 - Ensure auditing is configured for the Docker daemon | + | |
- | * LAB #6 - Sécurisation de la Configuration du daemon Docker | + | |
- | * 6.1 - [WARN] 2.1 - Ensure network traffic is restricted between containers on the default bridge | + | |
- | * 6.2 - [WARN] 2.8 - Enable user namespace support | + | |
- | * 6.3 - [WARN] 2.11 - Ensure that authorization for Docker client commands is enabled | + | |
- | * 6.4 - [WARN] 2.12 - Ensure centralized and remote logging is configured | + | |
- | * 6.5 - [WARN] 2.14 - Ensure Userland Proxy is Disabled | + | |
- | * 6.6 - [WARN] 2.17 - Ensure containers are restricted from acquiring new privileges | + | |
- | * 6.7 - Le Fichier / | + | |
- | * LAB #7 - Sécurisation des Images et les Fichiers de Construction | + | |
- | * 7.1 - [WARN] 4.1 - Ensure a user for the container has been created | + | |
- | * 7.2 - [WARN] 4.5 - Ensure Content trust for Docker is Enabled | + | |
- | * 7.3 - [WARN] 4.6 - Ensure that HEALTHCHECK instructions have been added to container images | + | |
- | * LAB #8 - Sécurisation du Container Runtime | + | |
- | * 8.1 - [WARN] 5.1 - Ensure AppArmor Profile is Enabled | + | |
- | * 8.2 - [WARN] 5.2 - Ensure SELinux security options are set, if applicable | + | |
- | * 8.3 - [WARN] 5.10 - Ensure memory usage for container is limited | + | |
- | * 8.4 - [WARN] 5.11 - Ensure CPU priority is set appropriately on the container | + | |
- | * 8.5 - [WARN] 5.12 - Ensure the container' | + | |
- | * 8.6 - [WARN] 5.14 - Ensure ' | + | |
- | * 8.7 - [WARN] 5.25 - Ensure the container is restricted from acquiring additional privileges | + | |
- | * 8.8 - [WARN] 5.26 - Ensure container health is checked at runtime | + | |
- | * 8.9 - [WARN] 5.28 - Ensure PIDs cgroup limit is used | + | |
- | * LAB #9 - Sécurisation des Images avec Docker Content Trust | + | |
- | * 9.1 - DOCKER_CONTENT_TRUST | + | |
- | * 9.2 - DCT et la commande docker pull | + | |
* L' | * L' | ||
- | * 9.3 - DCT et la commande docker push | + | * 8.3 - DCT et la commande docker push |
- | * 9.4 - DCT et la commande docker build | + | * 8.4 - DCT et la commande docker build |
* Créer un deuxième Repositry | * Créer un deuxième Repositry | ||
* Supprimer une Signature | * Supprimer une Signature | ||
- | * LAB #10 - Sécurisation du Socket du Daemon Docker | + | * LAB #9 - Sécurisation du Socket du Daemon Docker |
- | * 10.1 - Création du Certificat de l' | + | * 9.1 - Création du Certificat de l' |
- | * 10.2 - Création du Certificat du Serveur Hôte du Daemon Docker | + | * 9.2 - Création du Certificat du Serveur Hôte du Daemon Docker |
- | * 10.3 - Création du Certificat du Client | + | * 9.3 - Création du Certificat du Client |
- | * 10.4 - Démarrage du Daemon Docker avec une Invocation Directe | + | * 9.4 - Démarrage du Daemon Docker avec une Invocation Directe |
- | * 10.5 - Configuration du Client | + | * 9.5 - Configuration du Client |
- | + | ||
- | =====LAB #1 - Travailler avec les CGroups====== | + | |
- | + | ||
- | ====1.1 - Présentation des Namespaces==== | + | |
- | + | ||
- | Les espaces de noms permettent de regrouper des processus dans un même espace et d' | + | |
- | + | ||
- | ====1.2 - Présentation des CGroups==== | + | |
- | + | ||
- | Les Groupes de Contrôles (Control Groups) aussi appelés **CGroups**, | + | |
- | + | ||
- | Les CGroups sont organisés de manière hiérarchique, | + | |
- | + | ||
- | Ces hiérarchies multiples et séparés sont necéssaires parce que chaque hiérarchie est attaché à un ou plusieurs sous-système(s) aussi appelés des **Contrôleurs de Ressources** ou simplement des **Contrôleurs**. Les contrôleurs disponibles sont : | + | |
- | + | ||
- | * **blkio** - utilisé pour établir des limites sur l' | + | |
- | * **cpu** - utilisé pour fournir aux tâches des groupes de contrôle accès au CPU grâce au planificateur, | + | |
- | * **cpuacct** - utilisé pour produire des rapports automatiques sur les ressources CPU utilisées par les tâches dans un groupe de contrôle, | + | |
- | * **cpuset** - utilisé pour assigner des CPU individuels sur un système multicœur et des nœuds de mémoire à des tâches dans un groupe de contrôle, | + | |
- | * **devices** - utilisé pour autoriser ou pour refuser l' | + | |
- | * **freezer** - utilisé pour suspendre ou pour réactiver les tâches dans un groupe de contrôle, | + | |
- | * **memory** - utilisé pour établir les limites d' | + | |
- | * **net_cls** - utilisé pour repérer les paquets réseau avec un identifiant de classe (classid) afin de permettre au contrôleur de trafic Linux, **tc**, d' | + | |
- | * **perf_event** - utilisé pour permettre le monitoring des CGroups avec l' | + | |
- | * **hugetlb** - utilisé pour limiter des ressources sur des pages de mémoire virtuelle de grande taille. | + | |
- | + | ||
- | Les hiérarchies ont des points de montage dans le répertoire **/ | + | |
- | + | ||
- | < | + | |
- | trainee@debian9: | + | |
- | Mot de passe : fenestros | + | |
- | root@debian9: | + | |
- | total 0 | + | |
- | dr-xr-xr-x 2 root root 0 mai 26 08:52 blkio | + | |
- | lrwxrwxrwx 1 root root 11 mai 26 08:52 cpu -> cpu, | + | |
- | lrwxrwxrwx 1 root root 11 mai 26 08:52 cpuacct -> cpu, | + | |
- | dr-xr-xr-x 2 root root 0 mai 26 08:52 cpu, | + | |
- | dr-xr-xr-x 2 root root 0 mai 26 08:52 cpuset | + | |
- | dr-xr-xr-x 5 root root 0 mai 26 08:52 devices | + | |
- | dr-xr-xr-x 2 root root 0 mai 26 08:52 freezer | + | |
- | dr-xr-xr-x 2 root root 0 mai 26 08:52 memory | + | |
- | lrwxrwxrwx 1 root root 16 mai 26 08:52 net_cls -> net_cls, | + | |
- | dr-xr-xr-x 2 root root 0 mai 26 08:52 net_cls, | + | |
- | lrwxrwxrwx 1 root root 16 mai 26 08:52 net_prio -> net_cls, | + | |
- | dr-xr-xr-x 2 root root 0 mai 26 08:52 perf_event | + | |
- | dr-xr-xr-x 5 root root 0 mai 26 08:52 pids | + | |
- | dr-xr-xr-x 5 root root 0 mai 26 08:52 systemd | + | |
- | </ | + | |
- | + | ||
- | **Systemd** organise les processus dans chaque CGroup. Par exemple tous les processus démarrés par le serveur Apache se trouveront dans le même CGroup, y compris les scripts CGI. Ceci implique que la gestion des ressources en utilisant des hiérarchies est couplé avec l' | + | |
- | + | ||
- | En haut de l' | + | |
- | + | ||
- | * le **system.slice** - l' | + | |
- | * le **user.slice** - l' | + | |
- | * le **machine.slice** - l' | + | |
- | + | ||
- | En dessous des tranches peuvent se trouver : | + | |
- | + | ||
- | * des **scopes** - des processus crées par **fork**, | + | |
- | * des **services** - des processus créés par une **Unité**. | + | |
- | + | ||
- | Les slices peuvent être visualisés avec la commande suivante : | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | UNIT | + | |
- | -.slice | + | |
- | system-getty.slice loaded active active system-getty.slice | + | |
- | system.slice | + | |
- | user-1000.slice | + | |
- | user-112.slice | + | |
- | user.slice | + | |
- | + | ||
- | LOAD = Reflects whether the unit definition was properly loaded. | + | |
- | ACTIVE = The high-level unit activation state, i.e. generalization of SUB. | + | |
- | SUB = The low-level unit activation state, values depend on unit type. | + | |
- | + | ||
- | 6 loaded units listed. Pass --all to see loaded but inactive units, too. | + | |
- | To show all installed unit files use ' | + | |
- | </ | + | |
- | + | ||
- | L' | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | Control group /: | + | |
- | -.slice | + | |
- | ├─user.slice | + | |
- | │ ├─user-112.slice | + | |
- | │ │ ├─user@112.service | + | |
- | │ │ │ ├─dbus.service | + | |
- | │ │ │ │ └─539 / | + | |
- | │ │ │ ├─init.scope | + | |
- | │ │ │ │ ├─527 / | + | |
- | │ │ │ │ └─528 (sd-pam) | + | |
- | │ │ │ └─gvfs-daemon.service | + | |
- | │ │ │ | + | |
- | │ │ └─session-c1.scope | + | |
- | │ │ | + | |
- | │ │ | + | |
- | │ │ | + | |
- | │ │ | + | |
- | │ │ | + | |
- | │ └─user-1000.slice | + | |
- | │ | + | |
- | │ │ ├─668 sshd: trainee [priv] | + | |
- | │ │ ├─679 sshd: trainee@pts/ | + | |
- | │ │ ├─680 -bash | + | |
- | │ │ ├─689 su - | + | |
- | │ │ ├─690 -su | + | |
- | │ │ ├─708 systemd-cgls | + | |
- | │ │ └─709 systemd-cgls | + | |
- | │ | + | |
- | │ | + | |
- | │ | + | |
- | │ | + | |
- | ├─init.scope | + | |
- | │ └─1 / | + | |
- | └─system.slice | + | |
- | ├─lightdm.service | + | |
- | │ ├─410 / | + | |
- | │ ├─425 / | + | |
- | │ └─588 lightdm --session-child 14 21 | + | |
- | ├─anacron.service | + | |
- | lines 1-39 | + | |
- | </ | + | |
- | + | ||
- | En utilisant Systemd, plusieurs ressources peuvent être limitées : | + | |
- | + | ||
- | * **CPUShares** - par défaut 1024, | + | |
- | * **MemoryLimit** - limite exprimée en Mo ou en Go. Pas de valeur par défaut, | + | |
- | * **BlockIOWeight** - valeur entre 10 et 1000. Pas de valeur par défaut, | + | |
- | * **StartupCPUShares** - comme CPUShares mais uniquement appliqué pendant le démarrage, | + | |
- | * **StartupBlockIOWeight** - comme BlockIOWeight mais uniquement appliqué pendant le démarrage, | + | |
- | * **CPUQuota** - utilisé pour limiter le temps CPU, même quand le système ne fait rien. | + | |
- | + | ||
- | <WRAP center round important> | + | |
- | **Important** : Consultez le manuel systemd.resource-control(5) pour voir les paramètres CGroup qui peuvent être passés à systemctl. | + | |
- | </ | + | |
- | + | ||
- | ====1.3 - Limitation de la Mémoire==== | + | |
- | + | ||
- | Pour travailler avec les CGroups dans Debian 9, il convient d' | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | </ | + | |
- | + | ||
- | Commencez ensuite par créer le script **hello-world.sh** qui servira à générer un processus pour travailler avec les CGroups : | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | root@debian9: | + | |
- | # | + | |
- | while [ 1 ]; do | + | |
- | echo "hello world" | + | |
- | sleep 60 | + | |
- | done | + | |
- | </ | + | |
- | + | ||
- | Rendez le script exécutable et testez-le : | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | root@debian9: | + | |
- | hello world | + | |
- | hello world | + | |
- | ^C | + | |
- | </ | + | |
- | + | ||
- | Créez maintenant un CGroup dans le sous-système **memory** appelé **helloworld** : | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | </ | + | |
- | + | ||
- | Par défaut, ce CGroup héritera de l' | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | root@debian9: | + | |
- | 39997440 | + | |
- | </ | + | |
- | + | ||
- | <WRAP center round important> | + | |
- | **Important** - Notez que les 40 000 000 demandés sont devenus 39 997 440 ce qui correspond à un nombre entier de pages mémoire du noyau de 4Ko. ( 39 997 440 / 4096 = 9 765 ). | + | |
- | </ | + | |
- | + | ||
- | Lancez maintenant le script **helloworld.sh** : | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | [1] 1012 | + | |
- | root@debian9: | + | |
- | + | ||
- | root@debian9: | + | |
- | root 1012 0.0 0.1 11172 2868 pts/0 S 10:24 0:00 /bin/bash ./ | + | |
- | root 1015 0.0 0.0 12784 968 pts/0 S+ | + | |
- | </ | + | |
- | + | ||
- | Notez l' | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | CGROUP | + | |
- | 6: | + | |
- | </ | + | |
- | + | ||
- | Insérer le PID de notre script dans le CGroup **helloworld** : | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | </ | + | |
- | + | ||
- | Notez maintenant l' | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | CGROUP | + | |
- | 6: | + | |
- | </ | + | |
- | + | ||
- | Constatez ensuite l' | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | 319488 | + | |
- | </ | + | |
- | + | ||
- | Tuez le script **hello-world.sh** : | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | root@debian9: | + | |
- | root 1038 0.0 0.0 12784 936 pts/0 S+ | + | |
- | [1]+ Complété | + | |
- | </ | + | |
- | + | ||
- | Créez un second CGroup beaucoup plus restrictif : | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | root@debian9: | + | |
- | root@debian9: | + | |
- | 4096 | + | |
- | </ | + | |
- | + | ||
- | Relancez le script **hello-world.sh** et insérez-le dans le nouveau CGroup : | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | [1] 1042 | + | |
- | root@debian9: | + | |
- | + | ||
- | root@debian9: | + | |
- | </ | + | |
- | + | ||
- | Attendez la prochaine sortie de **hello world** sur le canal standard puis constatez que le script s' | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | + | ||
- | [1]+ Processus arrêté | + | |
- | </ | + | |
- | + | ||
- | Consultez en suite la fin du fichier **/ | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | Jul 28 10:39:26 debian9 kernel: [ 1501.775169] | + | |
- | Jul 28 10:39:26 debian9 kernel: [ 1501.775171] | + | |
- | Jul 28 10:39:26 debian9 kernel: [ 1501.775175] | + | |
- | Jul 28 10:39:26 debian9 kernel: [ 1501.775176] Task in / | + | |
- | Jul 28 10:39:26 debian9 kernel: [ 1501.775180] memory: usage 4kB, limit 4kB, failcnt 17 | + | |
- | Jul 28 10:39:26 debian9 kernel: [ 1501.775180] memory+swap: | + | |
- | Jul 28 10:39:26 debian9 kernel: [ 1501.775181] kmem: usage 0kB, limit 9007199254740988kB, | + | |
- | Jul 28 10:39:26 debian9 kernel: [ 1501.775181] Memory cgroup stats for / | + | |
- | Jul 28 10:39:26 debian9 kernel: [ 1501.775188] [ pid ] | + | |
- | Jul 28 10:39:26 debian9 kernel: [ 1501.775219] [ 1042] | + | |
- | </ | + | |
- | + | ||
- | <WRAP center round important> | + | |
- | **Important** - Notez la trace **Task in / | + | |
- | </ | + | |
- | + | ||
- | ====1.4 - Le Paquet cgroup-tools==== | + | |
- | + | ||
- | Le paquet **cgroup-tools** installe des commandes dites //de facilité// dont : | + | |
- | + | ||
- | ===La commande cgcreate=== | + | |
- | + | ||
- | Cette commande permet la création d'un CGroup : | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | root@debian9: | + | |
- | total 0 | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 11:09 cgroup.clone_children | + | |
- | --w--w--w- 1 root root 0 juil. 28 11:09 cgroup.event_control | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 11:09 cgroup.procs | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 11:09 memory.failcnt | + | |
- | --w------- 1 root root 0 juil. 28 11:09 memory.force_empty | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 11:09 memory.kmem.failcnt | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 11:09 memory.kmem.limit_in_bytes | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 11:09 memory.kmem.max_usage_in_bytes | + | |
- | -r--r--r-- 1 root root 0 juil. 28 11:09 memory.kmem.slabinfo | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 11:09 memory.kmem.tcp.failcnt | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 11:09 memory.kmem.tcp.limit_in_bytes | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 11:09 memory.kmem.tcp.max_usage_in_bytes | + | |
- | -r--r--r-- 1 root root 0 juil. 28 11:09 memory.kmem.tcp.usage_in_bytes | + | |
- | -r--r--r-- 1 root root 0 juil. 28 11:09 memory.kmem.usage_in_bytes | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 11:09 memory.limit_in_bytes | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 11:09 memory.max_usage_in_bytes | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 11:09 memory.move_charge_at_immigrate | + | |
- | -r--r--r-- 1 root root 0 juil. 28 11:09 memory.numa_stat | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 11:09 memory.oom_control | + | |
- | ---------- 1 root root 0 juil. 28 11:09 memory.pressure_level | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 11:09 memory.soft_limit_in_bytes | + | |
- | -r--r--r-- 1 root root 0 juil. 28 11:09 memory.stat | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 11:09 memory.swappiness | + | |
- | -r--r--r-- 1 root root 0 juil. 28 11:09 memory.usage_in_bytes | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 11:09 memory.use_hierarchy | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 11:09 notify_on_release | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 11:09 tasks | + | |
- | </ | + | |
- | + | ||
- | Il n' | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | </ | + | |
- | + | ||
- | ===La Commande cgexec=== | + | |
- | + | ||
- | Cette commande permet d' | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | [2] 1860 | + | |
- | root@debian9: | + | |
- | + | ||
- | root@debian9: | + | |
- | </ | + | |
- | + | ||
- | === La Commande cgdelete=== | + | |
- | + | ||
- | Une fois le script terminé, cette commande permet de supprimer le cgroup : | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | root 1073 0.0 0.1 11172 2868 pts/0 S 11:18 0:00 /bin/bash ./ | + | |
- | root 1076 0.0 0.0 528 4 pts/0 R+ | + | |
- | root@debian9: | + | |
- | root@debian9: | + | |
- | root 1078 0.0 0.0 12784 920 pts/0 S+ | + | |
- | [1]+ Complété | + | |
- | root@debian9: | + | |
- | root@debian9: | + | |
- | ls: impossible d' | + | |
- | </ | + | |
- | + | ||
- | ===Le Fichier / | + | |
- | + | ||
- | Afin de les rendre persistants, | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | root@debian9: | + | |
- | group helloworld2 { | + | |
- | cpu { | + | |
- | cpu.shares = 100; | + | |
- | } | + | |
- | memory { | + | |
- | memory.limit_in_bytes = 40000; | + | |
- | } | + | |
- | } | + | |
- | </ | + | |
- | + | ||
- | <WRAP center round important> | + | |
- | **Important** - Notez la création de **deux** limitations, | + | |
- | </ | + | |
- | + | ||
- | Créez donc les deux CGroups concernés : | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | root@debian9: | + | |
- | total 0 | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:47 cgroup.clone_children | + | |
- | --w--w--w- 1 root root 0 juil. 28 12:47 cgroup.event_control | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:47 cgroup.procs | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:47 memory.failcnt | + | |
- | --w------- 1 root root 0 juil. 28 12:47 memory.force_empty | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:47 memory.kmem.failcnt | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:47 memory.kmem.limit_in_bytes | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:47 memory.kmem.max_usage_in_bytes | + | |
- | -r--r--r-- 1 root root 0 juil. 28 12:47 memory.kmem.slabinfo | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:47 memory.kmem.tcp.failcnt | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:47 memory.kmem.tcp.limit_in_bytes | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:47 memory.kmem.tcp.max_usage_in_bytes | + | |
- | -r--r--r-- 1 root root 0 juil. 28 12:47 memory.kmem.tcp.usage_in_bytes | + | |
- | -r--r--r-- 1 root root 0 juil. 28 12:47 memory.kmem.usage_in_bytes | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:47 memory.limit_in_bytes | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:47 memory.max_usage_in_bytes | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:47 memory.move_charge_at_immigrate | + | |
- | -r--r--r-- 1 root root 0 juil. 28 12:47 memory.numa_stat | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:47 memory.oom_control | + | |
- | ---------- 1 root root 0 juil. 28 12:47 memory.pressure_level | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:47 memory.soft_limit_in_bytes | + | |
- | -r--r--r-- 1 root root 0 juil. 28 12:47 memory.stat | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:47 memory.swappiness | + | |
- | -r--r--r-- 1 root root 0 juil. 28 12:47 memory.usage_in_bytes | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:47 memory.use_hierarchy | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:47 notify_on_release | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:47 tasks | + | |
- | </ | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | root@debian9: | + | |
- | total 0 | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:48 cgroup.clone_children | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:48 cgroup.procs | + | |
- | -r--r--r-- 1 root root 0 juil. 28 12:48 cpuacct.stat | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:48 cpuacct.usage | + | |
- | -r--r--r-- 1 root root 0 juil. 28 12:48 cpuacct.usage_all | + | |
- | -r--r--r-- 1 root root 0 juil. 28 12:48 cpuacct.usage_percpu | + | |
- | -r--r--r-- 1 root root 0 juil. 28 12:48 cpuacct.usage_percpu_sys | + | |
- | -r--r--r-- 1 root root 0 juil. 28 12:48 cpuacct.usage_percpu_user | + | |
- | -r--r--r-- 1 root root 0 juil. 28 12:48 cpuacct.usage_sys | + | |
- | -r--r--r-- 1 root root 0 juil. 28 12:48 cpuacct.usage_user | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:48 cpu.cfs_period_us | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:48 cpu.cfs_quota_us | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:48 cpu.shares | + | |
- | -r--r--r-- 1 root root 0 juil. 28 12:48 cpu.stat | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:48 notify_on_release | + | |
- | -rw-r--r-- 1 root root 0 juil. 28 12:48 tasks | + | |
- | </ | + | |
- | + | ||
- | Appliquez le contenu du fichier **/ | + | |
- | + | ||
- | < | + | |
- | root@debian9: | + | |
- | root@debian9: | + | |
- | 36864 | + | |
- | root@debian9: | + | |
- | 100 | + | |
- | </ | + | |
- | =====LAB #2 - Utilisation des Docker Secrets===== | + | =====LAB #1 - Utilisation des Docker Secrets===== |
Les secrets Docker sont une façon sécurisée de stocker des informations sensibles telles les noms d' | Les secrets Docker sont une façon sécurisée de stocker des informations sensibles telles les noms d' | ||
Ligne 557: | Ligne 78: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez l' | **Important** : Notez l' | ||
</ | </ | ||
Ligne 569: | Ligne 90: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez que la colonne **DRIVER** est vide. Ceci indique que le gestion des secrets est accomplie par Docker lui-même au lieu d' | **Important** : Notez que la colonne **DRIVER** est vide. Ceci indique que le gestion des secrets est accomplie par Docker lui-même au lieu d' | ||
</ | </ | ||
Ligne 582: | Ligne 103: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez qu'un secret Docker est immuable. | **Important** : Notez qu'un secret Docker est immuable. | ||
</ | </ | ||
Ligne 616: | Ligne 137: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : On peut constater dans la sortie de cette commande la valeur **CreatedAt** qui correspond à la date de création du secret ainsi que **UpdatedAt** qui correspond à la date de modification du secret. | **Important** : On peut constater dans la sortie de cette commande la valeur **CreatedAt** qui correspond à la date de création du secret ainsi que **UpdatedAt** qui correspond à la date de modification du secret. | ||
</ | </ | ||
Ligne 689: | Ligne 210: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Le terme **externe** indique que les secrets ne seront pas stockés dans l' | **Important** : Le terme **externe** indique que les secrets ne seront pas stockés dans l' | ||
</ | </ | ||
Ligne 704: | Ligne 225: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez a présence de l' | **Important** : Notez a présence de l' | ||
</ | </ | ||
Ligne 728: | Ligne 249: | ||
</ | </ | ||
- | =====LAB #3 - Création d'un Utilisateur de Confiance pour Contrôler le Daemon Docker===== | + | =====LAB #2 - Création d'un Utilisateur de Confiance pour Contrôler le Daemon Docker===== |
Au contraire des solutions classiques de gestion de machines virtuelles où l' | Au contraire des solutions classiques de gestion de machines virtuelles où l' | ||
Ligne 753: | Ligne 274: | ||
</ | </ | ||
- | =====LAB #4 - Le Script docker-bench-security.sh===== | + | =====LAB #3 - Le Script docker-bench-security.sh===== |
Le **Center for Internet Security (CIS)** est une organisation indépendante à but non-lucratif qui publie des best practices dans de nombreux domaines de l' | Le **Center for Internet Security (CIS)** est une organisation indépendante à but non-lucratif qui publie des best practices dans de nombreux domaines de l' | ||
Ligne 773: | Ligne 294: | ||
< | < | ||
trainee@manager: | trainee@manager: | ||
- | Mot de passe : fenestros | + | Password: fenestros |
root@manager: | root@manager: | ||
- | Clonage dans ' | + | Cloning in ' |
remote: Enumerating objects: 18, done. | remote: Enumerating objects: 18, done. | ||
remote: Counting objects: 100% (18/18), done. | remote: Counting objects: 100% (18/18), done. | ||
remote: Compressing objects: 100% (16/16), done. | remote: Compressing objects: 100% (16/16), done. | ||
remote: Total 1921 (delta 5), reused 6 (delta 2), pack-reused 1903 | remote: Total 1921 (delta 5), reused 6 (delta 2), pack-reused 1903 | ||
- | Réception d' | + | Receiving objects: 100% (1921/ |
- | Résolution des deltas: 100% (1339/ | + | Delta resolution: 100% (1339/ |
</ | </ | ||
Ligne 788: | Ligne 310: | ||
< | < | ||
root@manager: | root@manager: | ||
+ | |||
root@manager: | root@manager: | ||
- | # ------------------------------------------------------------------------------ | + | # -------------------------------------------------------------------------------------------- |
- | # Docker Bench for Security v1.3.5 | + | # Docker Bench for Security v1.6.0 |
# | # | ||
- | # Docker, Inc. (c) 2015- | + | # Docker, Inc. (c) 2015-2023 |
# | # | ||
# Checks for dozens of common best-practices around deploying Docker containers in production. | # Checks for dozens of common best-practices around deploying Docker containers in production. | ||
- | # Inspired by the CIS Docker Benchmark | + | # Based on the CIS Docker Benchmark |
- | # ------------------------------------------------------------------------------ | + | # -------------------------------------------------------------------------------------------- |
- | Initializing | + | Initializing |
- | [INFO] 1 - Host Configuration | + | Section A - Check results |
- | [INFO] 1.1 - General Configuration | + | [INFO] 1 - Host Configuration |
- | [NOTE] 1.1.1 - Ensure the container host has been Hardened | + | [INFO] 1.1 - Linux Hosts Specific Configuration |
- | [INFO] 1.1.2 - Ensure Docker is up to date | + | [WARN] 1.1.1 - Ensure a separate partition for containers has been created (Automated) |
+ | [INFO] 1.1.2 - Ensure only trusted users are allowed to control Docker daemon (Automated) | ||
+ | [INFO] | ||
+ | [WARN] 1.1.3 - Ensure auditing is configured for the Docker daemon (Automated) | ||
+ | [WARN] 1.1.4 - Ensure auditing is configured for Docker files and directories -/ | ||
+ | [WARN] 1.1.5 - Ensure auditing is configured for Docker files and directories - / | ||
+ | [WARN] 1.1.6 - Ensure auditing is configured for Docker files and directories - /etc/docker (Automated) | ||
+ | [WARN] 1.1.7 - Ensure auditing is configured for Docker files and directories - docker.service (Automated) | ||
+ | [INFO] 1.1.8 - Ensure auditing is configured for Docker files and directories - containerd.sock (Automated) | ||
+ | [INFO] | ||
+ | [WARN] 1.1.9 - Ensure auditing is configured for Docker files and directories - docker.socket (Automated) | ||
+ | [WARN] 1.1.10 - Ensure auditing is configured for Docker files and directories - / | ||
+ | [INFO] 1.1.11 - Ensure auditing is configured for Dockerfiles and directories - / | ||
+ | [INFO] | ||
+ | [WARN] 1.1.12 - 1.1.12 Ensure auditing is configured for Dockerfiles and directories - / | ||
+ | [INFO] 1.1.13 - Ensure auditing is configured for Docker files and directories - / | ||
+ | [INFO] | ||
+ | [WARN] 1.1.14 - Ensure auditing is configured for Docker files and directories - / | ||
+ | [WARN] 1.1.15 - Ensure auditing is configured for Docker files and directories - / | ||
+ | [INFO] 1.1.16 - Ensure auditing is configured for Docker files and directories - / | ||
+ | [INFO] | ||
+ | [INFO] 1.1.17 - Ensure auditing is configured for Docker files and directories - / | ||
+ | [INFO] | ||
+ | [WARN] 1.1.18 - Ensure auditing is configured for Docker files and directories - / | ||
+ | [INFO] 1.2 - General Configuration | ||
+ | [NOTE] 1.2.1 - Ensure the container host has been Hardened | ||
+ | [PASS] 1.2.2 - Ensure | ||
[INFO] | [INFO] | ||
- | [INFO] | ||
- | [INFO] 1.2 - Linux Hosts Specific Configuration | + | [INFO] |
- | [WARN] 1.2.1 - Ensure a separate partition | + | [NOTE] 2.1 - Run the Docker daemon as a non-root user, if possible (Manual) |
- | ... | + | [WARN] 2.2 - Ensure network traffic is restricted between containers on the default bridge (Scored) |
+ | [PASS] 2.3 - Ensure the logging level is set to ' | ||
+ | [PASS] 2.4 - Ensure Docker is allowed to make changes to iptables (Scored) | ||
+ | [PASS] 2.5 - Ensure insecure registries are not used (Scored) | ||
+ | [PASS] 2.6 - Ensure aufs storage driver is not used (Scored) | ||
+ | [INFO] 2.7 - Ensure TLS authentication for Docker daemon is configured (Scored) | ||
+ | [INFO] | ||
+ | [INFO] 2.8 - Ensure the default ulimit is configured appropriately (Manual) | ||
+ | [INFO] | ||
+ | [WARN] | ||
+ | [PASS] 2.10 - Ensure the default cgroup usage has been confirmed (Scored) | ||
+ | [PASS] 2.11 - Ensure base device size is not changed until needed (Scored) | ||
+ | [WARN] 2.12 - Ensure that authorization for Docker client commands is enabled (Scored) | ||
+ | [WARN] 2.13 - Ensure centralized and remote logging is configured (Scored) | ||
+ | [WARN] 2.14 - Ensure containers are restricted from acquiring new privileges (Scored) | ||
+ | [WARN] 2.15 - Ensure live restore is enabled (Scored) | ||
+ | [WARN] 2.16 - Ensure Userland Proxy is Disabled (Scored) | ||
+ | [PASS] 2.17 - Ensure that a daemon-wide custom seccomp profile is applied if appropriate (Manual) | ||
+ | [PASS] 2.18 - Ensure that experimental features are not implemented in production (Scored) | ||
+ | |||
+ | [INFO] 3 - Docker daemon configuration files | ||
+ | [PASS] 3.1 - Ensure that the docker.service file ownership is set to root:root (Automated) | ||
+ | [PASS] 3.2 - Ensure that docker.service file permissions are appropriately set (Automated) | ||
+ | [PASS] 3.3 - Ensure that docker.socket file ownership is set to root:root (Automated) | ||
+ | [PASS] 3.4 - Ensure that docker.socket file permissions are set to 644 or more restrictive (Automated) | ||
+ | [PASS] 3.5 - Ensure that the /etc/docker directory ownership is set to root:root (Automated) | ||
+ | [PASS] 3.6 - Ensure that /etc/docker directory permissions are set to 755 or more restrictively (Automated) | ||
+ | [INFO] 3.7 - Ensure that registry certificate file ownership is set to root:root (Automated) | ||
+ | [INFO] | ||
+ | [INFO] 3.8 - Ensure that registry certificate file permissions are set to 444 or more restrictively (Automated) | ||
+ | [INFO] | ||
+ | [INFO] 3.9 - Ensure that TLS CA certificate file ownership is set to root:root (Automated) | ||
+ | [INFO] | ||
+ | [INFO] 3.10 - Ensure that TLS CA certificate file permissions are set to 444 or more restrictively (Automated) | ||
+ | [INFO] | ||
+ | [INFO] 3.11 - Ensure that Docker server certificate file ownership is set to root:root (Automated) | ||
+ | [INFO] | ||
+ | [INFO] 3.12 - Ensure that the Docker server certificate file permissions are set to 444 or more restrictively (Automated) | ||
+ | [INFO] | ||
+ | [INFO] 3.13 - Ensure that the Docker server certificate key file ownership is set to root:root (Automated) | ||
+ | [INFO] | ||
+ | [INFO] 3.14 - Ensure that the Docker server certificate key file permissions are set to 400 (Automated) | ||
+ | [INFO] | ||
+ | [PASS] 3.15 - Ensure that the Docker socket file ownership is set to root:docker (Automated) | ||
+ | [PASS] 3.16 - Ensure that the Docker socket file permissions are set to 660 or more restrictively (Automated) | ||
+ | [INFO] 3.17 - Ensure that the daemon.json file ownership is set to root:root (Automated) | ||
+ | [INFO] | ||
+ | [INFO] 3.18 - Ensure that daemon.json file permissions are set to 644 or more restrictive (Automated) | ||
+ | [INFO] | ||
+ | [PASS] 3.19 - Ensure that the / | ||
+ | [PASS] 3.20 - Ensure that the / | ||
+ | [INFO] 3.21 - Ensure that the / | ||
+ | [INFO] | ||
+ | [INFO] 3.22 - Ensure that the / | ||
+ | [INFO] | ||
+ | [PASS] 3.23 - Ensure that the Containerd socket file ownership is set to root:root (Automated) | ||
+ | [PASS] 3.24 - Ensure that the Containerd socket file permissions are set to 660 or more restrictively (Automated) | ||
+ | |||
+ | [INFO] 4 - Container Images and Build File | ||
+ | [INFO] 4.1 - Ensure | ||
+ | [INFO] | ||
+ | [NOTE] 4.2 - Ensure that containers use only trusted base images (Manual) | ||
+ | [NOTE] 4.3 - Ensure that unnecessary packages are not installed in the container (Manual) | ||
+ | [NOTE] 4.4 - Ensure images are scanned and rebuilt to include security patches (Manual) | ||
+ | [WARN] 4.5 - Ensure Content trust for Docker is Enabled (Automated) | ||
+ | [WARN] 4.6 - Ensure that HEALTHCHECK instructions have been added to container images (Automated) | ||
+ | [WARN] | ||
+ | [WARN] | ||
+ | [WARN] | ||
+ | [WARN] | ||
+ | [PASS] 4.7 - Ensure update instructions are not used alone in the Dockerfile (Manual) | ||
+ | [NOTE] 4.8 - Ensure setuid and setgid permissions are removed (Manual) | ||
+ | [PASS] 4.9 - Ensure that COPY is used instead of ADD in Dockerfiles (Manual) | ||
+ | [NOTE] 4.10 - Ensure secrets are not stored in Dockerfiles (Manual) | ||
+ | [NOTE] 4.11 - Ensure only verified packages are installed (Manual) | ||
+ | [NOTE] 4.12 - Ensure all signed artifacts are validated (Manual) | ||
+ | |||
+ | [INFO] 5 - Container Runtime | ||
+ | [INFO] | ||
+ | |||
+ | [INFO] 6 - Docker Security Operations | ||
+ | [INFO] 6.1 - Ensure that image sprawl is avoided (Manual) | ||
+ | [INFO] | ||
+ | [INFO] | ||
+ | [INFO] 6.2 - Ensure that container sprawl is avoided (Manual) | ||
+ | [INFO] | ||
+ | |||
+ | [INFO] 7 - Docker Swarm Configuration | ||
+ | [WARN] 7.1 - Ensure swarm mode is not Enabled, if not needed (Automated) | ||
+ | [PASS] 7.2 - Ensure that the minimum number of manager nodes have been created in a swarm (Automated) (Swarm mode not enabled) | ||
+ | [PASS] 7.3 - Ensure that swarm services are bound to a specific host interface (Automated) (Swarm mode not enabled) | ||
+ | [PASS] 7.4 - Ensure that all Docker swarm overlay networks are encrypted (Automated) | ||
+ | [PASS] 7.5 - Ensure that Docker' | ||
+ | [PASS] 7.6 - Ensure that swarm manager is run in auto-lock mode (Automated) (Swarm mode not enabled) | ||
+ | [PASS] 7.7 - Ensure that the swarm manager auto-lock key is rotated periodically (Manual) (Swarm mode not enabled) | ||
+ | [PASS] 7.8 - Ensure that node certificates are rotated as appropriate (Manual) (Swarm mode not enabled) | ||
+ | [PASS] 7.9 - Ensure that CA certificates are rotated as appropriate (Manual) (Swarm mode not enabled) | ||
+ | [PASS] 7.10 - Ensure that management plane traffic is separated from data plane traffic (Manual) (Swarm mode not enabled) | ||
+ | |||
+ | |||
+ | Section C - Score | ||
+ | |||
+ | [INFO] Checks: 86 | ||
+ | [INFO] Score: 1 | ||
</ | </ | ||
Ligne 821: | Ligne 472: | ||
* **[NOTE]** : Vous informe d'un **best practice**. | * **[NOTE]** : Vous informe d'un **best practice**. | ||
- | =====LAB #5 - Sécurisation de la Configuration de l' | + | =====LAB #4 - Sécurisation de la Configuration de l' |
Lors de l' | Lors de l' | ||
Ligne 828: | Ligne 479: | ||
... | ... | ||
[INFO] 1 - Host Configuration | [INFO] 1 - Host Configuration | ||
- | + | [INFO] 1.1 - Linux Hosts Specific Configuration | |
- | [INFO] 1.1 - General Configuration | + | [WARN] 1.1.1 - Ensure a separate partition for containers has been created |
- | [NOTE] 1.1.1 - Ensure the container host has been Hardened | + | [INFO] 1.1.2 - Ensure only trusted users are allowed to control Docker daemon |
- | [INFO] 1.1.2 - Ensure Docker is up to date | + | [INFO] |
- | [INFO] | + | [WARN] 1.1.3 - Ensure auditing is configured for the Docker daemon |
- | [INFO] | + | [WARN] 1.1.4 - Ensure auditing is configured for Docker files and directories -/run/containerd (Automated) |
- | + | [WARN] 1.1.5 - Ensure auditing is configured for Docker files and directories - /var/lib/ | |
- | [INFO] 1.2 - Linux Hosts Specific Configuration | + | [WARN] 1.1.6 - Ensure auditing is configured for Docker files and directories - /etc/docker |
- | [WARN] 1.2.1 - Ensure a separate partition for containers has been created | + | [WARN] 1.1.7 - Ensure auditing is configured for Docker files and directories - docker.service (Automated) |
- | [INFO] 1.2.2 - Ensure only trusted users are allowed to control Docker daemon | + | [INFO] 1.1.8 - Ensure auditing is configured for Docker files and directories - containerd.sock (Automated) |
- | [INFO] | + | |
- | [WARN] 1.2.3 - Ensure auditing is configured for the Docker daemon | + | |
- | [WARN] 1.2.4 - Ensure auditing is configured for Docker files and directories - /var/lib/docker | + | |
- | [WARN] 1.2.5 - Ensure auditing is configured for Docker files and directories - /etc/docker | + | |
- | [WARN] 1.2.6 - Ensure auditing is configured for Docker files and directories - docker.service | + | |
- | [WARN] 1.2.7 - Ensure auditing is configured for Docker files and directories - docker.socket | + | |
- | [WARN] 1.2.8 - Ensure auditing is configured for Docker files and directories - / | + | |
- | [INFO] 1.2.9 - Ensure auditing is configured for Docker files and directories - / | + | |
[INFO] | [INFO] | ||
- | [INFO] 1.2.10 - Ensure auditing is configured for Docker files and directories - / | + | [WARN] 1.1.9 - Ensure auditing is configured for Docker files and directories - docker.socket (Automated) |
+ | [WARN] 1.1.10 - Ensure auditing is configured for Docker files and directories - / | ||
+ | [INFO] 1.1.11 - Ensure auditing is configured for Dockerfiles | ||
+ | [INFO] | ||
+ | [WARN] 1.1.12 - 1.1.12 Ensure auditing is configured for Dockerfiles and directories - / | ||
+ | [INFO] 1.1.13 - Ensure auditing is configured for Docker files and directories - / | ||
+ | [INFO] | ||
+ | [WARN] 1.1.14 - Ensure auditing is configured for Docker files and directories - / | ||
+ | [WARN] 1.1.15 - Ensure auditing is configured for Docker files and directories - / | ||
+ | [INFO] 1.1.16 - Ensure auditing is configured for Docker files and directories - / | ||
[INFO] | [INFO] | ||
- | [WARN] 1.2.11 | + | [INFO] 1.1.17 - Ensure auditing is configured for Docker files and directories - / |
- | [INFO] 1.2.12 | + | |
[INFO] | [INFO] | ||
+ | [WARN] 1.1.18 - Ensure auditing is configured for Docker files and directories - / | ||
+ | [INFO] 1.2 - General Configuration | ||
+ | [NOTE] 1.2.1 - Ensure the container host has been Hardened (Manual) | ||
+ | [PASS] 1.2.2 - Ensure that the version of Docker is up to date (Manual) | ||
+ | [INFO] | ||
... | ... | ||
</ | </ | ||
Ligne 857: | Ligne 513: | ||
Les problèmes de sécurité qu'il convient à résoudre sont indiqués par les annotations **[WARN]**. | Les problèmes de sécurité qu'il convient à résoudre sont indiqués par les annotations **[WARN]**. | ||
- | ====5.1 - [WARN] 1.2.1 - Ensure a separate partition for containers has been created==== | + | ====[WARN] 1.1.1 - Ensure a separate partition for containers has been created |
Par défaut, tous les fichiers de Docker sont stockés dans le répertoire **/ | Par défaut, tous les fichiers de Docker sont stockés dans le répertoire **/ | ||
- | ====5.2 - [WARN] 1.2.3 - Ensure auditing is configured for the Docker daemon==== | + | ====[WARN] 1.1.3 - Ensure auditing is configured for the Docker daemon |
< | < | ||
- | [WARN] 1.2.4 - Ensure auditing is configured for Docker files and directories - / | + | [WARN] 1.1.4 - Ensure auditing is configured for Docker files and directories -/ |
- | [WARN] 1.2.5 | + | [WARN] 1.1.5 - Ensure auditing is configured for Docker files and directories - / |
- | [WARN] 1.2.6 | + | [WARN] 1.1.6 - Ensure auditing is configured for Docker files and directories - / |
- | [WARN] 1.2.7 | + | [WARN] 1.1.7 - Ensure auditing is configured for Docker files and directories - docker.service |
- | [WARN] 1.2.8 | + | [WARN] 1.1.9 - Ensure auditing is configured for Docker files and directories - docker.socket |
- | [WARN] 1.2.11 | + | [WARN] 1.1.10 - Ensure auditing is configured for Docker files and directories - / |
+ | [WARN] 1.1.12 - Ensure auditing is configured for Dockerfiles and directories - / | ||
+ | [WARN] 1.1.14 | ||
+ | [WARN] 1.1.15 - Ensure auditing is configured for Docker files and directories - / | ||
+ | [WARN] 1.1.18 - Ensure auditing is configured for Docker files and directories - / | ||
</ | </ | ||
Ces avertissements sont présents parce que **auditd** n'est pas installé et parce qu'il n'y a pas de règles spécifiques au daemon Docker et ses répertoires et fichiers associés. | Ces avertissements sont présents parce que **auditd** n'est pas installé et parce qu'il n'y a pas de règles spécifiques au daemon Docker et ses répertoires et fichiers associés. | ||
+ | |||
+ | Editez le fichier **/ | ||
+ | |||
+ | < | ||
+ | root@manager: | ||
+ | |||
+ | root@manager: | ||
+ | deb http:// | ||
+ | deb-src http:// | ||
+ | deb http:// | ||
+ | deb-src http:// | ||
+ | deb [arch=amd64] https:// | ||
+ | </ | ||
+ | |||
+ | Exécutez la commande **apt-update** : | ||
+ | |||
+ | < | ||
+ | root@manager: | ||
+ | Ign:1 http:// | ||
+ | Atteint:2 http:// | ||
+ | Atteint:3 http:// | ||
+ | Réception de:4 https:// | ||
+ | 44,8 ko réceptionnés en 0s (107 ko/s) | ||
+ | Lecture des listes de paquets... Fait | ||
+ | Construction de l' | ||
+ | Lecture des informations d' | ||
+ | 254 packages can be upgraded. Run 'apt list --upgradable' | ||
+ | </ | ||
Pour installer auditd, utilisez **apt-get** : | Pour installer auditd, utilisez **apt-get** : | ||
< | < | ||
- | root@manager: | + | root@manager: |
</ | </ | ||
Ligne 884: | Ligne 572: | ||
< | < | ||
root@manager: | root@manager: | ||
+ | |||
root@manager: | root@manager: | ||
## First rule - delete all | ## First rule - delete all | ||
Ligne 909: | Ligne 598: | ||
-w / | -w / | ||
-w / | -w / | ||
+ | -w / | ||
+ | -w / | ||
+ | -w / | ||
+ | -w / | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : L' | **Important** : L' | ||
</ | </ | ||
Ligne 940: | Ligne 633: | ||
-w / | -w / | ||
-w / | -w / | ||
+ | -w / | ||
+ | -w / | ||
+ | -w / | ||
+ | -w / | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** - Pour plus d' | **Important** - Pour plus d' | ||
</ | </ | ||
Ligne 951: | Ligne 648: | ||
root@manager: | root@manager: | ||
... | ... | ||
- | [PASS] 1.2.4 - Ensure auditing is configured for Docker files and directories - / | + | [PASS] 1.1.4 - Ensure auditing is configured for Docker files and directories -/ |
- | [PASS] 1.2.5 | + | [PASS] 1.1.5 - Ensure auditing is configured for Docker files and directories - / |
- | [PASS] 1.2.6 | + | [PASS] 1.1.6 - Ensure auditing is configured for Docker files and directories - / |
- | [PASS] 1.2.7 | + | [PASS] 1.1.7 - Ensure auditing is configured for Docker files and directories - docker.service |
- | [PASS] 1.2.8 | + | [PASS] 1.1.9 - Ensure auditing is configured for Docker files and directories - docker.socket |
- | ... | + | [PASS] 1.1.10 - Ensure auditing is configured for Docker files and directories - / |
- | [PASS] 1.2.11 | + | [PASS] 1.1.12 - Ensure auditing is configured for Dockerfiles and directories - / |
+ | [PASS] 1.1.14 - Ensure auditing is configured for Docker files and directories - / | ||
+ | [PASS] 1.1.15 - Ensure auditing is configured for Docker files and directories - / | ||
+ | [PASS] 1.1.18 - Ensure auditing is configured for Docker files and directories - / | ||
... | ... | ||
</ | </ | ||
- | =====LAB #6 - Sécurisation de la Configuration du daemon Docker===== | + | =====LAB #5 - Sécurisation de la Configuration du daemon Docker===== |
Exécutez de nouveau le script **docker-bench-security.sh**. Vous devez obtenir un résultat similaire à ceci en ce qui concerne la sécurité de la configuration du daemon Docker : | Exécutez de nouveau le script **docker-bench-security.sh**. Vous devez obtenir un résultat similaire à ceci en ce qui concerne la sécurité de la configuration du daemon Docker : | ||
Ligne 968: | Ligne 668: | ||
... | ... | ||
[INFO] 2 - Docker daemon configuration | [INFO] 2 - Docker daemon configuration | ||
- | [WARN] 2.1 - Ensure network traffic is restricted between containers on the default bridge | + | [NOTE] 2.1 - Run the Docker daemon as a non-root user, if possible (Manual) |
- | [PASS] 2.2 | + | [WARN] 2.2 - Ensure network traffic is restricted between containers on the default bridge |
- | [PASS] 2.3 | + | [PASS] 2.3 - Ensure the logging level is set to ' |
- | [PASS] 2.4 | + | [PASS] 2.4 - Ensure Docker is allowed to make changes to iptables |
- | [PASS] 2.5 | + | [PASS] 2.5 - Ensure insecure registries are not used (Scored) |
- | [INFO] 2.6 | + | [PASS] 2.6 - Ensure aufs storage driver is not used (Scored) |
+ | [INFO] 2.7 - Ensure TLS authentication for Docker daemon is configured | ||
[INFO] | [INFO] | ||
- | [INFO] 2.7 | + | [INFO] 2.8 - Ensure the default ulimit is configured appropriately |
[INFO] | [INFO] | ||
- | [WARN] 2.8 | + | [WARN] 2.9 - Enable user namespace support |
- | [PASS] 2.9 | + | [PASS] 2.10 - Ensure the default cgroup usage has been confirmed |
- | [PASS] 2.10 | + | [PASS] 2.11 - Ensure base device size is not changed until needed |
- | [WARN] 2.11 | + | [WARN] 2.12 - Ensure that authorization for Docker client commands is enabled |
- | [WARN] 2.12 | + | [WARN] 2.13 - Ensure centralized and remote logging is configured |
- | [PASS] 2.13 | + | [WARN] 2.14 - Ensure containers are restricted from acquiring new privileges (Scored) |
- | [WARN] 2.14 | + | [WARN] 2.15 - Ensure live restore is enabled |
- | [PASS] 2.15 | + | [WARN] 2.16 - Ensure Userland Proxy is Disabled |
- | [PASS] 2.16 | + | [PASS] 2.17 - Ensure that a daemon-wide custom seccomp profile is applied if appropriate |
- | [WARN] 2.17 - Ensure containers are restricted from acquiring new privileges | + | [PASS] 2.18 - Ensure that experimental features are not implemented in production |
... | ... | ||
</ | </ | ||
Ligne 992: | Ligne 693: | ||
Les problèmes de sécurité qu'il convient à résoudre sont indiqués par les annotations **[WARN]**. | Les problèmes de sécurité qu'il convient à résoudre sont indiqués par les annotations **[WARN]**. | ||
- | ====6.1 - [WARN] 2.1 | + | ====[WARN] 2.2 - Ensure network traffic is restricted between containers on the default bridge |
Par défaut Docker permet un trafic réseau sans restrictions entre des conteneurs sur le même hôte. Il est cependant possible de modifier la configuration par défaut. Pour empêcher ceci, il faut fixer la valeur de **icc** à **false**. De cette façon, docker crée des conteneurs qui peuvent communiquer entre eux **uniquement** s'il existe un lien. | Par défaut Docker permet un trafic réseau sans restrictions entre des conteneurs sur le même hôte. Il est cependant possible de modifier la configuration par défaut. Pour empêcher ceci, il faut fixer la valeur de **icc** à **false**. De cette façon, docker crée des conteneurs qui peuvent communiquer entre eux **uniquement** s'il existe un lien. | ||
Ligne 998: | Ligne 699: | ||
Pour plus d' | Pour plus d' | ||
- | ====6.2 - [WARN] 2.8 | + | ====[WARN] 2.9 - Enable user namespace support |
Cet avertissement nous indique que l' | Cet avertissement nous indique que l' | ||
Ligne 1004: | Ligne 705: | ||
Pour plus d' | Pour plus d' | ||
- | ====6.3 - [WARN] 2.11 | + | ====[WARN] 2.12 - Ensure that authorization for Docker client commands is enabled |
Par défaut, Docker permet un accès sans restrictions aux daemon Docker. Il est possible de restreindre l' | Par défaut, Docker permet un accès sans restrictions aux daemon Docker. Il est possible de restreindre l' | ||
Ligne 1010: | Ligne 711: | ||
Pour plus d' | Pour plus d' | ||
- | ====6.4 - [WARN] 2.12 | + | ====[WARN] 2.13 - Ensure centralized and remote logging is configured |
Cet avertissement indique que la configuration de rsyslog ne permet pas l' | Cet avertissement indique que la configuration de rsyslog ne permet pas l' | ||
Ligne 1016: | Ligne 717: | ||
Pour plus d' | Pour plus d' | ||
- | ====6.5 - [WARN] 2.14 | + | ====[WARN] 2.14 - Ensure containers are restricted from acquiring new privileges (Scored)==== |
+ | |||
+ | Par défaut un conteneur peut obtenir une escalade de privilèges en utilisant les binaires setuid ou setgid. Pour interdire ceci il faut fixer la valeur de **no-new-privileges** à **true**. | ||
+ | |||
+ | Pour plus d' | ||
+ | |||
+ | ====[WARN] 2.15 - Ensure live restore is enabled (Scored)==== | ||
+ | |||
+ | L' | ||
+ | |||
+ | ====[WARN] 2.16 - Ensure Userland Proxy is Disabled | ||
Il existe deux méthodes pour qu'un conteneur puisse router vers l' | Il existe deux méthodes pour qu'un conteneur puisse router vers l' | ||
Ligne 1027: | Ligne 738: | ||
Pour plus d' | Pour plus d' | ||
- | ====6.6 - [WARN] 2.17 - Ensure containers are restricted from acquiring new privileges==== | + | ====5.1 - Le Fichier / |
- | + | ||
- | Par défaut un conteneur peut obtenir une escalade de privilèges en utilisant les binaires setuid ou setgid. Pour interdire ceci il faut fixer la valeur de **no-new-privileges** à **true**. | + | |
- | + | ||
- | Pour plus d' | + | |
- | + | ||
- | ====6.7 | + | |
Créez le fichier **/ | Créez le fichier **/ | ||
Ligne 1039: | Ligne 744: | ||
< | < | ||
root@manager: | root@manager: | ||
+ | |||
root@manager: | root@manager: | ||
{ | { | ||
Ligne 1049: | Ligne 755: | ||
} | } | ||
</ | </ | ||
- | |||
- | Notez ici que **live-restore** est fixé à **true**. Ceci permet aux conteneurs de continuer à fonctionner même quand le daemon Docker ne fonctionne pas. Ceci est utile pendant la mise-à-jour de Docker. | ||
Re-démarrez le service Docker : | Re-démarrez le service Docker : | ||
Ligne 1068: | Ligne 772: | ||
< | < | ||
- | root@manager: | ||
root@manager: | root@manager: | ||
... | ... | ||
- | [PASS] 2.1 | + | [PASS] 2.2 - Ensure network traffic is restricted between containers on the default bridge |
- | ... | + | [PASS] 2.3 - Ensure the logging level is set to ' |
- | [PASS] 2.8 | + | [PASS] 2.4 - Ensure Docker is allowed to make changes to iptables (Scored) |
- | ... | + | [PASS] 2.5 - Ensure insecure registries are not used (Scored) |
- | [WARN] 2.11 - Ensure | + | [PASS] 2.6 - Ensure aufs storage driver is not used (Scored) |
- | [PASS] 2.12 | + | [PASS] 2.9 - Enable user namespace support |
- | ... | + | [PASS] 2.10 - Ensure the default cgroup usage has been confirmed (Scored) |
- | [PASS] 2.14 | + | [PASS] 2.11 - Ensure |
- | ... | + | [PASS] 2.13 - Ensure centralized and remote logging is configured |
- | [PASS] 2.17 | + | [PASS] 2.14 - Ensure containers are restricted from acquiring new privileges (Scored) |
+ | [PASS] 2.15 - Ensure live restore is enabled (Scored) | ||
+ | [PASS] 2.16 - Ensure Userland Proxy is Disabled | ||
+ | [PASS] 2.17 - Ensure that a daemon-wide custom seccomp profile is applied if appropriate (Manual) | ||
+ | [PASS] 2.18 - Ensure | ||
... | ... | ||
</ | </ | ||
Ligne 1086: | Ligne 793: | ||
Pour plus d' | Pour plus d' | ||
- | =====LAB #7 - Sécurisation des Images et les Fichiers de Construction===== | + | =====LAB #6 - Sécurisation des Images et les Fichiers de Construction===== |
Créez le conteneur mysql : | Créez le conteneur mysql : | ||
< | < | ||
+ | root@manager: | ||
+ | Lecture des listes de paquets... Fait | ||
+ | Construction de l' | ||
+ | Lecture des informations d' | ||
+ | Le paquet suivant a été installé automatiquement et n'est plus nécessaire : | ||
+ | libsasl2-modules | ||
+ | Veuillez utiliser « apt autoremove » pour le supprimer. | ||
+ | Les paquets suivants seront mis à jour : | ||
+ | docker-ce | ||
+ | 1 mis à jour, 0 nouvellement installés, 0 à enlever et 252 non mis à jour. | ||
+ | Il est nécessaire de prendre 22,7 Mo dans les archives. | ||
+ | Après cette opération, 497 ko d' | ||
+ | Réception de:1 https:// | ||
+ | 22,7 Mo réceptionnés en 0s (26,0 Mo/s) | ||
+ | Lecture des fichiers de modifications (« changelog »)... Terminé | ||
+ | (Lecture de la base de données... 112865 fichiers et répertoires déjà installés.) | ||
+ | Préparation du dépaquetage de .../ | ||
+ | Dépaquetage de docker-ce (5: | ||
+ | Paramétrage de docker-ce (5: | ||
+ | Traitement des actions différées (« triggers ») pour systemd (232-25+deb9u14) ... | ||
+ | |||
root@manager: | root@manager: | ||
Unable to find image ' | Unable to find image ' | ||
latest: Pulling from library/ | latest: Pulling from library/ | ||
- | 80369df48736: Pull complete | + | e9f2695d7e5b: Pull complete |
- | e8f52315cb10: Pull complete | + | 80c6055edb33: Pull complete |
- | cf2189b391fc: Pull complete | + | c646ab461d8b: Pull complete |
- | cc98f645c682: Pull complete | + | 012006c6a591: Pull complete |
- | 27a27ac83f74: Pull complete | + | 929d5fa34b95: Pull complete |
- | fa1f04453414: Pull complete | + | 17e0243877fa: Pull complete |
- | d45bf7d22d33: Pull complete | + | 1850b459cd2f: Pull complete |
- | 3dbac26e409c: Pull complete | + | 8dceaed53baf: Pull complete |
- | 9017140fb8c1: Pull complete | + | 197b834ea1cd: Pull complete |
- | b76dda2673ae: | + | 8df78c25b227: Pull complete |
- | bea9eb46d12a: | + | Digest: sha256:ceb98918916bd5261b3e9866ac8271d75d276b8a4db56f1dc190770342a77a9b |
- | e1f050a38d0f: Pull complete | + | |
- | Digest: sha256:7345ce4ce6f0c1771d01fa333b8edb2c606ca59d385f69575f8e3e2ec6695eee | + | |
Status: Downloaded newer image for mysql: | Status: Downloaded newer image for mysql: | ||
- | 54606c03c52c5e3ec0328029d69b869d4b285fb433015576dedc8b8dd4ad0494 | + | e503dd98f88992ae6ed5ec4dcaa2e18982ade8ec74966869515a120763418f74 |
root@manager: | root@manager: | ||
- | CONTAINER ID IMAGE | + | CONTAINER ID IMAGE |
- | 54606c03c52c | + | e503dd98f889 |
</ | </ | ||
Ligne 1120: | Ligne 847: | ||
... | ... | ||
[INFO] 4 - Container Images and Build File | [INFO] 4 - Container Images and Build File | ||
- | [WARN] 4.1 - Ensure a user for the container has been created | + | [WARN] 4.1 - Ensure |
[WARN] | [WARN] | ||
- | [NOTE] 4.2 - Ensure that containers use only trusted base images | + | [NOTE] 4.2 - Ensure that containers use only trusted base images |
- | [NOTE] 4.3 - Ensure that unnecessary packages are not installed in the container | + | [NOTE] 4.3 - Ensure that unnecessary packages are not installed in the container |
- | [NOTE] 4.4 - Ensure images are scanned and rebuilt to include security patches | + | [NOTE] 4.4 - Ensure images are scanned and rebuilt to include security patches |
- | [WARN] 4.5 - Ensure Content trust for Docker is Enabled | + | [WARN] 4.5 - Ensure Content trust for Docker is Enabled |
- | [WARN] 4.6 - Ensure that HEALTHCHECK instructions have been added to container images | + | [WARN] 4.6 - Ensure that HEALTHCHECK instructions have been added to container images |
- | [WARN] | + | |
[WARN] | [WARN] | ||
- | [INFO] 4.7 - Ensure update instructions are not use alone in the Dockerfile | + | [PASS] 4.7 - Ensure update instructions are not used alone in the Dockerfile |
- | [INFO] | + | [NOTE] 4.8 - Ensure setuid and setgid permissions are removed |
- | [NOTE] 4.8 - Ensure setuid and setgid permissions are removed | + | [PASS] 4.9 - Ensure that COPY is used instead of ADD in Dockerfiles |
- | [PASS] 4.9 - Ensure that COPY is used instead of ADD in Dockerfiles | + | [NOTE] 4.10 - Ensure secrets are not stored in Dockerfiles |
- | [NOTE] 4.10 - Ensure secrets are not stored in Dockerfiles | + | [NOTE] 4.11 - Ensure only verified packages are installed |
- | [NOTE] 4.11 - Ensure only verified packages are installed | + | [NOTE] 4.12 - Ensure all signed artifacts are validated (Manual) |
... | ... | ||
</ | </ | ||
- | ====7.1 - [WARN] 4.1 - Ensure a user for the container has been created==== | + | ====[WARN] 4.1 - Ensure |
Les processus dans le conteneur **mysql** tourne sous l'UID de root. Ceci est l' | Les processus dans le conteneur **mysql** tourne sous l'UID de root. Ceci est l' | ||
Ligne 1144: | Ligne 870: | ||
Pour plus d' | Pour plus d' | ||
- | ====7.2 - [WARN] 4.5 - Ensure Content trust for Docker is Enabled==== | + | ====[WARN] 4.5 - Ensure Content trust for Docker is Enabled |
Cette ligne indique que le support de Content trust n'a pas été activé. Content trust permet de s' | Cette ligne indique que le support de Content trust n'a pas été activé. Content trust permet de s' | ||
Ligne 1153: | Ligne 879: | ||
root@manager: | root@manager: | ||
DOCKER_CONTENT_TRUST=1 | DOCKER_CONTENT_TRUST=1 | ||
+ | |||
root@manager: | root@manager: | ||
</ | </ | ||
Ligne 1159: | Ligne 886: | ||
< | < | ||
- | root@manager: | + | root@manager: |
+ | Connection to 10.0.2.62 closed by remote host. | ||
+ | Connection to 10.0.2.62 closed. | ||
+ | |||
+ | root@debian11: | ||
+ | trainee@10.0.2.62' | ||
+ | Linux manager.i2tch.loc 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 | ||
+ | |||
+ | The programs included with the Debian GNU/Linux system are free software; | ||
+ | the exact distribution terms for each program are described in the | ||
+ | individual files in / | ||
+ | |||
+ | Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent | ||
+ | permitted by applicable law. | ||
+ | Last login: Sun Dec 17 18:39:07 2023 from 10.0.2.46 | ||
+ | |||
+ | trainee@manager: | ||
+ | Mot de passe : fenestros | ||
+ | |||
+ | root@manager: | ||
+ | |||
+ | root@manager: | ||
+ | |||
+ | root@manager: | ||
mysql | mysql | ||
- | root@manager: | ||
- | CONTAINER ID IMAGE | ||
- | 54606c03c52c | ||
</ | </ | ||
Ligne 1172: | Ligne 919: | ||
... | ... | ||
[INFO] 4 - Container Images and Build File | [INFO] 4 - Container Images and Build File | ||
- | [WARN] 4.1 - Ensure a user for the container has been created | + | [WARN] 4.1 - Ensure |
[WARN] | [WARN] | ||
- | [NOTE] 4.2 - Ensure that containers use only trusted base images | + | [NOTE] 4.2 - Ensure that containers use only trusted base images |
- | [NOTE] 4.3 - Ensure that unnecessary packages are not installed in the container | + | [NOTE] 4.3 - Ensure that unnecessary packages are not installed in the container |
- | [NOTE] 4.4 - Ensure images are scanned and rebuilt to include security patches | + | [NOTE] 4.4 - Ensure images are scanned and rebuilt to include security patches |
- | [PASS] 4.5 - Ensure Content trust for Docker is Enabled | + | [PASS] 4.5 - Ensure Content trust for Docker is Enabled |
- | [WARN] 4.6 - Ensure that HEALTHCHECK instructions have been added to container images | + | [WARN] 4.6 - Ensure that HEALTHCHECK instructions have been added to container images |
- | [WARN] | + | |
[WARN] | [WARN] | ||
- | [INFO] 4.7 - Ensure update instructions are not use alone in the Dockerfile | + | [PASS] 4.7 - Ensure update instructions are not used alone in the Dockerfile |
- | [INFO] | + | [NOTE] 4.8 - Ensure setuid and setgid permissions are removed |
- | [NOTE] 4.8 - Ensure setuid and setgid permissions are removed | + | [PASS] 4.9 - Ensure that COPY is used instead of ADD in Dockerfiles |
- | [PASS] 4.9 - Ensure that COPY is used instead of ADD in Dockerfiles | + | [NOTE] 4.10 - Ensure secrets are not stored in Dockerfiles |
- | [NOTE] 4.10 - Ensure secrets are not stored in Dockerfiles | + | [NOTE] 4.11 - Ensure only verified packages are installed |
- | [NOTE] 4.11 - Ensure only verified packages are installed | + | [NOTE] 4.12 - Ensure all signed artifacts are validated (Manual) |
... | ... | ||
</ | </ | ||
Ligne 1192: | Ligne 938: | ||
Pour plus d' | Pour plus d' | ||
- | ====7.3 - [WARN] 4.6 - Ensure that HEALTHCHECK instructions have been added to container images==== | + | ====[WARN] 4.6 - Ensure that HEALTHCHECK instructions have been added to container images==== |
Quand une image est construite il est possible d'y mettre un **HEALTHCHECK** dont le statut peut être vérifié par Docker afin de relancer le conteneur si nécessaire. | Quand une image est construite il est possible d'y mettre un **HEALTHCHECK** dont le statut peut être vérifié par Docker afin de relancer le conteneur si nécessaire. | ||
Ligne 1206: | Ligne 952: | ||
Pour plus d' | Pour plus d' | ||
- | =====LAB #8 - Sécurisation du Container Runtime===== | + | =====LAB #7 - Sécurisation du Container Runtime===== |
Exécutez de nouveau le script **docker-bench-security.sh**, | Exécutez de nouveau le script **docker-bench-security.sh**, | ||
Ligne 1214: | Ligne 960: | ||
... | ... | ||
[INFO] 5 - Container Runtime | [INFO] 5 - Container Runtime | ||
- | [WARN] 5.1 - Ensure that, if applicable, an AppArmor Profile is enabled | + | [WARN] 5.1 - Ensure that, if applicable, an AppArmor Profile is enabled |
[WARN] | [WARN] | ||
- | [WARN] 5.2 - Ensure that, if applicable, SELinux security options are set | + | [WARN] 5.2 - Ensure that, if applicable, SELinux security options are set (Automated) |
[WARN] | [WARN] | ||
- | [PASS] 5.3 - Ensure Linux Kernel Capabilities | + | [PASS] 5.3 - Ensure |
- | [PASS] 5.4 - Ensure that privileged containers are not used | + | [PASS] 5.4 - Ensure that privileged containers are not used (Automated) |
- | [PASS] 5.5 - Ensure sensitive host system directories are not mounted on containers | + | [PASS] 5.5 - Ensure sensitive host system directories are not mounted on containers |
- | [PASS] 5.6 - Ensure sshd is not run within containers | + | [PASS] 5.6 - Ensure sshd is not run within containers |
- | [PASS] 5.7 - Ensure privileged ports are not mapped within containers | + | [PASS] 5.7 - Ensure privileged ports are not mapped within containers |
- | [NOTE] 5.8 - Ensure that only needed ports are open on the container | + | [PASS] 5.8 - Ensure that only needed ports are open on the container |
- | [PASS] 5.9 - Ensure the host's network namespace is not shared | + | [PASS] 5.9 - Ensure |
- | [WARN] 5.10 - Ensure that the memory usage for containers is limited | + | [WARN] 5.10 - Ensure that the memory usage for containers is limited |
- | [WARN] | + | [WARN] |
- | [WARN] 5.11 - Ensure CPU priority is set appropriately on the container | + | [WARN] 5.11 - Ensure |
- | [WARN] | + | [WARN] |
- | [WARN] 5.12 - Ensure that the container' | + | [WARN] 5.12 - Ensure that the container' |
- | [WARN] | + | [WARN] |
- | [PASS] 5.13 - Ensure that incoming container traffic is bound to a specific host interface | + | [PASS] 5.13 - Ensure that incoming container traffic is bound to a specific host interface |
- | [WARN] 5.14 - Ensure that the ' | + | [WARN] 5.14 - Ensure that the ' |
- | [WARN] | + | [WARN] |
- | [PASS] 5.15 - Ensure the host's process namespace is not shared | + | [PASS] 5.15 - Ensure |
- | [PASS] 5.16 - Ensure the host's IPC namespace is not shared | + | [PASS] 5.16 - Ensure |
- | [PASS] 5.17 - Ensure that host devices are not directly exposed to containers | + | [PASS] 5.17 - Ensure that host devices are not directly exposed to containers |
- | [INFO] 5.18 - Ensure that the default ulimit is overwritten at runtime if needed | + | [INFO] 5.18 - Ensure that the default ulimit is overwritten at runtime if needed |
- | [INFO] | + | [INFO] |
- | [PASS] 5.19 - Ensure mount propagation mode is not set to shared | + | [PASS] 5.19 - Ensure mount propagation mode is not set to shared |
- | [PASS] 5.20 - Ensure the host's UTS namespace is not shared | + | [PASS] 5.20 - Ensure |
- | [PASS] 5.21 - Ensure the default seccomp profile is not Disabled | + | [PASS] 5.21 - Ensure the default seccomp profile is not Disabled |
- | [NOTE] 5.22 - Ensure docker exec commands are not used with privileged option | + | [NOTE] 5.22 - Ensure |
- | [NOTE] 5.23 - Ensure that docker exec commands are not used with the user=root option | + | [NOTE] 5.23 - Ensure that docker exec commands are not used with the user=root option |
- | [PASS] 5.24 - Ensure that cgroup usage is confirmed | + | [PASS] 5.24 - Ensure that cgroup usage is confirmed |
- | [WARN] 5.25 - Ensure that the container is restricted from acquiring additional privileges | + | [PASS] 5.25 - Ensure that the container is restricted from acquiring additional privileges |
- | [WARN] | + | [WARN] 5.26 - Ensure that container health is checked at runtime |
- | [WARN] 5.26 - Ensure that container health is checked at runtime | + | [WARN] |
- | [WARN] | + | [INFO] 5.27 - Ensure that Docker commands always make use of the latest version of their image (Manual) |
- | [INFO] 5.27 - Ensure that Docker commands always make use of the latest version of their image | + | [WARN] 5.28 - Ensure that the PIDs cgroup limit is used (Automated) |
- | [WARN] 5.28 - Ensure that the PIDs cgroup limit is used | + | [WARN] |
- | [WARN] | + | [INFO] 5.29 - Ensure that Docker' |
- | [INFO] 5.29 - Ensure that Docker' | + | [INFO] |
- | [INFO] | + | [PASS] 5.30 - Ensure that the host's user namespaces are not shared |
- | [PASS] 5.30 - Ensure that the host's user namespaces are not shared | + | [PASS] 5.31 - Ensure that the Docker socket is not mounted inside any containers |
- | [PASS] 5.31 - Ensure that the Docker socket is not mounted inside any containers | + | |
... | ... | ||
</ | </ | ||
Ligne 1261: | Ligne 1006: | ||
Les problèmes de sécurité qu'il convient à résoudre sont indiqués par les annotations **[WARN]**. | Les problèmes de sécurité qu'il convient à résoudre sont indiqués par les annotations **[WARN]**. | ||
- | ====8.1 - [WARN] 5.1 - Ensure AppArmor Profile is Enabled==== | + | ====[WARN] 5.1 - Ensure |
Cet avertissement est présent parce que le conteneur n' | Cet avertissement est présent parce que le conteneur n' | ||
Ligne 1267: | Ligne 1012: | ||
Pour plus d' | Pour plus d' | ||
- | ====8.2 - [WARN] 5.2 - Ensure SELinux security options are set, if applicable==== | + | ====[WARN] 5.2 - Ensure |
Cet avertissement est présent parce que le conteneur n' | Cet avertissement est présent parce que le conteneur n' | ||
Ligne 1273: | Ligne 1018: | ||
Pour plus d' | Pour plus d' | ||
- | ====8.3 - [WARN] 5.10 - Ensure memory usage for container | + | ====[WARN] 5.10 - Ensure |
Cet avertissement est du au fait que les conteneurs ont automatiquement accès à la totalité de la RAM de l' | Cet avertissement est du au fait que les conteneurs ont automatiquement accès à la totalité de la RAM de l' | ||
Ligne 1289: | Ligne 1034: | ||
< | < | ||
- | root@manager: | + | root@manager: |
- | CONTAINER ID IMAGE | + | Unable to find image ' |
- | b04b2a6f0dd9 | + | sha256: |
- | 5b31fe1e13bc | + | 1f7ce2fa46ab: |
- | 7788c67c3b69 | + | 9b16c94bb686: |
- | root@manager: | + | 9a59d19f9c5b: |
- | b0 | + | 9ea27b074f71: |
- | root@manager: | + | c6edf33e2524: |
- | 095472e5096a57277230ff94822d9bd0ad479ad26a33cbf83ec381cdb02910e1 | + | 84b1ff10387b: |
- | root@manager: | + | 517357831967: |
- | CONTAINER ID NAME | + | Digest: sha256: |
- | 095472e5096a | + | Status: Downloaded newer image for nginx@sha256: |
+ | Tagging nginx@sha256: | ||
+ | e14d5112c2feb71e6f37252bcf99d03603d6b7a3e200bff0d55611a0e9a25e2b | ||
+ | |||
+ | root@manager: | ||
+ | CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O | ||
+ | e14d5112c2fe | ||
+ | e503dd98f889 | ||
+ | ^C | ||
+ | </ | ||
+ | |||
+ | Supprimez le conteneur et re-créez-le avec une limite de mémoire : | ||
+ | |||
+ | < | ||
+ | root@manager: | ||
+ | CONTAINER ID IMAGE | ||
+ | e14d5112c2fe | ||
+ | e503dd98f889 | ||
+ | |||
+ | root@manager: | ||
+ | e14 | ||
+ | |||
+ | root@manager: | ||
+ | 38e91e096c83f7cbe78089617a4d70110bd273f53339f8fed8df2503d3cd65ca | ||
+ | |||
+ | root@manager: | ||
+ | CONTAINER ID NAME CPU % MEM USAGE / LIMIT | ||
+ | 38e91e096c83 | ||
+ | e503dd98f889 | ||
^C | ^C | ||
</ | </ | ||
Ligne 1306: | Ligne 1079: | ||
Pour plus d' | Pour plus d' | ||
- | ====8.4 - [WARN] 5.11 - Ensure CPU priority is set appropriately on the container==== | + | ====[WARN] 5.11 - Ensure |
Cet avertissement est du au fait que les conteneurs ont automatiquement accès à tous les CPU de l' | Cet avertissement est du au fait que les conteneurs ont automatiquement accès à tous les CPU de l' | ||
Ligne 1314: | Ligne 1087: | ||
Pour plus d' | Pour plus d' | ||
- | ====8.5 - [WARN] 5.12 - Ensure the container' | + | ====[WARN] 5.12 - Ensure |
Afin de minimiser le risque de compromettre un conteneur par la présence de code malicieux, il est conseillé de démarrer les conteneurs en lecture seule, sauf pour les volumes qui nécessitent un accès en écriture/ | Afin de minimiser le risque de compromettre un conteneur par la présence de code malicieux, il est conseillé de démarrer les conteneurs en lecture seule, sauf pour les volumes qui nécessitent un accès en écriture/ | ||
Ligne 1327: | Ligne 1100: | ||
< | < | ||
- | root@manager: | + | root@manager: |
- | A / | + | |
C /run | C /run | ||
C /run/mysqld | C /run/mysqld | ||
+ | A / | ||
A / | A / | ||
A / | A / | ||
A / | A / | ||
A / | A / | ||
- | A /run/ | + | A /write_a_file |
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez que la sortie indique les changements apportés au conteneur. | **Important** : Notez que la sortie indique les changements apportés au conteneur. | ||
</ | </ | ||
Ligne 1345: | Ligne 1118: | ||
< | < | ||
- | root@manager: | + | root@manager: |
mysql | mysql | ||
- | root@manager: | + | |
+ | root@manager: | ||
mysql | mysql | ||
</ | </ | ||
Ligne 1354: | Ligne 1128: | ||
< | < | ||
- | root@manager: | + | root@manager: |
- | 7788c67c3b692515f63f4659a8f40af397bfbde97485e2e40c500c16b158045b | + | 711ab28bdfb41220c84246c1658bcde398681a78291bbbe7d3bbfd9bc317d41b |
- | root@manager: | + | |
- | CONTAINER ID IMAGE | + | |
- | 7788c67c3b69 | + | |
</ | </ | ||
Ligne 1368: | Ligne 1139: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez l' | **Important** : Notez l' | ||
</ | </ | ||
Ligne 1379: | Ligne 1150: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez que la commande ne retourne aucune sortie. En effet le conteneur étant en lecture seule, aucun changement ne peut intervenir. | **Important** : Notez que la commande ne retourne aucune sortie. En effet le conteneur étant en lecture seule, aucun changement ne peut intervenir. | ||
</ | </ | ||
- | ====8.6 - [WARN] 5.14 - Ensure ' | + | ====[WARN] 5.14 - Ensure |
Cet avertissement concerne la politique de re-démarrage du conteneur. La politique **on-failure[: | Cet avertissement concerne la politique de re-démarrage du conteneur. La politique **on-failure[: | ||
Ligne 1391: | Ligne 1162: | ||
Pour plus d' | Pour plus d' | ||
- | ====8.7 - [WARN] 5.25 - Ensure the container is restricted from acquiring additional privileges==== | + | ====[WARN] 5.26 - Ensure |
- | + | ||
- | Pour complémenter la configuration précédemment mise en place, il convient de lancer le conteneur en utilisant l' | + | |
- | + | ||
- | # docker container run -d --name mysql --read-only --restart on-failure: | + | |
- | + | ||
- | Pour plus d' | + | |
- | + | ||
- | ====8.8 - [WARN] 5.26 - Ensure container health is checked at runtime==== | + | |
Voir l' | Voir l' | ||
- | ====8.9 - [WARN] 5.28 - Ensure PIDs cgroup limit is used==== | + | ====[WARN] 5.28 - Ensure |
Sans l' | Sans l' | ||
Ligne 1414: | Ligne 1177: | ||
< | < | ||
- | root@manager: | + | root@manager: |
- | CONTAINER ID IMAGE | + | Unable to find image ' |
- | 05b11e44e595 | + | sha256: |
- | ... | + | a48641193673: |
- | root@manager: | + | Digest: sha256: |
- | 05 | + | Status: Downloaded newer image for ubuntu@sha256: |
- | root@manager: | + | Tagging ubuntu@sha256: |
environment: | environment: | ||
environment: | environment: | ||
Ligne 1427: | Ligne 1190: | ||
environment: | environment: | ||
environment: | environment: | ||
- | ^C | + | environment: |
+ | environment: | ||
+ | environment: | ||
+ | environment: | ||
+ | environment: | ||
+ | environment: | ||
+ | ^P^Q | ||
</ | </ | ||
Ligne 1435: | Ligne 1204: | ||
< | < | ||
- | root@manager: | + | root@manager: |
- | CONTAINER ID IMAGE | + | db5ae43c3e55 |
- | 095472e5096a | + | f3b2528fbac0 |
- | 5b31fe1e13bc | + | 711ab28bdfb4 |
- | 7788c67c3b69 | + | |
- | root@manager: | + | root@manager: |
- | 095 | + | CONTAINER ID IMAGE |
- | root@manager: | + | |
- | 5b31fe1e13bc | + | |
- | 7788c67c3b69 | + | |
- | 095472e5096a | + | |
- | root@manager: | + | |
- | CONTAINER ID IMAGE | + | |
</ | </ | ||
Ligne 1453: | Ligne 1216: | ||
< | < | ||
- | root@manager: | + | root@manager: |
- | root@manager: | + | f49d1ffdeae2e83435e8cc3a2e03fb2e0b33e5609d266e5a3403ff8859e5d122 |
- | df54974ebc11fe357f6e8e9b0f8499aee2658af435e32a45058a1e49fcd3dc24 | + | |
root@manager: | root@manager: | ||
CONTAINER ID IMAGE | CONTAINER ID IMAGE | ||
- | df54974ebc11 | + | f49d1ffdeae2 |
</ | </ | ||
Ligne 1466: | Ligne 1229: | ||
root@manager: | root@manager: | ||
... | ... | ||
- | [INFO] 5 - Container Runtime | + | [PASS] 5.2 - Ensure that, if applicable, SELinux security options are set (Automated) |
- | [WARN] 5.1 - Ensure that, if applicable, an AppArmor Profile is enabled | + | [PASS] 5.10 - Ensure that the memory usage for containers is limited |
- | [WARN] | + | [PASS] 5.11 - Ensure |
- | [PASS] 5.2 - Ensure that, if applicable, SELinux security options are set | + | [PASS] 5.12 - Ensure that the container' |
- | [PASS] 5.3 - Ensure Linux Kernel Capabilities are restricted within containers | + | [PASS] 5.14 - Ensure that the ' |
- | [PASS] 5.4 - Ensure that privileged containers are not used | + | [PASS] 5.28 - Ensure that the PIDs cgroup limit is used (Automated) |
- | [PASS] 5.5 - Ensure sensitive host system directories are not mounted on containers | + | |
- | [PASS] 5.6 - Ensure sshd is not run within containers | + | |
- | [PASS] 5.7 - Ensure privileged ports are not mapped within containers | + | |
- | [NOTE] 5.8 - Ensure that only needed ports are open on the container | + | |
- | [PASS] 5.9 - Ensure the host's network namespace is not shared | + | |
- | [PASS] 5.10 - Ensure that the memory usage for containers is limited | + | |
- | [PASS] 5.11 - Ensure CPU priority is set appropriately on the container | + | |
- | [PASS] 5.12 - Ensure that the container' | + | |
- | [PASS] 5.13 - Ensure that incoming container traffic is bound to a specific host interface | + | |
- | [PASS] 5.14 - Ensure that the ' | + | |
- | [PASS] 5.15 - Ensure the host's process namespace is not shared | + | |
- | [PASS] 5.16 - Ensure the host's IPC namespace is not shared | + | |
- | [PASS] 5.17 - Ensure that host devices are not directly exposed to containers | + | |
- | [INFO] 5.18 - Ensure that the default ulimit is overwritten at runtime if needed | + | |
- | [INFO] | + | |
- | [PASS] 5.19 - Ensure mount propagation mode is not set to shared | + | |
- | [PASS] 5.20 - Ensure the host's UTS namespace is not shared | + | |
- | [PASS] 5.21 - Ensure the default seccomp profile is not Disabled | + | |
- | [NOTE] 5.22 - Ensure docker exec commands are not used with privileged option | + | |
- | [NOTE] 5.23 - Ensure that docker exec commands are not used with the user=root option | + | |
- | [PASS] 5.24 - Ensure that cgroup usage is confirmed | + | |
- | [PASS] 5.25 - Ensure that the container is restricted from acquiring additional privileges | + | |
- | [WARN] 5.26 - Ensure that container health is checked at runtime | + | |
- | [WARN] | + | |
- | [INFO] 5.27 - Ensure that Docker commands always make use of the latest version of their image | + | |
- | [PASS] 5.28 - Ensure that the PIDs cgroup limit is used | + | |
- | [INFO] 5.29 - Ensure that Docker' | + | |
- | [INFO] | + | |
- | [PASS] 5.30 - Ensure that the host's user namespaces are not shared | + | |
- | [PASS] 5.31 - Ensure that the Docker socket is not mounted inside any containers | + | |
... | ... | ||
</ | </ | ||
- | =====LAB #9 - Sécurisation des Images avec Docker Content Trust===== | + | =====LAB #8 - Sécurisation des Images avec Docker Content Trust===== |
**Docker Content Trust (DCT)** a été introduit avec Docker Engine 1.8 et Docker CS Engine 1.9.0. DCT permet la vérification de l' | **Docker Content Trust (DCT)** a été introduit avec Docker Engine 1.8 et Docker CS Engine 1.9.0. DCT permet la vérification de l' | ||
Ligne 1515: | Ligne 1248: | ||
Pour plus d' | Pour plus d' | ||
- | ====9.1 - DOCKER_CONTENT_TRUST==== | + | ====8.1 - DOCKER_CONTENT_TRUST==== |
Pour utiliser **Docker Content Trust (DCT)**, il convient de vérifier que la valeur de la variable **DOCKER_CONTENT_TRUST** est **1** : | Pour utiliser **Docker Content Trust (DCT)**, il convient de vérifier que la valeur de la variable **DOCKER_CONTENT_TRUST** est **1** : | ||
Ligne 1532: | Ligne 1265: | ||
</ | </ | ||
- | ====9.2 - DCT et la commande docker pull==== | + | ====8.2 - DCT et la commande docker pull==== |
Afin d' | Afin d' | ||
Ligne 1555: | Ligne 1288: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez l' | **Important** : Notez l' | ||
</ | </ | ||
Ligne 1639: | Ligne 1372: | ||
</ | </ | ||
- | ====9.3 - DCT et la commande docker push==== | + | ====8.3 - DCT et la commande docker push==== |
Pour envoyer l' | Pour envoyer l' | ||
Ligne 1723: | Ligne 1456: | ||
</ | </ | ||
- | ====9.4 - DCT et la commande docker build==== | + | ====8.4 - DCT et la commande docker build==== |
L' | L' | ||
Ligne 1729: | Ligne 1462: | ||
< | < | ||
root@manager: | root@manager: | ||
+ | |||
root@manager: | root@manager: | ||
+ | |||
root@manager: | root@manager: | ||
+ | |||
root@manager: | root@manager: | ||
FROM docker/ | FROM docker/ | ||
Ligne 1780: | Ligne 1516: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez l' | **Important** : Notez l' | ||
</ | </ | ||
Ligne 1790: | Ligne 1526: | ||
< | < | ||
root@manager: | root@manager: | ||
+ | |||
root@manager: | root@manager: | ||
REPOSITORY | REPOSITORY | ||
Ligne 1815: | Ligne 1552: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez la création d'une deuxième repositry key (ID 7b13d02 au lieu de ID 168c754) lors du push de l' | **Important** : Notez la création d'une deuxième repositry key (ID 7b13d02 au lieu de ID 168c754) lors du push de l' | ||
</ | </ | ||
Ligne 1902: | Ligne 1639: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez que les clefs utilisées sont les mêmes pour les deux images. | **Important** : Notez que les clefs utilisées sont les mêmes pour les deux images. | ||
</ | </ | ||
Ligne 1943: | Ligne 1680: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez que les clefs utilisées sont différentes. | **Important** : Notez que les clefs utilisées sont différentes. | ||
</ | </ | ||
Ligne 1983: | Ligne 1720: | ||
</ | </ | ||
- | <WRAP center round important> | + | <WRAP center round important |
**Important** : Il existe un autre mécanisme de signatures cryptographiques qui permet de certifier le contenu des images mises à disposition sur une Registry. Appelé **Notary**, ce système a été développé par la communauté Docker et intègre une partie de la spécification de **[[https:// | **Important** : Il existe un autre mécanisme de signatures cryptographiques qui permet de certifier le contenu des images mises à disposition sur une Registry. Appelé **Notary**, ce système a été développé par la communauté Docker et intègre une partie de la spécification de **[[https:// | ||
</ | </ | ||
- | =====LAB #10 - Sécurisation du Socket du Daemon Docker===== | + | =====LAB #9 - Sécurisation du Socket du Daemon Docker===== |
Par défaut le daemon Docker peut être contacté en utilisant un socket Unix local ce qui implique qu'il faut une connexion SSH vers l' | Par défaut le daemon Docker peut être contacté en utilisant un socket Unix local ce qui implique qu'il faut une connexion SSH vers l' | ||
Ligne 2005: | Ligne 1742: | ||
</ | </ | ||
- | ====10.1 - Création du Certificat de l' | + | ====9.1 - Création du Certificat de l' |
Commencez par créer une clef privée **ca-key.pem** pour le CA : | Commencez par créer une clef privée **ca-key.pem** pour le CA : | ||
Ligne 2040: | Ligne 1777: | ||
</ | </ | ||
- | ====10.2 - Création du Certificat du Serveur Hôte du Daemon Docker==== | + | ====9.2 - Création du Certificat du Serveur Hôte du Daemon Docker==== |
Les clefs du CA ayant été créées, créez une clef **server-key.pem** pour le serveur hôte du daemon Docker : | Les clefs du CA ayant été créées, créez une clef **server-key.pem** pour le serveur hôte du daemon Docker : | ||
Ligne 2090: | Ligne 1827: | ||
</ | </ | ||
- | ====10.3 - Création du Certificat du Client==== | + | ====9.3 - Création du Certificat du Client==== |
Créez ensuite la clef privée **key.pem** du client qui se connectera au daemon à partir du réseau : | Créez ensuite la clef privée **key.pem** du client qui se connectera au daemon à partir du réseau : | ||
Ligne 2102: | Ligne 1839: | ||
</ | </ | ||
- | Modifiez l' | + | Modifiez l' |
< | < | ||
Ligne 2108: | Ligne 1845: | ||
root@manager: | root@manager: | ||
127.0.0.1 localhost | 127.0.0.1 localhost | ||
- | 10.0.2.60 debian9.i2tch.loc debian9 | + | 10.0.2.46 debian11.i2tch.loc debian11 |
- | 10.0.2.61 myregistry.i2tch.loc | + | 10.0.2.45 myregistry.i2tch.loc |
10.0.2.62 manager.i2tch.loc manager | 10.0.2.62 manager.i2tch.loc manager | ||
10.0.2.63 worker1.i2tch.loc worker1 | 10.0.2.63 worker1.i2tch.loc worker1 | ||
Ligne 2201: | Ligne 1938: | ||
</ | </ | ||
- | ====10.4 - Démarrage du Daemon Docker avec une Invocation Directe==== | + | ====9.4 - Démarrage du Daemon Docker avec une Invocation Directe==== |
Arrêtez et désactivez le service Docker : | Arrêtez et désactivez le service Docker : | ||
Ligne 2264: | Ligne 2001: | ||
</ | </ | ||
- | ====10.5 - Configuration du Client==== | + | ====9.5 - Configuration du Client==== |
- | Transférez ensuite le certificat du CA ainsi que le certificat et la clef privée du client vers la VM **debian91** : | + | Transférez ensuite le certificat du CA ainsi que le certificat et la clef privée du client vers la VM **10.0.2.45** : |
< | < | ||
- | root@manager: | + | root@manager: |
- | The authenticity of host ' | + | The authenticity of host ' |
ECDSA key fingerprint is SHA256: | ECDSA key fingerprint is SHA256: | ||
Are you sure you want to continue connecting (yes/no)? yes | Are you sure you want to continue connecting (yes/no)? yes | ||
- | Warning: Permanently added ' | + | Warning: Permanently added ' |
- | trainee@10.0.2.61's password: | + | trainee@10.0.2.45's password: |
ca.pem | ca.pem | ||
key.pem | key.pem | ||
Ligne 2280: | Ligne 2017: | ||
</ | </ | ||
- | Lancez la commande **docker version** sur la VM **debian91** : | + | Lancez la commande **docker version** sur la VM **10.0.2.45** : |
< | < | ||
Ligne 2335: | Ligne 2072: | ||
</ | </ | ||
- | Maintenant la connection | + | Maintenant la connexion |
< | < | ||
Ligne 2352: | Ligne 2089: | ||
----- | ----- | ||
- | < | + | |
- | <div align=" | + | Copyright © 2024 Hugh Norris. |
- | Copyright © 2021 Hugh NORRIS | + | |
- | </ | + | |
- | </ | + |