snoltzonuebingter
Goto Top

Samba 4 (kein DC) LDAP Authentication

Hallo zusammen,

evtl. kann mir jemand einen Hinweis zu dem o.g. Thema geben.

Ich möchte einen Samba 4 Server (installiert auf Debian 11) an ein OpenLDAP anbinden, sodass man kein separates Passwort für Samba benötigt.

Mein Ansatz war:

smb.conf:

- workgroup = EXAMPLE

#LDAP Settings
passdb backend = ldapsam:ldaps:[DNS des LDAP Servers]
ldap suffix = dc=[Domain],dc=de
ldap user suffix = ou=users
ldap group suffix = ou=groups
#ldap machine suffix = ou=Computers
#ldap idmap suffix = ou=Idmap
ldap admin dn = cn=admin,dc=[Domain],dc=de
ldap ssl = start tls
ldap passwd sync = yes

- samba.schema in OpenLDAP integrieren (ist auch verfügbar und Attribute können hinzugefügt werden)


Fehlermeldung:

Feb 09 16:56:16 vm smbd[2716078]: [2024/02/09 16:56:16.370871, 0] ../../source3/lib/smbldap.c:627(smbldap_start_tls)
Feb 09 16:56:16 vm smbd[2716078]: Failed to issue the StartTLS instruction: Operations error
Feb 09 16:56:17 vm smbd[2716078]: [2024/02/09 16:56:17.372581, 0] ../../source3/passdb/pdb_ldap.c:6751(pdb_ldapsam_init_common)
Feb 09 16:56:17 vm smbd[2716078]: pdb_init_ldapsam: WARNING: Could not get domain info, nor add one to the domain. We cannot work reliably without it.
Feb 09 16:56:17 vm smbd[2716078]: [2024/02/09 16:56:17.372646, 0] ../../source3/passdb/pdb_interface.c:179(make_pdb_method_name)
Feb 09 16:56:17 vm smbd[2716078]: pdb backend ldapsam:ldaps:
[HOST] did not correctly init (error was NT_STATUS_CANT_ACCESS_DOMAIN_INFO)
Feb 09 16:56:17 vm systemd[1]: smbd.service: Main process exited, code=exited, status=1/FAILURE
The process' exit code is 'exited' and its exit status is 1.
Feb 09 16:56:17 vm systemd[1]: smbd.service: Failed with result 'exit-code'.
The unit smbd.service has entered the 'failed' state with result 'exit-code'.
Feb 09 16:56:17 vm systemd[1]: Failed to start Samba SMB Daemon.

Irgendwie sieht es nach ACL (error was NT_STATUS_CANT_ACCESS_DOMAIN_INFO) oder TLS Fehler aus. Ein entsprechendes Cert ist aber eigentlich auf beiden Servern installiert (über SSSD werden User gesynct, das klappt soweit über 636).


Leider komme ich an dieser Stelle nicht weiter. In der Suche gibt es nur diese zwei Themen, welche nicht gelöst wurden:

- Samba Server mit LDAP Authentifizierung
- SAMBA über LDAP authentifizieren

Online findet man zumeist nur Setups, welche sich auf die DC bzw. PDC Variante konzentrieren.

Viele Grüße

Content-Key: 92357029972

Url: https://administrator.de/contentid/92357029972

Printed on: May 2, 2024 at 02:05 o'clock

Member: Harald99
Harald99 Feb 09, 2024 at 21:24:53 (UTC)
Goto Top
Versuch es mal mit SSSD.
Allerdings reicht Authentication alleine nicht aus, wem sollen denn die Dateien gehören?
Member: ITwissen
ITwissen Feb 10, 2024 at 07:52:18 (UTC)
Goto Top
Der Fehlermeldung nach bricht das schon beim Verbindungsaufbau ab.
Hast du OpenLDAP für "start_tls" konfiguriert?

ldaps ist nicht start_tls, das sind zwei ganz unterschiedliche Dinge.

ldaps = ssl und ist ausserhalb des LDAP Protokolls

start_tls ist Teil vom LDAP Protokoll und kann mit ldap:und ldaps: verwendet werden.
Member: SnoltzonUebingter
SnoltzonUebingter Feb 10, 2024 at 12:37:29 (UTC)
Goto Top
Hallo ihr beiden, danke schonmal für eure Antworten face-smile

