10.11. Vorgeschriebene Zugriffskontrolle (MAC)

Gefördert von DARPA und Network Associates Laboratories. Beigetragen von Robert Watson.

In FreeBSD 5.0 wurde ein neues kernelbasiertes Sicherheitssystem eingeführt: das TrustedBSD-MAC-Framework. Das MAC-Framework erlaubt die Erweiterung der Zugriffskontrollen des Kernels beim Übersetzen, beim Systemstart und zur Laufzeit. Damit lassen sich Module laden, die vorgeschriebene Zugriffskontrollen (Mandatory Access Control, MAC) bereitstellen, oder angepasste Module laden, die zur Systemhärtung eingesetzt werden können. Das MAC-Framework befindet sich noch im Teststadium und sollte daher erst nach sorgfältigen Überlegungen auf produktiven Systemen eingesetzt werden. Voraussichtlich wird das MAC-Framework ab FreeBSD 5.2 produktionsreif sein.

Wenn das MAC-Framework im Kernel aktiviert ist, können Sicherheitsmodule die Zugriffskontrollen des Kernels erweitern und damit Zugriffe auf Systemdienste oder Systemobjekte einschränken. Beispielsweise erweitert das mac_bsdextended(4)-Modul die Zugriffskontrollen auf Dateisysteme und erlaubt es, Regelsätze, wie sie analog in Firewalls verwendet werden, aufzustellen, die Zugriffe auf Dateisystemobjekte anhand der Benutzer-ID und der Zugehörigkeit zu Gruppen regeln. Einige Module, wie das mac_seeotheruids(4)-Modul, müssen gar nicht oder nur minimal konfiguriert werden, andere Module, wie das mac_biba(4)-Modul oder das mac_mls(4)-Modul, sind aufwändig zu konfigurieren, da sie Objekte systemweit kennzeichnen.

Fügen Sie die nachstehende Zeile der Kernelkonfiguration hinzu, um das MAC-Framework zu aktivieren:

    options MAC

Die Sicherheitsmodule des Basissystems können Sie mit kldload(8) oder während des Systemstarts mit loader(8) laden oder mit den nachstehenden Optionen fest in den Kernel einbinden.

Die Zugriffsrichtlinien (policy) der Module werden unterschiedlich konfiguriert. Oft lässt sich ein Modul über den Namensraum security.mac der sysctl(8)-MIB konfigurieren. Richtlinien, die vom Dateisystem oder bestimmten Kennzeichen abhängen, erfordern vielleicht eine initiale Konfiguration, in der Systemobjekten Kennzeichen zugeordnet werden müssen oder eine Konfigurationsdatei für die Richtlinie erstellt werden muss. Die erforderlichen Schritte werden in den Hilfeseiten des betreffenden Moduls beschrieben.

Zur Konfiguration des MAC-Frameworks und der Kennzeichen, die von verschiedenen Richtlinien verwendet werden, stehen eine Reihe von Werkzeugen zur Verfügung. Das Anmeldeverfahren und die Verwaltung von Berechtigungsnachweisen ( setusercontext(3)) wurden erweitert, so dass Kennzeichen für Benutzerkonten mit login.conf(5) eingerichtet werden können. Um Kennzeichen auf Prozessen, Dateien und Adaptern lesen und schreiben zu können, wurden su(1), ps(1), ls(1) und ifconfig(8) geändert. Zur Verwaltung der Kennzeichen wurden neue Werkzeuge eingeführt, beispielsweise getfmac(8), setfmac(8) und setfsmac(8) zur Verwaltung von Dateikennzeichen oder getpmac(8) und setpmac(8).

Die folgende Aufstellung beschreibt alle mit FreeBSD 5.0 ausgelieferten Sicherheitsmodule.

10.11.1. Biba-Richtlinie zur Sicherung der Integrität (mac_biba)

Hersteller: TrustedBSD Project

Modulname: mac_biba.ko

Kerneloption: MAC_BIBA

