Using Samba

Using Samba

Robert Eckstein, David Collier-Brown, Peter Kelly
1st Edition November 1999
1-56592-449-5, Order Number: 4495
416 pages, $34.95

Buy the hardcopy

Inhaltsverzeichnis


Previous: 6.3 Authentifizierung, Security Kapitel 6
User, Security und Domains
Next: 6.5 Windows Domains
 

6.4 Passwörter

Passwörter sind eine dornige Angelegenheit bei Samba. Tatsächlich so sehr, dass sie beinahe immer das erste größere Problem darstellen, das Usern bei der Installation von Samba entgegentritt, und bei weitem die meisten Fragen in den Samba Support-Gruppen verursachen. In den vorhergehenden Kapiteln beschäftigten wir uns mit der Notwendigkeit von Passwörtern durch die Eintragung der Option guest ok in jeder unserer Konfigurationsdateien, was Verbindungen ohne authentifizierende Passwörter erlaubt. Nun, an dieser Stelle müssen wir Samba tiefer erforschen, um die Vorgänge im Netzwerk zu ergründen.

Die von den einzelnen Clients gesendeten Passwörter können entweder verschlüsselt oder unverschlüsselt sein. Verschlüsselte Passwörter sind natürlich sicherer. Ein unverschlüsseltes Passwort kann leicht mit einem Paket-Schnüfflerprogramm gelesen werden, so wie das modifizierte Programm tcpdump für Samba, das wir in Kapitel 3, Windows-Clients konfigurieren, verwendeten. Ob Passwörter verschlüsselt sind, hängt vom Betriebssystem ab, das der Client beim Anbinden an den Sambaserver verwendet. Tabelle 6.5 listet auf, welche Windows-Betriebssysteme ihre Passwörter verschlüsseln, bevor sie diese an den PDC zur Authentifikation schicken. Hast du keinen Windows-Client, dann schau in die System-Dokumentation, ob SMB-Passwörter verschlüsselt sind.


Tabelle 6.5: Windows-Betriebssysteme mit verschlüsselten Passwörtern

Betriebssystem

Verschlüsselt oder unverschlüsselt

Windows 95

Unverschlüsselt

Windows 95 mit SMB Update

Verschlüsselt

Windows 98

Verschlüsselt

Windows NT 3. x

Unverschlüsselt

Windows NT 4.0 vor SP 3

Unverschlüsselt

Windows NT 4.0 nach SP 3

Verschlüsselt

Es werden momentan zwei verschiedene Verschlüsselungs-Methoden verwendet: eine für Windows 95- und 98-Clients, die den Verschlüsselungs-Stil des Microsoft LAN Managers wieder verwendet, und eine eigene für Windows NT-Clients und -Server. Windows 95 und 98 verwenden ein älteres Verschlüsselungssystem, das von der LAN Manager Netzwerk-Software geerbt wurde, während Windows NT-Clients und -Server ein neueres Verschlüsselungssystem benützen.

Werden verschlüsselte Passwörter unterstützt, dann speichert Samba die verschlüsselten Passwörter in einer Datei namens smbpasswd. In der Voreinstellung liegt diese Datei im Verzeichnis private der Samba-Distribution (/usr/local/samba/private). Zur selben Zeit speichert der Client eine verschlüsselte Version des User-Passworts auf seinem eigenen System. Das Klartext-Passwort wird niemals auf beiden Systemen gespeichert. Jedes System verschlüsselt die Passwörter automatisch unter Verwendung eines bekannten Algorithmus, wenn das Passwort eingerichtet oder abgeändert wird.

Wenn ein Client eine Verbindung zu einem SMB-Server anfordert, der verschlüsselte Passwörter unterstützt (wie Samba oder Windows NT), unterziehen sich die beiden Computer den folgenden Verhandlungen:

  1. Der Client versucht, ein Protokoll mit dem Server auszuhandeln.

  2. Der Server antwortet mit einem Protokoll und weist darauf hin, dass er verschlüsselte Passwörter unterstützt. Gleichzeitig sendet er einen mit Zufallsgenerator erzeugten 8-byte Aufforderungstext zurück.

  3. Der Client benützt den Aufforderungstext als Schlüssel zur Verschlüsselung seines schon verschlüsselten Passworts. Dabei verwendet er einen Algorithmus, der durch das ausgehandelte Protokoll vorbestimmt wurde. Hierauf sendet er das Ergebnis zum Server.

  4. Der Server macht dasselbe mit dem verschlüsselten Passwort, das in seiner Datenbank liegt. Stimmen die Resultate überein, dann sind die Passwörter gleich, und der User ist authentifiziert.

