2.9 KiB
Stage 5 : Une vraie isolation (3 points)
En plus du chroot
, assignez de nouveaux namespaces au processus que vous
allez lancer : CGroups, IPC, mount, net, PID, UTS, user.
Il est requis que le nouveau processus ne puisse pas s'échapper de ses namespaces !
Astuce : unshare(2)
.
Stage 6 : Empêcher les fuites d'information (2 points)
Démonter tous les sytèmes de fichiers qui ne sont pas nécessaire au fonctionnement de votre conteneur et remontez les partitions
N'oubliez pas de remonter les systèmes de fichiers pour lequel cette opération est nécessaire pour terminer l'étape d'isolation.
Astuce : mount(2)
.
Stage 7 : Identification du conteneur (1 point)
Maintenant que vous avez votre conteneur, personalisez-le un peu en lui donnant un nom unique.
Astuce : sethostname(2)
Stage 8 : pivot_root
(4 points)
Effectuer un pivot_root(2)
de telle sorte qu'il ne reste plus de trace du
système de fichiers hôte.
Astuce : pivot_root(2)
, umount(2)
.
Stage 9 : Bac à sable connecté (4 points)
Partant d'une liste d'interfaces sur la machine hôte similaire à :
Vous devrez pouvoir ping
votre conteneur depuis votre hôte :
Dans l'exemple ci-dessus, l'interface dans le conteneur a l'IP 10.10.10.42
,
tandis que la machine hôte a l'IP 10.10.10.41
.
Astuces : vous pouvez utiliser la libnetlink(3)
ou même faire des appels aux
programmes ip(8)
, brctl(8)
, ...
Stage 10 (bonus) : seccomp (2 points)
Filtrez les appels systèmes de telle sorte qu'aucun programme exécuté dans votre bac à sable ne puisse plus appeler les appels systèmes suivants :
nfsservctl(2)
;personality(2)
;pivot_root(2)
.
Astuce : seccomp(2)
.