URL: https://linuxfr.org/news/linux-capabilities-se-passer-des-commandes-su-et-sudo Title: Linux capabilities : se passer des commandes su et sudo Authors: samerw BenoĂźt Sibaud, ZeroHeure, Pierre Jarillon, Davy Defaud et bubarđŸŠ„ Date: 2018ćčŽ09月05æ—„T15:03:42+02:00 License: CC By-SA Tags: rootasrole, capabilities, su et sudo Score: 59 Nous proposons un module qui permet de se passer des commandes `su` et `sudo`. L’avantage de notre module est qu’il permet de contrĂŽler la liste des privilĂšges donnĂ©s aux programmes. Traditionnellement, l’administration des systĂšmes GNU/Linux repose sur l’existence d’un seul utilisateur puissant (appelĂ© super‐utilisateur) qui dĂ©tient Ă  lui seul la liste complĂšte des privilĂšges du systĂšme. Cette vision a Ă©tĂ© critiquĂ©e car tous les programmes exĂ©cutĂ©s dans le contexte du super‐utilisateur obtiennent beaucoup plus de privilĂšges qu’ils n’en ont besoin. Par exemple, `tcpdump` demande uniquement le privilĂšge `cap_net_raw` pour s’exĂ©cuter. Cependant, en l’exĂ©cutant dans le contexte de super‐utilisateur, `tcpdump` obtient la liste complĂšte des privilĂšges du systĂšme. Ainsi, l’approche traditionnelle de l’administration GNU/Linux rompt le principe du moindre privilĂšge, qui garantit qu’un processus doit juste avoir les privilĂšges nĂ©cessaires pour effectuer son travail. Un attaquant pourrait exploiter les vulnĂ©rabilitĂ©s de `tcpdump` afin de compromettre la sĂ©curitĂ© du systĂšme. Il existe cependant une autre voie, non officielle, mais intĂ©grĂ©e au noyau Linux depuis 1998... ---- [RAR module](https://github.com/SamerW/RootAsRole/) ---- Un brouillon POSIX (POSIX draft 1003.1e) avait Ă©tĂ© proposĂ© afin de dĂ©finir un modĂšle qui permet de donner aux processus uniquement les privilĂšges de super‐utilisateur dont ils ont besoin. La proposition dĂ©finit pour chaque processus trois ensembles de _bitmaps_ appelĂ©s _Inheritable_ (i), _Permitted_ (p) et _Effective_ (e). Ce modĂšle n’a pas Ă©tĂ© adoptĂ© officiellement, mais il a Ă©tĂ© intĂ©grĂ© au noyau Linux depuis 1998. Cependant, pour diffĂ©rentes raisons, ce modĂšle n’a pas Ă©tĂ© largement utilisĂ© : 1. PremiĂšrement, le modĂšle de capacitĂ© de Linux prĂ©sente diffĂ©rents problĂšmes techniques en raison de l’utilisation d’attributs Ă©tendus pour stocker les privilĂšges dans les exĂ©cutables (problĂšme 1). 2. DeuxiĂšmement, les administrateurs de systĂšmes GNU/Linux ne disposent pas d’un outil leur permettant de distribuer les privilĂšges aux utilisateurs de maniĂšre fine (problĂšme 2). La distribution fine de privilĂšges devrait donner aux administrateurs la possibilitĂ© de dĂ©cider quels privilĂšges accorder aux utilisateurs, quels programmes (par exemple, `tcpdump`) peuvent utiliser ces privilĂšges et sur quelles ressources ces privilĂšges peuvent ĂȘtre appliquĂ©s (par exemple, interface rĂ©seau _eth0_). 3. TroisiĂšmement, GNU/Linux ne fournit pas d’outil permettant aux utilisateurs de connaĂźtre le privilĂšge demandĂ© par une application (problĂšme 3). 4. QuatriĂšmement, GNU/Linux est livrĂ© avec des commandes de base qui ne sont pas compatibles avec des privilĂšges, tels que la commande `passwd` (problĂšme 4). En consĂ©quence, la majoritĂ© des utilisateurs de GNU/Linux utilisent toujours les commandes `su` et `sudo` pour exĂ©cuter des applications privilĂ©giĂ©es, car le modĂšle super‐utilisateur prĂ©sente l’avantage d’ĂȘtre facile Ă  utiliser. RĂ©cemment, un nouvel ensemble de privilĂšges appelĂ© _Ambient_ a Ă©tĂ© intĂ©grĂ© au noyau Linux afin de rĂ©soudre les problĂšmes techniques liĂ©s au stockage des privilĂšges dans les attributs Ă©tendus des exĂ©cutables. Cependant, le systĂšme GNU/Linux ne fournit pas de solutions pour gĂ©rer les problĂšmes deux et trois. Le module RAR (_Root As Role_) implĂ©mente une approche basĂ©e sur les rĂŽles pour distribuer les privilĂšges aux utilisateurs. Il fournit une solution au problĂšme deux : notre module est livrĂ© avec un outil appelĂ© `sr` (_switch role_) qui permet aux utilisateurs de contrĂŽler la liste des privilĂšges qu’ils accordent aux programmes. Ainsi, avec notre module, les utilisateurs de GNU/Linux peuvent cesser d’utiliser les commandes `sudo` et `su`, qui ne permettent pas de contrĂŽler la liste des privilĂšges Ă  donner aux programmes. Il existe dĂ©jĂ  des outils permettant de contrĂŽler la liste des privilĂšges Ă  attribuer aux programmes tels que `setcap` et le module `pam_cap`. Cependant, ces outils nĂ©cessitent l’utilisation d’attributs Ă©tendus pour stocker les privilĂšges. Or stocker des privilĂšges dans des attributs Ă©tendus pose de nombreux problĂšmes. Notre module permet d’attribuer les privilĂšges Linux sans avoir besoin de les stocker dans les attributs Ă©tendus des fichiers exĂ©cutables. GrĂące Ă  ce module, les administrateurs peuvent regrouper les privilĂšges Linux dans des rĂŽles et les donner Ă  leurs utilisateurs. Pour des raisons de sĂ©curitĂ©, les utilisateurs n’obtiennent pas les rĂŽles attribuĂ©s par dĂ©faut, ils doivent les activer Ă  l’aide de la commande `sr` (changer de rĂŽle). Notre module est compatible avec `pam_cap.so`, les administrateurs peuvent donc continuer Ă  utiliser `pam_cap.so` avec lui. ConcrĂštement, notre module permet de respecter le principe du moindre privilĂšge en donnant aux utilisateurs la possibilitĂ© de contrĂŽler la liste des privilĂšges qu’ils accordent Ă  leurs programmes. Le code (GPL v3) et des exemples plus complets sont disponibles sur la [page GitHub du projet](https://github.com/SamerW/RootAsRole/).

AltStyle ă«ă‚ˆăŁăŠć€‰æ›ă•ă‚ŒăŸăƒšăƒŒă‚ž (->ă‚ȘăƒȘă‚žăƒŠăƒ«) /