AppArmor

Debian AppArmor-Tutorial

Debian AppArmor-Tutorial
AppArmor ist ein obligatorisches Zugangskontrollsystem für Linux. In einem obligatorischen Zugriffskontrollsystem (MAC) erlegt der Kernel Einschränkungen für Pfade, Sockets, Ports und verschiedene Ein-/Ausgabemechanismen auf. Es wurde von Immunex entwickelt und wird jetzt von SUSE gewartet. Es ist seit Version 2 Teil des Linux-Kernels.6.36.

Während der Linux-Kernel eine gute Isolierung von Benutzern und eine starke Dateiberechtigungskontrolle bietet, bietet ein MAC wie AppArmor feinere Berechtigungen und Schutz vor vielen unbekannten Bedrohungen. Wenn im Linux-Kernel oder einem anderen System-Daemon eine Sicherheitslücke gefunden wird, kann ein gut konfiguriertes AppArmor-System den Zugriff auf kritische Pfade verhindern, die für das Problem anfällig sein könnten.

AppArmor kann in zwei Modi effektiv arbeiten - Durchsetzung und Beschwerde. Erzwingen ist der Standardproduktionsstatus von AppArmor, während Beschwerden nützlich sind, um einen Regelsatz basierend auf realen Betriebsmustern zu entwickeln und Verstöße zu protokollieren. Es wird über reine Textdateien in einem relativ benutzerfreundlichen Format konfiguriert und hat eine kürzere Lernkurve als die meisten anderen obligatorischen Zutrittskontrollsysteme.

Installation

Um AppArmor unter Debian zu installieren, führen Sie (als root) aus:

apt install apparmor apparmor-utils auditd

Sie können auditd weglassen, wenn Sie keine Tools zur Profilerstellung benötigen.

Wenn Sie Starter- und zusätzliche Profile installieren möchten, führen Sie Folgendes aus:

apt install apparmor-profiles apparmor-profiles-extra

Da AppArmor ein Linux-Kernelmodul ist, müssen Sie es mit den folgenden Befehlen aktivieren:

mkdir -p /etc/default/grub.d

Erstellen Sie die Datei /etc/default/grub.d/apparmor.cfg mit folgendem Inhalt:

GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT apparmor=1 security=apparmor"

Speichern und beenden, dann ausführen:

update-grub

Dann neu starten.

Es gibt Diskussionen, ob dies automatisch erfolgen soll. Sie können das Ende dieses Fehlerberichts lesen, um zu sehen, ob sich dies seit dem Zeitpunkt des Schreibens geändert hat.

Nach dem Neustart können Sie überprüfen, ob AppArmor aktiviert ist, indem Sie Folgendes ausführen:

aa-status

Dieser Befehl listet geladene AppArmor-Profile auf und listet ihren aktuellen Konformitätsstatus auf (erzwungen, beschweren usw.).)

Wenn du läufst:

ps auxZ | grep -v '^unbegrenzt'

Sie sehen eine Liste von Programmen, die durch ein AppArmor-Profil eingeschränkt sind. Ein eingeschränktes Programm ist eines, das von AppArmor beeinflusst und eingeschränkt wird (entweder passiv, im Beschwerdemodus oder aktiv im erzwungenen Modus).

Modi ändern / AppArmor deaktivieren

Wenn Sie AppArmor deaktivieren möchten, weil ein Programm nicht funktioniert, sollten Sie das Profil in den Beschwerdemodus statt in den erzwungenen Modus versetzen. Führen Sie dazu (als root oder über sudo) aus:

aa-beschweren /Pfad/zum/Programm

Wenn Ping beispielsweise nicht richtig funktioniert, verwenden Sie:

aa-beschweren /usr/bin/ping

Sobald sich ein Profil im Beschwerdemodus befindet, können Sie die Protokollierung über /var/log/syslog oder mit journalctl -xe auf systemd-Systemen (Debian 8.x, Jessie und höher).

Nachdem Sie das Profil bearbeitet haben, um die Einschränkung zu entfernen oder anzupassen, können Sie den Erzwingungsmodus für die Binärdatei wieder aktivieren mit:

aa-erzwingen /Pfad/zum/Programm

Ersetzen Sie im obigen Beispiel /path/to/program durch den vollständigen Pfad zu der Binärdatei, die von dem betreffenden Profil betroffen ist.

Wenn Sie ein Problem mit einem Programm haben und es sich im Beschwerdemodus befindet, enthalten die Protokolle spezifische Informationen darüber, welche Aktion abgelehnt wurde. Das Operationsfeld erklärt, was das Programm versucht hat, das Profilfeld das spezifische betroffene Profil, der Name gibt das Ziel der Aktion an (i.e. welche Datei von einer Lese- oder Schreiboperation gestoppt wurde), und die Masken für angeforderte und abgelehnte geben an, ob die Operation, sowohl vom Programm angefordert als auch vom Profil abgelehnt, gelesen oder gelesen wurde.

Sie können ein Profil vollständig deaktivieren, indem Sie Folgendes ausführen:

aa-deaktiviere /Pfad/zum/Programm

Oder Sie können AppArmor vollständig deaktivieren, indem Sie die Datei bearbeiten: /etc/default/grub.d/apparmor.cfg enthalten:

GRUB_CMDLINE_LINUX_DEFAULT=“$GRUB_CMDLINE_LINUX_DEFAULT apparmor=0“

Dann läuft:

update-grub

Und Neustart Ihres Systems.

Arbeiten mit AppArmor-Profilen

