AppArmor verstehen und richtig einsetzen – Tutorial

AppArmor verstehen - Hacking Tutoirals Security Steffen Lippke

Was ist AppArmor?

Warum und wie setze ich die Software ein?

Das ist Dein Sprungbrett für die Arbeit mit AppArmor!

Starten wir!

Was ist AppArmor?

Die vergessene Sicherheitslösung
Die vergessene Sicherheitslösung

Die Software AppArmor verbessert die Sicherheit auf Deinem Linux System. Dafür verwendet die Software striktere Regeln bezüglich des Zugriffs- auf Dateien, System-Ressourcen usw.

Die Grundidee ist eine Umsetzung einer Mandatory Access Control (MAC). Andere Technologien wie Containerisierung (Docker, LDX) und virtuelle Maschinen schaffen mehr Sicherheit, indem Sie neue, separierte Linux-System-Kopien aufsetzen und eine Kapselung schaffen. AppArmor ist im Linux Kernel selbst integriert und setzt auf eine gezielte Steuerung.

AppArmor konzentriert sich nicht auf die Nutzer, sondern auf die Programme. Soll Deine Kontakte-App auf Deinen Standort zugreifen oder Deine Steuererklärung? Die Antwort ist nein. Die Programme brauchen nur eine sehr begrenzte Menge an Ressourcen, um lauffähig zu sein.

Warum sollte ich AppArmor verwenden?

Vertrauen ist gut, Kontrolle ist besser.

Würden wir nur Open-Source-Software verwenden, können wir in der Regel davon ausgehen, dass die Software nur das macht, wofür sie verkauft wird.

In 2024 haben wir immer noch Treiber von Grafikkarten oder andere kommerzielle Bauteile, welche nur mithilfe von kommerzielle Software laufen. Wir wissen nicht, was die Software wirklich macht (Malware) und wollen diese in einer stark limitierten Umgebung laufen lassen.

Traust Du dem Stück Software, welche Deine Maus antreibt
Traust Du dem Stück Software, welche Deine Maus antreibt?

AppArmor hilft dabei, die Software so stark zu beschränken, dass sie nur ihre Aufgabe erledigen kann und kein bisschen mehr.

Warum soll ein Grafiktreiber auf Deine Urlaubsfotos und das Internet zugreifen müssen? Verbiete den Zugriff vor dem Start der Software, damit Deine Bilder nicht im Darknet landen.

Grundlagen

Was ist eine Mandatory Access Control (MAC)

Mandatory Access Control (MAC) ist ein Sicherheitskonzept für Ressourcen.

Ressourcen können Dateien, Prozesse, Rechenleistung oder jeglichen anderen Aspekt sein. Damit nicht jeder Idiot, Hacker oder Mitarbeiter zu viele Rechte hat, limitiert die MAC den Zugriff auf diese Ressourcen.

Zugriffsberechtigungen sind der Schlüssel
Zugriffsberechtigungen sind der Schlüssel

Je weniger Rechte eine Person hat, desto geringer ist der Schaden für den Fall, dass der Account der Person übernommen wird. Jede Datei z. B. das Cola-Patent hat eine Zugriffsberechtigung. Nur der Chef und der Chef der Produktion kann auf die Datei zugreifen.

So kann man im ganzen Unternehmen jede Datei, jede Ressource … mit einer Zugriffsberechtigung bestücken.

Was ist eine Discretionary Access Control (DAC)

Die Discretionary Access Control (DAC) arbeitet etwas anders. Jeder Mitarbeiter ist Teil einer Abteilung (Gruppe) und hat eine gewisse Rolle (Subjekt).

Der Chef kann das Cola-Patent einer ganzen Abteilung „mit Weitergabe“ freigeben, indem er den Zugriff über die Regel „freigeben für Gruppe Labor“ regel. Der Mitarbeiter Herr Wolf im Labor hat ein Azubi Herr Vogel, welcher auch Zugriff auf das Dokument braucht. Da Herr Vogel der Gruppe Azubi angehört, gibt Herr Wolf nur Herrn Vogel Zugriff.

DAC und MAC schließen sich nicht aus, sondern ein Dateisystem kann diese zugleich implementieren.

Was sind Regeln / Policies?

AppArmor nutzt Regeln / Policies. Soll der Browser auf Deine Urlaubsfotos zu greifen oder nicht? Wenn Du normal browst, ist der Zugriff unnötig.

Die Software arbeitet hauptsächlich mit zwei Betriebsarten:

  • Durchsetzung (Enforcing): Die Programme können nicht auf undefinierte Ressourcen zu greifen. Nur, wenn der Zugriff explizit gestattet ist, kann die Software zugreifen. Versucht das Programm einen Zugriff, wird dieser Zugriff in einer Logdatei gespeichert und geblockt.
  • Alarmierung (Permissive): Dieser Modus macht Dich auf eine Verletzung einer Regel aufmerksam, aber verhindert nicht die Aktion.
