Valeur réelle des modèles MAC sous Linux
J'ai lu des articles sur MAC vs DAC sur Internet, mais je n'arrive toujours pas à comprendre contre quel type d'attaque il est impossible de se protéger si l'on n'utilise que les capacités DAC + par rapport aux capacités MAC + DAC +. Si un processus ne s'exécute pas en tant que root et ne dispose pas de CAP_DAC_OVERRIDE, CAP_FOWNER et d'autres capacités dangereuses, il ne peut pas surmonter la propriété déjà attribuée et les ACL des ressources qu'il utilise. D'autre part, si un processus s'exécute en tant que root et possède CAP_MAC_ADMIN, il peut écraser le contexte de sécurité appliqué par MAC.
Le MAC est-il "juste une couche de protection supplémentaire" sans réel avantage sur le système Linux moderne?
Update1 J'ajouterai ici mes "réponses" à des arguments particuliers. Je suppose qu'aucun des processus ne s'exécute en tant que root et n'a des capacités inutiles (à l'exception des processus / scripts de démarrage du système).
Un argument : vous pouvez empêcher un serveur Web d'exécuter des commandes shell arbitraires.
Réponse : (en mettant de côté les applications Web conteneurisées), on pourrait ajouter une ACL d'autorisation pour toutes les commandes auxquelles l'UID / GID du serveur peut accéder, et une ACL interdite au reste des commandes sur l'hôte.
Un argument : un utilisateur peut avoir un fichier avec les permissions 0777 [et essentiellement le divulguer à tout le monde dans le système].
Réponse : Le script de démarrage du système peut définir l'ACL par défaut sur le répertoire dans lequel ce fichier est créé, de sorte que tout ce que le processus utilisateur crée dans ce répertoire obtiendra toujours ces ACL héritées. En général, avoir 7 dans «autres» semble être une mauvaise idée et si le fichier obtient de telles autorisations, la politique discrétionnaire pourrait être appliquée ici au déploiement du système (installation de distribution), ou même au démarrage à chaque démarrage du système.
Réponses
La distinction est de savoir qui décide des autorisations sur les fichiers. Un DAC donne au propriétaire du fichier le contrôle total des autorisations de fichier. MAC utilise des étiquettes pour appliquer un contrôle centralisé, ce qui signifie qu'il existe une couche de sécurité supplémentaire qui n'appartient pas au propriétaire du fichier. Par exemple, un utilisateur peut avoir un fichier avec des autorisations rwxrwxrwx (777), mais MAC applique son rwx uniquement à un ensemble spécifique d'étiquettes de sécurité, remplaçant effectivement DAC.
Le DAC ne couvre pas toutes les situations potentielles d'autorisation de sécurité que MAC ferait. Les ACL sont très flexibles par rapport aux DAC.
Par souci de simplicité, DAC vous permet uniquement de contrôler rwx, non? Avec DAC, vous pouvez être beaucoup plus explicite et contrôler au niveau de l'appel système ce qui est autorisé. Par exemple, vous pouvez autoriser quelqu'un à ajouter à un fichier, mais pas l'écraser / le supprimer.