Mandatory Access Control mit Tomoyo Linux

Japanischer Sheriff

Fast jede halbwegs aktuelle Linux-Distribution enthält einen kleinen japanischen Sheriff. Er sperrt auf Wunsch jeden Prozess in ein eigenes Gefängnis, beobachtet alle seine Aktionen und hilft so nebenbei auch gleich noch beim Debugging. Im Gegensatz zu anderen Sicherheitslösungen ist seine Bedienung zudem relativ einfach.
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)

Anders als man meinen könnte, handelt es sich bei Tomoyo Linux nicht um eine komplette Linux-Distribution, sondern um ein Kernel-Modul für Linux. Es kann den laufenden Prozessen direkt auf die Finger schauen und bei Bedarf ihre Zugriffe und Aktionen einschränken (Mandatory Access Control, kurz MAC). Hinzu kommen noch ein paar Kommandozeilenwerkzeuge, mit denen der Administrator Tomoyo konfiguriert. Was ein Prozess darf und was nicht, legen Sicherheitsregeln fest, die man entweder von Hand anlegt oder Tomoyo Linux halbautomatisch in einem Lernmodus ermitteln lässt. In diesem beobachtet Tomoyo ein Programm eine Zeit lang und erlaubt dann die in diesem Zeitraum von ihm ausgeführten Aktionen – alle anderen bleiben verboten.

Bereits 2003 entwickelte die japanische NTT Data Corporation (ein Ableger des japanischen Telefongiganten Nippon Telegraph and Telephone, NTT) einen Kernel-Patch, der recht einfach Prozesse sowohl maßregeln als auch ihr Verhalten unter die Lupe nehmen konnte. Wer diese erste Version von Tomoyo nutzen wollte, musste sich folglich seinen eigenen Kernel erstellen.

Seit der Kernel-Version 2.6.0 sollen Sicherheitsmodule die dafür geschaffene, einheitliche LSM-Schnittstelle verwenden (Linux Security Modules [2] ), die auch von anderen bekannten Sicherheitssysteme wie SELinux, AppAmor und SMACK verwendet werden. Da die Integration in den offiziellen Kernel lockte, passten die Tomoyo-Entwickler ihr Modul an die LSM-Schnittstelle an. Um jedoch restlos alle Funktionen von Tomoyo-Linux portieren zu können, hätte die LSM-Schnittstelle erweitert werden müssen. Die Entwickler entschlossen sich daher zu einer für Administratoren folgenreichen wie verwirrenden Maßnahme: Sie bieten zwei Versionen von Tomoyo an, die unterschiedlich viele Funktionen enthalten. Die erste Tomoyo-Version ist weiterhin erhältlich und bietet den gesamten Funktionsumfang. Zum Redaktionsschluss aktuell war die Version 1.8.3, die mit allen Kerneln ab Version 2.4 arbeitet.

Fortschritt mit Verlust

Die zweite Version von Tomoyo ist bereits Bestandteil aller Linux-Kernel ab Version 2.6.30 und nutzt die LSM-Schnittstelle. Als Preis dafür bietet sie nicht alle Funktionen der Tomoyo-Version 1. Vor allem fehlen ihr einige MAC-Möglichkeiten: Beispielsweise kann sie nicht den dynamischen Linker ( »ld« ) kontrollieren. Doch es kommt noch schlimmer: Die unterschiedlichen Linux-Kernel enthalten verschiedene Tomoyo-Versionen, die teilweise unterschiedlich einzurichten und zu steuern sind. Tabelle 1 fasst zusammen, welche Tomoyo-Versionen in welchen Kerneln schlummern.

Tabelle 1

Derzeit erhältliche Tomoyo-Versionen

Tomoyo-Linux-Version

Kernel-Version

Enthalten unter anderem in

1.8.x

2.4.37, 2.6.27 bis 2.6.39 und 3.0

2.2.x.

