![]()
In den vorhergehenden Kapiteln haben Sie sich angesehen, wie eine ganze Reihe verschiedener Clients auf Datei- und Druckerfreigaben zugreifen können, die von einem Samba-Server zur Verfügung gestellt werden. Sie haben sich außerdem angesehen, wie Samba einen lokalen Benutzer-Acount mit allen Dateizugriffen verbindet. In den meisten Fällen übermitteln Benutzer einen Benutzernamen und ein Passwort, um auf eine Ressource auf einem Samba-Server zugreifen zu können. Wenn Sie eine komplexe Umgebung verwalten, in der Sie NT-Server, Unix-Server (einige mit Samba) und vielleicht auch einige Windows-9x-Systeme haben, werden Sie wahrscheinlich ein Problem mit der Passwortsynchronisation haben.
In diesem Kapitel geht es um
Einige der Lösungen für dieses Problem basieren auf der Unterstützung für verschlüsselte Passwörter und der neuen PDC-Unterstützung, die in Samba 2.0.0 und höher integriert ist. Es ist vielleicht gut, erst einmal die Kapitel 21, »Windows-9x-Domänenkontrolle«, und 22, »Experimentelle PDC-Unterstützung«, zu lesen, bevor Sie dieses Kapitel angehen.
Was ist das Problem? Nehmen wir an, Sie wollen sich in ein Windows-9x-System einloggen und schauen auf das Dialogfeld, das Sie in Abbildung 16.1 sehen.
Abb. 16.1: Das Login-Dialogfeld unter Windows 9x
Geben Sie Ihren Benutzernamen (hier boss) und Ihr Passwort an, loggen Sie sich in das Netzwerk ein, und Sie erhalten Zugang zu Ihren Dateien. Wo wird Ihr Passwort verwaltet? Wenn Sie Ihr Passwort dann ändern (auf das Sie über die Systemsteuerung zugreifen können), wo wird dieses Passwort geändert?
Wenn Sie sich eingeloggt haben, erhalten Sie möglicherweise Zugriff auf ein Home-Verzeichnis, in dem Sie Dateien und Verzeichnisse speichern können. Abbildung 16.2 zeigt ein Beispiel des Home-Verzeichnisses, das auf einer Samba-Freigabe für den Benutzer boss zur Verfügung steht.
Abb. 16.2: Das Home-Verzeichnis nach Einloggen in das Netzwerk
Nun werden Sie sich auch in Unix-Rechner in Ihrem Netzwerk einloggen und Zugriff auf den gleichen Account-Namen haben müssen, den Sie für das Einloggen in Ihre Windows-9x-Systeme verwenden. Nachfolgend sehen Sie eine Beispiel-Login-Sitzung, während der Sie sich in ein Linux-System mit dem Account-Namen boss einloggen und Zugang zu den gleichen Dateien erhalten, auf die Sie von Windows in Abbildung 16.2 zugegriffen haben:
Red Hat Linux release 5.2 (Apollo)Welches Passwort wurde benutzt, um Sie in jedem dieser Befehle zu authentifizieren? Wenn Sie Ihr Passwort in einer Umgebung ändern, wird es dann für beide Umgebungen geändert? Ist es möglich, dass nur ein Passwort verwendet wird?
Damit Sie das Problem verstehen und den Hintergrund einiger der Lösungen beurteilen können, müssen Sie mehr darüber wissen, wo Windows NT und Unix Passwörter für ihre Benutzer speichern und auf welche Art und Weise diese Passwörter gespeichert werden.
Zunächst einmal speichert weder NT noch Unix in den entsprechenden Passwortdateien Klartextpasswörter. Beide führen eine irreversible Kalkulation auf Grundlage des Klartextpassworts durch, das ein Benutzer überträgt, wenn er ein Passwort ändert. Der resultierende Wert wird in den Passwortdatenbanken gespeichert, die jedes System verwaltet. Wenn ein Benutzer sich einloggen möchte, wird die gleiche irreversible Kalkulation noch einmal durchgeführt und das Resultat mit dem Wert verglichen, der in der Passwortdatenbank gespeichert ist. Stimmen die Werte überein, hat der Benutzer das korrekte Passwort übertragen. Beide Prozesse werden in Abbildung 16.3 dargestellt.
Zwar führen beide Betriebssysteme eine irreversible Berechnung auf Grundlage des Passworts durch und speichern das Resultat, aber jedes benutzt einen anderen Algorithmus. Windows NT berechnet einen MD4-Hashwert auf Grundlage des Benutzerpassworts, während Unix das Benutzerpasswort als Schlüssel für einen modifizierten DES-Algorihmus verwendet und diesen speichert. Da jede dieser Operationen in einem angemessenen Zeitrahmen irreversibel ist, ist es nicht möglich, einen Passworttyp in den anderen zu konvertieren. Das bedeutet, erhält ein System einen Windows-Hashwert, kann es keinen korrekten Unix-Hashwert für den gleichen Benutzer generieren und umgekehrt.
Abb. 16.3: Ändern von Passwörtern und Authentifizierung
Windows NT speichert Passwörter in der SAM- (Security-Account-Manager-)Datenbank, die Teil der Registry ist. In einer Windows-NT-Domäne werden Passwörter auf dem Primary Domain Controller gespeichert und an Backup Domain Controller repliziert. Obwohl jeder NT-Rechner auch seine eigene lokale SAM-Datenbank haben kann, ermöglicht diese nur lokale Logins. Beim Einloggen in die Domäne wird die SAM-Datenbank auf den Domänen-Controllern konsultiert. Da Backup Domain Controller eine Kopie der SAM-Datenbank erhalten, gibt es im Wesentlichen nur eine Quelle für Authentifizierungsinformationen in einer Windows-NT-Domäne.
Unix speichert Passwörter in der Passwortdatei (/etc/passwd) oder der Shadow-Passwortdatei für erhöhte Sicherheit (da die Passwortdatei allgemein lesbar und es möglich ist, einen erfolgreichen Wörterbuchangriff durchzuführen, wenn jemand Zugriff auf die verschlüsselten Passwörter für einen Rechner hat). In einer vernetzten Umgebung werden verschiedene Schemata benutzt, um eine einzelne Quelle für Authentifizierungsinformationen für Unix zu bieten. Das beliebteste ist ein Schema, das von Sun Microsystems entwickelt wurde und Network Information Service oder NIS genannt wird. Vor einiger Zeit hat Sun eine aktualisierte Version von NIS namens NIS+ vorgestellt, die eine Reihe von Problemen mit NIS behandelt, insbesondere Sicherheitsprobleme. NIS+ ist allerdings nicht unter so vielen Unix-Versionen implementiert wie NIS.
Wenn Sie sowohl Windows NT als auch Unix in Ihrem Netzwerk haben und dieses Netzwerk umfassend ist, ist die Wahrscheinlichkeit groß, dass Sie zwei Sammlungen von Passwörtern haben, eine für Windows NT und eine für Unix. Außerdem kann Samba Windows-NT-artige Passwörter verwenden und verwalten, wenn es für die Benutzung verschlüsselter Passwörter konfiguriert ist. Wenn Sie Samba unter Unix benutzen, um Datei- und Druckerfreigaben für Windows-9x- und Windows-NT-Systeme zu bieten und verschlüsselte Passwörter verwenden, haben Sie ebenfalls zwei Sets von Passwörtern, eins für die Windows-Clients und eins für Unix.
Das bedeutet, der Account boss hat ein Passwort für Windows und ein Passwort für Unix.
Dies führt zu einem Problem: Wie können Sie diese Passwörter synchron halten, da Benutzer es nicht mögen, sich an zwei Passwörter erinnern oder ein einzelnes Passwort an zwei verschiedenen Orten ändern zu müssen? Wenn Sie den einfachen Ansatz nehmen und Samba in einer Unix-Umgebung (oder einer gemischten Windows-NT- und Unix-Umgebung) einrichten, haben Sie ein Problem mit der Synchronisation der Passwörter, da Ihre Benutzer Passwörter an zwei Orten haben werden und diese manuell synchron halten müssen. In einigen Fällen macht sich das Problem vielleicht nicht bemerkbar, aber wenn Ihre Windows-Benutzer einen Unix-basierten POP-Server oder RADIUS-Server usw. verwenden, werden sie das Problem sicher bemerken.
In den folgenden Abschnitten sehen Sie sich Ansätze für den Umgang mit dem Problem der Passwortsynchronisation an.
Die Passwortsynchronisation stellt Sie vor zwei Fragen, die Sie beantworten müssen:
Wenn Sie nur ein Passwortformat verwenden, können Sie die Passwort-Hashwerte auf Client-Systemen generieren, wenn Benutzer ihre Passwörter ändern. Verwenden Sie aber mehrere Passwortformate, müssen Sie entweder beim Client mehrere Passwort-Hashwerte generieren, wenn ein Passwort geändert wird (was bedeutet, dass Clients geändert werden müssen, wenn der Umgebung ein neues Passwortformat hinzugefügt wird), oder Sie müssen das Klartextpasswort an einen Server übertragen, damit dieser die entsprechenden Hashwerte generiert.
In jedem Fall sollten Sie besser die Daten verschlüsseln, die Sie an den Authentifizierungsserver übertragen, um zu verhindern, dass jemand, der die Übertragung der Passwortänderung verfolgen kann, entweder Passwörter oder Passwortentsprechungen abfängt. (Eine Passwortentsprechung kann von Angreifern benutzt werden, die ihre eigenen Client-Programme schreiben.)
Können Sie eine einzelne Authentifizierungsdatenbank halten (auch wenn Sie in dieser Datenbank verschiedene Passwort-Hashwerte haben), wird Ihr Leben viel einfacher sein, wenn Sie die Datenbank aktualisieren - z.B. wenn die Benutzer ihre Passwörter ändern. Die Verwaltung mehrerer Authentifizierungsdatenbanken dagegen bedeutet, dass Sie besondere Sorgfalt an den Tag legen müssen, um sicherzustellen, dass Aktualisierungen an jede Datenbank weitergegeben werden, und es wird immer Gelegenheiten geben, dass die Datenbanken nicht länger synchron sind. Die Probleme werden gemischt, wenn sich in diesen Datenbanken Passwort-Hashwerte in verschiedenen Formaten befinden, da dann irgendwo auf dem System Klartextpasswörter gespeichert werden müssen, bis alle Datenbanken aktualisiert sind.
Die verfügbaren Lösungen für das Problem der Passwortsynchronisation umfassen folgende Ansätze:

![]()
Sie können auch SWAT für die Änderung von Benutzerpasswörtern verwenden. SWAT leidet jedoch unter einer Reihe von Problemen, unter anderem darunter dass es keine Unterstützung für SSL bietet, so dass alle vom Benutzer übertragenen Passwörter für jeden Eindringling sichtbar sind.
![]()
Samba kann für die Authentifizierung von Windows-95- und Windows-NT-Clients eingerichtet werden. Dies erfordert (besonders für Windows-NT-Systeme), dass Samba verschlüsselte Passwörter und die smbpasswd-Datei benutzt.
Sie müssen dem globalen Abschnitt Ihrer smb.conf die folgenden Parameter hinzufügen:
encrypt passwords = yesNatürlich kann sich, je nach Ihrer Unix-Version, die smbpasswd-Datei auch an einem anderen Ort befinden. In Linux-Distributionen, wie z.B. RedHat und TurboLinux, befindet sie sich in /etc.
Sie müssen außerdem die smbpasswd-Datei erstellen und sie mit allen Accounts bestücken, die in die smbpasswd-Datei vorgeladen werden sollen. In der smbpasswd speichert Samba alle NT-Passwort-Hashwerte für alle Windows-Benutzer. Die Datei hat ein ähnliches Format wie die Unix-Passwortdatei.
Um die smbpasswd anfangs zu füllen, müssen Sie einen Befehl ausführen wie den folgenden:
cat /etc/passwd | mksmbpasswd.sh > /usr/local/samba/private/smbpasswdoder, wenn Sie NIS für die Unix-Authentifizierung verwenden:
ypcat passwd | mksmbpasswd.sh > /usr/local/samba/private/smbpasswdDas mksmbpasswd.sh-Skript finden Sie in Samba 2.0 im Samba-Source-Verzeichnis im Unterverzeichnis Script.
Aufgrund der Sensitivität der Informationen, die in der smbpasswd gespeichert werden (wie z.B. die verschlüsselten Passwörter in der passwd-Datei, die Sie in einer Shadow-Passwortdatei speichern können), sollte das Verzeichnis, in dem die smbpasswd-Datei gespeichert ist, im Besitz von root sein. Außerdem sollte niemand außer root auf das Verzeichnis zugreifen können. Und schließlich sollte die smbpasswd-Datei selbst für niemanden außer root zugänglich sein. Die folgenden Befehle setzen die korrekten Berechtigungen für smbpasswd, nachdem Sie die Datei erstellt haben:
chown -R root.root /usr/local/samba/privateWenn Sie die smbpasswd erstellt und Samba neu gestartet haben, können Ihre Windows-Benutzer ihre Passwörter ändern, und die smbpasswd wird aktualisiert. Die Unix-Passwörter für ihre Accounts auf dem Samba-Server werden jedoch nicht geändert, es sei denn, Sie richten weitere globale Parameter in Ihrer smb.conf ein.
Sie können Samba so einrichten, dass es das Unix-Passwort eines Benutzers ändert, wenn dieser sein Windows-Passwort ändert. Dafür müssen Sie den Parameter unix password sync benutzen und eventuell auch die Parameter passwd chat, passwd chat debug und passwd program setzen.
Diese Funktionalität ist verfügbar, weil Samba jetzt den API-Aufruf für die Passwortänderung unterstützt und Zugriff auf die Klartextversion des neuen Passworts des Benutzers hat. Sie sollten jedoch wissen, dass die neuen Informationen verschlüsselt über das Netzwerk übertragen werden.
Da die entsprechenden Informationen verfügbar sind, kann Samba für den Benutzer die Ausführung eines Befehls organisieren, der die Passwortänderung auch in die Unix-Umgebung überträgt. Dieser Befehl kann einfach /bin/passwd sein oder auch /bin/yppasswd oder ein entsprechender lokaler Passwortbefehl.
In den folgenden Abschnitten sind die smb.conf-Parameter dargestellt, die für die Passwortsynchronisation relevant sind.
Dieser globale Parameter spezifiziert, ob Samba versucht, das Unix-Passwort eines Benutzers zu synchronisieren, wenn das Windows-Passwort dieser Person in smbpasswd geändert wird. Ist der Parameter auf True eingestellt, wird das über den Parameter passwd program definierte Programm als root aufgerufen, um das Passwort des Benutzers unter Unix zu ändern. Das Passwortprogramm muss als root aufgerufen werden, da Samba keinen Zugriff auf die Klartextversion des alten Benutzerpassworts hat. Der Standardwert für diesen Parameter ist:
unix password sync = FalseDamit Samba Passwortänderungen synchron hält, ändern Sie diesen Wert auf True.
Dieser globale Parameter spezifiziert die Passwort-Chat-Sequenz, die Samba verwendet, um das Passwort des Benutzers unter Unix zu ändern, wenn diese Person ihr Windows-Passwort ändert. Dieser String nimmt die Form einer Sequenz von Ein- und Ausgabepaaren an, die der smbd benutzt, um festzulegen, was er an das passwd-Programm senden und was er zurückbekommen sollte. Empfängt der smbd nicht die erwartete Antwort, wird das Passwort des Benutzers nicht geändert.
Die Chat-Sequenz ist normalerweise spezifisch für Ihr Unternehmen und hängt ab von der Ausgabeform für Meldungen des Befehls passwd oder yppasswd auf Ihrem System bzw. des Befehls, den Sie für die Änderungen von Passwörtern auf Ihrem System verwenden.
Die Chat-Sequenz kann die Makros %o und %n enthalten, die durch das alte bzw. neue Passwort ersetzt werden. Sie kann außerdem die üblichen Makros /n, /r, /t und /s enthalten, die für Zeilenvorschub, Wagenrücklauf, Tabulator bzw. Leerzeichen stehen.
Enthält der String in einer Antwort ein Sternchen (*), entspricht dies einer beliebigen Zeichenfolge. Zusätzlich können doppelte Anführungszeichen benutzt werden, um Strings mit eingebetteten Leerzeichen zu spezifizieren. Ein Punkt (.) in einem beliebigen Teil der Sequenz bedeutet, dass kein String gesendet wird, wenn der Punkt in einer Ausgabesequenz vorkommt, oder keine Antwort erwartet wird, wenn der Punkt in einer Antwortsequenz auftaucht. Der Standardwert für diesen Parameter ist:
passwd chat = \ *old*password* %o\n *new*password* %n\n *changed*Dieser globale Parameter bestimmt, ob das passwd-Chat-Skript im Debug-Modus laufen soll. Wenn eingeschaltet, werden die vom passwd-Programm erhaltenen und an das Programm gesendeten Strings mit einem Debug-Level von 100 protokolliert. Um den String sehen zu können, müssen Sie Ihren Debug-Level auf 100 einstellen.

