AppArmor ist ein Dienst unter Debian, mit dem man sich zusätzliche Sicherheit schaffen kann. Diese zusätzliche Sicherheit wird dadurch geschaffen, dass Anwendungen / Prozesse in ihren Rechten eingeschränkt werden – genauer gesagt – die Anwendungen / Prozesse haben nur auf diese Verzeichnisse und Dateien Zugriff, auf die sie solche Rechte auch benötigen. In diesem Artikel der Linux Bibel sehen wir uns diese Software etwas genauer an.
Diese Anleitung kann unter Debian genutzt werden und sollte auch unter Ubuntu und darauf basierenden Distributionen funktionieren.

Voraussetzungen schaffen

Über die Paket-Verwaltung installieren Sie folgende Pakete „apparmor apparmor-profiles apparmor-profiles-extra apparmor-utils„.

Nach der Installation gilt es AppArmor mit dem System von Beginn an automatisch starten zu lassen. Dafür sehen Sie sich zuerst an, ob es das Verzeichnis/etc/default/grub.d/“ gibt – am Terminal geben Sie dazu folgenden Befehl ein:

ls /etc/default/grub.d/

Ist das Verzeichnis nicht vorhanden, erstellen Sie dieses als Administrator am Terminal mit dem Befehl:

mkdir -p /etc/default/grub.d

Anschließend und ebenfalls als Administrator am Terminal erstellen wir nun die Konfiguration mit folgendem Befehl:

echo 'GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT apparmor=1 security=apparmor"' | tee /etc/default/grub.d/apparmor.cfg

Nun zeigen wir dem Bootloader GRUB seine neue Konfiguration:

update-grub

Anschließend starten Sie den Rechner neu.

AppArmor anpassen

Nach den oben vorgenommenen Anpassungen sollte AppArmor laufen, dies können wir als normaler Benutzer am Terminal mit folgendem Befehl erfragen:

cat /sys/module/apparmor/parameters/enabled

Erhalten wir eine Ausgabe wie die folgende läuft die Software:

Y

Nun können wir uns als Administrator mit folgendem Befehl den Status ansehen:

aa-status

Sehen wir uns die Ausgabe (in diesem Beispiel) als Text an:

apparmor module is loaded.
53 profiles are loaded.
34 profiles are in enforce mode.
   /usr/bin/akonadiserver
   /usr/bin/evince
   /usr/bin/evince-previewer
   /usr/bin/evince-previewer//sanitized_helper
   /usr/bin/evince-thumbnailer
   /usr/bin/evince//sanitized_helper
   /usr/bin/man
   /usr/bin/pidgin
   /usr/bin/pidgin//sanitized_helper
   /usr/bin/totem
   /usr/bin/totem-audio-preview
   /usr/bin/totem-video-thumbnailer
   /usr/bin/totem//sanitized_helper
   /usr/lib/cups/backend/cups-pdf
   /usr/lib/x86_64-linux-gnu/lightdm/lightdm-guest-session
   /usr/lib/x86_64-linux-gnu/lightdm/lightdm-guest-session//chromium
   /usr/sbin/cups-browsed
   /usr/sbin/cupsd
   /usr/sbin/cupsd//third_party
   /usr/sbin/gpsd
   /usr/sbin/haveged
   apt-cacher-ng
   firejail-default
   libreoffice-senddoc
   libreoffice-soffice//gpg
   libreoffice-xpdfimport
   lsb_release
   man_filter
   man_groff
   mariadbd_akonadi
   mysqld_akonadi
   nvidia_modprobe
   nvidia_modprobe//kmod
   postgresql_akonadi
19 profiles are in complain mode.
   /usr/bin/irssi
   avahi-daemon
   dnsmasq
   dnsmasq//libvirt_leaseshelper
   identd
   klogd
   libreoffice-oosplash
   libreoffice-soffice
   mdnsd
   nmbd
   nscd
   php-fpm
   ping
   smbd
   smbldap-useradd
   smbldap-useradd///etc/init.d/nscd
   syslog-ng
   syslogd
   traceroute
0 profiles are in kill mode.
0 profiles are in unconfined mode.
6 processes have profiles defined.
4 processes are in enforce mode.
   /usr/bin/akonadiserver (7219) 
   /usr/sbin/cups-browsed (1370) 
   /usr/sbin/cupsd (947) 
   /usr/sbin/haveged (604) 
2 processes are in complain mode.
   /usr/sbin/avahi-daemon (611) avahi-daemon
   /usr/sbin/avahi-daemon (659) avahi-daemon
0 processes are unconfined but have a profile defined.
0 processes are in mixed mode.
0 processes are in kill mode.

Folgende Ausgabe:

