nach einem Posting auf linux.debian.user.german versuche ich es mal
hier noch:
Ich versuche hier seit einiger Zeit eine bis dato bewährte Kombination
von Samba, OpenLdap und TLS als PDC aufzusetzen.
Der Ldap-Server und der Samba-Server laufen beide auf je einem
Debian-(Lenny)-System.
PAM auf dem Samba-Server funktioniert mit tls, es gibt (offensichtlich)
keine Probleme. Die Anmeldung auf der Konsole des Samba-Servers mit im
Ldap gespeicherten Benutzern funktioniert. Ein Wechsel zwischen
Benutzern ist ebenso möglich.
Die smbldap-tools laufen auch mit tls.
Wenn ich den Samba-Server starte, bekomme ich auf dem LDAP-Server
folgende Fehlermeldung:
TLS: can't accept: The peer did not send any certificate..
und im Endeffekt kann ich mich nicht (z.B. per smbclient) zum
Samba-Server verbinden. Ich bekomme noch nichtmal eine Passwortabfrage.
Ohne tls läuft's.
Ich habe gelesen, dass Samba die Konfiguration von /etc/ldap/ldap.conf
nutzt. Stimmt das? Laut 'man ldap.conf' sind die Optionen
TLS_CERT <filename> und TLS_KEY <filename> aber "user-only options",
können also nicht in der /etc/ldap/ldap.conf angegeben werden bzw.
werden dort ignoriert. Ich hab sie trotzdem mal drin stehen.
Ich häng' da jedenfalls schon eine Weile fest und komm' nicht weiter.
Hat jemand eine Idee oder einen Tipp?
Gruss
Thomas
Du hast wahrscheinlich TLS so eingestellt, dass Client-Zertifikate
zwingend erforderlich sind. Prüfe mal den Wert für TLSVerifyClient in
der slapd.conf.
Ciao, Michael.
Hallo Michael,
sorry für die späte Rückmeldung. -
Dein Hinweis brachte mich vorerst zur einer Lösung. Ich habe den
TLSVerifyClient von demand auf allow gestellt. Allerdings gefällt das
insofern nicht, weil ich ja genau mit gültigen Zertifikaten arbeiten
möchte. Nur diese werden - aus welchem Grund auch immer - vom
Sambaclient nicht mitgesendet. Bis das funktioniert, muss ich wohl mit
'allow' leben.
Danke für deinen Tipp!
Gruss
Thomsa
Du möchtest wirklich TLS mit Client-Authentifizierung mittels
Client-Zertifikaten machen? Warum? Das wird nicht wirklich sicherer,
wenn Du den smbd ohne Passworteingabe starten willst, da der private
Schlüssel dann im Klartext auf der Platte liegen muss, ähnlich wie das
LDAP-Passwort in der smb.conf.
Hast Du für Samba überhaupt ein Client-Zertifikat ausgestellt?
Ich habe gerade nicht den Überblick, ob smbd via OpenLDAP Libs auch die
ldap.conf anzieht. Dort müsstest Du die Dateinamen des
Client-Zertifikats und -Keys eintragen. Welche ldap.conf anzogen wird,
solltest Du in der Man-Page von ldap.conf nachlesen. Du kannst beim
Start vom smbd die Umgebungsvariable LDAPCONF setzen, um eine bestimmte
anzugeben.
Ciao, Michael.
> Thomas Günther wrote:
> > Am Thu, 30 Apr 2009 14:31:11 +0200
> > schrieb Michael Ströder <mic...@stroeder.com>:
> >
> >> Thomas Günther wrote:
> >>> Wenn ich den Samba-Server starte, bekomme ich auf dem LDAP-Server
> >>> folgende Fehlermeldung:
> >>> TLS: can't accept: The peer did not send any certificate..
> >> Du hast wahrscheinlich TLS so eingestellt, dass Client-Zertifikate
> >> zwingend erforderlich sind. Prüfe mal den Wert für TLSVerifyClient
> >> in der slapd.conf.
> >
> > sorry für die späte Rückmeldung. -
> > Dein Hinweis brachte mich vorerst zur einer Lösung. Ich habe den
> > TLSVerifyClient von demand auf allow gestellt. Allerdings gefällt
> > das insofern nicht, weil ich ja genau mit gültigen Zertifikaten
> > arbeiten möchte. Nur diese werden - aus welchem Grund auch immer -
> > vom Sambaclient nicht mitgesendet. Bis das funktioniert, muss ich
> > wohl mit 'allow' leben.
>
> Du möchtest wirklich TLS mit Client-Authentifizierung mittels
> Client-Zertifikaten machen? Warum? Das wird nicht wirklich sicherer,
> wenn Du den smbd ohne Passworteingabe starten willst, da der private
> Schlüssel dann im Klartext auf der Platte liegen muss, ähnlich wie das
> LDAP-Passwort in der smb.conf.
Ich dachte schon, aber wenn du mir das jetzt so sagst, hast du
natürlich Recht, mit dem unverschlüsselten Cert-Key. Wobei die
Zugrifssrechte darauf eingeschränkt sind.
Auf der anderen Seite wäre es kein Problem, den Samba-Server händisch
zu starten und ein Passwort einzugeben.
> Hast Du für Samba überhaupt ein Client-Zertifikat ausgestellt?
Nein. Würde ich aber, wenn ich wüsste, wo das hin muss, damit Samba es
frisst.
> Ich habe gerade nicht den Überblick, ob smbd via OpenLDAP Libs auch
> die ldap.conf anzieht. Dort müsstest Du die Dateinamen des
> Client-Zertifikats und -Keys eintragen. Welche ldap.conf anzogen wird,
> solltest Du in der Man-Page von ldap.conf nachlesen. Du kannst beim
> Start vom smbd die Umgebungsvariable LDAPCONF setzen, um eine
> bestimmte anzugeben.
Soweit ich mich entsinne, habe ich gelesen, dass Samba die ldap.conf
nimmt. Ich habe eine in /etc/ldap liegen, die nach /etc/ldap.conf
verlinkt ist. Das sollte so ausreichen. CA-Cert, Server-Cert und -Key
sind alle mit angegeben. Wobei das ja genau das Problem ist: TLS_Cert
und TLS_Key sind user-only-Optionen. Wo müsste ich die denn überhaupt
angeben?
>
> Ciao, Michael.
Gruss
Thomas
Ich weiss nicht, was Deiner Meinung nach "user-only-Optionen" sind.
Meinst Du Client-Optionen? Samba ist ja ein LDAP-Client.
Letztlich sind die Optionen in ldap.conf(5) alle genau beschrieben.
Insbesondere auch, wie Du einem Prozess eine bestimmte ldap.conf
unterschiebst.
Ciao, Michael.
> Thomas Günther wrote:
> > Soweit ich mich entsinne, habe ich gelesen, dass Samba die ldap.conf
> > nimmt. Ich habe eine in /etc/ldap liegen, die nach /etc/ldap.conf
> > verlinkt ist. Das sollte so ausreichen. CA-Cert, Server-Cert und
> > -Key sind alle mit angegeben. Wobei das ja genau das Problem ist:
> > TLS_Cert und TLS_Key sind user-only-Optionen. Wo müsste ich die
> > denn überhaupt angeben?
>
> Ich weiss nicht, was Deiner Meinung nach "user-only-Optionen" sind.
> Meinst Du Client-Optionen? Samba ist ja ein LDAP-Client.
man -S 5 ldap.conf
Users may create an optional configuration file, ldaprc or .ldaprc, in
their home directory which will be used to override the system-wide
defaults file. The file ldaprc in the current working directory is also
used.
[...]
Some options are user-only. Such options are ignored if present in the
ldap.conf (or file specified by LDAPCONF).
Das meine ich damit. Nur wo schreibe ich das File hin, damit Samba es
nimmt?
> Letztlich sind die Optionen in ldap.conf(5) alle genau beschrieben.
> Insbesondere auch, wie Du einem Prozess eine bestimmte ldap.conf
> unterschiebst.
Das finde ich nicht oder mein Englisch reicht nicht aus. Könntest du
das mal zitieren?
> Ciao, Michael.
Gruss
Thomas
Hmm, ok. Ich benutze das in der Regel nicht.
> Das meine ich damit. Nur wo schreibe ich das File hin, damit Samba es
> nimmt?
smbd läuft als Benutzer root, also .ldaprc in dessen Home-Verzeichnis?
>> Letztlich sind die Optionen in ldap.conf(5) alle genau beschrieben.
>> Insbesondere auch, wie Du einem Prozess eine bestimmte ldap.conf
>> unterschiebst.
>
> Das finde ich nicht oder mein Englisch reicht nicht aus. Könntest du
> das mal zitieren?
Du hast es schon selbst zitiert (s.o.). ;-)
Du könntest auch versuchen, zusätzliche Env-Vars im Samba-Startskript zu
setzen (aus ldap.conf(5)):
Environmental variables may also be used to augment the
file based defaults. The name of the variable is the
option name with an added prefix of LDAP. For example,
to define BASE via the environment, set the variable
LDAPBASE to the desired value.
Probieren geht hier über studieren.
Ciao, Michael.
[...]
> > Some options are user-only. Such options are ignored if present in
> > the ldap.conf (or file specified by LDAPCONF).
>
> Hmm, ok. Ich benutze das in der Regel nicht.
>
> > Das meine ich damit. Nur wo schreibe ich das File hin, damit Samba
> > es nimmt?
>
> smbd läuft als Benutzer root, also .ldaprc in dessen Home-Verzeichnis?
Das wäre mal eine Massnahme. Ich werde es gelegentlich probieren. Ich
muss nur den Rest nochmal überarbeiten, meine LDAP-Struktur gefällt
mir noch nicht. :)
[..]
> Du könntest auch versuchen, zusätzliche Env-Vars im Samba-Startskript
> zu setzen (aus ldap.conf(5)):
>
> Environmental variables may also be used to augment the
> file based defaults. The name of the variable is the
> option name with an added prefix of LDAP. For example,
> to define BASE via the environment, set the variable
> LDAPBASE to the desired value.
>
> Probieren geht hier über studieren.
Dann probiere ich mal. Vielen Dank für deine Hilfe bis hier!
>
> Ciao, Michael.
Gruss
Thomas