@Harald99: SSSD ist schon vorher konfiguriert gewesen für die Authentifizierung und funktioniert für die User ins Linux. Aber Samba möchte ja noch ein weiteres Credential; aktuell über smbpasswd, dies möchte ich eigentlich zusammenführen. Habe dazu schon versucht, Samba auf PAM umzuleiten, aber das klappt nicht, da Samba ja die Logindaten über das "sambaNTPassword" Feld braucht. Oder gibt es da noch einen Trick?

@ITwissen: Du hast recht, unser OpenLDAP lauscht auf SSL und nicht TLS. Ich versuche erstmal einen Test mit einem LDAP, welches mit TLS integriert ist. Evtl. klappt das.

Viele Grüße
Member: Harald99
Harald99 Feb 10, 2024 at 12:46:12 (UTC)
Goto Top
Es gab mal ein Legacymodul, mit dem das einfach ging. Dies wurde von Samba einfach entfernt und fiel bei Debian 11 dann plötzlich weg.
Member: mbehrens
mbehrens Feb 10, 2024 at 21:15:58 (UTC)
Goto Top

Ich möchte einen Samba 4 Server (installiert auf Debian 11) an ein OpenLDAP anbinden, sodass man kein separates Passwort für Samba benötigt.

Meiner Meinung nach ist dies ohne ein AD nicht möglich.
Member: ITwissen
ITwissen Feb 11, 2024 at 16:17:25 (UTC)
Goto Top
Quote from @mbehrens:


Meiner Meinung nach ist dies ohne ein AD nicht möglich.

Nicht unbedingt, aber ich denke ich weiss was du meinst.
Da die Passwort-Hashs von Windows und Linux nicht kompatibel sind, muss im LDAP pro User auch die Windows Passwort-Hashs abgelegt werden.
Das samba.schema fügt die Attribute "lmPassword" und "ntPassword" dem OpenLDAP hinzu.
Aber diese Attribute mit Werten zu füllen ist ein ganz anderes Thema.

Ich bin aber nicht sicher, ob der TO sich dessen bewusst ist.

Abgesehen davon ist mir nicht klar, ob der TO das OpenLDAP hat, weil er damit Linux User Authentifiziert und dies jetzt auf Windows Shares ausweiten will.

Der einfachere Weg wäre vermutlich Samba zum AD zu machen und auf den Linux Rechner mit Winbind den Samba-AD anzubinden.
Wenn denn die Windows Clients Teil vom Samba-AD sind, brauchen sie für die Samba-Shares auch kein zusätzliches Passwort mehr eingeben.

Klassisches XY Problem ?
Member: SnoltzonUebingter
SnoltzonUebingter Feb 11, 2024 updated at 16:35:04 (UTC)
Goto Top
Leider sind unsere Windows Clients an einem "globalen AD" des Mutterkonzerns angebunden, darauf haben wir in unserer Abteilung keinen Zugriff und können dies leider auch nicht umstellen.

Wir betreiben vor Ort aber eine "eigene" Linuxinfrastruktur und dazu haben wir u.a. auch das OpenLDAP um die Clients in dieses Netz zu authentifizieren. Innerhalb dieser Linuxinfrastruktur gibt es Daten, welche über SMB an die Windows Clients "gereicht" werden, aber eben leider aktuell über ein zusätzliches Passwort, welches von Samba erwartet wird.

Zitat von ITWissen:

Das samba.schema fügt die Attribute "lmPassword" und "ntPassword" dem OpenLDAP hinzu.
Aber diese Attribute mit Werten zu füllen ist ein ganz anderes Thema.

Ich bin aber nicht sicher, ob der TO sich dessen bewusst ist.

Ja, dessen bin ich mir bewusst und habe das samba.schema auch schon im LDAP integriert, welches die nötigen Attribute abspeichern "kann". "Kann" steht hier für "mir ist noch nicht klar, wie Samba dies bewerkstelligen wird bzw. ob das überhaupt aktuell möglich ist".

Viele Grüße
Member: Harald99
Harald99 Feb 11, 2024 at 19:50:22 (UTC)
Goto Top
Dann musst du wohl SSSD mit Samba zusammenbringen.
Leider habe ich keine Anleitung, bei mir ist das Thema auch noch offen.
Member: ITwissen
ITwissen Feb 12, 2024 at 06:44:00 (UTC)
Goto Top
Quote from @Harald99:

Dann musst du wohl SSSD mit Samba zusammenbringen.
Leider habe ich keine Anleitung, bei mir ist das Thema auch noch offen.

Gleiches Problem.
Auch SSSD kann mit dem Windows Passwort-Hashs nichts anfangen.

Immer beachten, es gibt hier zwei Richtungen.
1. Authentifizierung von Windows Clients an Linux Samba-Shares
2. Authentifizierung von Linux-Clients (z.B. ssh, console login) an Windows/Samba-AD

Bei 2 geht das via Winbind oder SSSD (genaugenommen NSS), da hier beim Login das Klartext Passwort zur Verfügung steht (ssh mit Key Login ausgenommen, aber dabei wird kein Passwort geprüft).

Bei 1 ist genau das nicht der Fall. Es gibt kein Klartext Passwort (zumindest seit Samba 4), somit muss der Passwort Hash benutzt werden. Der Passwort Hash muss dann aber in der Passwort Datenbank (ldapsam, tdbsam) vorhanden sein.
Alternativ, wenn die Clients im AD sind, dann kann mit Kerberos (Winbind) gearbeitet werden, was ganz grob gesagt dem SSH-Key Login entspricht. Was wir aber hier nicht haben.
Member: Harald99
Harald99 Feb 12, 2024 at 07:50:57 (UTC)
Goto Top
Ich habe das wohl doch mal geschafft, allerdings waren dann die User-IDs im Eimer.
Member: clubfreund
clubfreund Feb 12, 2024 at 08:43:00 (UTC)
Goto Top
Moin,

Leider sind unsere Windows Clients an einem "globalen AD" des Mutterkonzerns angebunden, darauf haben wir in unserer Abteilung keinen Zugriff und können dies leider auch nicht umstellen.

Den Samba zum Domain Member zu machen ist aus o.g. Gründen dann wohl nicht möglich?

cf
Member: Harald99
Harald99 Feb 12, 2024 at 08:51:44 (UTC)
Goto Top
Mit einem UCS-Server klappt das bestimmt.
Member: ITwissen
ITwissen Feb 12, 2024 at 09:19:43 (UTC)
Goto Top
Quote from @Harald99:

Ich habe das wohl doch mal geschafft, allerdings waren dann die User-IDs im Eimer.

Dann bist/warst du bei Fall Nr. 2
Member: Harald99
Harald99 Feb 12, 2024 at 09:30:44 (UTC)
Goto Top
Zitat von @ITwissen:

Quote from @Harald99:

Ich habe das wohl doch mal geschafft, allerdings waren dann die User-IDs im Eimer.

Dann bist/warst du bei Fall Nr. 2

ja.
Member: SnoltzonUebingter
Solution SnoltzonUebingter Feb 12, 2024 updated at 15:22:08 (UTC)
Goto Top
Leute ich habs hinbekommen! Dank euren Hinweisen und noch ein wenig "herumgeteste" hat es geklappt, ohne dass der Samba Server in die Windows Domain ziehen musste. Auch Winbind habe ich nicht benötigt.

Wichtig hierbei sind folgende Dinge gewesen:

Zitat von @ITwissen

Der Fehlermeldung nach bricht das schon beim Verbindungsaufbau ab.
Hast du OpenLDAP für "start_tls" konfiguriert?

ldaps ist nicht start_tls, das sind zwei ganz unterschiedliche Dinge.

ldaps = ssl und ist ausserhalb des LDAP Protokolls

start_tls ist Teil vom LDAP Protokoll und kann mit ldap:und ldaps: verwendet werden.

Über /etc/defaults/slapd wieder “ldap:/" (3 Slashes in Summe; werden hier irgendwie ausgeblendet) hinzugefügt. Und testbar mit ldapwhoami -x -ZZ -H [LDAP Server] (wie hier: https://ubuntu.com/server/docs/service-ldap-with-tls)

Man braucht den ersten Teil der User SID, die der Samba Server selber benutzt. Auslesbar mit “pdbedit -L -v” eines lokal angelegten Benutzers per smbpasswd (ohne “passdb backend” in der Config; also default lassen).

Im LDAP dem Testuser die “User SID” zuweisen + [UID*2+1000]
Beispiel:
- User SID am Samba Servers: S-1-5-21-123456789-123456789-123456789-1001
- den letzten part (-1001) entfernen
- geplante uidNumber des Users auf dem Samba Server: 1001
- uidNumber*2+1000 = 3002
- sambaSID im LDAP muss also sein: S-1-5-21-123456789-123456789-123456789-3002

