AppArmor
ist ein ehemals von Novell entwickeltes Sicherheitsframework. Damit können für Anwendungen und die durch sie gestarteten Prozesse gezielt die Zugriffsrechte auf bestimme Verzeichnisse und darin liegende Programme geregelt werden.
AppArmor ist ein Kernelmodul, welches seit Ubuntu Gutsy Gibbon 7.10 automatisch beim Systemstart geladen wird. Die Regeln (sog. Profiles), welche auf die Anwendungen angewendet werden, werden beim Systemstart durch das Kernelmodul nachgeladen. Grundsätzlich können neben den vordefinierten Regeln auch eigene Regeln aufgestellt werden.
Wie oben bereits erwähnt ist AppArmor seit Gutsy Gibbon in der Standardinstallation enthalten, ebenso die Werkzeuge zum Verwalten von AppArmor. Diese können ansonsten über die Pakete
apparmor
apparmor-utils
nachinstalliert werden [1].
Alle Befehle zur Steuerung von AppArmor müssen mit Root-Rechten aufgerufen werden!
Im Idealfall nutzt man AppArmor ohne es zu bemerken, da Regeln die entsprechenden Anwendungen schützen, aber nicht beeinträchtigen. Um einen Überblick über den aktuellen Status von AppArmor zu erhalten, dient folgender Befehl im Terminal [3]:
apparmor_status
Wer das Paket apparmor-utils installiert hat, kann alternativ den kürzeren Befehl:
aa-status
verwenden.
AppArmor kennt zwei Modi der Regelumsetzung, nämlich "Complain" und "Enforce" (frei übersetzt: "Beschwerdemodus" und "durchgesetzter Modus"). Im "Complain"-Modus wird die Anwendung zwar überwacht, Aktionen, die gegen die Regeln verstoßen, werden allerdings nur geloggt und nicht verboten. Im "Enforce"-Modus werden diese Aktionen geloggt und verboten. Das Logging erfolgt dabei sowohl in der Syslog /var/log/syslog, wie auch in der Messages-log /var/log/messages, als auch in der Kernel-Log /var/log/kern.log. Die /var/log/messages ist dabei jedoch standardmäßig die ausschlaggebende, die auch von den AppArmor-Utils aa-logprof und aa-genprof benutzt wird. Möchte man sich mal von Hand anschauen, was AppArmor loggt, eignet sich tail.
Die folgenden Befehle dienen zum Laden eines Regelsatzes:
aa-complain REGEL # für den "Complain"-Modus aa-enforce REGEL # für den "Enforce"-Modus
Die Regelsätze befinden sich im Verzeichnis /etc/apparmor.d/. Die Regeln haben dabei die Struktur "pfad.zur.datei.dateiname". Es ist also der Dateipfad enthalten, allerdings durch einen Punkt anstatt eines Slashs getrennt, der letzte Teil gibt den Namen des Programms / Dienstes / ... an.
Möchte man alle Regeln auf einmal aktivieren, so geschieht dies mit diesem Befehl:
aa-complain /etc/apparmor.d/* # für den "Complain"-Modus" aa-enforce /etc/apparmor.d/* # für den "Enforce"-Modus
Um AppArmor für die aktuelle Sitzung zu deaktivieren reicht es, das entsprechende Kernelmodul apparmor zu entladen. Möchte man für mehrere Sitzungen auf AppArmor verzichten, so kann man das Modul auch in die "blacklist" eintragen. [4]
Grundsätzlich ist es auch möglich, bestehende Profile von Hand zu bearbeiten oder auch komplett von Hand zu erstellen. Bei den Profilen handelt es sich um normale Textdateien.
Wer das Editieren von Hand beabsichtigt, sollte genau wissen, was er tut! Es besteht eine erhöhte Gefahr, dass das Programm, welches durch das editierte Profil gesichert ist, entweder nicht mehr ausreichend gesichert ist oder auch, dass die Sicherung zu restriktiv ist, so dass das Programm nicht mehr richtig ablaufen kann!
Eine Profil-Datei ist dabei prinzipiell wie folgt aufgebaut:
[...] #include <abstractions/base> [...] capability sys_admin, [...] /usr/lib/gconv/** r, /proc/meminfo r, /bin/basename rmix, [...]
mit dem Befehl #include können andere (grundlegende) Regelsätze eingebunden werden
mit dem Befehl capability XYZ werden grundlegende Eigenschaften / Merkmale definiert
/pfad/zu/datei Option setzt die erlaubten Aktionen für das jeweilige Verzeichnis; dabei ist die Verwendung des Jokers * erlaubt, zwei ** bedeuten "inkl. aller Unterverzeichnisse".
Dabei sind folgende Optionen erlaubt, die Kürzel können in beliebiger Reihenfolge stehen und benötigen kein Trennzeichen o.ä.:
| Optionen für Aktionskontrolle in AppArmor Profilen | |
| Option | Beschreibung |
r | Lesezugriff ist erlaubt |
w | Schreibzugriff ist erlaubt |
l | es ist erlaubt, Links zu folgen |
m | es darf der Aufruf von mmap erfolgen |
ix | Kinderprozesse erben die Rechte des Elternprozesses |
px | dieses (Unter-) Programm hat ein eigens AppArmor Profil |
ux | dieses (Unter-) Programm darf ohne AppArmor Profil ausgeführt werden |
Seit Gutsy wird das Kernelmodul geladen, allerdings ist der Regelsatz dort nur mit zwei Regeln ausgestattet(cupsd,cups-pdf). Möchte man eine neue Regel laden, so muss man dies von Hand erledigen. Bei den jüngeren Ubuntu-Versionen sind mehr Regelsätze hinterlegt, eine Übersicht erhält man durch den Befehl
sudo aa-status
Grundsätzlich sollte jedes Programm, welches eine Angriffsfläche bietet, von AppArmor beschützt werden. Dies sind vorrangig (aber nicht ausschließlich) Programme, welche eine Verbindung nach außen, also dem Netzwerk oder Internet, herstellen oder von dort erreicht werden können. Als Beispiel seien Browser, Email- und Chat-Programme und Dienste genannt. Eine minimal Auswahl erhält man durch ein AppArmor-Util, welches man vom Terminal [3] aus aufruft:
sudo aa-unconfined
Dieses ermittelt mittels netstat, welche Programme offene Netzwerk-Sockets (TCP/UDP) besitzen und ob sie ein AppArmor-Profil besitzen. Auf einem frisch installierten Ubuntu (Gutsy) sieht die Ausgabe so aus:
5460 /usr/sbin/avahi-daemon not confined 5460 /usr/sbin/avahi-daemon not confined 5806 /sbin/dhclient3 not confined 18367 /usr/sbin/cupsd confined by '/usr/sbin/cupsd (enforce)'
Man sieht drei Dienste, wovon nur einer geschützt wird (cups). Man besitzt also zwei ungeschützte Dienste: avahi-daemon und dhclient3. avahi-daemon wird wahrscheinlich doppelt gelistet, weil es sowohl für TCP, wie auch UDP lauscht. Diese beiden Dienste sind standardmäßig auf Ubuntu installiert. Sie sind nur aus dem lokalen Netzwerk, also nicht aus dem Internet, zu erreichen und gelten als sicher und nicht ausnutzbar. Mehr dazu kann man hier lesen. Paranoide werden wahrscheinlich trotzdem eine Regel dafür haben wollen, aber nach jetzigem Kenntnisstand ist dies nicht nötig.
Sollte unconfined weitere Dienste anzeigen, wie zum Beispiel Privoxy oder TOR, sollte man diese von AppArmor schützen lassen. Als Anmerkung sei noch gesagt, dass unconfined mit großer Wahrscheinlichkeit nur Dienste anzeigen wird und nicht normale Internetanwendungen (wie zum Beispiel einen Browser). Das bedeutet aber nicht, dass diese nicht geschützt werden sollten. Wie bereits gesagt ist die unconfined-Liste nur ein kleiner Ausschnitt der schützenswerten Anwendungen und in keinem Fall abschließend.
Wie im letzen Abschnitt bereits gesagt, kommt AppArmor von Haus aus nur mit zwei Profilen um cups zu schützen. Um nun weitere Profile zu beziehen, gibt es im Grunde zwei Möglichkeiten: fremde Profile übernehmen oder Profile selber erstellen.
In der Installation sind nur sehr wenige Regeln enthalten. Ein größerer Regelsatz kann über das Paket
apparmor-profiles (universe [2]))
installiert [1] werden. Es sollte aber bedacht werden, dass diese Regeln zum einen unter Umständen für veraltete Programmversionen gedacht sind (z.B. Regeln für GAIM anstelle von Pidgin enthalten), zum anderen, dass diese Regeln nicht blind übernommen werden sollen / können, sondern den individuellen Bedürfnissen angepasst werden müssen. Im Internet kursieren noch zahlreiche weitere Profile für AppArmor, doch es sollte immer überlegt werden, wie vertrauenswürdig die Quelle ist und wie kompetent im Erstellen von Profilen. Außerdem sind diese Regeln meist nicht auf die eigenen Bedürfnisse angepasst, sondern müssen nachträglich feinjustiert werden. Auch hier gilt es, dass keine Profile blind übernommen werden sollten.
Will man selbst eigene Profile für AppArmor erstellen, findet man hier einen Artikel, der dies ausführlich erklärt: Profile erstellen
Using AppArmor -
Eintrag im englischen Ubuntu-Wiki
AppArmor for Geeks -
Eintrag von der englischen OpenSuse-Homepage
Handbuch -
AppArmor-Handbücher, auch als .pdf-Datei
Profile erstellen - Anleitung zum Erstellen eigener AppArmor-Profile
Diese Revision wurde am 11. Juli 2011 um 20:31 Uhr
von Krino erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet:
Sicherheit, System
2004 – 2011 ubuntuusers.de • Einige Rechte vorbehalten