apparmor module is loaded.

bedeutet natürlich das AppArmor ohne Probleme läuft.

53 profiles are loaded

zeigt uns, dass 53 Profile (Regeln für Anwendungen / Prozesse) geladen sind – 53 Anwendungen / Prozesse werden also durch AppArmor eingeschränkt. Nun wird es interessant – es gibt verschiedene Modi in denen Profile laufen können:

  • complain – Der Modus, in dem ein Profil lernt, was der Prozess darf und was nicht
  • enforce – Dies ist der Idealzustand, der Prozess läuft nach den Regeln des Profils
  • audit – Es werden Zugriffe auf Dateien und Verzeichnisse sowie Regelverstöße aufgezeichnet, ideal um zu sehen, worauf eine Software zugreifen können sollte oder will

Nun gehen wir zurück zu unserer Ausgabe:

34 profiles are in enforce mode.

34 Profile laufen im „enforce„-Modus, schränken die darunter verzeichneten Prozesse wie es soll in ihren Rechten ein. Weitere 19 Prozesse laufen im „complain„-Modus, lernen also was sie tun dürfen und was nicht und so weiter und so fort – das Lernen geschieht teilweise automatisch, vor allem kurz nach der Installation.

Nun können wir uns auch ansehen, welche Prozesse nicht geschützt sind:

aa-unconfined
aa-unconfined --paranoid

Diese Liste ist etwas länger:

Vor allem nach dem zweiten Befehl:

Nun, für viele nicht eingeschränkte Prozesse haben wir uns das Paketapparmor-profiles-extra“ installiert, diese Profile liegen unter „/usr/share/apparmor/extra-profiles/“ und sind nicht aktiviert. Diese lassen sich nun etwa mit dem Befehl:

ls /usr/share/apparmor/extra-profiles/ | less

anzeigen:

Oder natürlich auch im grafischen Dateimanager:

Ein Profil nennt sich so wie der Pfad zu seiner ausführbaren Datei, also für Skype etwa „/usr/bin/skype“ – so nennt sich das Profil „usr.bin.skype„. Möchte ich ein Profil nun aktivieren, um die jeweilige Anwendung einzuschränken, gilt es das dazu passende in das Verzeichnis „/etc/apparmor.d/“ zu kopieren – also für das obige Beispiel:

cp /usr/share/apparmor/extra-profiles/usr.bin.skype /etc/apparmor.d/

Anschließend gilt es das Profil in den jeweiligen Modus zu versetzen – in der Regel sollte es bei bestehenden Profilen genügen diese einfach in den „enforce„-Modus zu versetzen – also (bei nicht laufender Software – hier eben Skype):

aa-enforce /etc/apparmor.d/usr.bin.skype

Nun testet man die Software – in diesem Beispiel eben Skype, funktioniert alles so wie es soll – perfekt. Gibt es mit Funktionen Probleme, beenden Sie die Software, versetzen Sie das Profil in den Lern-Modus (die Software darf beim Ändern in den Lern-Modus nicht laufen):

aa-complain /etc/apparmor.d/usr.bin.skype

Nun starten Sie die Software – in diesem Fall eben Skype und führen alle Funktionen aus – unter anderem eben auch aktivieren der Kamera, speichern von Dateien, Zugriff auf die gewünschten Verzeichnisse, … haben Sie alle Funktionen ausgeführt beenden Sie die Software und versetzen deren Profil wieder in den „enforce„-Modus.

Selbst Profile erstellen

Nun gibt es natürlich etliche Anwendungen, für die es keine Profile gibt, beispielsweise gibt es ein Profil für Firefox unter „/usr/share/apparmor/extra-profiles/“ – es ist aber nicht aktiviert – aber keines für Google Chrome. Möchte man ein solches erstellen – kein Problem, für welche Anwendung oder welchen Prozess auch immer, alles lässt sich selbst anfertigen.

Nehmen wir einmal das Beispiel Google Chrome – als Erstes gilt es zu erfahren, wie sich die ausführbare Datei nennt – ein Blick in das Anwendungsmenü führt meist zum Ziel – hier etwa unter KDE:

In diesem Beispiel nennt sich die Dateigoogle-chrome-stable“ – hier findet sich auch gleich der Pfad zur ausführbaren Datei – ist dies aber nicht der Fall genügt am Terminal der Befehl:

which google-chrome-stable

Und schon erhält man den Pfad zur ausführbaren Datei, in diesem Fall:

/usr/local/bin/google-chrome-stable

Nun können wir als Administrator ein Profil erstellen:

aa-genprof /usr/local/bin/google-chrome-stable

