genprof

Mit diesem Befehl können Sie recht einfach auf der Kommandozeile ein Profil für eine neue Applikation erstellen. Yast2 nutzt für seine Assistenten ebenfalls diesen Befehl, wenn ein neues Profil erzeugt werden soll.

Der Befehl erwartet von Ihnen die Angabe des Programms für das ein Profil erzeugt werden soll. Sie müssen dieses Programm, wie gewohnt, mit seinem kompletten Pfad eingeben. Genprof prüft dann zunächst, ob dieses Programm von einem Profil geschützt werden darf. Bestimmte Programme sind von dem Schutz durch AppArmor ausgenommen, da dadurch das gesamte System instabil werden kann. Diese Programme werden in der Konfigurationsdatei /etc/apparmor/logprof.conf definiert (siehe 10.4.1).

Anschließend prüft dieser Befehl, welches Protokollsystem aktuell für die Verarbeitung der AppArmor-Meldungen zuständig ist. Falls die AppArmor-Meldungen von dem Syslog verarbeitet und in der Datei /var/log/messages gespeichert werden, erzeugt genprof eine Markierung in dieser Datei:

kernel GenProf: <MD5-Pruefsumme des Datums>
Erfolgt die Protokollierung über den Auditd-Daemon, so liest genprof den letzten Eintrag in dem Protokoll, um später die neu hinzugefügten Meldungen erkennen zu können.

Als nächstes prüft dieser Befehl, ob für das zu analysierende Programm bereits ein Profil existiert. Ist dies nicht der Fall, erzeugt der Befehl zunächst mit Hilfe des Kommandos autodep ein Basisprofil. Das Profil wird dann mit complain in den Lernmodus geschaltet und Sie werden aufgefordert nun das Programm, für das genprof das Profil erzeugen soll, zu benutzen (siehe 10.1).

Abbildung: Genprof fordert Sie auf das Programm zu benutzen. Anschließend scannt Genprof die erzeugten AppArmor Protokollmeldungen.
Image genprof
Sobald Sie nun S für Scan auswählen, beginnt Genprof mit der Analyse der Meldungen und fragt Sie bei jedem protokollierten Zugriff, ob dieser in Zukunft erlaubt sein soll. Für diese Funktion nutzt Genprof den Befehl logprof und weist diesen an, die Protokolle ab der geschriebenen Markierung zu analysieren.
Abbildung: Ähnlich wie bei den Yast-Assistenten haben Sie die Möglichkeit auszuwählen, ob der Zugriff erlaubt werden soll oder nicht.
Image genprof_analysis
Neu hinzugekommen gegenüber dem Yast-Dialog ist die Auswahl New. Diese entspricht dem Edit-Button im Yast-Dialog (siehe auch 10.3.7).

Sobald alle Meldungen abgearbeitet und alle Fragen von Ihnen beantwortet wurden, erzeugt Genprof das neue Profil, lädt es und versetzt es wieder in den Lernmodus. Sie können nun das Programm weiter verwenden und erneut den Scan durchführen, um neue Zugriffe in das Profil aufzunehmen. Wenn Sie fertig sind, beenden Sie Genprof mit Finish. Genprof wird nun das Profil in den Enforce-Modus schalten. Alle Zugriffe, die Sie nicht erlaubt haben, werden nun von AppArmor unterbunden.

Natürlich können Sie zu jedem späteren Zeitpunkt die Anpassung des Profils wiederaufnehmen. Dazu starten Sie wieder Genprof für das betroffenen Programm. Zugriffe, die bisher nicht erlaubt waren, aber von dem Programm benötigt werden, können dann wieder mit Genprof dem Profil hinzugefügt werden.

Ralf Spenneberg 2007-11-13