2021-10-31 19:51:17 +00:00
|
|
|
|
### Prérequis
|
2017-11-09 00:30:41 +00:00
|
|
|
|
|
|
|
|
|
|
2022-04-09 00:50:14 +00:00
|
|
|
|
#### Noyau Linux
|
2017-11-09 00:30:41 +00:00
|
|
|
|
|
2022-05-12 00:46:31 +00:00
|
|
|
|
Pour pouvoir suivre les exercices ci-après, vous devez disposer d'un noyau
|
2021-10-31 19:51:17 +00:00
|
|
|
|
Linux, idéalement dans sa version 5.6 ou mieux. Il doit de plus être compilé
|
2022-02-24 19:43:43 +00:00
|
|
|
|
avec les options suivantes (lorsqu'elles sont disponibles pour votre version) :
|
2017-11-09 00:30:41 +00:00
|
|
|
|
|
|
|
|
|
<div lang="en-US">
|
|
|
|
|
```
|
|
|
|
|
General setup --->
|
|
|
|
|
[*] Control Group support --->
|
|
|
|
|
-*- Namespaces support
|
|
|
|
|
[*] UTS namespace
|
2021-10-31 19:51:17 +00:00
|
|
|
|
[*] TIME namespace
|
2017-11-09 00:30:41 +00:00
|
|
|
|
[*] IPC namespace
|
|
|
|
|
[*] User namespace
|
|
|
|
|
[*] PID Namespaces
|
|
|
|
|
[*] Network namespace
|
|
|
|
|
[*] Networking support --->
|
|
|
|
|
Networking options --->
|
|
|
|
|
<M> 802.1d Ethernet Bridging
|
|
|
|
|
Device Drivers --->
|
|
|
|
|
[*] Network device support --->
|
|
|
|
|
<M> MAC-VLAN support
|
|
|
|
|
<M> Virtual ethernet pair device
|
|
|
|
|
```
|
|
|
|
|
</div>
|
|
|
|
|
|
2022-02-24 19:43:43 +00:00
|
|
|
|
Les variables de configuration correspondantes sont :
|
2017-11-09 00:30:41 +00:00
|
|
|
|
|
|
|
|
|
<div lang="en-US">
|
|
|
|
|
```
|
|
|
|
|
CONFIG_CGROUPS=y
|
|
|
|
|
|
|
|
|
|
CONFIG_NAMESPACES=y
|
|
|
|
|
CONFIG_UTS_NS=y
|
2021-10-31 19:51:17 +00:00
|
|
|
|
CONFIG_TIME_NS=y
|
2017-11-09 00:30:41 +00:00
|
|
|
|
CONFIG_IPC_NS=y
|
|
|
|
|
CONFIG_USER_NS=y
|
|
|
|
|
CONFIG_PID_NS=y
|
|
|
|
|
CONFIG_NET_NS=y
|
|
|
|
|
|
|
|
|
|
CONFIG_NET=y
|
|
|
|
|
CONFIG_BRIDGE=m
|
|
|
|
|
|
|
|
|
|
CONFIG_NETDEVICES=y
|
|
|
|
|
CONFIG_MACVLAN=m
|
|
|
|
|
CONFIG_VETH=m
|
|
|
|
|
```
|
|
|
|
|
</div>
|
|
|
|
|
|
2021-10-31 19:51:17 +00:00
|
|
|
|
Référez-vous, si besoin, à la précédente configuration que l'on a faite pour la
|
|
|
|
|
marche à suivre.
|
2017-11-09 00:30:41 +00:00
|
|
|
|
|
|
|
|
|
|
2022-04-09 00:50:14 +00:00
|
|
|
|
#### Paquets
|
2017-11-09 00:30:41 +00:00
|
|
|
|
|
|
|
|
|
Nous allons utiliser des programmes issus des
|
|
|
|
|
[`util-linux`](https://www.kernel.org/pub/linux/utils/util-linux/), de
|
|
|
|
|
[`procps-ng`](https://gitlab.com/procps-ng/procps) ainsi que ceux de la
|
2019-11-03 17:54:22 +00:00
|
|
|
|
[`libcap`](https://sites.google.com/site/fullycapable/).
|
2017-11-09 00:30:41 +00:00
|
|
|
|
|
2022-02-24 19:43:43 +00:00
|
|
|
|
Sous Debian et ses dérivés, ces paquets sont respectivement :
|
2017-11-09 00:30:41 +00:00
|
|
|
|
|
|
|
|
|
* `util-linux`
|
|
|
|
|
* `procps`
|
|
|
|
|
* `libcap2-bin`
|
|
|
|
|
|
2022-02-24 19:43:43 +00:00
|
|
|
|
Sous ArchLinux et ses dérivés, ces paquets sont respectivement :
|
2017-11-09 00:30:41 +00:00
|
|
|
|
|
2021-10-31 19:51:17 +00:00
|
|
|
|
* `util-linux`
|
|
|
|
|
* `procps-ng`
|
|
|
|
|
* `libcap`
|
|
|
|
|
|
|
|
|
|
|
2022-04-09 00:50:14 +00:00
|
|
|
|
#### À propos de la sécurité de l'espace de noms `user`
|
2017-11-09 00:30:41 +00:00
|
|
|
|
|
2021-10-31 19:51:17 +00:00
|
|
|
|
La sécurité du *namespace* `user` a souvent été remise en cause par le passé,
|
|
|
|
|
on lui attribue de nombreuses vulnérabilités. Vous devriez notamment consulter
|
2022-02-24 19:43:43 +00:00
|
|
|
|
à ce sujet :
|
2017-11-09 00:30:41 +00:00
|
|
|
|
|
2022-04-08 20:39:14 +00:00
|
|
|
|
* [Security Implications of User Namespaces](https://blog.araj.me/security-implications-of-user-namespaces/) :\
|
|
|
|
|
<https://blog.araj.me/security-implications-of-user-namespaces/> ;
|
|
|
|
|
* [Anatomy of a user namespaces vulnerability](https://lwn.net/Articles/543273/) :\
|
|
|
|
|
<https://lwn.net/Articles/543273/> ;
|
2022-02-24 19:43:43 +00:00
|
|
|
|
* <http://marc.info/?l=linux-kernel&m=135543612731939&w=2> ;
|
2017-11-09 00:30:41 +00:00
|
|
|
|
* <http://marc.info/?l=linux-kernel&m=135545831607095&w=2>.
|
|
|
|
|
|
|
|
|
|
De nombreux projets ont choisi de ne pas autoriser l'utilisation de cet espace
|
|
|
|
|
de noms sans disposer de certaines *capabilities*[^userns-caps].
|
|
|
|
|
|
2022-02-24 19:43:43 +00:00
|
|
|
|
[^userns-caps]: Sont nécessaires, conjointement : `CAP_SYS_ADMIN`, `CAP_SETUID` et `CAP_SETGID`.
|
2017-11-09 00:30:41 +00:00
|
|
|
|
|
2021-10-31 19:51:17 +00:00
|
|
|
|
De nombreuses distributions ont choisi d'utiliser un paramètre du noyau pour
|
|
|
|
|
adapter le comportement.
|
2017-11-09 00:30:41 +00:00
|
|
|
|
|
|
|
|
|
|
2021-10-31 19:51:17 +00:00
|
|
|
|
::::: {.question}
|
|
|
|
|
##### Debian et ses dérivées {.unnumbered}
|
2017-11-09 00:30:41 +00:00
|
|
|
|
|
|
|
|
|
Si vous utilisez Debian ou l'un de ses dérivés, vous devrez autoriser
|
2022-02-24 19:43:43 +00:00
|
|
|
|
explicitement cette utilisation non-privilégiée :
|
2017-11-09 00:30:41 +00:00
|
|
|
|
|
2018-11-16 01:38:41 +00:00
|
|
|
|
<div lang="en-US">
|
|
|
|
|
```bash
|
|
|
|
|
42sh# sysctl -w kernel.unprivileged_userns_clone=1
|
2017-11-09 00:30:41 +00:00
|
|
|
|
```
|
2018-11-16 01:38:41 +00:00
|
|
|
|
</div>
|
2017-11-09 00:30:41 +00:00
|
|
|
|
|
|
|
|
|
|
2021-10-31 19:51:17 +00:00
|
|
|
|
##### Grsecurity {.unnumbered}
|
2017-11-09 00:30:41 +00:00
|
|
|
|
|
|
|
|
|
D'autres patchs, tels que
|
2022-04-08 13:28:36 +00:00
|
|
|
|
[*grsecurity*](https://forums.grsecurity.net/viewtopic.php?f=3&t=3929#p13904)
|
|
|
|
|
ont fait le choix de désactiver cette possibilité sans laisser
|
|
|
|
|
d'option pour la réactiver éventuellement à l'exécution. Pour avoir un
|
|
|
|
|
comportement identique à celui de Debian, vous pouvez appliquer ce
|
|
|
|
|
patch[^grsec-patch] sur vos sources incluant le patch de *grsecurity*.
|
|
|
|
|
|
|
|
|
|
[^grsec-patch]: <https://nemunai.re/post/user-ns-for-grsecurity/>
|
|
|
|
|
|
2021-10-31 19:51:17 +00:00
|
|
|
|
:::::
|