Der Pfad muss komplett angegeben werden, ansonsten funktioniert die Geschichte nicht. Lassen Sie den Befehl nun laufen und starten die Anwendung ganz normal – also eben im Beispiel Chrome. Nun surfen Sie im Internet, speichern Dateien unter „Downloads„, greifen auf das VerzeichnisDokumente“ zu – speichern Sie keine Datei unter Downloads, wird die Software später keine Dateien unter „Downloadsspeichern können. Greifen Sie beispielsweise nicht auf das VerzeichnisDokumente“ (oder andere Verzeichnisse) zu, kann die Software dies auch später nicht. Das Profil befindet sich im Lern-Modus – also im „complain„-Modus beim Erstellen.

Haben Sie alles ausgeführt, was Chrome dürfen soll, beenden Sie den Browser, wechseln Sie zurück auf das Terminal und drücken s. Damit beendet AppArmor den „complain„-Modus und zeigt Ihnen am Terminal was Chrome während dieser Zeit getan hat – jede Aktion wird am Terminal der Reihe nach gezeigt – erst eine – diese gilt es nun zu erlauben mit a, mit d wird nicht erlaubt – mehr benötigen Sie in der Regel nicht, anschließend zeigt AppArmor die nächste Aktion die durchgeführt wurde. Ein Beispiel für eine solche Frage:

Profile:      /usr/local/bin/google-chrome-stable
Path:         /etc/pkcs11/modules
Mode:         r
Severity:     unknow

Darunter zeigt AppArmor noch eine Legende für alle zu nutzenden Tasten, aber wie schon beschrieben – mehr als a und d brauchen Sie in der Regel nicht. Melder AppArmor das alle Fragen von Ihnen beantwortet wurden speichern Sie das Profil mit s und beenden den „complain„-Modus mit f. Das so erstellte Profil ist automatisch aktiv.

Gibt es nun Probleme starten Sie am einfachsten den „audit“-Modus mit:

aa-audit /usr/local/bin/google-chrome-stable

und starten die Anwendung – hier sehen Sie nun was der Software verboten wird, aber vielleicht doch benötigt wird. Wird es Ihnen zu viel löschen Sie die Datei aus dem Verzeichnis/etc/apparmor.d/„. Diese Dateien können Sie natürlich auch mit einem Texteditor bearbeiten. Ein kleines Beispiel:

#include <tunables/global>
/usr/bin/firefox flags=(complain) {
  #include <abstractions/base>
  #include <abstractions/nameservice>
  #include <abstractions/samba>
  capability net_bind_service,
  /proc/sys/kernel/core_pattern r,
  /usr/bin/firefox mr,
  /var/cache/samba/gencache.tdb rwk,
  /var/{cache,lib}/samba/browse.dat* rw,
  /var/{cache,lib}/samba/gencache.dat rw,
  /var/{cache,lib}/samba/wins.dat* rw,
  /var/{cache,lib}/samba/smb_krb5/ rw,
  /var/{cache,lib}/samba/smb_krb5/krb5.conf* rw,
  /var/{cache,lib}/samba/smb_tmp_krb5.* rw,
  /var/{cache,lib}/samba/sync.* rw,
  /var/{cache,lib}/samba/unexpected rw,
  /{,var/}run/samba/** rwk,
  # Site-specific additions and overrides.
  # See local/README for details.
  #include <local/usr.bin.firefox>
}

Sie finden die Verzeichnisse und Dateien aufgelistet, dahinter die Rechte:

  • r – Lesezugriff
  • w – Schreibzugriff
  • a – Hinzufügen von Datei-Inhalten
  • l – Setzen von Links
  • k – Sperren von Dateien
  • mDatei via mmap ins RAM laden
  • x – Ausführen von Drittanwendungen

AppArmor deaktivieren

Löschen Sie die erstellte Datei unter „/etc/default/grub.d/“ und führen anschließend ein:

update-grub

aus.

Erstveröffentlichung: Mi 29. Sep 2021, 07:23

Categories:

Tags:

Schreibe einen Kommentar

Noch keine Reaktion

Neue Themen im Forum
Debian installieren - für Anfänge …Zitat von Micha am 21. November 2024, 20:34 Uhr Hallo zebolon, … Weiterlesen
Frage zu GrubDanke @juhu, das war für mich eine reine Verständnisfrage allge … Weiterlesen
Brother Drucker unter LinuxMit der Suche nach „Linux Brother HL-2030“ fand ich zur Seite htt … Weiterlesen
Kategorien im Wiki
WIKI-Beiträge des Monates

Die Beiträge des Monates finden Sie im Kalender unter den blau markierten Tageszahlen.

September 2023
M D M D F S S
 123
45678910
11121314151617
18192021222324
252627282930  
Archive