Les capabilities posix pour vos daemons

Alors en fait, les capabilities ca n'est pas du tout ca. Les caps c'est bon mangez-en.

Les caps dans le sens de la "norme" POSIX, c'est plutôt vaste, c'est pourquoi je ne vais parler que des caps utilisés dans pure, et à priori dans tous les daemons unix bien pensés, cad les "Process Capabilities".

Les "Process Capabilities" sont très utiles quand un process doit être lancé en tant que root pour quelques raisons simples et chiantes (exemples : bind sur un port < 1024 pour plein de daemons TCP, changer l'heure système pour un client NTP, etc.).

En gros, on divise les droits root en quelques catégories (monter un FS, changer l'heure, changer le proprio d'un fichier, ...) et un process (ntp dans mon exemple) peut dire : "je suis root, ok, mais je me débarrasse de tous mes droits root SAUF changer l'heure". A partir de ce moment là, il ne pourra plus revenir en arrière, il n'aura plus aucun droit root bien que le process tourne encore en tant que root. Et c'est valable pour tous les processus fils.

Donc en gros le processus est toujours root mais il a moins de droits que s'il tournait en simple user (sauf ceux qu'il n'a pas révoqué). Et ca, niveau secu, c'est top parce que même en cas d'exploit, bah l'attaquant peut juste faire ce qu'autorisait les capas qu'il n'a pas révoqués.

PS : pour connaitre les capas implémentés par défaut dans le kernel, jetez un oeil sur /usr/src/linux/include/linux/capability.h

[Phiropsi BES] Jean-Christophe BOHIN

http://www.phiropsi.com