2.6.30 bis 2.6.35

Debian 6 (Squeeze)

2.3.x.

2.6.36 bis 3.0

Ubuntu 11.10

2.4.x.

3.1.

Open Suse 12.1

2.5.x.

3.2. und später

Ubuntu 12.04 (Beta 2)

Die größten Leistungsunterschiede im Vergleich zur Version 1.x weisen die Tomoyo-Versionen 2.2.x und 2.3.x auf, in der aktuellen Version 2.5 fehlen nur noch wenige Funktionen. Dummerweise ist die Version 2.5 erst in Linux-Kernel 3.2 enthalten, der wiederum nur in wenigen Distributionen anzutreffen ist. Wer es ganz genau wissen will, findet eine ausführliche Gegenüberstellung der einzelnen Tomoyo-Versionen und ihrer Funktionen unter [3] . Die Version 1.8.x bieten die Tomoyo-Entwickler für einige ausgewählte Distributionen als fertige Pakete an, darunter Fedora, Open Suse, Debian, Ubuntu (sogar ab Version 8.04) und RHEL beziehungsweise CentOS. Die Pakete gibt es allerdings durchweg nur für eine 32-Bit-Standard-Installation, die Pakete für Fedora 16 und RHEL 6.2 setzen hingegen ein 64-Bit-System voraus. Darüber hinaus ersetzen die Pakete den kompletten Kernel. Bei Sicherheitsaktualisierungen ist man folglich auf das Tomoyo-Projekt angewiesen – oder man erstellt doch wieder seinen eigenen Kernel. Wer erst einmal testen möchte, ob Tomoyo Linux 1.8.x diesen Aufwand wert ist, kann das mit einer vom Projekt bereitgestellten LiveCD tun. Unter [4] warten jeweils ein entsprechend präpariertes Ubuntu 10.04, CentOS 5.8 und CentOS 6.2.

Scharfmacher

Bei einem Produktivsystem ist es normalerweise die bessere Lösung, das schon im Kernel eingebaute Tomoyo Linux zu verwenden. So ist diese Variante nicht nur wesentlich leichter in Betrieb zu nehmen, die Distributoren übernehmen auch die Wartung. Ob der eigene Kernel Tomoyo Linux mitbringt, ermittelt man schnell mit einem der Befehle aus Tabelle 2 . Wenn Tomoyo im Kernel vorhanden ist, gibt er eine mehr oder weniger kryptische Zeichenkette, ein »T« und dann einen Begriff mit »tomoyo« aus (wie in Abbildung 1 ). Andernfalls bleibt die Konsole stumm.

Abbildung 1: Schon zwei kleine Befehle reichen aus, um zu prüfen, ob Tomoyo im Kernel vorhanden ist und ob es beim Systemstart aktiviert wurde.

Ein Sonderfall ist das aktuelle CentOS 6.2. Es enthält noch den Kernel 2.6.32, für das eigentlich keine der Tomoyo-Versionen aus der 2.x-Reihe vorgesehen ist (siehe Tabelle 1 ). Hier bleibt nur die angesprochene LiveCD zu nutzen oder mithilfe des vom Tomoyo-Projekt bereitgestellten RPM-Pakets den Kernel auszutauschen.

Tabelle 2

Test auf aktiviertes Tomoyo Linux

Tomoyo-Version

Befehl

Antwort bei aktiviertem Tomoyo

2.2.

grep tomoyo_io_printf /proc/kallsyms

ffffffff812765f0 T tomoyo_io_printf

2.3.

grep tomoyo_supervisor /proc/kallsyms

ffffffff812765f0 T tomoyo_supervisor

2.4.

grep tomoyo_poll_log /proc/kallsyms

ffffffff812765f0 T tomoyo_poll_log

2.5.

grep tomoyo_write_inet_network /proc/kallsyms

ffffffff812765f0 T tomoyo_write_inet_network

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