Beachte dass, wenn auch die ursprünglichen Passwörter nicht in den Authentifikationsprozess verwickelt sind, du sehr vorsichtig sein musst, damit die in der smbpasswd-Datei liegenden verschlüsselten Passwörter vor unbefugten Usern geschützt sind. Wenn sie gefährdet sind, kann ein unbefugter User in das System einbrechen, indem er die Schritte des oben besprochenen Algorithmus nachspielt. Die verschlüsselten Passwörter sind genauso heikel wie die Klartext-Passwörter - man kennt das in der Welt der Kryptographie als plaintext-äquivalente Daten. Natürlich solltest du ebenso dafür sorgen, dass auch die Clients ihre plaintext-äquivalenten Passwörter schützen.

Damit Samba verschlüsselte Passwörter akzeptiert, kannst du es mit folgenden globalen Zusätzen zur smb.conf konfigurieren. Beachte, dass wir die Lage der Samba-Passwortdatei explizit angeben:

[global]
	security = user
	encrypt passwords = yes
	smb passwd file = /usr/local/samba/private/smbpasswd

Samba wird nun keine User akzeptieren, bis die Datei smbpasswd initialisiert wurde.

6.4.1 Verschlüsselte Passwörter auf dem Client ausschalten

Obwohl die Unix-Authentifikation Jahrzehnte in Gebrauch war, eingeschlossen die Verwendung von telnet und rlogin-Zugriff im Internet, verkörpert sie wohlbekannte Sicherheitsrisiken. Klartext-Passwörter werden über das Internet gesendet und können von boshaften Schnüfflern aus TCP-Paketen herausgeholt werden. Nun, wenn du das Gefühl hast, dass dein Netzwerk sicher ist und du die Standard-Unix /etc/passwd-Authentifikation für alle Clients wünschst, kannst du das machen, aber du musst die verschlüsselten Passwörter auf solchen Windows-Clients abschalten, die sie in der Voreinstellung benützen.

Um das zu bewerkstelligen, musst du die Windows-Registry verändern, indem du zwei Dateien auf jedem System installierst. Abhängig von der betreffenden Plattform heißen die Dateien entweder NT4_PlainPassword.reg oder Win95_PlainPassword.reg. Du kannst diese Installation durchführen, indem du die entsprechenden .reg-Dateien aus dem Verzeichnis /docs der Samba-Distribution auf eine DOS-Diskette kopierst und mit dem Menüpunkt Ausführen im Startnemü des Clients ablaufen lässt. Übrigens arbeitet die Windows 95 .reg-Datei genauso gut auf Windows 98.

Nach dem Reboot der Maschine wird der Client seine Passwörter nicht verschlüsseln, bevor er sie an den Server sendet. Das bedeutet, dass die plaintext-äquivalenten Passwörter in den TCP-Paketen gesehen werden können, die innerhalb des Netzwerks verschickt werden. Noch einmal: wir raten dir davon ab, außer du bist absolut sicher, dass dein Netzwerk sicher ist.

Wenn die Passwörter nicht verschlüsselt sind, so kannst du das in deiner Samba-Konfigurationsdatei anzeigen:

[global]
	security = user
	encrypt passwords = no

6.4.2 Die Datei smbpasswd

Samba speichert seine verschlüsselten Passwörter in einer Datei namens smbpasswd, die in der Voreinstellung im Verzeichnis /usr/local/samba/private liegt. Die Datei smbpasswd sollte so gründlich wie die Datei passwd geschützt werden; sie sollte in einem Verzeichnis liegen, in dem nur der User Root Schreib/Lese-Rechte besitzt. Alle anderen User sollten in diesem Verzeichnis gar keine Leserechte haben. Außerdem sollte die Datei für den Zugriff aller User ausgeschlossen sein, außer für Root.

Bevor du verschlüsselte Passwörter verwenden kannst, musst du für jeden Unix-User in der Datei smbpasswd einen Eintrag erzeugen. Die Struktur dieser Datei ähnelt der Unix-Datei passwd ein bisschen, hat aber unterschiedliche Felder. Figur 6.3 zeigt das Layout der Datei smbpasswd; der gezeigte Eintrag ist in Wirklichkeit eine Zeile in der Datei.

Figur 6.3: Struktur eines Eintrags in der Datei smbpasswd (tatsächlich eine Zeile)

Figur 6.3

