Bundesamt für Sicherheit in der Informationstechnik

M 4.332 Sichere Konfiguration der Zugriffssteuerung bei einem Samba-Server

Verantwortlich für Initiierung: IT-Sicherheitsbeauftragter, Leiter IT

Verantwortlich für Umsetzung: Administrator

Samba überlässt die Zugriffskontrolle im Dateisystem dem Kernel des Betriebssystems. Aus diesem Grund müssen für jeden Benutzer auf dem Samba-Server sowohl ein Windows- als auch ein Unix-Benutzerkonto vorhanden sein. Das heißt, dass jeder Domänenbenutzer mit allen Gruppenmitgliedschaften im Unix-Betriebssystem existieren muss.

Die Komplexität der Zugriffssteuerung beim Einsatz von Samba hat zwei Gründe. Samba kann erstens das Windows-Rechtemodell nicht direkt auf das von Unix abbilden und zweitens wertet Samba bei einem Zugriff auf das Dateisystem folgende Schichten aus:

  • Unix-Dateiberechtigungen
  • Samba Share Definitions
  • Samba Share Access Control Lists (ACLs)

Unix-Dateiberechtigungen

Wenn ein Benutzer auf eine Freigabe eines Samba-Servers zugreifen will, muss sich der Benutzer zuerst am Samba-Dienst anmelden. Samba prüft anschließend, ob der angemeldete Benutzer im Unix-Dateisystem die nötigen Rechte für den Zugriff besitzt.

Samba bildet das Windows-Rechtemodell folgendermaßen im Unix-Dateisystem ab: Aus dem Standard Unix-Triplet "Benutzer" / "Gruppe" / "Andere Benutzer" ("user" / "group" / "others") wird eine NT ACL mit drei Elementen gebildet. Die Unix-Rechtebits werden dabei nach der folgenden Tabelle auf die NT-Berechtigungen abgebildet. Die Rechtebits für "Andere Benutzer" werden von Samba auf die Gruppe "Jeder" abgebildet. ACL-Einträge, die einem Benutzer bestimmte NT-Berechtigungen verweigern, können nicht gesetzt werden.

NT Berechtigung File Attribute Flag
Vollzugriff #
Ordner durchsuchen / Datei ausführen x
Ordner auflisten / Daten lesen r
Attribute lesen r
Erweiterte Attribute lesen r
Dateien erstellen / Daten schreiben w
Ordner erstellen / Daten anhängen w
Attribute schreiben w
Erweiterte Attribute schreiben w
Unterordner und Dateien löschen w
Löschen #
Berechtigungen lesen siehe Text
Berechtigungen ändern #
Besitzrechte übernehmen #

Tabelle: Abbildung des Rechtemodells auf Unix-Dateisysteme

Das Zeichen "#" bedeutet, dass diese Berechtigung nur unter zwei Bedingungen für eine Datei oder ein Verzeichnis gesetzt wird. Entweder, wenn ein Windows-Administrator die Berechtigung "Vollzugriff" aktiviert, oder wenn der Benutzer oder dessen Gruppe im Unix-Dateisystem über die Berechtigungen für "lesen", "schreiben" und "ausführen" für diese Datei verfügen. Die NT Berechtigung "Berechtigungen lesen" wird einem Benutzer immer erlaubt, sobald diesem Benutzer mindestens eine weitere NT Berechtigung eingeräumt wird.

Wenn Windows NT4 Berechtigungen setzt, die nicht in dieser Tabelle aufgeführt sind, werden diese von Samba ignoriert. Eventuell vorhandene Portable Operating System Interface (POSIX) ACL-Einträge werden in derselben Art und Weise von Samba auf das NT-Rechtemodell umgesetzt. POSIX ACLs werden von Samba nur benutzt, um Berechtigungen für Benutzer und Gruppen zu setzen, wenn diese nicht die Besitzer der Datei oder des Verzeichnisses sind.

Samba kennt mehrere Möglichkeiten, um DOS -Attribute abzubilden. Diese Attribute sind Eigenschaften von Dateien, die es in dieser Form unter Unix nicht gibt. Viele Applikationen, die auf ein Netzlaufwerk zugreifen, setzen jedoch funktionierende DOS-Attribute voraus. Insgesamt kennt DOS vier verschiedene Attribute, die für Dateien vergeben werden können:

  • Read-Only (Schreibschutz):
    Der Inhalt dieser Datei kann nur gelesen, aber nicht geschrieben werden. Die Datei kann nicht gelöscht werden. Da unter DOS die DOS-Attribute aber von jedem Benutzer frei gesetzt werden können, setzt dieses Attribut keinen effektiven Schreibschutz um. Das Schreibschutzbit ist nur als Hilfestellung gegen Fehlbedienungen zu verstehen.
  • System (System):
    Diese Datei ist für spezielle Betriebssystemzwecke vorgesehen.
  • Hidden (Versteckt):
    Diese Datei wird dem Benutzer nicht angezeigt (beispielsweise wenn er den Windows Explorer oder den Befehl "dir" auf der Kommandozeile benutzt.).
  • Archive (Archiv):
    Das Archivbit wird bei jedem Schreibzugriff gesetzt. Sicherungsprogrammen ist es freigestellt, dieses Bit zurückzusetzen. Damit kann eine inkrementelle Sicherung ermöglicht werden.

