Verhindern Sie, dass bestimmte Anwendungen auf bestimmte Dateien zugreifen

7

Normalerweise können Anwendungen, die mit der effektiven UID des Benutzers ausgeführt werden, auf die im Basisverzeichnis eines Benutzers gespeicherten privaten Dateien zugreifen. Wie kann ich verhindern, dass eine bestimmte Anwendung auf bestimmte private Dateien zugreift, während andere Anwendungen mit AppArmor unter openSUSE weiterhin auf die Dateien zugreifen können?

ist oben
quelle
1
@mutzmatron - dieses Q ist vollkommen in Ordnung, wie es ist. OPs müssen keine erschöpfenden Untersuchungen durchführen. Oft sind OPs mit dem Jargon / Jargon nicht vertraut, so dass es für sie möglicherweise unerheblich ist, wie sie überhaupt vorgehen sollen.
slm
@sim FYI Mein Kommentar war eine Antwort auf die ursprüngliche Frage ( unix.stackexchange.com/revisions/105535/1 ), nicht auf dieses bearbeitete Formular.
Jmetz
Nur um auf Punkt 1 von unix.stackexchange.com/help/how-to-ask hinzuweisen : "Suchen und recherchieren Haben Sie gründlich nach einer Antwort gesucht, bevor Sie Ihre Frage gestellt haben?"
Jmetz

Antworten:

4

AppArmor ist ein MAC- Linux-Sicherheitsmodul ( Mandatory Access Control ), das unter anderem von Ubuntu und SUSE Linux verwendet wird. AppArmor-Zugriffssteuerungsregeln werden in AppArmor-Profilen in definiert . Die Profile sind einfach Textdateien, die Informationen zu Ressourcen enthalten, auf die die Anwendung, auf die sich das Profil bezieht, zugreifen darf./etc/apparmor.d/

In der Regel wird beim Entwerfen von Profilen die Anwendung mit dem auf AppArmor eingestellten complainModus ausgeführt, in dem Verstöße gegen die Zugriffssteuerung zulässig sind, jedoch protokolliert werden. Mit den Protokollen würde man das Profil iterativ verfeinern. Wenn das Profil fertig ist, kann AppArmor in den enforceModus geschaltet werden, in dem die im Profil definierten Zugriffssteuerungsregeln erzwungen und alle Verstoßversuche protokolliert werden.

Der Umriss eines AppArmor-Profils sieht folgendermaßen aus:

#include <tunables/global>
/path/to/application {
   [...]
}

Die #includeRichtlinien ermöglichen es, Anweisungen, die sich auf mehrere Anwendungen beziehen, in einer gemeinsamen Datei abzulegen und dann in das Profil jeder relevanten Anwendung aufzunehmen.

Die <tunables/global>Datei, die wiederum entspricht, /etc/apparmor.d/tunables/globalenthält Definitionen, die für jedes Profil verfügbar sein sollten. Eine dieser zusätzlichen Funktionen ist /etc/apparmor/tunables/home, die zusammen mit einer @{HOME}/** rw(oder einer ähnlichen Richtlinie) Anwendungen Zugriff auf Benutzer-Home-Verzeichnisse gewähren.

In diesem Fall müsste eine Profilregel hinzugefügt werden, um den Zugriff auf die Dateien explizit zu verweigern , um den Zugriff auf bestimmte Dateien im Benutzerverzeichnis zu verweigern . Dies kann mithilfe der denyDirektive erfolgen, wie im folgenden Beispiel:

#include <tunables/global>
/path/to/application {
   [...]
   # Allow directory listings (i.e. 'r' on directories).
   @{HOME}/ r

   # This is needed for saving files in the home directory.
   @{HOME}/** rw

   # Revoke access to specific file
   deny /home/user/file rwa
}

Das würde read ( r), write ( w) und append ( a) den Zugriff verweigern /home/user/file.

Eine Alternative besteht darin, die Pfade, die Sie schützen möchten, zu /etc/apparmor.d/abstractions/private-filesoder hinzuzufügen /etc/apparmor.d/abstractions/private-files-strictund sicherzustellen, dass das AppArmor-Profil für jede betroffene Anwendung das <abstractions/private-files>oder enthält <abstraction/private-files-strict>. Diese Dateien sollten bereits Regeln für allgemeine Dateien enthalten, die aus Datenschutz- oder anderen Sicherheitsgründen geschützt werden sollten.

Eine vollständige Liste der Details zum Zugriffsmodus und weitere Informationen zu AppArmor-Sicherheitsprofilen finden Sie auf der apparmor.d Handbuchseite und im Novell AppArmor Administration Guide (pdf) .

Thomas Nyman
quelle
1

[Antwort auf die bearbeitete, spezifischere Frage.]

Um den Zugriff in AppArmor für ein Programm einzuschränken, erstellen Sie foo ein Profil mit dem Eintrag

/usr/bin/foo {
    /etc/foo/* r,
}

Ermöglicht den Lesezugriff auf die Dateien in / etc / foo

    /etc/** 

würde Lesezugriff auf alle Unterverzeichnisse in / etc. ermöglichen

Umgekehrt können Sie verwenden

    deny /private/path rwa

um den Zugriff auf einen privaten Pfad einzuschränken.

Verweise

jmetz
quelle
Eigentlich ist dies immer noch keine Antwort ... Links allein sind keine Antwort, da sie sich ändern können, aber hauptsächlich werden alle Links an allgemeine Apparmor-Handbücher gesendet ... eine Antwort, die besagt, dass das Lesen des Handbuchs nicht sehr nützlich ist ... tbh :) . Der Zweck dieser Website ist es, bei der Lösung spezifischer Probleme zu helfen. Nicht alle Linux-Benutzer sind IT-Profis und ihr Computer ist ein Werkzeug, nicht ihre Hauptaufgabe. Sie haben andere Dinge zu tun, anstatt alle Handbücher der gesamten darauf installierten Software zu lesen.
Laurent
@laurent: Wenn ich mich nicht irre, ist es auch keine Website, auf der vollständige Tutorials veröffentlicht werden können - die ursprüngliche Frage war weitaus umfassender als die aktuelle Form (herausgegeben von Thomas Nyman).
Jmetz
@mutzmatron Während ich versuchte, die Sprache zu verbessern, war die Frage "Wie kann ich den Zugriff bestimmter Programme auf bestimmte Dateien einschränken?" Ihre ursprüngliche Antwort hat dies nicht angesprochen, und Ihre letzte Bearbeitung beantwortet die entgegengesetzte Frage: "Wie erteile ich einem bestimmten Programm (mit AppArmor) Zugriff auf bestimmte Dateien?". Außerdem gehe ich davon aus, dass das OP kein AppArmor-Profil von Grund auf neu erstellen möchte, und die Standardeinstellung umfasst, dass bereits Zugriff auf alle Home-Verzeichnisse der Benutzer gewährt wird, wie in meiner Antwort erläutert .
Thomas Nyman
@ThomasNyman: Nicht, dass es besonders nützlich wäre, über die Details zu streiten, aber der ursprüngliche Beitrag des OP endete mit "Festlegen der Berechtigung der Anwendungen, die nicht auf die privaten Dateien zugreifen konnten, aber auf sie oder andere Anwendungen zugreifen können. Kann ich das tun?" Ich höre AppArmor, ist es einfach? Howto? ". Während Ihre Bearbeitung tatsächlich eine zusammenhängende, aussagekräftige Frage extrahierte, war die Frage in ihrer ursprünglichen Form sehr weit gefasst und offen.
jmetz
"... nicht, dass es besonders nützlich ist, über die Details zu streiten ..." Einverstanden, und Informationen werden auch nicht wörtlich aus vorhandenen Antworten kopiert. Wenn Sie der Meinung sind, dass eine Frage verbessert werden muss, schlagen Sie eine Bearbeitung vor, stimmen Sie ab und hinterlassen Sie einen Kommentar oder markieren Sie ihn. Ihr Site-Assoziationsbonus gibt Ihnen genug Ruf, um all diese Dinge zu tun. Wenn Sie tun eine Antwort hinterlassen, stellen Sie sicher , dass Sie tatsächlich genug Informationen geben , um tatsächlich die Frage zu beantworten.
Thomas Nyman