Die Biba-Richtlinie (Biba Integrity Policy, mac_biba(4)) kennzeichnet die Integrität aller Systemobjekte (die Kennzeichnung kann hierarchisch oder nicht-hierarchisch erfolgen) und erzwingt einen Informationsfluß, der verhindert, dass Objekte mit hoher Integrität von Subjekten mit niedriger Integrität verändert werden. Die Integrität der Objekte wird dadurch sichergestellt, dass Subjekte mit hoher Integrität (üblicherweise Prozesse) nicht lesend auf Objekte niedrigerer Integrität (häufig Dateien) zugreifen dürfen und Subjekte niedrigerer Integrität nicht schreibend auf Objekte höherer Integrität zugreifen dürfen. Diese Richtlinie dient häufig zum Schutz der Trusted Code Base in kommerziellen Sicherheitssystemen. Da die Biba-Richtlinie systemweite Kennzeichen zur Verfügung stellt, muss Sie fest in den Kernel integriert sein oder zum Zeitpunkt des Systemstarts geladen werden.

10.11.2. Dateisystem-Richtlinie (mac_bsdextended)

Hersteller: TrustedBSD Project

Modulname: mac_bsdextended.ko

Kerneloption: MAC_BSDEXTENDED

Die Dateisystem-Richtlinie (File System Firewall Policy, mac_bsdextended(4)) erweitert die Zugriffsrechte des BSD-Dateisystems. Ein Administrator kann für Zugriffe auf Dateisystemobjekte anderer Benutzer und Gruppen Regelsätze, analog den von Firewalls verwendeten, definieren. Die Regelsätze, die mit ugidfw(8) verwaltet werden, beschränken den Zugriff auf Dateien und Verzeichnisse aufgrund der UID und der GID des zugreifenden Prozesses sowie dem Besitzer und der Gruppe des Objekts auf das zugegriffen werden soll. Da alle Regeln die möglichen Zugriffe beschränken, können sie in beliebiger Reihenfolge angelegt werden. Diese Richtlinie erfordert keine gesonderte Konfiguration oder die Vergabe von Kennzeichen und mag für Mehrbenutzer-Umgebungen geeignet sein, in denen vorgeschriebene Zugriffskontrollen für den Datenaustausch zwischen Benutzern erforderlich sind. Seien Sie vorsichtig, wenn Sie die Zugriffe auf Dateien von root oder anderen System-Accounts einschränken. Viele nützliche Programme und Verzeichnisse gehören diesen Benutzern und die falsche Anwendung der Dateisystem-Richtlinie kann, wie ein falscher Regelsatz einer Firewall, das System unbrauchbar machen. Mithilfe der Bibliothek libugidfw(3) können leicht neue Werkzeuge zur Verwaltung der Regelsätze geschrieben werden.

10.11.3. Interface-silencing-Richtlinie (mac_ifoff)

Hersteller: TrustedBSD Project

Modulname: mac_ifoff.ko

Kerneloption: MAC_IFOFF

Die Interface-silencing-Richtlinie ( mac_ifoff(4)) verhindert, das die Netzwerkkarte vom Systemstart an bis zu dem Zeitpunkt, an dem sie explizit aktiviert wird, benutzt werden kann. Damit verhindert die Richtlinie ungewollte Antworten auf eingehende Pakete. Diese Richtlinie eignet sich für Umgebungen, in denen der Netzverkehr passiv, das heißt ohne eigene Pakete zu erzeugen, beobachtet werden soll.

10.11.4. Low-Watermark Mandatory Access Control (mac_lomac)

Hersteller: Network Associates Laboratories

Modulname: mac_lomac.ko

Kerneloption: MAC_LOMAC

Wie die Biba-Richtlinie kennzeichnet die LOMAC-Richtlinie ( mac_lomac(4)) systemweit die Integrität aller Objekte. Im Gegensatz zur Biba-Richtlinie können allerdings Subjekte hoher Integrität lesend auf Objekte niedrigerer Integrität zugreifen. In diesem Fall wird aber die Integrität des lesenden Subjekts heruntergesetzt, damit dieses nicht mehr schreibend auf Objekte mit hoher Integrität zugreifen kann. Diese Richtlinie ist leichter als die Biba-Richtlinie zu benutzen und zu konfigurieren. Da sie allerdings systemweit die Objekte kennzeichnet, muss sie, wie die Biba-Richtlinie, fest in den Kernel eingebunden sein oder beim Systemstart geladen werden.