Hier folgt eine Aufgliederung der einzelnen Felder:

Username

Das ist der Username des Accounts. Er wird direkt aus der System-Passwortdatei genommen.

UID

Das ist die User-ID des Accounts. Wie der Username stammt sie direkt aus der System-Passwortdatei und muss mit dem User übereinstimmen, den sie hier repräsentiert.

LAN Manager Password Hash

Das ist eine hexadezimale 32-Bit-Sequenz, die das Passwort darstellt, das Windows 95 und 98 -Clients verwenden. Es wird abgeleitet durch die Verschlüsselung des Textes KGS!@#$% mit einem 56-Bit-Algorithmus unter Verwendung des zweimal wiederholten User-Passwortes (zwangsweise 14 Bytes und in Großbuchstaben verwandelt) als Schlüssel. Gibt es momentan kein Passwort für diesen User, so bestehen die ersten 11 Zeichen des Hash aus der Sequenz NO PASSWORD, gefolgt von X Zeichen für den Rest. Jeder kann ohne Password auf die Share zugreifen. Andererseits, wenn das Passwort ungültig gemacht wurde, besteht es aus 32 X -Zeichen. Samba gewährt keinem User Zugang ohne ein Passwort, außer die Option null passwords wurde eingerichtet.

NT Password Hash

Das ist eine hexadezimale 32-Bit-Sequenz, die das Passwort darstellt, das Windows NT-Clients verwenden. Es wird abgeleitet durch Hashing des User-Passworts (dargestellt als eine 16-Bit little-endian Unicode-Sequenz) mit einem MD4-Hash. Das Passwort wird vorerst nicht in Großbuchstaben umgewandelt.

Account Flags

Dieses Feld enthält 11 Zeichen zwischen zwei eckigen Klammern ([]). Jedes der folgenden Zeichen kann an irgendeiner Stelle aufscheinen, die verbleibenden Zeichen sollten Leerzeichen sein:

U

Dieser Account ist ein Standard-User-Account.

D

Dieser Account ist momentan abgeschaltet, und Samba sollte keine Logins erlauben.

N

Dieser Account verfügt über kein Passwort.

W

Das ist ein Workstation Trust-Account, der dazu verwendet werden kann, Samba als einen Primary Domain Controller (PDC) zu konfigurieren, wenn Samba Windows NT-Maschinen die Teilnahme an seiner Domäne gestattet.

Last Change Time

Dieser Code enthält die Zeichen LCT-gefolgt von einer hexadezimalen Darstellung einer Anzahl Sekunden seit dem 1. Jänner 1970, Mitternacht. Die Sekunden bedeuten den Zeitpunkt, an dem der Eintrag zum letzten Mal geändert wurde.

6.4.2.1 Hinzufügen von Einträgen zu smbpasswd

Es gibt ein paar Möglichkeiten, neue Einträge zur Datei smbpasswd hinzuzufügen:

  • Du kannst das Programm smbpasswd mit der Option -a verwenden. Damit fügst du automatisch jeden User hinzu, der zurzeit einen Standard-Unix-Systemaccount auf dem Server besitzt. Dieses Programm liegt im Verzeichnis /usr/local/samba/bin.

  • Du kannst das Programm addtosmbpass im Verzeichnis /usr/local/samba/bin wählen. Das ist wirklich ein einfaches awk-Skript, das eine System-Passwortdatei durchsucht und Usernamen und UID jedes Eintrags herausfiltert, den du zur SMB-Passwortdatei hinzufügen willst. Dann ergänzt es vorgegebene Felder für den Rest des Usereintrags, die später mit dem Programm smbpasswd geändert werden können. Um dieses Programm zu verwenden, musst du vielleicht die erste Zeile der Datei editieren, damit sie korrekt auf awk auf deinem System zeigt.

  • Im Fall, dass keine von diesen Optionen bei dir funktionieren, kannst du in der Datei smbpasswd einen vorgegebenen Eintrag per Hand erzeugen. Der Eintrag sollte in einer einzigen Zeile stehen. Jedes Feld sollte vom anderen durch ein Semincolon getrennt sein und so ähnlich ausschauen:

dave:500:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:[U          ]:LCT-00000000:

Dieses enthält den Usenamen und die UID, wie sie in der System-Passwortdatei stehen, es folgen zwei Sätze von exakt 32 X-Zeichen, dann die Account-Flags und die letzte Änderungszeit, wie sie weiter oben aufscheint. Nach der Hinzugabe dieses Eintrags musst du das Programm smbpasswd benützen, um das Passwort für den User zu ändern.