AppArmor-Profile befinden sich in /etc/apparmor.d/ Verzeichnis. Wenn Sie die Pakete apparmor-profiles und apparmor-profiles-extra installieren, finden Sie Profile in /usr/share/doc/apparmor-profiles und /usr/share/doc/apparmor-profiles/extra. Um sie zu aktivieren, kopieren Sie die Dateien nach /etc/apparmor.d Bearbeiten Sie sie dann, um sicherzustellen, dass sie die gewünschten Werte enthalten, speichern Sie sie und führen Sie sie aus:

Service Apparmor nachladen

Wenn Sie nur ein Profil neu laden möchten, führen Sie Folgendes aus:

apparmor_parser -r /etc/apparmor.d/profil

Wobei „Profil“ der Name des betreffenden Profils ist.

Es wird nicht empfohlen, die Profile und zusätzliche Profile einfach in /etc/apparmor zu kopieren.d-Verzeichnis, ohne sie von Hand zu bearbeiten. Einige Profile können alt sein und einige enthalten ganz sicher nicht die gewünschten Werte. Wenn Sie sie alle kopieren, stellen Sie sie zumindest so ein, dass sie sich beschweren, damit Sie Verstöße überwachen können, ohne Programme in der Produktion zu beschädigen:

cd /etc/apparmor.d
für f in *.* ; aa-beschweren /etc/apparmor.d/$f; getan

Sie können den Befehl aa-enforce einzeln verwenden, um Profile zu aktivieren, die Sie behalten möchten, diejenigen, die Probleme verursachen, zu optimieren und zu erzwingen, oder diejenigen zu entfernen, die Sie nicht benötigen, indem Sie aa-disable ausführen oder die Profildatei aus /etc/apparmor entfernen.d.

Erstellen eines AppArmor-Profils

Bevor Sie ein benutzerdefiniertes Profil erstellen, sollten Sie die Datei /etc/apparmor . durchsuchen.d und /usr/share/doc/apparmor-profiles Verzeichnisse für ein vorhandenes Profil, das die fragliche Binärdatei abdeckt. Um diese zu durchsuchen, führen Sie Folgendes aus:

find /usr/share/doc/apparmor-profiles | grep „Programm“ -i

Ersetzen Programm mit dem Programm, das Sie mit AppArmor schützen möchten. Wenn Sie einen finden, kopieren Sie ihn nach /etc/apparmor.d und bearbeiten Sie die Datei dann in Ihrem bevorzugten Texteditor.

Jedes Profil besteht aus drei Hauptabschnitten: enthält, Fähigkeiten und Pfade. Eine hilfreiche Referenz finden Sie in der Dokumentation von SuSE.

Beinhaltet

Enthält eine Syntax, die Sie in der Datei verwenden können. Sie verwenden die C/C++-Syntax #include <> und verweisen normalerweise auf Abstraktionen in /etc/apparmor.d/abstractions-Verzeichnis.

Fähigkeiten

Der Abschnitt "Fähigkeiten", der normalerweise nach den Includes zu finden ist, listet spezifische Fähigkeiten auf, die das Programm ausführen kann. Sie können beispielsweise ein Programm eine setuid-Operation ausführen lassen mit:

Fähigkeitssetuid

Die Fähigkeit net_bind_service ermöglicht einem Programm, sich an einen Netzwerkport zu binden. Wenn Sie dies nicht gewähren, kann ein Server-Daemon wie Apache Port 80 nicht öffnen und abhören. Das Weglassen dieser Funktion kann jedoch eine hervorragende Sicherheit für Prozesse im Netzwerk bieten, denen Sie nicht vertrauen.

Wege

Sie können Pfade auflisten, die das Programm lesen (und möglicherweise schreiben) kann. Wenn Sie beispielsweise dem Programm den Zugriff auf die Datei /etc/passwd ermöglichen möchten, fügen Sie Folgendes hinzu:

/etc/passwd r

Im Profil. Beachten Sie das "r" - das bedeutet nur lesen. Wenn Sie dies in „w“ ändern, wird das Schreiben in diesen Pfad oder diese Datei erlaubt.

Auch wenn Sie einen Pfad in AppArmor zulassen, unterliegt dieser immer noch den Einschränkungen des Linux-Dateisystems (i.e. set mit chmod, chgrp und chown). AppArmor bietet jedoch weiterhin eine zusätzliche Schutzschicht, sollten diese Mechanismen kompromittiert werden.

Fazit

Der Schlüssel zu einer erfolgreichen AppArmor-Bereitstellung besteht darin, Profile so einzurichten, dass sie sich beschweren und dann durchsetzen. Eine sorgfältige Protokollprüfung gibt Ihnen die minimalen Pfade und Fähigkeiten, die für einen erfolgreichen Programmbetrieb erforderlich sind. Indem Sie diese und nicht mehr zuweisen, erhöhen Sie Ihre Systemsicherheit dramatisch.

Top 5 Karten zur Spielaufnahme
Wir alle haben Streaming-Gameplays auf YouTube gesehen und geliebt. PewDiePie, Jakesepticye und Markiplier sind nur einige der Top-Gamer, die Millione...
So entwickeln Sie ein Spiel unter Linux
Vor einem Jahrzehnt hätten nicht viele Linux-Benutzer vorhergesagt, dass ihr Lieblingsbetriebssystem eines Tages eine beliebte Spieleplattform für kom...
Open-Source-Ports kommerzieller Spiele-Engines
Kostenlose, quelloffene und plattformübergreifende Spiel-Engine-Nachbildungen können verwendet werden, um sowohl alte als auch einige der relativ neue...