Echter Wert von MAC-Modellen unter Linux
Ich habe im Internet über MAC vs. DAC gelesen, aber ich verstehe immer noch nicht, gegen welche Art von Angriff man sich nicht schützen kann, wenn man nur DAC + -Funktionen im Vergleich zu MAC + DAC + -Funktionen verwendet. Wenn ein Prozess nicht als Root ausgeführt wird und CAP_DAC_OVERRIDE, CAP_FOWNER und andere gefährliche Funktionen fehlen, kann er den bereits zugewiesenen Besitz und die ACLs der von ihm verwendeten Ressourcen nicht überwinden. Wenn ein Prozess hingegen als Root ausgeführt wird und über CAP_MAC_ADMIN verfügt, kann er den von MAC erzwungenen Sicherheitskontext überschreiben.
Ist MAC also "nur eine zusätzliche Schutzschicht" ohne wirklichen Vorteil auf einem modernen Linux-System?
Update1 Ich werde hier meine "Antworten" auf bestimmte Argumente hier hinzufügen. Ich gehe davon aus, dass keiner der Prozesse als Root ausgeführt wird und über unnötige Funktionen verfügt (mit Ausnahme der Systemstartprozesse / -skripte).
Ein Argument : Sie können einen Webserver vor der Ausführung beliebiger Shell-Befehle schützen.
Antwort : (Abgesehen von containerisierten Web-Apps) könnte man eine zulässige ACL für alle Befehle hinzufügen, auf die die Server-UID / GID zugreifen kann, und eine verbotene ACL für die restlichen Befehle auf dem Host.
Ein Argument : Ein Benutzer kann eine Datei mit den Berechtigungen 0777 haben [und diese im Wesentlichen an alle im System weitergeben].
Antwort : Das Systemstart-Skript kann die Standard-ACL auf das Verzeichnis festlegen, in dem diese Datei erstellt wird, sodass alle ACLs, die in diesem Verzeichnis erstellt werden, immer die geerbten ACLs erhalten. Im Allgemeinen scheint es eine schlechte Idee zu sein, 7 in "anderen" zu haben, und wenn die Datei solche Berechtigungen erhält, kann die Ermessensrichtlinie hier beim System-Rollout (Distributionsinstallation) oder sogar beim Start jedes Mal, wenn das System startet, durchgesetzt werden.
Antworten
Die Unterscheidung besteht darin, wer über die Berechtigungen für Dateien entscheidet. Ein DAC gibt dem Eigentümer der Datei die volle Kontrolle über die Dateiberechtigungen. MAC verwendet Labels, um eine zentralisierte Steuerung zu erzwingen. Dies bedeutet, dass eine zusätzliche Sicherheitsebene vorhanden ist, über die der Eigentümer der Datei nicht entscheiden kann. Beispielsweise verfügt ein Benutzer möglicherweise über eine Datei mit den Berechtigungen rwxrwxrwx (777), aber MAC erzwingt seine rwx nur für einen bestimmten Satz von Sicherheitsetiketten, wodurch der DAC effektiv überschrieben wird.
DAC deckt nicht alle potenziellen Sicherheitsberechtigungssituationen ab, die MAC hätte. ACLs sind im Vergleich zu DAC sehr flexibel.
Der Einfachheit halber können Sie mit DAC nur rwx steuern, oder? Mit DAC können Sie viel expliziter sein und auf Syscall-Ebene steuern, was zulässig ist. Sie können beispielsweise zulassen, dass jemand an eine Datei anhängt, diese jedoch nicht überschreibt / löscht.