6.4.2.2 Ändern des verschlüsselten Passworts

Wenn du das verschlüsselte Passwort in der Datei smbpasswd ändern musst, kannst du ebenfalls das Programm smbpasswd aufrufen. Beachte, dass dieses Programm denselben Namen trägt wie die Datei für verschlüsselte Passwörter selbst, also sorge dafür, dass du nicht zufällig die Passwortdatei mit dem Passwort-Änderungsprogramm verwechselst.

Das Programm smbpasswd ist beinahe identisch mit dem Programm passwd, das zum Ändern von Unix-Account-Passwörtern dient. Das Programm fordert dich auf, dein altes Passwort einzugeben (außer du bist der User Root) und dein neues Passwort zweimal einzutragen. Die Zeichen des Passwort erscheinen nicht auf dem Bildschirm.

# smbpasswd dave
Old SMB password:
New SMB password:
Retype new SMB password:
Password changed for user dave

Du kannst nach Beendigung dieses Befehls in der Datei smbpasswd nachschauen, ob der LAN Manager und der NT-Hash der Passwörter an ihren vorgesehenen Positionen gespeichert wurden. Besitzen User einmal Einträge von verschlüsselten Passwörtern in der Datenbank, dann sollten sie Verbindung zu Shares aufnehmen können, die verschlüsselte Passwörter verwenden!

6.4.3 Passwort-Synchronisation

Der Besitz eines regulären Passworts und einer verschlüsselten Version desselben Passworts kann lästig sein, wenn du beide ändern musst. Glücklicherweise bietet dir Samba eine eingeschränkte Fähigkeit, deine Passwörter synchron zu halten. Samba besitzt ein Paar Konfigurationsoptionen, die für ein automatisches Update des regulären Unix-Passworts eines Users benützt werden können, wenn das verschlüsselte Passwort auf dem System geändert wird. Das Feature kann durch Eintragung der globalen Konfigurationsoption unix password sync aktiviert werden:

[global]
	encrypt passwords = yes
	smb passwd file = /usr/local/samba/private/smbpasswd

	unix password sync = yes

Ist diese Option eingeschaltet, wird Samba versuchen, das reguläre Passwort des Users zu ändern (als root), wenn die verschlüsselte Version mit smbpasswd geändert wird. Nun, es gibt zwei andere Optionen, die für diese Aufgabe richtig gesetzt werden müssen.

Die leichtere der beiden heißt passwd program. Diese Option bezeichnet einfach den Unix-Befehl, der zum Ändern des Standard-System-Passworts dient. Er ist in der Voreinstellung auf /bin/passwd %u gesetzt. Bei einigen Unix-Systemen reicht das, und du musst nichts anderes ändern. Andere wie Red Hat Linux verwenden stattdessen /usr/bin/passwd. Zusätzlich könntest du das mit einem anderen Programm oder Skript für irgendeinen Zweck in der Zukunft ändern. Nehmen wir z.B. an, dass du ein Skript namens changepass zum Ändern eines Userpassworts verwenden willst. Denk daran, dass du die Variable %u zur Darstellung des momentanen Unix-Usernamens benützen kannst. Also wird aus unserem Beispiel:

[global]
	encrypt passwords = yes
	smb passwd file = /usr/local/samba/private/smbpasswd

	unix password sync = yes
	passwd program = changepass %u

Beachte, dass dieses Programm als root aufgerufen wird, wenn die Option unix password sync auf yes gesetzt ist. Das kommt daher, weil Samba nicht unbedingt das alte Klartext-Passwort des Users hat.

Schwerer zu konfigurieren ist die Option passwd chat. Die Option passwd chat arbeitet wie ein Unix-Chat-Skript. Es bezeichnet eine Reihe von zu sendenden Textgruppen sowie zu erwartenden Antworten von dem Programm, das von der Option passwd program festgelegt wird. Wir sehen ein Beispiel, wie die Vorgabe von passwd chat aussieht. Die Begrenzungen sind die Leerzeichen zwischen allen Gruppierungen von Zeichen:

passwd chat = *old*password* %o\n *new*password* %n\n *new*password* %n\n *changed*

Die erste Gruppierung stellt eine Antwort dar, die vom Passwort-Änderungsprogramm erwartet wird. Beachte, dass es Wildcards (*) enthalten kann, welche die Chat-Programme verallgemeinern helfen, damit sie verschiedene ähnliche Ausgaben verarbeiten können. Hier bedeutet *old*password*, dass Samba irgendeine Zeile des Passwort-Programms erwartet, das die Buchstaben old gefolgt von den Buchstaben password enthält, ohne Rücksicht auf das, was von beiden Seiten oder zwischen ihnen kommt. Sobald Samba dafür eingerichtet ist, wartet es unbestimmt auf so ein Gegenstück. Wenn Samba die erwartete Anwort nicht erhält, wird das Passwort fehlschlagen.

Die zweite Gruppierung bezeichnet das, was Samba zurücksenden sollte, sobald die Daten in der ersten Gruppierung übereinstimmten. In diesem Fall siehst du %o\n. Diese Antwort besteht aus zwei Dingen: die Variable %o bezeichnet das alte Passwort, während das \n für das Zeichen Zeilenvorschub steht. Also wird dies in der Folge das alte Passwort in die Standardeingabe des Passwort-Änderungsprogramms "eintippen" und dann Enter "drücken".

Das Nächste ist eine andere Antwort-Gruppierung, gefolgt von Daten, die zum Passwort-Änderungsprogramm zurückgesandt werden. (Dieses Antwort-/Sendungs-Muster dauert tatsächlich unbestimmt in jedem Standard-Unix- chat-Skript an.) Das Skript besteht fort, bis das letzte Muster übereinstimmt.[2]

[2] Das könnte unter Red Hat Linux nicht funktionieren, da das Passwort-Programm typischerweise "All authentication tokens updated successfully" anstatt "Password changed" antwortet. Wir sehen dafür eine Lösung später in diesem Abschnitt vor.

Du kannst die Antworttexte vergleichen helfen, die vom Passwortprogramm gesendet werden, mit den in Tabelle 6.6 angeführten Zeichen. Zusätzlich kannst du die Zeichen aus Tabelle 6.7 benützen, die deine Anwort formulieren helfen.


Tabelle 6.6: Passwort-Chat-Antwortzeichen

Zeichen

Definition

*

Kein oder mehreres Auftreten irgendwelcher Zeichen.

" "

Erlaubt dir, übereinstimmende Textteile aufzunehmen, die Leerzeichen enthalten. Sternchen werden nach wie vor auch innerhalb von Anführungszeichen als Wildcards betrachtet, und du kannst eine ungültige Antwort mit leeren Anführungszeichen darstellen.


Tabelle 6.7: Passwort-Chat-Sendezeichen

Zeichen

Definition

%o

Das alte Passwort des Users

%n

Das neue Passwort des Users

\n

Das Zeilenvorschub-Zeichen

\r

Das Wagenrücklauf-Zeichen

\t

Das Tabulator-Zeichen

\s

Ein Leerzeichen

Du willst z.B. vielleicht deinen Passwort-Chat in folgenden Eintrag ändern. Der behandelt Szenarios, in denen du das alte Passwort nicht eingeben musst. Außerdem wird er auch den neuen Text all tokens updated successfully verarbeiten, den Red Hat Linux versendet:

passwd chat = *new password* %n\n *new password* %n\n *success*

Noch einmal: der voreingestellte Chat sollte für viele Unix-Systeme ausreichen. Tut er das nicht, kannst du die globale Option passwd chat debug verwenden, um ein neues Chat-Skript für das Passwort-Änderungsprogramm einzurichten. Die Option passwd chat debug loggt alles während eines Passwort-Chats. Diese Option ist eine einfache boolean, wie hier gezeigt:

[global]
    encrypted passwords = yes
    smb passwd file = /usr/local/samba/private/smbpasswd

    unix password sync = yes
    passwd chat debug = yes
    log level = 100

Nachdem du das Feature passwd chat debug aktiviert hast, werden alle von Samba durch den Passwort-Chat erreichten I/O zu den Samba-Logs mit einem Debug-Level 100 gesandt, weil wir auch eine neue Option log level eingaben. Weil dies oft Mengen an Fehler-Logs nach sich zieht, könnte es effizienter sein, dein eigenes Skript zu verwenden, indem du die Option passwd program statt /bin/passwd einrichtest, um aufzuzeichnen, was während der Änderung passiert. Sorge ebenso für den Schutz deiner Log-Dateien mit strengen Dateirechten und lösche sie, sobald du dir die Information geschnappt hast, die du brauchst, weil sie die Passwörter im Klartext enthalten.

Das Betriebssystem, auf dem Samba läuft, könnte strenge Voraussetzungen für gültige Passwörter haben, um sie unzugänglicher für Lexikon-Attacken und dergleichen zu machen. User sollten auf diese Beschränkungen aufmerksam gemacht werden, wenn sie ihre Passwörter wechseln.