10.11.5. Multi-Level-Security Richtlinie (mac_mls)

Hersteller: TrustedBSD Project

Modulname: mac_mls.ko

Kerneloption: MAC_MLS

Die Multi-Level-Security Richtlinie (MLS, mac_mls(4)) stellt systemweit hierarchische und nicht-hierarchische Kennzeichen zur Markierung der Vertraulichkeit von Objekten zur Verfügung. Die Richtlinie stellt einen Informationsfluß sicher, der garantiert, dass vertrauliche Daten nicht unberechtigt weitergeleitet werden. Die MLS-Richtlinie wird häufig zusammen mit der Biba-Richtlinie in sicheren kommerziellen Mehrbenutzerumgebungen verwendet. Mit hierarchischen Kennzeichen können Zugangsberechtigungen zu Verschlusssachen (Einteilung in ``streng geheim'', ``geheim'', usw.) abgebildet werden. Nicht-hierarchische Kennzeichen dienen zur Verwirklichung des Prinzips ``Kenntnis nur, wenn nötig'' (need to know). Alle Systemobjekte müssen wie bei der Biba-Richtlinie vorher gekennzeichnet werden, so dass die Richtlinie fest in den Kernel eingebunden werden muss oder beim Systemstart als Modul geladen werden muss. Der Konfigurationsaufwand der MLS-Richtlinie kann analog zur Biba-Richtlinie sehr hoch sein.

10.11.6. Rumpf-Richtlinie (mac_none)

Hersteller: TrustedBSD Project

Modulname: mac_none.ko

Kerneloption: MAC_NONE

Die Rumpf-Richtlinie (MAC Stub Policy, mac_none(4)) ist als Beispiel für Entwickler gedacht. Sie stellt alle benötigten Funktionen zur Verfügung, ohne die Zugriffsrechte im System zu verändern. Auf einem Produktionssystem ist die Anwendung dieser Richtlinie nicht sehr sinnvoll.

10.11.7. Partitions-Richtlinie (mac_partition)

Hersteller: TrustedBSD Project

Modulname: mac_partition.ko

Kerneloption: MAC_PARTITION

Die Partitions-Richtlinie (Process Partition Policy, mac_partition(4)) schränkt die Sichtbarkeit von Prozessen ein, indem Prozessen Partitionsnummern zugewiesen werden. Besitzt ein Prozess keine Partitionsnummer, so kann er alle Prozesse auf dem System sehen, besitzt er hingegen eine Partitionsnummer, so kann er nur Prozesse in derselben Partition sehen. Die Richtlinie kann fest in den Kernel eingebunden werden, beim Systemstart oder zur Laufzeit geladen werden.

10.11.8. See Other Uids (mac_seeotheruids)

Hersteller: TrustedBSD Project

Modulname: mac_seeotheruids.ko

Kerneloption: MAC_SEEOTHERUIDS

Die Richtlinie See Other Uids ( mac_seeotheruids(4)) schränkt wie mac_partition(4) die Sichtbarkeit von Prozessen ein. Allerdings wird die Sichtbarkeit anderer Prozesse von den Berechtigungen eines Prozesses anstelle einer Partitionsnummer bestimmt. Die Richtlinie kann so konfiguriert werden, dass sie für bestimmte Accounts oder Gruppen nicht gilt, so dass beispielsweise Systemverwalter alle Prozesse sehen können. Die Richtlinie kann fest in den Kernel eingebunden werden, beim Systemstart oder zur Laufzeit geladen werden.

10.11.9. Test-Richtlinie (mac_test)

Hersteller: TrustedBSD Project

Modulname: mac_test.ko

Kerneloption: MAC_TEST

Die Test-Richtlinie (MAC Framework Test Policy, mac_test(4)) stellt einen Regressions-Test für das MAC-Framework bereit. Die Richtlinie führt zu einem Systemstopp für den Fall, dass interne Prüfungen auf korrekte Kennzeichen fehlschlagen. Sie kann fest in den Kernel eingebunden werden, beim Systemstart oder zur Laufzeit geladen werden.

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine EMail an <de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine Email an <de-bsd-translators@de.FreeBSD.org>.