Apparmor Profilaufbau: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 26: Zeile 26:
 
*/PFAD/ZU/DATEI OPTION setzt die Berechtigungen für das jeweilige Verzeichnis bzw. die jeweilige Hilfsanwendung. Dabei ist die Verwendung des Jokers * erlaubt, zwei ** bedeuten "inkl. aller Unterverzeichnisse" (extended globbing). Beispiele dazu:
 
*/PFAD/ZU/DATEI OPTION setzt die Berechtigungen für das jeweilige Verzeichnis bzw. die jeweilige Hilfsanwendung. Dabei ist die Verwendung des Jokers * erlaubt, zwei ** bedeuten "inkl. aller Unterverzeichnisse" (extended globbing). Beispiele dazu:
  
 +
=Include-Anweisungen=
 +
*Include-Anweisungen sind Direktiven, die Komponenten anderer AppArmor-Profile einbeziehen, um Profile zu vereinfachen.
 +
*Include-Dateien rufen Zugriffsberechtigungen für Programme ab.
 +
*Durch die Verwendung eines Include können Sie dem Programm Zugriff auf Verzeichnispfade oder Dateien gewähren, die auch von anderen Programmen benötigt werden.
 +
*Die Verwendung von Includes kann die Größe eines Profils reduzieren.
 +
*Include-Anweisungen beginnen normalerweise mit einem Rautezeichen (#).
 +
*Dies ist verwirrend, da das gleiche Hash-Zeichen für Kommentare in Profildateien verwendet wird.
 +
*Aus diesem Grund wird #include nur dann als Include behandelt, wenn kein vorangestelltes # (##include ist ein Kommentar) und kein Leerzeichen zwischen # und include vorhanden ist (#include ist ein Kommentar).
 
=Abstractions=
 
=Abstractions=
 
*Abstraktionen sind Einschlüsse, die nach allgemeinen Anwendungsaufgaben gruppiert sind.  
 
*Abstraktionen sind Einschlüsse, die nach allgemeinen Anwendungsaufgaben gruppiert sind.  
Zeile 32: Zeile 40:
 
*Programme, die eine dieser Dateien benötigen, benötigen normalerweise auch andere Dateien, die in der Abstraktionsdatei aufgeführt sind.
 
*Programme, die eine dieser Dateien benötigen, benötigen normalerweise auch andere Dateien, die in der Abstraktionsdatei aufgeführt sind.
 
*Abstraktionen finden Sie in /etc/apparmor.d/abstractions.
 
*Abstraktionen finden Sie in /etc/apparmor.d/abstractions.
 +
 
=Capability Entries=
 
=Capability Entries=
 
*Capability-Regeln bestehen einfach aus dem Wort Capability, gefolgt vom Namen der POSIX.1e-Capability, wie in der Manpage Capabilities definiert.
 
*Capability-Regeln bestehen einfach aus dem Wort Capability, gefolgt vom Namen der POSIX.1e-Capability, wie in der Manpage Capabilities definiert.

Version vom 16. Januar 2023, 18:44 Uhr

  • Eine Profil-Datei ist dabei prinzipiell wie folgt aufgebaut:
#include <tunables/global>

/pfad/zur/anwendung {
  #include <abstractions/base>
  [...]
  capability sys_admin,
  [...]
  # Kommentar
  /usr/lib/gconv/** r,
  /proc/meminfo r,
  /bin/basename rmix,
  [...]
}
  • Mit dem Befehl #include können andere (grundlegende) Regelsätze eingebunden werden.
  • In allen Profilen ist grundsätzlich die Datei /etc/apparmor.d/tunables/global mit #include eingebunden, die wiederum weitere Dateien aus diesem Verzeichnis enthält, in denen u.a. Variablen wie @{HOME} (für alle Homeverzeichnisse) oder @{PROC} (für das Verzeichnis /proc/) definiert sind.
  • Nach der Angabe des Pfades zur Anwendung, für die das Profil erstellt ist, stehen sämtliche Regeln innerhalb von geschweiften Klammern. Jede Zeile endet mit einem Komma - mit Ausnahme von Kommentaren, #include-Anweisungen, mit denen sogenannten abstractions eingebunden werden, und Kind-Profile (näheres dazu weiter unten).
  • Mit dem Befehl capability XYZ werden grundlegende Eigenschaften/Merkmale definiert. Siehe dazu die entsprechende Manpage 🇬🇧 sowie Capability rules 🇬🇧.
  • /PFAD/ZU/DATEI OPTION setzt die Berechtigungen für das jeweilige Verzeichnis bzw. die jeweilige Hilfsanwendung. Dabei ist die Verwendung des Jokers * erlaubt, zwei ** bedeuten "inkl. aller Unterverzeichnisse" (extended globbing). Beispiele dazu:

Include-Anweisungen

  • Include-Anweisungen sind Direktiven, die Komponenten anderer AppArmor-Profile einbeziehen, um Profile zu vereinfachen.
  • Include-Dateien rufen Zugriffsberechtigungen für Programme ab.
  • Durch die Verwendung eines Include können Sie dem Programm Zugriff auf Verzeichnispfade oder Dateien gewähren, die auch von anderen Programmen benötigt werden.
  • Die Verwendung von Includes kann die Größe eines Profils reduzieren.
  • Include-Anweisungen beginnen normalerweise mit einem Rautezeichen (#).
  • Dies ist verwirrend, da das gleiche Hash-Zeichen für Kommentare in Profildateien verwendet wird.
  • Aus diesem Grund wird #include nur dann als Include behandelt, wenn kein vorangestelltes # (##include ist ein Kommentar) und kein Leerzeichen zwischen # und include vorhanden ist (#include ist ein Kommentar).

Abstractions

  • Abstraktionen sind Einschlüsse, die nach allgemeinen Anwendungsaufgaben gruppiert sind.
  • Diese Aufgaben umfassen den Zugriff auf Authentifizierungsmechanismen, Zugriff auf Namensdienstroutinen, allgemeine Grafikanforderungen und Systemabrechnung.
  • Dateien, die in diesen Abstraktionen aufgelistet sind, sind spezifisch für die benannte Aufgabe.
  • Programme, die eine dieser Dateien benötigen, benötigen normalerweise auch andere Dateien, die in der Abstraktionsdatei aufgeführt sind.
  • Abstraktionen finden Sie in /etc/apparmor.d/abstractions.

Capability Entries

  • Capability-Regeln bestehen einfach aus dem Wort Capability, gefolgt vom Namen der POSIX.1e-Capability, wie in der Manpage Capabilities definiert.
  • Sie können mehrere Fähigkeiten in einer einzigen Regel auflisten oder alle implementierten Fähigkeiten mit dem bloßen Schlüsselwort Fähigkeit gewähren.

Tunables

  • Das Tunables-Verzeichnis (/etc/apparmor.d/tunables) enthält globale Variablendefinitionen.
  • Bei Verwendung in einem Profil erweitern sich diese Variablen auf einen Wert, der geändert werden kann, ohne das gesamte Profil zu ändern.
  • Fügen Sie alle Tunables-Definitionen, die für jedes Profil verfügbar sein sollten, zu /etc/apparmor.d/tunables/global hinzu.