Samba bildet DOS-Attribute standardmäßig auf Unix-Bits ab:

Attribut
Unix-Recht
Maske
Parameter
Standardwert
Schreibschutz w Besitzer 200 map read only yes
Archiv x Besitzer 100 map archive yes
System x Gruppe 010 map system no
Versteckt x Andere 001 map hidden no

Tabelle: Abbildung der DOS-Attribute auf Unix-Dateisysteme

Da das Recht "Ausführen" unter DOS nicht existiert, kann das entsprechende Bit verwendet werden, um die DOS-Attribute im Unix-Dateisystem abzubilden. Das Schreibschutzbit unter DOS hat mit dem Schreibrecht des Dateibesitzers unter Unix ein ungefähr passendes Gegenstück.

Samba muss für den Eigenschafts-Dialog von Windows aus den Unix-Rechten die passenden Attribute für die Dateien erzeugen. Zudem muss Samba neu erstellten Dateien Unix-Rechte zuordnen. Wird eine Datei neu erstellt, übergibt der Client dem Server die gewünschten DOS-Attribute. Aus diesem Wunsch des Clients formt Samba einen Satz von Unix-Zugriffsrechten. Diese Rechte werden vom Parameter "create mask" eingeschränkt. Die Standardvorgabe für "create mask" ist 744, was der Maske rwxr--r-- entspricht. Der Dateieigentümer hat Schreib- und Leserecht, alle anderen haben reines Leserecht.

Samba schränkt die Rechte ein, indem der gewünschte Satz an Rechten mit einer logischen UND-Operation mit der create mask verknüpft wird. Nur die Rechte, die in "create mask" gesetzt sind, können möglicherweise in der neu erzeugten Datei auftauchen. In einem weiteren Schritt setzt Samba explizit gewünschte Zugriffsrechte anhand des Parameters "force create mode", dessen Standardwert auf 000 steht. Dies geschieht durch eine ODER-Verknüpfung mit diesem Wert.

Wenn auf neu erstellte Dateien nur der Dateibesitzer und die Gruppe Leserecht haben sollen und der Rest der die Dateien nicht lesen darf, wird die create mask = 740 gesetzt. Das maskiert das Leserecht für den Rest der Welt aus. Soll darüber hinaus die besitzende Gruppe ein Schreibrecht eingeräumt bekommen, lässt sich das durch "force create mode = 020" erreichen. Die Tabelle zeigt den Vorgang:

Gruppe erhält Schreibrecht      
Aufgabenstellung     rw-r--r--
create mask 740 UND rw-r-----
      rw-r-----
force create mode 020 ODER ----w----
Ergebnis     rw-rw----

Bei "map read only = yes" in der smb.conf verhält sich Samba folgendermaßen: Wird das DOS-Attribut "Schreibschutz" gesetzt, so setzt Samba die "w"-Bits von Besitzer / Gruppe / Andere des Dateisystemobjekts auf "0". Die "w"-Bits in ACLs werden von Samba ignoriert. Wird hingegen das DOS-Attribut "Schreibschutz" entfernt, so setzt Samba lediglich das "w"-Bit des Besitzers des Dateisystemobjekts auf "1". Die "w"-Bits für Gruppe / Andere bleiben auf "0". Außerdem gibt es noch den Parameter "map read only = Permissions". Informationen zu diesem Parameter sind in der Manpage von smb.conf zu finden.

Zu beachten ist, dass die Samba Parameter "create mask" und "directory mask" das Setzen der Unix-Rechtebits verhindern können und die DOS-Attribute somit nicht übernommen werden. Die Spalte "Maske" gibt die mindestens notwendigen Werte für die Parameter "create mask" und "directory mask" an, die nötig sind, damit Samba alle nötigen Unix-Rechtebits setzen kann.

Unter bestimmten Bedingungen kann es zu Konflikten zwischen den Unix-Berechtigungen, die sich aus den DOS-Attributen ableiten und Unix-Berechtigungen, die sich aus einer Windows-ACL ableiten, kommen.

Diese von Samba standardmäßig verwendeten Parameter zum Abbilden von DOS-Attributen auf das Unix-Dateisystem sollten nicht verwendet werden. Stattdessen sollte Samba so konfiguriert werden, dass es DOS-Attribute in "Extended Attributes" speichert. Dazu sind in der Konfigurationsdatei smb.conf folgende Einstellungen notwendig:

store dos attributes = yes
map archive = no
map read only = no

Samba Share Definitions

Der Administrator kann durch eine Vielzahl von Konfigurationsparametern in der Konfigurationsdatei smb.conf die Zugriffssteuerung auf Freigaben und das Verhalten, wann Benutzer mit der Freigabe interagieren, beeinflussen.

