Apparmor Profilaufbau: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 15: Zeile 15:
 
}
 
}
 
</pre>
 
</pre>
 
+
=Include-Anweisungen=
*Mit dem Befehl #include können andere (grundlegende) Regelsätze eingebunden werden.
+
*Include-Anweisungen sind Direktiven, die Komponenten anderer AppArmor-Profile einbeziehen, um Profile zu vereinfachen.  
 
+
*Include-Dateien rufen Zugriffsberechtigungen für Programme ab.  
*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.
+
*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.
*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).
+
*Include-Anweisungen beginnen normalerweise mit einem Rautezeichen (#).
 
+
*Dies ist verwirrend, da das gleiche Hash-Zeichen für Kommentare in Profildateien verwendet wird.  
*Mit dem Befehl capability XYZ werden grundlegende Eigenschaften/Merkmale definiert. Siehe dazu die entsprechende Manpage 🇬🇧 sowie Capability rules 🇬🇧.
+
*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).
 
 
*/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:
 
 
 
 
=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 29:
 
*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-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.
 +
=Regel=
 +
*AppArmor kennt AppArmor sowohl Regeln für den Zugriff auf Dateien als auch für den Zugriff auf das Netzwerk.
 +
*Eine Regel besteht aus einem absoluten Dateinamen oder einem Dateiglobbing
 +
*gefolgt wird der Dateinamen von den Zugriffsrechten.
 +
*Sowohl der Dateiname als auch das Globbing kann Variablenenthalten.

Aktuelle Version vom 17. Januar 2023, 05:36 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,
  [...]
}

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.

Regel

  • AppArmor kennt AppArmor sowohl Regeln für den Zugriff auf Dateien als auch für den Zugriff auf das Netzwerk.
  • Eine Regel besteht aus einem absoluten Dateinamen oder einem Dateiglobbing
  • gefolgt wird der Dateinamen von den Zugriffsrechten.
  • Sowohl der Dateiname als auch das Globbing kann Variablenenthalten.