Weiter oben sagten wir, dass Passwort-Synchronisation begrenzt ist. Das kommt daher, weil es keine umgekehrte Synchronisation der verschlüsselten Datei smbpasswd gibt, wenn ein Standard-Unix-Passwort durch einen User geändert wird. Es gibt verschiedene Strategien, das zu umgehen, eingeschlossen NIS und frei verfügbare Ausführungen des Pluggable Authentication Modules (PAM)-Standard, aber keine von ihnen löst bis jetzt all diese Probleme wirklich. In Zukunft, wenn Windows 2000 herauskommt, werden wir mehr Befolgung des Lightweight Directory Access Protocol (LDAP) bemerken, welches die Passwort-Synchronisation zu einem Ding der Vergangenheit zu machen verspricht.

6.4.4 Passwort-Konfigurations-Optionen

Die Optionen in Tabelle 6.8 werden dir helfen, mit Passwörtern in Samba zu arbeiten.


Tabelle 6.8: Passwort-Konfigurations-Optionen

Option

Parameter

Funktion

Vorgabe

Bereich

encrypt passwords

boolean

Schaltet verschlüsselte Passwörter ein.

no

Global

unix password sync

boolean

Wenn yes, dann updatet Samba die Standard-Unix-Passwort-Datenbank, wenn ein User sein oder ihr verschlüsseltes Passwort ändert.

no

Global

passwd chat

string (Chat-Befehle)

Setzt eine Reihe von Befehlen, die zum Passwort-Programm gesendet werden.

Siehe einen früheren Abschnitt wegen dieser Option

Global

passwd chat debug

boolean

Sendet Debug-Logs des Passwort-Änderungsprozesses an die Log-Dateien mit einem Level 100.

no

Global

passwd program

string (Unix-Befehl)

Setzt das für das Ändern von Passwörtern verwendete Programm.

/bin/passwd %u

Global

password level

numerisch

Setzt die Anzahl der versuchten Großbuchstaben-Permutationen, während ein Client-Passwort abgestimmt wird.

Keine

Global

update encrypted

boolean

Wenn yes, dann updatet Samba die verschlüsselte Passwortdatei, wenn ein Client sich mit einer Share mit Klartext-Passwort verbindet.

no

Global

null passwords

boolean

Wenn yes, dann erlaubt Samba den Zugriff für User mit keinem Passwort.

no

Global

smb passwd file

string (Voller Pfadname)

Bezeichnet den Namen der verschlüsselten Passwortdatei.

/usr/local/samba/private/smbpasswd

Global

hosts equiv

string (Voller Pfadname)

Bezeichnet den Namen einer Datei, die Hosts und User enthält, die ohne Verwendung eines Passworts Zugang bekommen.

Keine

Global

use rhosts

string (Voller Pfadname)

Bezeichnet den Namen einer . rhosts-Datei, die Usern erlaubt, ohne Verwendung eines Passworts Zugang zu erhalten.

Keine

Global

6.4.4.1 unix password sync

Die globale Option unix password sync erlaubt Samba, die Standard-Unix-Passwortdatei upzudaten, wenn ein User sein oder ihr verschlüsseltes Passwort ändert. Das verschlüsselte Passwort wird auf einem Sambaserver in der Datei smbpasswd gespeichert, die normalerweise in /usr/local/samba/private liegt. Du kannst dieses Feature aktivieren wie folgt:

[global]
	unix password sync = yes

Wenn diese Option eingeschaltet ist, ändert Samba das verschlüsselte Passwort und versucht zusätzlich das Standard-Unix-Passwort zu ändern durch die Übergabe des Usernamens und des neuen Passworts an das Programm, das von der Option passwd program (weiter oben beschrieben) festgelegt wird. Beachte, dass Samba nicht unbedingt Zugriff auf das Klartext-Passwort dieses Users hat, also muss das Passwort-Änderungsprogramm als root aufgerufen werden.[3] Wenn die Änderung des Unix-Passworts aus irgendeinem Grund erfolglos ist, wird auch das SMB-Passwort nicht geändert.

[3] Das kommt daher, weil das Unix-Programm passwd, welches das übliche Ziel dieser Operation ist, root erlaubt, das Passwort eines Users zu ändern, ohne die vom alten Passwort dieses Users verlangten Sicherheits-Beschränkungen.

6.4.4.2 encrypt passwords

