Using SambaRobert Eckstein, David Collier-Brown, Peter Kelly1st Edition November 1999 1-56592-449-5, Order Number: 4495 416 pages, $34.95 |
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:
Der Client versucht, ein Protokoll mit dem Server auszuhandeln.
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.
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.
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/smbpasswdSamba 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 = no6.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)
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 SequenzNO
PASSWORD
, gefolgt vonX
Zeichen für den Rest. Jeder kann ohne Password auf die Share zugreifen. Andererseits, wenn das Passwort ungültig gemacht wurde, besteht es aus 32X
-Zeichen. Samba gewährt keinem User Zugang ohne ein Passwort, außer die Optionnull
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 daveOld SMB password: New SMB password: Retype new SMB password: Password changed for user daveDu 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 = yesIst 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/passw
d%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 namenschangepass
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 %uBeachte, dass dieses Programm als
root
aufgerufen wird, wenn die Optionunix
password
sync
aufyes
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 Optionpasswd
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 Optionpasswd
program
festgelegt wird. Wir sehen ein Beispiel, wie die Vorgabe vonpasswd
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 Buchstabenold
gefolgt von den Buchstabenpassword
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 Optionpasswd
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 = 100Nachdem 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 = yesWenn 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 alsroot
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 aufyes
gesetzt ist:encrypt passwords = yesAls 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 Optionencrypted
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 Optionpasswd
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 Optionpasswd
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 musstlog
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 Optionpassword
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 = 3In 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 = yesDas 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
aufno
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 duencrypted
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 = yesWir 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/smbpasswdDieser 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.equivDie 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/.rhostsDer 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.
© 1999, O'Reilly & Associates, Inc.