Danach Samba umschalten auf “passdb backend = ldapsam:ldap:[LDAP Server]” und smb5k-passwd am OpenLDAP Server aktivieren: https://bangdash.space/2021/01/syncing-ldap-passwords-with-samba/ (!Achtung bei der Nummerierung bei "olcModuleLoad: {1}smbk5pwd.la"; steht aber auch im Text)

Wenn man jetzt sein Passwort im LDAP ändert, werden die Attribute “sambaLMPassword” und “sambaNTPassword” automatisch aktualisiert und korrekt gesetzt.
Beispiel: ldappasswd -H ldap://[LDAP Server] -x -D “[user DN]” -W -A -S (erst zweimal das old pw, dann zweimal das new pw und abschließend noch einmal das old pw)

Und so hat ein Mount aus Windows heraus bei mir funktioniert, indem ich die Credentials aus dem LDAP genommen habe.

Ich danke euch für eure Hilfe und hoffe, dass diese Anleitung einigen Personen hilfreich erscheinen wird face-smile

EDIT: Ich weiß nicht mehr genau, was hiervon wichtig war, hatte ich aber auch so umgesetzt: https://ubuntu.com/server/docs/samba-openldap-backend (spätestens beim Punkt "Samba configuration" war es wichtig, dass admin Passwort zu setzen)
Member: Harald99
Harald99 Feb 12, 2024 at 13:03:00 (UTC)
Goto Top

Im LDAP dem Testuser die “User SID” zuweisen + [UID*2+1000]
Beispiel:
- User SID am Samba Servers: S-1-5-21-123456789-123456789-123456789-1001
- den letzten part (-1001) entfernen
- geplante uidNumber des Users auf dem Samba Server: 1001
- uidNumber*2+1000 = 3002
- sambaSID im LDAP muss also sein: S-1-5-21-123456789-123456789-123456789-3002

Manuelles Usermapping???
Member: SnoltzonUebingter
SnoltzonUebingter Feb 12, 2024 at 13:05:22 (UTC)
Goto Top
Zitat von @Harald99:


Im LDAP dem Testuser die “User SID” zuweisen + [UID*2+1000]
Beispiel:
- User SID am Samba Servers: S-1-5-21-123456789-123456789-123456789-1001
- den letzten part (-1001) entfernen
- geplante uidNumber des Users auf dem Samba Server: 1001
- uidNumber*2+1000 = 3002
- sambaSID im LDAP muss also sein: S-1-5-21-123456789-123456789-123456789-3002

Manuelles Usermapping???

Ja leider, aber damit kann ich leben. Wir haben nicht so viele User und mir ging's eher darum die Passwörter aus dem LDAP abzufragen, um kein extra Passwort auf dem Samba Server mehr zu haben.
Member: Harald99
Harald99 Feb 12, 2024 at 13:12:03 (UTC)
Goto Top
Ich guck mir das noch mal an.
Was aber auch geht, mit smbpassword das Passwort auf das AD-Passwort zu setzen.
Dann kannst du direkt mit Windows auf die Freigaben gehen.
Member: SnoltzonUebingter
SnoltzonUebingter Feb 12, 2024 updated at 13:35:36 (UTC)
Goto Top
Zitat von @Harald99:

Ich guck mir das noch mal an.
Was aber auch geht, mit smbpassword das Passwort auf das AD-Passwort zu setzen.
Dann kannst du direkt mit Windows auf die Freigaben gehen.

Dann müsste doch aber jeder User beim Passwortwechsel im LDAP auch einmal noch auf den Samba Host gehen und es dort eingeben. Das wäre etwas unpraktisch.

Edit: Wobei ich merke gerade, dass man smbpasswd nur als root ausführen bzw. nicht im Userspace. Evtl. verstehe ich deinen Kommentar nicht richtig.
Member: Harald99
Harald99 Feb 12, 2024 at 13:42:21 (UTC)
Goto Top
Doch jeder User kann sein Samba-Passwort ändern.
Vielleicht kann man da auch was scripten.
Member: SnoltzonUebingter
SnoltzonUebingter Feb 12, 2024 at 13:52:43 (UTC)
Goto Top
Zitat von @Harald99:

Doch jeder User kann sein Samba-Passwort ändern.
Vielleicht kann man da auch was scripten.

Hast recht, ich hatte aus Angewohnheit den Parameter "-a" vergessen wegzulassen ;) Dies kann nur root.