Die globale Option encrypt passwords schaltet Samba vom Gebrauch der Klartext- auf verschlüsselte Passwörter für die Authentifikation um. Verschlüsselte Passwörter werden von Clients erwartet, wenn die Option auf yes gesetzt ist:

encrypt passwords = yes

Als Voreinstellung übermitteln Windows NT 4.0 mit Service Pack 3 oder höher und Windows 98 verschlüsselte Passwörter über das Netzwerk. Wenn du verschlüsselte Passwörter einstellst, musst du eine gültige smbpasswd-Datei zur Verfügung haben, welche mit Usernamen bestückt ist, die sich mit verschlüsselten Passwörtern authentifizieren. (Siehe Abschnitt 6.4.2, Die Datei smbpasswd, weiter oben in diesem Kapitel.) Außerdem muss Samba den Standort der Datei smbpasswd kennen; sollte sie nicht an der vorgegebenen Stelle sein (üblicherweise /usr/local/samba/private/smbpasswd), kannst du sie explizit mit der Option smb passwd file festlegen.

Wenn du es wünscht, kannst du die Option update encrypted benützen, um Samba jederzeit zum Update der Datei smbpasswd mit verschlüsselten Passwörtern zu zwingen, wenn ein Client sich mit einem unverschlüsselten Password anmeldet.

Eine übliche Strategie zur Sicherstellung, dass Hosts, die Authentifikation mit verschlüsselten Passwörtern brauchen, sie wirklich erhalten, erreicht man mit der Option include. Damit kannst du eigene Konfigurationsdateien erzeugen, die auf der Basis von OS-Typ (%a) oder Clientname (%m) eingelesen werden. Diese Host-spezifischen oder OS-spezifischen Konfigurationsdateien können eine Option encrypted passwords = yes enthalten, die nur dann aktiviert werden, wenn diese Clients sich beim Server anmelden.

6.4.4.3 passwd program

Die Option passwd program wird verwendet, um ein Programm auf dem Unix-Sambaserver zu bezeichnen, das Samba zum Update der Standard-System-Passwortdatei verwenden kann, wenn die Datei für verschlüsselte Passwörter upgedatet wird. Die Voreinstellung dieser Option ist das Standardprogramm passwd, das normal im Verzeichnis /bin liegt. Die Variable %u wird hier typisch für den anfordernden User benützt, wenn der Befehl ausgeführt wird. Die eigentliche Behandlung von Eingabe und Ausgabe an dieses Programm während der Ausführung wird durch die Option passwd chat erledigt. Der Abschnitt "Passwort-Synchronisation", früher in diesem Kapitel, berichtet über diese Option im Detail.

6.4.4.4 passwd chat

Diese Option bezeichnet eine Reihe von Sende-/Antwort-Zeichenketten, ähnlich einem Unix-Chat-Skript, die verwendet werden, um mit dem Passwort-Änderungsprogramm auf dem Sambaserver zusammenzuarbeiten. Der Abschnitt "Passwort-Synchronisation", früher in diesem Kapitel, berichtet über diese Option im Detail.

6.4.4.5 passwd chat debug

Wenn sie auf yes gesetzt ist, protokolliert die globale Option passwd chat debug alles, was Samba während eines Passwort-Chats sendet oder erhält. Der ganze von Samba durch den Passwort-Chat erhaltene I/O wird mit einem Debug-Level 100 zu den Samba-Logdateien gesandt; du musst log level = 100 festlegen, damit sie für die Information aufgezeichnet werden. Der Abschnitt "Passwort-Synchronisation" , früher in diesem Kapitel, berichtet über diese Option im Detail. Sei dir bewusst, dass die Klartext-Passwörter in den Debugging-Logs sichtbar sind, wenn du diese Option setzt, was ein Sicherheitsrisiko bedeuten könnte, wenn sie nicht richtig abgesichert sind.

6.4.4.6 password level

Bei SMB werden unverschlüsselte (oder Klartext-) Passwörter mit Großbuchstaben gesendet, so wie die früher erwähnten Usernamen. Nun, viele Unix-User wählen Passwörter mit Groß- und Kleinbuchstaben. Samba versucht in der Voreinstellung, das Passwort nur völlig in Kleinbuchstaben zu vergleichen und nicht den ersten Buchstaben in einen großen umzuwandeln.

Wie username level gibt es eine Option password level, die verwendet werden kann, verschiedene Permutationen des Passworts mit Großbuchstaben zu probieren. Diese Option verlangt einen Integer-Wert, der festlegt, wie viele Buchstaben in dem Passwort groß geschrieben werden sollten, wenn die Anmeldung zu einer Share versucht wird. Du kannst diese Optionen festlegen wie folgt:

