Open Source im professionellen Einsatz

Benutzerverwaltung und Authentifizierung unter Samba

Einlasskontrolle

Samba bietet ein fein abgestuftes System der Zugangskontrolle. Die Vielfalt macht dem Administrator das Auswählen schwer. Das Linux-Magazin zeigt, was wirklich wichtig ist, um den Zugang für Windows- Benutzer einzurichten und Benutzerkonten zu verwalten.

Niemand zeigt gern seine Karten, bevor er sie ausgespielt hat. Für die Datenhaltung auf einem Server heißt das: Jeder Benutzer soll genau das lesen und verändern können, was ihn angeht, und vor ungewollten Blicken und Eingriffen anderer geschützt sein. Der Samba-Server hält dazu eine ganze Reihe von Möglichkeiten bereit, die über Einstellungen in der »/etc/smb.conf« beeinflussbar sind. Zentrale Konfigurationsdirektive ist:

security = Sicherheitsstufe

Sie bestimmt den Security Level, also das grundsätzliche Verfahren für die Absicherung von Ressourcen auf dem Server und die Art, in der sich ein Benutzer authentifizieren muss, der eine solche Ressource nutzen möchte. Der Kasten "Security Levels" gibt eine Übersicht über die zur Zeit implementierten vier Sicherheitsstufen.

Security Levels in Samba 2

»SHARE« ist die seit WfW 3.11 bekannte Verwaltung von Shares (gemeinsam genutzten Verzeichnissen und Druckwarteschlangen auf dem Server). Jeder unter Linux vorhandene Benutzer, der auf eine Samba-Ressource zugreift, erhält diesen Zugang, sobald er in der Benutzerliste dieser Ressource vermerkt ist und das Passwort weiß.

»USER« ist ab Samba 2.0 die Standardeinstellung. Der Benutzer authentisiert sich einmal beim Verbindungsaufbau und hat dann Zugriff auf alle Shares des SMB-Servers im Rahmen seiner Linux-Rechte.

»SERVER« weist bezüglich Ressourcen-Zugriff keinen Unterschied zu »USER« auf. Jedoch erfolgt die Identitätsprüfung nicht gegen die »/etc/passwd« des Samba-Servers selbst, sondern auf einem gesonderten Passwort-Server, der ein NT-Domänen-Controller sein kann, aber nicht muss. Vorteil ist die zentrale Verwaltung der Benutzerdatenbank.

»DOMAIN« wirkt wie »SERVER«, nur dass hier der primäre oder ein Backup-Domain-Controller der Windows-NT-Domain als Passwort-Server dient. Seit Version 2.2.3 ist Samba in der Lage, auch diese Funktion zu übernehmen. Nach erfolgter Anmeldung hat der Benutzer Zugriff auf alle Ressourcen innerhalb der Domain, für die seinem Account Rechte eingeräumt wurden.

Sicherheit auf Share- oder Benutzer-Ebene

Die einfachste Art, Ressourcen für Benutzer freizugeben, erreicht man mit der Einstellung:

security = SHARE

Diese Stufe bietet einen minimalen Schutz gegen unbefugtes Lesen und Schreiben in gemeinsam genutzten Verzeichnissen und ist leicht einzurichten. Andererseits erhält jeder Benutzer, der irgendein Passwort für das Share kennt, zumindest lesenden Zugriff. Diese Einstellung hat ihre Berechtigung daher heute nur noch auf reinen CD-ROM- und Printservern oder in ganz und gar freundlichen Umgebungen, insbesondere im Zusammenhang mit der Benutzung von Gastzugängen (»smb.conf«-Direktiven »guest account«, »guest ok«, »guest only«). Etwas anspruchsvoller gestaltet sich die Benutzerverwaltung mit:

security = USER

Hierbei identifiziert sich der Benutzer einmalig durch eine förmliche Anmeldung mit Benutzername und Passwort. Letzteres kann auch verschlüsselt übermittelt werden. Ist der Benutzer am Server angemeldet, darf er alle für diesen Benutzer freigegebenen Shares auf dem Server im Rahmen seiner Linux-Benutzerrechte lesen und verändern.

Unter Umständen kann es sinnvoll sein, Nutzerkennung und Passwort des Linux-Systems aus »/etc/passwd« und »/etc/shadow« direkt für Samba zu nutzen. Um sich damit zu authentifizieren, muss jedoch das Passwort im Klartext an den Server übertragen werden. Der benutzt die »crypt()«-Funktion zum Vergleich mit »/etc/shadow«. Das bei Samba eingesetzte Challenge-Response-Verfahren zur Authentifizierung ist nicht anwendbar, da das Passwort dabei nicht übertragen wird.

Passwortverschlüsselung

Für die Arbeit mit verschlüsselten Passwörtern sind neben »security = user« zwei weitere Konfigurationsdirektiven zuständig:

encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd

Die Passwortdatei braucht nicht unbedingt angegeben zu werden, wenn man den Standardpfad und -namen verwendet, der für den Samba-Server bei der Kompilation eingestellt wurde. Auf jeden Fall sollte die Datei aber nur für Root les- und beschreibbar sein. Sie enthält die verschlüsselten Windows-Passwörter in jeweils einer Variante für Windows 9x sowie für NT und Nachfolger. Außerdem ist hier die Benutzer-ID des Unix-Accounts abgelegt, unter dessen Berechtigungen die Zugriffe des eingeloggten Samba-Benutzers stattfinden.

Zur Pflege der Passwortdatei dient das Kommando »smbpasswd«. Der Aufruf

# smbpasswd -a wichtel

legt einen Samba-Account für den Benutzer »wichtel« an, sofern bereits ein gleichnamiges Linux-Konto existiert. Aus Sicherheitsgründen sollte ein anderes Passwort gewählt werden als das für den Linux-Account, falls der Benutzer überhaupt die Möglichkeit eines interaktiven Logins erhält. Ansonsten lässt sich auch mit

#  passwd -l wichtel

der Linux-Account abschalten. Änderungen des Samba-Passworts bewerkstelligt der Administrator durch:

#  smbpasswd wichtel

Der Benutzer »wichtel« selbst ruft dazu lediglich

>  smbpasswd

auf. Gelöscht wird der Account durch das Kommando:

#  smbpasswd -x wichtel

Wer sich nicht mit dem »smbpasswd«-Kommando anfreunden kann, hat die Möglichkeit, die Datei »smbpasswd« über das Web-Interface Swat zu verwalten (Abbildung 1). Sollen die Benutzer Gelegenheit dazu erhalten, ihr eigenes Passwort über Swat zu ändern, darf der Linux-Account nicht durch »passwd -l« deaktiviert sein.

Abbildung 1: Die Web-Oberfläche von Swat erlaubt auch das komfortable Ändern von Benutzerpasswörtern.

Abbildung 1: Die Web-Oberfläche von Swat erlaubt auch das komfortable Ändern von Benutzerpasswörtern.

Abbildung 2: Ein neues Share ist mit Swat im Handumdrehen angelegt. Die Web-Oberfläche erspart das Editieren der »smb.conf«.

Abbildung 2: Ein neues Share ist mit Swat im Handumdrehen angelegt. Die Web-Oberfläche erspart das Editieren der »smb.conf«.

Interaktive Logins können dennoch unterbunden werden, indem der Admin den betreffenden Benutzern das Programm »/bin/false« als Login-Shell in die »/etc/passwd« schreibt. Die Alternative ist, »/usr/bin/smbpasswd« selbst als Shell einzusetzen und die Passwörter über Windows Telnet oder Putty zu ändern. Putty bietet den Vorteil einer Passwortübertragung über SSH-Tunnel, während bei Telnet die Passwörter unverschlüsselt übers Netz gehen. Die ungeschützte Übertragung von Passwörtern im Netz sollte aber, wo es nur geht, vermieden werden. Im Falle gleicher Passwörter für den Samba- und Linux-Account wäre bei einer Ausspähung auch der Letztere kompromittiert - mit weitreichenden Folgen für die Sicherheit des Servers insgesamt.

In Umgebungen, in denen viele oder die meisten Benutzer neben dem Zugriff auf Dateien auch die Möglichkeit der interaktiven Anmeldung benötigen, wird aus Bequemlichkeitsgründen dennoch meist dasselbe Passwort für beide Anmeldungen benutzt. Dann ist es zweckmäßig, bei Änderung des Samba-Passworts, die meist vom Benutzer selbst ausgeht, das Linux-Passwort ebenfalls zu ändern, ohne dass ein zusätzlicher Bedieneingriff nötig wird. Samba automatisiert diesen Vorgang mit

unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *New*password* %nn *new*password* %nn *changed*

in der »smb.conf«. Die erste Zeile erklärt sich selbst (»%u« ist die Makro-Ersetzung für den Benutzernamen).

Die zweite Zeile enthält die komplette Pfadangabe zum Linux-Passwortänderungsprogramm. Der Passwort-Chat beschreibt den Wortwechsel zwischen Administrator und Programm, den der SMB-Dämon nachempfinden muss, damit die Änderung gelingt. Das hier gezeigte Beispiel bezieht sich auf SuSE Linux 8.1 und muss für jede andere Linux-Installation angepasst werden.

»%n« steht als Makro für das neue Passwort des Benutzers (zur Laufzeit von »smbd« bereitgestellt), »n« für das abschließende »[Enter]« bei der Passworteingabe. Sternchen sind die Platzhalter für beliebige Zeichenfolgen. Auf Details wie Groß- oder Kleinschreibung etwa des Wortes new und dergleichen ist besonders zu achten.

Jedes Mal, wenn ein Benutzer sein Passwort mit dem Programm »smbpasswd« ändert, wird zuvor das Passwort in der »/etc/passwd« auf den neuen Wert gesetzt. Damit hierfür das alte Passwort nicht abgefragt werden muss, läuft der ganze Vorgang unter »root«-Berechtigung ab. Schlägt er an irgendeiner Stelle fehl, bleibt auch das Samba-Passwort unverändert.

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook