Samba-Server Security

Aus Thomas-Krenn-Wiki
Wechseln zu: Navigation, Suche

Dieser Artikel gibt einen Überblick über die Möglichkeiten einiger Sicherheitseinstellungen eines Samba-Servers. Bezüglich Security bestehen natürlich immer verschiedene Möglichkeiten, die teilweise zum selben Ziel führen. Dieser Artikel zeigt jene Konfigurations-Parameter, mit denen teils einfache aber wirkungsvolle Security-Maßnahmen getroffen werden können. Die Einstellungen wurden allesamt auf einem Ubuntu 10.04 LTS mit Samba Version 3.4.7 getestet.

Die aufgeführten Security-Maßnahmen sind natürlich nicht vollständig, da es ein immense Anzahl an Konfigurations-Möglichkeiten gibt. Einige gute Quellen für die Recherche bezüglich Samba-Security finden sich unter:

Netzwerkzugriff

Samba benutzt standardmäßig das "Primary Interface" für das Senden von Daten. Bei mehreren Netzwerkkarten muss Samba daher so konfiguriert werden, dass der Server auf dem richtigen Interface lauscht und Daten sendet:[1]

interfaces = 127.0.0.1, 192.168.0.252/24
bind interfaces only = yes

Die erste Zeile spezifiziert den Adressbereich, in dem der Server lauschen soll (ein loopback-Interface und die Adresse "192.168.0.252", sowie die Spezifikation, dass es sich um ein Class-C-Netzwerk handelt). Die zweite Zeile bindet den Server an die zuvor spezifizierten Interfaces.[2] Dazu ergänzend können explizit Hosts erlaubt und gesperrt werden:

hosts allow = localhost 192.168.0.
hosts deny = 192.168.0.2

Weitere Einstellungen und ausführliche Beispiele finden sich auch im Samba openbook, Abschn. 4.6 (oreilly.com) wieder.

Benutzerzugriff

  • Einen smb-User hinzufügen

Ein smb-User muss auch immer ein gültiger User am Server-System sein. D.h. um einen smb-User anlegen zu können muss zuerst ein normaler User angelegt werden. Soll der User dabei auf dem System keinen Zugang haben, sondern nur Samba nützen können, kann ein User ohne Passwort und Login-Shell erstellt werden:

sudo useradd -s /bin/false smbaccess

Hierbei wird kein Password vergeben (der User kann sich nicht anmelden) und als Login-Shell wird "/bin/false" verwendet. Der User besitzt auch kein Home-Verzeichnis. Trotz allem kann ein smb-Passwort vergeben werden:

sudo smbpasswd -a smbaccess

Danach kann der User "smbaccess" die für ihn freigegebenen Shares verwenden. Zum löschen des Benutzers kann

smbpasswd -x smbaccess

verwendet werden.

  • Deaktivierung der Gäste-Benutzerkonten

Unter dem Einsatz des Gäste-Accounts können jene Benutzer, die sich nicht authentifiziert haben, auf den Server zugreifen. Normalerweise greift Samba ohne Einstellung auf den Benutzer "nobody" zurück und bietet dazu mehrere Einstellungen, die getätigt werden können. Soll der Gast-Account komplett deaktiviert werden, muss Folgendes eingestellt werden (smb.conf, Sektion [global]):

map to guest = never

Ein fehlgeschlagener Login-Versuch mit einem nicht vorhandenen Samba-User kann aber auch zu einem Gäste-Account "gemapped" werden. Hierbei werden folgende Zeilen verwendet:

map to guest = Bad User
guest account = nobody

Mittels "Bad User" werden Login-Versuche ohne gültigem Samba-Benutzer automatisch dem Guest-Account zugeordnet. Der Parameter "guest account" gibt jenen Account an, der dafür verwendet wird. In den Abschnitten, die für die Gäste zugänglich sein sollen, wird dann der Parameter für den Gäste-Account-Zugriff eingefügt:

guest ok = yes

Genauso kann natürlich auch "guest ok = no" verwendet werden. Die im [global]-Abschnitt definierten Einstellungen kommen dann bei diesem Abschnitt zum Zug.

  • Schreibzugriffe

Schreibende Zugriffe bzw. Read-Only-Access können durch folgenden Parameter erreicht werden:

read only = yes

Für Schreibzugriffe kann

writeable = yes

eingesetzt werden. Abschließend ein zusammenhängendes Beispiel, dass den Zugriff auf ein Verzeichnis auf den Benutzer "tktest" beschränkt:

[shares]
 valid users = tktest
 path = /home/tktest/shares
 read only = yes
 guest ok = no

Die Zeile

browsable = no

verhindert des Weiteren, dass die Freigabe beim Durchsuchen der Netzwerk-Freigaben aufgelistet wird.

Dateisystem

Besondere Beachtung bei der Integration von Windows- und Linux-Clients ist die Behandlung von Dateirechten. Die unter Windows erstellten Dateien müssen entsprechend den Linux-Benutzern und den zugehörigen Rechten zugeordnet werden. Für diese Zwecke gibt es in der smb.conf einige Parameter für die Konfiguration der Rechte bei der Erstellung von Dateien (vgl. Samba openbook, Abschn. 5.3 (oreilly.com)):

create mask = 0644
directory mask = 0755

Diese beiden Zeilen legen jene Rechte fest, die Dateien und Ordner erhalten, wenn sie am Share angelegt werden. Die Zahlenwerte gleichen dabei jenen oktalen Werten, die auch beim Befehl "chmod" zum Einsatz kommen. Mit diesen standard-vergebenen Rechten kann sichergestellt werden, dass die Dateien und Ordner beim Erstellen die gewünschten Rechte erhalten.

Für die Beschränkung eines Shares auf einzelne Gruppen kann

valid users = @smbusers

eingesetzt werden. Nun können nur mehr Mitglieder der Gruppe "smbusers" auf das Share zugreifen.

Wichtig ist, dass letztendlich immer die entsprechenden Linux-Dateirechte am Server zum Zuge kommen. Das heißt, eine entsprechende Konfiguration der User-Rechte direkt am Server ist sicher die beste Sicherheitsmaßnahme, da die Dateirechte nicht von einer Samba-Konfiguration umgangen werden können.

User defined Shares

Seit Version 3.0.23 gibt es für Benutzer die Möglichkeit (auch für jene ohne Root-Rechte) eigene Shares hinzuzufügen, zu ändern und zu löschen. Dies Möglichkeit von "Usershares" kann in der smb.conf im global-Sektor aktiviert werden. Die Shares werden nicht in der smb.conf konfiguriert, sondern unter "/var/lib/samba/usershares". Alle Benutzer der Gruppe "sambashare" können ohne root-Rechte Shares anlegen, löschen und verändern.

Im global-Sektor der smb.conf werden die Parameter der Usershares festgelegt:

usershare max shares = 5
usershare allow guests = no

Mittels

net usershare add test_share /home/tktest/test_share/ "Usershare" tktest:f

kann z.B. der User "tktest" sein eigenes share ohne "sudo" (root-Rechte) anlegen. Der Parameter "tktest:f" spezifiziert dabei, dass der User "tktest" Voll-Zugriff auf das Share bekommt. Um sich Informationen zu einem Share ausgeben zu lassen, genügt folgender Befehl:

net usershare info test

Einzelnachweise

  1. SambaServerGuide (help.ubuntu.com)
  2. Samba man-Page (usl.samba.org)

Das könnte Sie auch interessieren

Alte Kernel in Ubuntu entfernen
OpenOffice Presenter Console unter Ubuntu 10.04
System-Statistiken unter Ubuntu mit serverstats sammeln