[global]
	password level = 3

In diesem Fall wird Samba so viele Permutationen des Passworts versuchen, wie es mit drei Großbuchstaben berechnen kann. Je größer die Anzahl, desto mehr Berechnungen muss Samba durchführen, um die Passwörter zu vergleichen, und desto länger kann die Anmeldung zu einer bestimmten Share dauern.

6.4.4.7 update encrypted

Für Situationen, wo zum verschlüsselten Passwortformat übergewechselt wird, sieht Samba eine Option vor, die beim Übergang helfen sollte. Die Option update encrypted erlaubt es, eine Situation beim Verwenden von verschlüsselten Passwörtern aus Klartext-Passwörtern zu erleichtern. Du kannst diese Option aktivieren wie folgt:

[global]
    update encrypted = yes

Das instruiert Samba, eine verschlüsselte Version des Unix-Passwortes jedes Users in der Datei smbpasswd zu erzeugen, jedes Mal, wenn er oder sie sich bei einer Share anmeldet. Wenn diese Option eingeschaltet ist, musst du die Option encrypt passwords auf no gesetzt haben, sodass der Client Klartext-Passworte an Samba übergibt, um das Update der Dateien auszunutzen. Sobald jeder User sich mindestens einmal angemeldet hat, kannst du encrypted passwords = yes setzen, was dir nur den Gebrauch von verschlüsselten Passwörten erlaubt. Der User muss bereits einen gültigen Eintrag in der Datei smbpasswd haben, damit diese Option zum Tragen kommt.

6.4.4.8 null passwords

Diese globale Option sagt Samba, ob der Zugriff von Usern erlaubt ist, die ungültige Passwörter (verschlüsselt oder unverschlüsselt) in ihren Accounts gesetzt haben, oder nicht. Der Vorgabe-Wert ist no. Du kannst ihn verändern wie folgt:

null passwords = yes

Wir raten dir dringend davon ab, außer du bist mit den Sicherheitsrisiken dieser Option vertraut, die sie auf deinem System darstellen. Dazu gehört versehentlicher Zugang zu System-Usern (wie bin) in der System-Passwortdatei, die ungültige Passwörter gesetzt haben.

6.4.4.9 smb passwd file

Diese globale Option identifiziert den Standort der Datenbank verschlüsselter Passwörter. Als Vorgabe ist sie auf /usr/local/samba/private/smbpasswd gesetzt. Du kannst sie abändern wie folgt:

[global]
	smb passwd file = /etc/smbpasswd

Dieser Standort ist z.B. auf vielen Red Hat-Distributionen üblich.

6.4.4.10 hosts equiv

Diese globale Option bestimmt den Namen einer Standard-Unix hosts.equiv-Datei, die Hosts und Usern erlaubt, auf Shares zuzugreifen, ohne ein Passwort anzugeben. Du kannst den Standort einer solchen Datei wie folgt festlegen:

[global]
	hosts equiv = /etc/hosts.equiv

Die Voreinstellung dieser Option nennt keine hosts.equiv-Datei. Die Verwendung einer solchen Datei birgt nämlich notwendigerweise ein riesiges Sicherheitsrisiko, wir empfehlen dir dringend, diese Option nicht zu verwenden, außer du bist von der Sicherheit in deinem Netzwerk überzeugt.

6.4.4.11 use rhosts

Diese globale Option bezeichnet den Namen der .rhosts-Datei eines Standard-Unix-Users, die fremden Hosts Zugriff auf Shares erlaubt, ohne ein Passwort anzugeben. Du kannst den Standort einer solchen Datei wie folgt festlegen:

[global]
	use rhosts = /home/dave/.rhosts

Der Vorgabewert für diese Option nennt keine .rhosts-Datei. Wie die Option hosts equiv vorher bedeutet die Verwendung einer solchen Datei ein Sicherheitsrisiko. Wir empfehlen dir dringend, diese Option nicht zu verwenden, außer du bist von der Sicherheit in deinem Netzwerk überzeugt.


Previous: 6.3 Authentifizierung, Security Next: 6.5 Windows Domains
6.3 Authentifizierung, Security Buch-Index (engl.) 6.5 Windows Domains

O'Reilly Home | O'Reilly Bookstores | How to Order | O'Reilly Contacts
International | About O'Reilly | Affiliated Companies

© 1999, O'Reilly & Associates, Inc.