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-ID: 92357029972

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

Ausgedruckt am: 22.11.2024 um 03:11 Uhr

Harald99
Harald99 09.02.2024 um 22:24:53 Uhr
Goto Top
Versuch es mal mit SSSD.
Allerdings reicht Authentication alleine nicht aus, wem sollen denn die Dateien gehören?
ITwissen
ITwissen 10.02.2024 um 08:52:18 Uhr
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.
SnoltzonUebingter
SnoltzonUebingter 10.02.2024 um 13:37:29 Uhr
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
Harald99
Harald99 10.02.2024 um 13:46:12 Uhr
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.
mbehrens
mbehrens 10.02.2024 um 22:15:58 Uhr
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.
ITwissen
ITwissen 11.02.2024 um 17:17:25 Uhr
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 ?
SnoltzonUebingter
SnoltzonUebingter 11.02.2024 aktualisiert um 17:35:04 Uhr
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
Harald99
Harald99 11.02.2024 um 20:50:22 Uhr
Goto Top
Dann musst du wohl SSSD mit Samba zusammenbringen.
Leider habe ich keine Anleitung, bei mir ist das Thema auch noch offen.
ITwissen
ITwissen 12.02.2024 um 07:44:00 Uhr
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.
Harald99
Harald99 12.02.2024 um 08:50:57 Uhr
Goto Top
Ich habe das wohl doch mal geschafft, allerdings waren dann die User-IDs im Eimer.
clubfreund
clubfreund 12.02.2024 um 09:43:00 Uhr
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
Harald99
Harald99 12.02.2024 um 09:51:44 Uhr
Goto Top
Mit einem UCS-Server klappt das bestimmt.
ITwissen
ITwissen 12.02.2024 um 10:19:43 Uhr
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
Harald99
Harald99 12.02.2024 um 10:30:44 Uhr
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.
SnoltzonUebingter
Lösung SnoltzonUebingter 12.02.2024 aktualisiert um 16:22:08 Uhr
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)
Harald99
Harald99 12.02.2024 um 14:03:00 Uhr
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???
SnoltzonUebingter
SnoltzonUebingter 12.02.2024 um 14:05:22 Uhr
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.
Harald99
Harald99 12.02.2024 um 14:12:03 Uhr
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.
SnoltzonUebingter
SnoltzonUebingter 12.02.2024 aktualisiert um 14:35:36 Uhr
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.
Harald99
Harald99 12.02.2024 um 14:42:21 Uhr
Goto Top
Doch jeder User kann sein Samba-Passwort ändern.
Vielleicht kann man da auch was scripten.
SnoltzonUebingter
SnoltzonUebingter 12.02.2024 um 14:52:43 Uhr
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.