![]()
Diese Option ist gefährlich, da sie dazu führt, dass Klartextpasswörter in der passwd-Datei gesehen werden können.
![]()
Der Standardwert für diesen Parameter ist:
passwd chat debug = FalseDieser globale Parameter teilt dem smbd mit, welches Programm gestartet wird, um das Unix-Passwort eines Benutzers zu ändern. Jedes vorkommende %u wird durch den Benutzernamen in der Befehlszeile ersetzt. Der Standardwert für diesen Parameter ist:
passwd program = /bin/passwdSie sollten diesen Parameter nicht ändern müssen.
Zwar können über die Parameter unix password sync und passwd chat die Passwortänderungen, die auf Windows-Systemen durchgeführt wurden, in Ihrem Unix-Passwortsystem reflektiert werden, aber wie sieht es mit Änderungen von Unix-Passwörtern aus?

![]()
Einer der Ansätze für die Verwaltung der Authentifizierung und Synchronisation in einer Unix-Umgebung ist die Anwendung der PAM oder Pluggable Authentication Modules. PAM sind eine Technik, die von Sun Microsystems entwickelt und in Solaris und Linux implementiert wurde. Es gibt außerdem Unterstützung im OSF CDE (Common Desktop Environment), das von Unix-Herstellern für ihre Workstations weitestgehend unterstützt wird. Es ist jedoch nicht klar, ob PAM in diesen Umgebungen für Systemadministratoren zugänglich sind.
![]()
PAM stellen sicher, dass alle Authentifizierungsentscheidungen über Shared Libraries mit definierten Eintrittspunkten implementiert werden. Die für jeden Authentifizierungstyp zu verwendenden Bibliotheken sind in einer Sammlung von Konfigurationsdateien für die PAM spezifiziert. Der Systemadministrator kann dann die entsprechende PAM-Konfigurationsdatei ändern, um die Art und Weise zu ändern, in der die Authentifizierung durchgeführt wird. PAM spezifizieren die Eingangspunkte für die Authentifizierung, die Änderung von Passwörtern und viele andere sicherheitsrelevante Funktionen. Weitere Informationen über PAM finden Sie in Ihrer Sytemadministrationsdokumentation oder auf folgenden Webseiten:
http://www.sun.org/software/solaris/pamMindestens drei PAM-Shared-Libraries ermöglichen Unix-Systemen die Authentifizierung über SMB-Server (entweder Samba oder Windows NT). Eine ermöglicht den Benutzern unter eingeschränkten Bedingungen, sowohl ihre Unix- als auch ihre SMB-Passwörter zu ändern. Diese Bibliotheken sind:
Sie erhalten pam_smb über folgende Website: http://www.csn.ul.ie/~airlied/pam_smb.
Wenn Sie das Paket auf Ihr System kopiert haben, müssen Sie es in einem lokalen Verzeichnis entpacken und dann übersetzen und für die Benutzung konfigurieren. Benutzen Sie folgenden Befehl, um das Paket zu entpacken, wenn die tar-Version auf Ihrem System gzip-Archive unterstützt:
tar zxvf pam_smb-1_1_tar.gzUnterstützt Ihre tar-Version keine gzip-Archive, verwenden Sie folgenden Befehl:
gzip -d pam_smb-1_1_tar.gzWenn Sie das Archiv entpackt haben, sollten Sie in das Verzeichnis wechseln, das den pam_smb-Source-Code enthält, und das Paket kompilieren. Die notwendigen Schritte sind:
cd <Source-Verzeichnis>Damit sollten Sie eine Datei namens pam_smb_auth.sp erhalten. Diese Datei müssen Sie in das Verzeichnis für die PAM kopieren, das unter Linux /lib/security und unter Solaris /usr/lib/security ist.
Ihr nächster Schritt besteht darin, PAM für die Benutzung des neuen Moduls, das Sie erstellt haben, zu konfigurieren. Dafür müssen Sie die verschiedenen PAM-Konfigurationsdateien editieren und die Datei pam_smb.conf in /etc erstellen.
Sie brauchen folgende Änderungen in den PAM-Konfigurationsdateien. Für Linux müssen Sie /etc/pam.d/login bearbeiten und folgende Zeile hinzufügen:
auth required /lib/security/pam_smb_auth.soDiese Zeile sollte vor der Zeile für pam_pwdb.so, aber hinter die Zeile für pam_securetty.so eingefügt werden.
Dies teilt PAM mit, dass zuerst Sicherheitsanforderungen überprüft und dann über pam_smb_auth.so authentifiziert werden sollte.
Für Solaris müssen die Zeile other in /etc/pam.conf folgendermaßen ändern:
other auth required /usr/lib/security/pam_smb_auth.so.1Sowohl für Linux als auch Solaris können Sie in der Befehlszeile Parameter einfügen, darunter:
pam_smb_auth funktioniert auf folgende Art und Weise, wenn sich ein Benutzer in ein Unix-System einloggt:
Die pam_smb-Konfigurationsdatei (/etc/pam_smb.conf) ist eine einfache Textdatei, die die folgenden drei Zeilen enthält:
DomänennameFür die Umgebung, die Sie in diesem Buch eingerichtet haben, kann diese Datei z.B. wie folgt aussehen:
FOWLPLAY
![]()
Da pam_smb auf SMBlib basiert, das keine NetBIOS-Namensauflösungen durchführt, müssen alle Namen in der pam_smb-Konfigurationsdatei in Ihrer Hosts-Datei oder dem DNS verfügbar sein.
![]()
Dieses Modul ermöglicht es den Benutzern nicht, ihre Passwörter auf Remote-SMB-Servern zu aktualisieren, also können Benutzer ihr SMB-Passwort nicht von Unix-Rechnern aus ändern. Dies müssen sie von einem Windows-System aus tun.
Sie erhalten pam_ntdom aus dem Verzeichnis /samba/ftp/pam_ntdom/ auf Ihrer bevorzugten Samba-Mirror-Website. Um zu diesem Verzeichnis zu kommen, wechseln Sie zu Ihrer Mirror-Site und wählen den Download-Link, der Sie zur HTTP-Site führt. Sie müssen im Wesentlichen die gleichen Schritte ausführen wie für pam_smb, um pam_ntdom zum Laufen zu bringen, da die Aufbauumgebung für pam_ntdom auf der von pam_smb basiert. Das heißt:
Wenn Sie pam_ntdom übersetzt haben, sollten Sie eine Datei namens pam_ntdom_auth.so im Source-Verzeichnis vorfinden. Diese Datei müssen Sie in das entsprechende Verzeichnis kopieren, wie vorher beschrieben (/lib/security für Linux-Systeme und /usr/lib/security für Solaris-Systeme).
Der nächste Schritt besteht darin, PAM in einer ähnlichen Art und Weise zu konfigurieren, wie ich es vorher für pam_smb beschrieben habe.
Für ein Linux-System fügen Sie die folgende Zeile in /etc/pam.d/login ein:
auth required /lib/security/pam_ntdom_auth.soDiese Zeile sollte vor der auth-Zeile für security und hinter der für pwdb, falls in Ihrer PAM-Konfiguration enthalten, eingefügt werden.
Für ein Solaris-System ändern Sie die Zeile other in /etc/pam.conf wie folgt:
other auth required /usr/lib/security/pam_ntdom_auth.so.1Dieses Modul unterstützt die gleichen Optionen, die pam_smb unterstützt, mit der gleichen Bedeutung. (Tatsächlich ist der Code für pam_ntdom im Wesentlichen der gleiche wie für pam_smb, nur mit geänderter Authentifizierungsroutine.)
Abschließend müssen Sie die pam_ntdom-Konfigurationsdatei einrichten, die /etc/pam_smb.conf heißt. Die Einträge in dieser Datei sind die gleichen wie für pam_smb und haben die gleiche Bedeutung. Eine Beispielkonfigurationsdatei wäre:
[root@remote1] ls /etc/pam_smb.confDiese Datei spezifiziert, dass die Authentifizierung über die Domäne FOWLPLAY durchgeführt wird, der primäre Authentifizierungsserver ist EAGLE und der sekundäre EAGLE2.
pam_ntdom unterstützt nur die Authentifizierung über Domänen-Controller, so dass die vorher spezifizierten Server Windows Domain Controller (PDCs oder BDCs) oder ein Samba-Server, der als Primary Domain Controller konfiguriert ist, sein müssen.
Damit ein Unix-System pam_ntdom für die Authentifizierung in einer Domäne laufen lassen kann, muss das Unix-System der Domäne hinzugefügt werden. Dies wird über zwei verschiedene Methoden erreicht, abhängig davon, ob die Authentifizierung über Windows-NT-Domänen-Controller oder Samba als Domänen-Controller stattfindet.
Damit ein Unix-System über einen Windows-NT-Domänen-Controller authentifizieren kann, müssen Sie ein solches Unix-System manuell über den Server-Manager für Domänen in die Domäne einfügen. Abbildung 16.4 zeigt ein Beispiel für das Hinzufügen eines Computers in eine Domäne. Sie müssen das Unix-System als eine Windows-NT-Workstation oder einen NT-Server hinzufügen.
Abb. 16.4: Einer Windows-NT-Domäne ein Unix-System hinzufügen
Für die Authentifizierung über einen Samba-Server, der als PDC läuft, müssen Sie der Samba-Domäne jedes Unix-System, das authentifizieren will, hinzufügen. Dies wird in der Datei NTDOMAIN.txt im Samba-Dokumentationsverzeichnis (docs/textdocs) beschrieben.
pam_ntdom ermöglicht es Unix-Benutzern derzeit nicht, ihre Passwörter von Unix aus zu ändern. Sie müssen die Änderungen von einem Windows-System durchführen. pam_ntdom wird aber wahrscheinlich bald Funktionen zur Passwortänderung bieten können.
Sie erhalten pam_smbpass unter ftp://ftp.netexpress.net/pub/pam. Es ist als Source-Distribution (pam_smbpass-0_5.tgz) oder als ein RedHat-rpm verfügbar. Sie können sich eine Distribution aussuchen, aber hier nehme ich an, dass Sie sich für die Source-Distribution entschieden haben. Dieses Modul ist Linux-spezifisch und für die Systeme möglich, die PAM unterstützen.
Folgende Schritte müssen Sie für dieses Paket ausführen:
Wenn Sie die Distribution übersetzt haben, müssen Sie das resultierende Modul nach /lib/security kopieren:
cp pam_smbpass.so /lib/securityDer nächste Schritt besteht darin, die korrekte PAM-Konfigurationsdatei in ähnlicher Art und Weise wie für pam_smb und pam_ntdom aufgelistet zu modifizieren. Fügen Sie dafür /etc/pam.d/login folgende Zeile hinzu:
auth required /lib/security/pam_ntdom_auth.soDie Zeile sollte hinter der auth-Zeile für security eingefügt werden und die Zeile für pwdb ersetzen, wenn sie in Ihrer PAM-Konfigurationsdatei vorhanden ist.
Dieses Modul akzeptiert die folgenden PAM-Befehlszeilenoptionen:
Der Vorteil des pam_smbpass-Moduls liegt darin, dass es sowohl die passwd-Datei als auch die smbpasswd-Datei auf einem Samba-Server aktualisieren kann. Dies gibt Benutzern eine Methode, ihre Passwörter von Unix aus zu modifizieren und sowohl ihr Unix- als auch ihr Windows-Passwort ändern zu lassen. In dieser Hinsicht ist das Modul allen anderen PAM-Modulen, die Sie sich bisher angesehen haben, überlegen.
pam_smbpass kann aber nur die smbpasswd-Datei auf dem Rechner ändern, auf dem es läuft. Das heißt, es kann nicht in einer Umgebung benutzt werden, in der Sie mehrere Unix-Systeme haben und Benutzer sich in jedes Unix-System einloggen können, um ihr Passwort zu ändern.
Wenn Ihre Umgebung groß ist und aus vielen Unix-Systemen mit einer großen Anzahl an Windows-Systemen besteht, nützt Ihnen wahrscheinlich keiner der bisher dargestellten Ansätze. Das liegt hauptsächlich daran, dass es derzeit keinen weithin implementierten einzelnen Standard für Passwordstandorte oder -datenbanken gibt.
Über die letzten paar Jahre hat sich ein Standard namens Lightweight Directory Access Protocol oder LDAP entwickelt, der verspricht, die Probleme zu reduzieren, auf die Sie derzeit in Hinsicht auf die Passwortsynchronisierung treffen, indem Passwörter an einem Ort gehalten werden. Die LDAP-Unterstützung für Samba befindet sich derzeit noch in der Entwicklungsphase. Für alle Unix-Versionen wird eine Interaktion mit LDAP erwartet, ebenso für zukünftige Windows-Versionen.
Wenn alle Systeme in Ihrer Umgebung LDAP für die Aufbewahrung und Änderung von Passwörtern benutzen, wird es keine Problem in Hinsicht auf die Passwortsynchronisierung mehr geben.
In Anhang C, »Sambas Zukunft«, finden Sie weitere Informationen über die zukünftige Unterstützung für LDAP in Samba.
Das verbleibende Problem mit dem größten Teil der Ansätze für Passwortsynchronisierung, die Sie sich bis hierher angesehen haben, ist, dass sie von Windows zu Unix funktionieren, nicht aber von Unix zu Windows. Zukünftige Versionen einiger Module, wie z.B. pam_smb und pam_ntdom, werden den gleichen Code enthalten, den Samba derzeit für die entfernte Änderung von Passwörtern in einer Windows-Umgebung enthält, und daher auch dieses letzte Problem lösen.
Letztendlich liegt die Lösung des Problems jedoch in LDAP.
Sie haben sich die Möglichkeiten angesehen, die für Systemadministratoren zur Verfügung stehen, um sicherzustellen, dass Benutzerpasswörter zwischen ihren Windows- und Unix-Umgebungen abgeglichen werden. Leider gibt es derzeit noch einige Lücken in dem, was getan werden kann, aber wenn Ihr System aus einem einzelnen Unix-System besteht, das als Server für eine Anzahl von Windows-Systemen dient, wird das Leben für Sie relativ leicht sein.
Im nächsten Kapitel werden Sie sich die Unterstützung ansehen, die Samba für SSL bietet, damit Sie Zugang zu Windows-Datei- und Druckerressourcen über unsichere Netzwerke anbieten können.
Unser Unternehmen hat einen großen Samba-Server und eine große Anzahl an Windows-9x-Systemen, die darauf zugreifen. Einige der Benutzer müssen jedoch auch auf ihre Unix-Accounts zugreifen. Welches ist die beste Methode, um sicherzustellen, dass alle Passwortänderungen in beiden Umgebungen sichtbar sind?
Wenn Sie außer Ihrem Samba-Server keine anderen Unix-Systeme haben, besteht die beste Methode für Sie darin, verschlüsselte Passwörter in Samba und pam_smbpass für die Unix-Authentifizierung zu verwenden. So gelangen Passwortänderungen Ihrer Windows-Benutzer in die smbpasswd-Datei von Samba, und alle Änderungen durch Ihre Unix-Benutzer werden auch in der smbpasswd-Datei durchgeführt.
Haben Sie jedoch mehr als ein Unix-System, können Benutzer von anderen Unix-Rechnern als Ihrem Samba-Server Ihre Windows-Passwörter nicht von diesen Rechnern aus ändern, sondern nur vom Samba-Server aus. Auf diesen anderen Unix-Systemen kann die Authentifizierung immer noch über pam_smb anhand der smbpasswd-Datei durchgeführt werden, aber Passwortänderungen gelangen nicht in die smbpasswd-Datei.
Können wir etwas wie pam_smb verwenden, um Authentifizierung über einen Samba-Server durchzuführen, der als Primary Domain Controller läuft. Wenn ja, welche Einschränkungen gibt es?
Ja, pam_smb kann für die Authentifizierung über einen Samba-Server, der als PDC läuft, verwendet werden. Die Einschränkungen liegen darin, dass solche Benutzer ihre Passwörter nicht von Unix aus aktualisieren können. Sie müssen dies von Windows aus tun.
Gibt es andere Methoden für die Änderung von Benutzerpasswörtern als die Verwendung der Standard-Windows- oder Unix-Funktionen?
Ja, SWAT kann Passwörter über das Standard-Windows-NT-API für die Passwortänderung ändern. Wenn Sie aber mit SWAT kommunizieren, werden Ihr altes und Ihr neues Passwort in Klartext über das Netzwerk übertragen.
PAM - Pluggable Authentication Modules. PAM wurden von Sun Microsystems entwickelt, von der Linux-Gemeinde aufgegriffen und werden weitreichend in Linux-Distributionen eingesetzt.
![]()