Welcher Modus ist an?
Welcher Modus ist an?

Tutorial AppArmor – Software in Aktion

Im ersten Schritt brauchst Du ein System mit AppArmor. Wir nehmen hier ein Ubuntu Linux

  1. Werde root mit sudo su
  2. Jetzt hast Du genug Rechte, um den Status von AppArmor abzufragen aa-status. Dort sind alle Profile und die Betriebsarten gelistet.
  3. So sieht das schady Beispiel-Skript script.sh aus:
#!/bin/bash
# Erstes Kommando ist eine Ausgabe
echo "Das ist eine Ausgabe."
# Estellen wir eine HTML-Datei
touch neuedatei.html
echo "HTML erstellt"
# Versuchen wir es wieder los zu werden
rm neuedatei.html
echo "Weg ist es"
  1. Du vertraust diesem Programm nicht. Damit Du Dich gegen böse Aktionen schützen kannst, erstellst Du ein AppArmor-Profil sudo aa-genprof /home/steffen/script.sh
#include <tunables/global>

/home/steffen/script.sh {
  #include <abstractions/bash>
  #include <abstractions/base>
  /bin/bash ix,
  /dev/tty rw,
  /usr/bin/rm rix,
  /usr/bin/touch rix,
  /etc/ld.so.preload r,
  /home/steffen/script.sh r,
  deny /home/steffen/script.sh w,

}

Das Profil script.sh definiert die folgenden Regeln: Das Skript darf auf die Kommandozeile bash zugreifen und diese ausführen /bin/bash ix, und alle Subprozesse dürfen laufen. Das Skript darf sich selbst lesen, aber sich nicht ändern /home/steffen/script.sh r, deny /home/steffen/script.sh w,

Die Syntax kannst Du mit apparmor_parser -r /etc/apparmor.d/home.steffen.script.sh prüfen. Das Datei-Erstellungs-Programm touch braucht eine Erlaubnis, um zu arbeiten /usr/bin/touch rix,. Das r steht für die Leseberechtigung.

Alternativen zu AppArmor

Strickt, Strickter, SELinux

Der amerikanische Geheimdienst NSA hat diese Version von Linux (Security Enhanced) entwickelt. Das bedeutet nicht, dass Du automatisch von der NSA überwacht wirst, sondern die Notwendigkeit, dass jeder Entwickler Änderung an Linux veröffentlichen muss (GPLv2).

Wie AppArmor nutzt das Betriebssystem Regeln, um die Verwendung von Ressourcen zu steuern, zu limitieren oder zu erlauben. Als theoretische Basis verwendet das Betriebssystem die Mandatory Access Control (MAC).

Administratoren haben durch die Trennung von Ressourcen mehr Steuerungsmöglichkeiten. Weil die Software im Kernel integriert ist, kann ein Krimineller die Regeln nicht einfach ausschalten und die Regel somit umgehen. Jede Ressource z. B. Deine Urlaubsfotos sind mit Nutzer, Rolle, Modus und Level klassifiziert:

user:role:type:level

Die Modi können der Durchsetzungsmodus (Enforce), Warnmodus (Permissive) oder aus sein.

Das unbekannte Grsecurity

Das Projekt Grsecurity verbessert den Linux Kernel, um diesen gegen Hauptspeicher-Angriffe zu schützen. Außerdem haben wir bei dieser Software auch Abkapselungen (Jails). Die Software schützt vor weiteren komplexen Angriffen, welche eine strikte Regulierung verhindert.

Großer Trend Containerisierung

Viele IT-Projekte ignorieren die Idee von AppArmor, weil diese in Microservices denken.

Die Entwickler teilen ein großes Softwarepaket in einzelne Services, welche nur eine Aufgabe haben z. B. Zahlungsabwicklung, Newsletter-Versand, Umsatzbuchung usw.

Container sind überall
Container sind überall

Der Trend geht in Richtung einzelner Docker-Container, welche der Betreiber mit Verwaltungsplattformen wie Kubernetes oder Portainer pflegt. Eine Anwendung kann nur auf die Programme und Daten in dem isolierten Teilsystem, dem Docker Container, zugreifen.

Totale Isolation – Virtuelle Maschinen

Zu diesem Thema habe ich bereits einen Beitrag erstellt. Virtuelle Maschinen bieten die beste Isolation an, solange der Hypervisor (die Grundlagen-Software) keine Schwachstellen hat.

Auf der anderen Seite ist eine virtuelle Maschine sehr Ressourcen hungrig und wir haben viele redundanten Dateien und Prozesse auf einer Maschine. AppArmor ist viel leichtgewichtiger und nutzt die Ressourcen einer Maschine deshalb besser.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Die Webseite nutzt nur technisch notwendige Cookies.