Welche Rollen spielen DAC (Dateiberechtigungen), ACL und MAC (SELinux) bei der Linux-Dateisicherheit?

18

Ich benötige eine Klärung / Bestätigung / Ausarbeitung der verschiedenen Rollen, die DAC, ACL und MAC in der Linux-Dateisicherheit spielen.

Nach einigen Recherchen aus der Dokumentation ist dies mein Verständnis des Stacks:

  1. SELinux muss Ihnen den Zugriff auf das Dateiobjekt erlauben.
  2. Wenn die ACLs einer Datei (zB setfacl, getfaclfür einen ACL - mount) ausdrücklich erlaubt / Zugriff auf das Objekt verweigert, dann ist keine weitere Verarbeitung erforderlich ist .
  3. Ansonsten liegt es an den Berechtigungen der Datei (rwxrwxrwx DAC-Modell).

Vermisse ich etwas? Gibt es Situationen, in denen dies nicht der Fall ist?

Belmin Fernandez
quelle
2
Ich denke, dass Sie richtig sind. Könnten Sie das Problem, das Sie haben, posten?
Kevin M
Ich entschuldige mich für die fehlerhafte Frage. Ich denke, wenn es darum geht, gehe ich in einen "Versuch und Irrtum" -Modus. Ich versuche es selbstbewusst zu erfassen und hoffe, dass jemand ein klareres Bild der von jedem Teil des Stapels gespielten Rollen erhält.
Belmin Fernandez
Die Frage wurde bearbeitet, um zu verdeutlichen, wonach ich in den Antworten suche.
Belmin Fernandez

Antworten:

18

Wenn ein Prozess eine Operation an einer Datei ausführt, führt der Linux-Kernel die Prüfung in der folgenden Reihenfolge durch:

  1. Discretionary Access Control (DAC) oder vom Benutzer vorgegebene Zugriffskontrolle. Dies umfasst sowohl klassische UNIX-Berechtigungsprüfungen als auch POSIX-Zugriffssteuerungslisten (Access Control Lists, ACL) . Klassische UNIX-Überprüfungen vergleichen die aktuelle Prozess-UID und -GID mit der UID und -GID der Datei, auf die zugegriffen wird, hinsichtlich der eingestellten Modi (Lesen / Schreiben / Ausführen). Die Zugriffssteuerungsliste erweitert die klassischen UNIX-Prüfungen, um weitere Optionen zur Berechtigungssteuerung zu ermöglichen.

  2. Obligatorische Zugangskontrolle (MAC) oder richtlinienbasierte Zugangskontrolle. Dies wird mit Linux Security Modules (LSM) implementiert, die keine echten Module mehr sind (früher waren sie es, aber sie wurden fallengelassen). Sie ermöglichen zusätzliche Überprüfungen, die auf anderen Modellen als den klassischen UNIX-Sicherheitsüberprüfungen basieren. Alle diese Modelle basieren auf einer Richtlinie, die beschreibt, welche Art von Aktionen für welchen Prozess in welchem ​​Kontext zulässig sind.

Hier ist ein Beispiel für Inodes-Zugriff (einschließlich Dateizugriff), um meine Antwort mit Links zu einem Online- Linux- Querverweis zu untermauern . Die angegebenen " function_name(filename: line)" beziehen sich auf die 3.14-Version des Linux-Kernels.

Die Funktion inode_permission( fs / namei.c: 449 ) überprüft zuerst das Dateisystem selbst ( sb_permissionin fs / namei.c: 425 ) auf Leseberechtigungen und ruft dann __inode_permission( fs / namei.c: 394 ) auf, um zu prüfen, ob Lese- / Schreib- / Ausführungsberechtigungen vorliegen Berechtigungen und POSIX-ACL für einen Inode in do_inode_permission( fs / namei.c: 368 ) (DAC) und dann für LSM-bezogene Berechtigungen (MAC) in security_inode_permission( security / security.c: 550 ).

Es gab nur eine Ausnahme zu dieser Reihenfolge (DAC dann MAC): Es war für die MMAP-Prüfungen. Dies wurde jedoch in der 3.15-Version des Linux-Kernels behoben ( relevantes Commit ).

Siosm
quelle
Hervorragend detaillierte Antwort mit kanonischen Quellen. Vielen Dank!
Belmin Fernandez
15

DAC== Discretionary Access Control, http://en.wikipedia.org/wiki/Discretionary_access_control
MAC == Mandatory Access Control, http://en.wikipedia.org/wiki/Mandatory_access_control
ACL == Access Control List, http://en.wikipedia.org/wiki/Access_control_list

Das ACLgibt die Steuerelemente an, die von der Steuerungsmethode angewendet werden sollen, DACoder MAC. MACist explizit, zentral gesteuert und erlaubt Benutzern nicht, Berechtigungen für ein Objekt zu erteilen, es sei denn, sie verfügen über explizite Berechtigungen, während DACBenutzer anderen Benutzern Zugriff auf Objekte gewähren können, auf die sie zugreifen können.

MAC ACLs wird immer zuerst auf eine Anforderung angewendet, und wenn der Zugriff verweigert wird, wird die Verarbeitung gestoppt. Wenn der Zugriff zulässig ist, werden die DAC ACLs angewendet, und wenn der Zugriff verweigert wird, wird die Verarbeitung gestoppt. Nur wenn beide MACund DAC ACLs Zugriff gewähren, kann der Benutzer auf das angeforderte Objekt zugreifen.

SELinuxist eine MACImplementierung für Linux (es gibt andere), während die traditionellen rwxDateiberechtigungen, kombiniert mit dem Benutzer und der Gruppe, die Eigentümer sind, die Gesamtheit bilden DAC ACL. Die SELinux"Politik" ist im Wesentlichen die MAC ACL.

Mike Insch
quelle
1
Woher kommen zB Datei-ACLs setfacl?
Belmin Fernandez
1
setaclErweitert das Basis-Dateisystem ACL, so dass mehr als ein Benutzer oder eine Gruppe ACLfür Dateien und Verzeichnisse zugewiesen werden kann . Dies ist ebenfalls eine DACImplementierung und wird daher nach dem SELinux MAC ACLs angewendet .
Mike Insch
Danke Mike. Noch eine Frage: Soweit ich anhand meiner Tests feststellen kann, setfaclüberschreiben die explizit festgelegten ACLs die herkömmlichen Berechtigungen. Stimmt das in jedem Fall?
Belmin Fernandez,
Soweit ich weiß, wird das setacl/ setfacl ACLs das traditionelle 'simple' ACLin der Datei überschreiben .
Mike Insch
1
Mike, deine Notiz setfaclgehört zur Antwort.
Pavel Šimerda