NAS-Speicher mit einer Kapazität von einigen Dutzend Terabyte, wie sie sich für mittelständische Anwender eignen, nimmt die ADMIN-Redaktion in der Ausgabe ... (mehr)

Gemeinschaftszelle

Jeder Domain kann man jetzt eines der vorhandenen Profile zuweisen. Dazu geht es via [w] und [d] zurück zum Domain Transition Editor. Das einer Domain zugewiesene Profil steht in der zweiten Spalte. Die Nullen weisen dort im Moment darauf hin, dass Tomoyo Linux auf jede Domain das Profil 0 anwendet und somit alle ihre jeweiligen Aktionen durchgehen lässt. Man könnte jetzt eine der Domains ansteuern und ihr via [s] ein anderes Profil zuweisen, etwa das für den Lernmodus. Dabei gibt es allerdings noch ein kleines Problem.

Am Domain-Namensschema kann man sehen, wie ein Prozess gestartet wurde. Dabei entstehen jedoch häufig mehrere Domains, die man dann einzeln maßregeln müsste. Paradebeispiel ist der Apache-Webserver »httpd« , für den normalerweise immer mehrere Prozesse existieren. Zudem weiß man oft nicht im Voraus, wer einen Prozess wie startet. Möchte man ein Programm immer gleich behandeln, egal unter welchen Bedingungen es gestartet wurde, wechselt man zunächst via [w] und [e] in den Policy Exception Editor. Er verwaltet alle Aktionen, die sämtliche Domains ausführen dürfen. Hier erstellt man jetzt mit [a] eine neue Regel der Form:

initialize_domain /usr/sbin/sshd from any

»/usr/sbin/sshd« steht dabei für den vollen Pfadnamen zum entsprechenden Programm, in diesem Beispiel dem SSH-Daemon. Tomoyo erstellt ab sofort nur noch eine einzige Domain, in der sich grundsätzlich alle »sshd« -Prozesse befinden. Solchen Domains stellt der Domain Transition Editor ein Sternchen »*« voran ( Abbildung 7 ). Sollte Tomoyo zuvor schon Domains für laufende »sshd« -Prozesse erstellt haben, werden diese nun überflüssig. Solche Domains kennzeichnet der Domain Transition Editor mit einem Ausrufezeichen »!« . Man kann sie getrost mit [d] löschen.

Abbildung 7: Für alle Prozesse des SSH-Daemon gibt es jetzt nur noch eine einzige Domain – nämlich die hier hervorgehobene mit dem Sternchen.

Im Beispiel würde Tomoyo also alle »sshd« -Prozesse gleichbehandeln. Mit zusätzlichen »no_initialize_domain« -Regeln kann man davon gezielt Ausnahmen erstellen:

initialize_domain /usr/sbin/sshd from any
no_initialize_domain /usr/sbin/sshd from /bin/bash

Hier würde Tomoyo einem »sshd« -Prozess dann wieder eine eigene Domain spendieren, wenn ihn die Bash gestartet hätte – und wirklich nur dann.

Apropos Bash: Startet ein Programm aus einer Shell heraus, so soll es meistens den gleichen Einschränkungen unterliegen wie die Shell. Für solche Fälle gibt es die Regel »keep_domain« :

keep_domain any from /bin/bash

Damit erstellt Tomoyo für alle in der Shell gestarteten Programme, wie »ls« oder »cat« , keine eigene Domain. Stattdessen gelten für sie alle Einschränkungen, die auch auf die Shell zutreffen. Für einzelne Programme hebt man diese Einschränkung mit »no_keep_domain« wieder auf:

no_keep_domain /bin/cat from /bin/bash

Damit erstellt Tomoyo Linux für das Programm »cat« ausnahmeweise doch wieder eine eigene Domain.

Zuckerbrot und Peitsche

Als Nächstes gilt es festzulegen, welche Aktionen einer Domain überhaupt erlaubt und welche verboten sind. Dazu markiert man im Domain Transition Editor (erreichbar via [w] und [d] ) eine Domain und drückt die Eingabetaste. Der jetzt erscheinende Domain Policy Editor zeigt alle Aktionen an, die diese Domain ausführen darf. Direkt nach dem Start sollte die Liste noch leer sein, später sieht sie wie in Abbildung 9 aus. In der ersten Spalte steht wieder die Zeilennummer, in der zweiten folgt die Aktion. »allow_read« etwa erlaubt den Lesezugriff auf die rechts danebenstehende Datei. Ab Tomoyo 2.4 tragen die Aktionen leicht geänderte Namen, »allow_read« ist dort etwa als »file read« bekannt. In den Datei- und Verzeichnisnamen sind zudem zwei Platzhalter erlaubt: »\$« steht für ein beliebiges Zeichen, »\*« für beliebig viele. Mit folgender Regel dürfte etwa »sshd« beliebige Dateien im »/tmp« -Verzeichnis anlegen:

Abbildung 9: Wie der Lernmodus enthüllt, greift der SSH-Daemon bei seinem Start unter anderem auch auf
allow_write /tmp/\*

beziehungsweise ab Tomoyo 2.4:

file write /tmp/\*

Hat man sich vertippt, löscht [d] die gerade markierte Regel. Eine Aufstellung aller möglichen Regeln beziehungsweise Schlüsselwörter liefert ein Anhang der Tomoyo-Dokumentation [6] , [7] . Um eine Domain und somit ein Programm zu maßregeln, könnte man jetzt dort nachschlagen und dann mühevoll eine Regel nach der anderen via [a] anlegen. Bequemer ist jedoch, die Domain in den Lernmodus zu versetzen und dann alle erlaubten Aktionen von Tomoyo aufzeichnen zu lassen. Dazu fährt man im Domain Transition Editor (Tastenkombination [w] , [d] ) die entsprechende Domain an, wie etwa »/usr/sbin/sshd« , und drückt dort [s] , gefolgt von der Nummer des Lernmodus-Profils. Standardmäßig ist dies die »1« .

Mit [@] wechselt man in eine Übersicht mit allen laufenden Prozessen ( Abbildung 8 ). Unter Tomoyo 2.2 muss man stattdessen per [q] den Profile Editor verlassen und dann das Kommando »tomoyo-pstree« bemühen. In jedem Fall sollte dem Prozess der Anwendung eine »1« voranstehen. Sehr wahrscheinlich sieht man zunächst nur das Ende der Liste, die Pfeiltaste nach oben fördert alle übrigen Einträge zutage. Mit [@] gelangt man wieder zur alten Darstellung zurück, unter Tomoyo 2.2 startet man erneut den Profile-Editor.

Abbildung 8: In der Ansicht aller Prozesse stellt Tomoyo den Domainnamen hinter die Prozesse. In der zweiten Spalte stehen die Profilnummern.
comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023