Die benutzer- und gruppenbezogenen Konfigurationsparameter überschreiben die im Unix-Dateisystem gültigen Zugriffsberechtigungen für Benutzer oder Gruppen. Folgende Konfigurationsparameter stehen zur Verfügung:

  • admin users
  • force group
  • force user
  • guest ok
  • invalid users
  • only user
  • read list
  • username
  • valid users
  • write list

Die folgenden Konfigurationsparameter kontrollieren das Verhalten von Freigaben bei Operationen mit Dateien und Ordnern. Bevor einer dieser Parameter geändert wird, sollte die Manpage der Konfigurationsdatei smb.conf betrachtet werden:

  • create mask
  • directory mask
  • dos filemode
  • force create mode
  • force directory mode
  • force directory security mode
  • force security mode
  • hide unreadable
  • hide unwriteable files
  • nt acl support
  • security mask

Des Weiteren gibt es noch diverse Einstellungen, die das Verhalten von Freigaben in unterschiedlicher Weise beeinflussen. Bevor einer dieser Parameter geändert wird, sollte die Manpage der Konfigurationsdatei smb.conf berücksichtigt werden:

  • case sensitive, default case und short preserve case
  • csc policy
  • dont descend
  • dos filetime resolution
  • dos filetimes
  • fake oplocks
  • hide dot files, hide files und veto files
  • read only und dessen invertierte Synonyme writeable und writable
  • veto files

Für eine ausführliche Beschreibung aller Konfigurationsparameter sei auf die Manpage der Konfigurationsdatei smb.conf verwiesen ("man smb.conf").

Samba Share ACLs

Mit Samba kann, genauso wie mit Windows, für jede Freigabe eine ACL erstellt werden. Standardmäßig sind keine Einschränkungen aktiv. Das bedeutet, der Benutzer "Jeder" hat die Berechtigung "volle Kontrolle".

Samba speichert die ACLs für Freigaben in der Datei share_info.tdb. Samba stellt aber kein Programm zum Administrieren dieser ACLs zur Verfügung. Der Administrator ist daher auf Windows angewiesen. Unter Windows bieten sich dem Administrator folgende Möglichkeiten:

  • Unter Windows NT4 kann der NT Server Manager zum Administrieren der ACLs der Freigaben eingesetzt werden.
  • Unter Windows 2000 gibt es zwei Möglichkeiten. Es kann der Windows Dateimanager oder das Computer Management Snap-In für die Microsoft Management Console (MMC) benutzt werden.
    • Im geöffneten Dateimanager von Windows muss folgendermaßen vorgegangen werden: Rechtsklick auf den freigegebenen Ordner. Eigenschaften | Sicherheit. In diesem Fenster können die ACL-Einträge der Freigabe administriert werden.
    • Um das Computer Management Snap-In für die MMC zu benutzen muss folgendermaßen vorgegangen werden: Zuerst wird die MMC mit dem Computer Management Snap-In geladen: Systemsteuerung / Verwaltung / Computerverwaltung. Danach Aktion | Verbindung mit anderem Computer herstellen. Hostname des Samba-Servers eingeben. Damit eine Verbindung mit dem Computer aufgenommen werden kann, benötigt der Benutzer administrative Privilegien in der Domäne. Nachdem zum Samba-Server erfolgreich eine Verbindung hergestellt wurde, können folgende Schritte vollzogen werden: Auswählen von System | Freigegebene Ordner | Freigaben. Anschließend im rechten Fenster - Rechtsklick auf die Freigabe die administriert werden soll | auswählen der Registerkarte "Sicherheit" - In diesem Fenster kann die ACL der Freigabe administriert werden.

Werden dem Benutzer "Jeder" sämtliche Rechte entzogen, ohne ihn aus der ACL der Freigabe komplett zu löschen, so hat kein Benutzer mehr Zugriff auf die Freigabe. Der Grund hierfür ist, dass ACL-Einträge, die die Rechte eines Benutzers verringern, Vorrang haben vor ACL-Einträgen, die die Rechte eines Benutzers ausweiten.

Prüffragen:

  • Werden zur Abbildung der DOS -Attribute im Unix-Dateisystem Extended Attributes verwendet?

  • Sind die Administratoren damit vertraut, wie Samba das Windows-Rechtemodell im Unix-Dateisystem abbildet?

  • Wissen die Administratoren, wie die Unix-Rechte für neu erstellte Dateien zu Stande kommen?

  • Ist den Administratoren klar, wie sich das Entfernen des DOS -Attibuts "Schreibschutz" auf die UNIX-Rechte auswirkt?

  • Wissen die Administratoren, dass die benutzer- und gruppenbezogenen Konfigurationsparameter die im Unix-Dateisystem gültigen Zugriffsberechtigungen für Benutzer oder Gruppen überschreiben?

Stand: 11. EL Stand 2009