Am Samstag, 22. Mai 2004 12:06 schrieb Sven Gehr:
Die SASL-Library regelt die Übertragung und den Handshake bei den verschiedenen Protokollen, wie z.B. SMTP, POP3, IMAP. Der Vollständigkeit halber bringt diese auch den Zugriff auf die Userdaten (z.B. Name und Passwort) mit. Und hierfür ist dann PAM eine Alternative. Du kannst also durchaus SASL und PAM verwenden. In aktuellen SASL-Versionen kommt dann da der saslauthd ins Spiel.
Das bedeutet ich kann meine User/Passwort - Kombinationen im LDAP-Verzeichnis haben, was ja auch bereits der Fall ist. Diese sind hier als MD5-Hashwert gespeichert. Als 'Login-Mechanismus' benutze ich wie ebenfalls breits eingerichtet PAM und SASL regelt nur den eigentlichen Verbindungsaufbau.
Hierzu läuft der Dienst saslauth. Dieser läßt sich über den Sysconfig (Yast) auf verschiedene Werte einstellen:
Option: SASL_AUTHMECH Mögliche Werte: ldap, getpwent, kerberos, pam rimap, shadow
Hier ist mir nicht klar ob ich ldap oder pam einstellen muß. Dies wäre mir
saslauthd -> pam -> pam_ldap -> ldap-server saslauthd -> ldap -> ldap-server Mit dem zweiten würdest Du eine Station sparen.
klar wenn ich wüßte wie sasl beim Loginspiel mit den anderen Komponenten zusammenspielt.
Das ist auch gerade in Bezug auf ldap nicht ganz einfach ;-) Ganz grob gesagt, SASL ist ein Protokoll um Passwörter zu verifizieren, normalerweise besitzt es die Schittstelle um auf eine Datenbank zuzugreifen bei LDAP halt ldap. Sobald es aber dazu benutzt wird um die eigene Verbindung SASL->LDAP-Server zu handeln wird es kompliziert ;-)
Loginversuch -> PAM -> SLAS-Aufruf um Verbinungsaufbau zu verschlüsseln -> LDAP
Dann wäre sicher SASL_AUTHMECH=pam die richtige Einstellung
Wenn jedoch die Position von SASL und PAM umgekehrt wäre müßte ich doch LDAP einstellen, oder?
Die Passwörter liegen in der ldap-datenbank. Das ist die Basis, der Weg dahin kann sehr unterschiedlich sein.
LDAP ist ein Netzwerkprotokoll, welches natürlich auch eine Authentifizierung erfordert und hier kommt dann SASL ins Spiel.
So wie ich es o.g. annehme?
PAM kann eine LDAP-Datenbank als Storage für die Benutzer/Passwörter verwenden.
noch mitspielen? Der jetzige Istzustand ist der das Der LDAP-Server (SuSE-9.1) läuft und PAM so konfiguriert ist das ein lokaler Login den User aus dem LDAP-Server benutzt. Das funktioniert schon.
Neben der o.g. Umgebungsvariabe finde ich kein Konfigurationsdatei für saslauthd. Wie gehe ich für die Einrichtung vor bzw. wie kann ich überprüfen ob er richtig funktioniert?
Wenn Du "saslauthd -a ldap" benutzen möchtest, müsste die Config bei Suse in / etc/saslauthd.conf zu finden sein. Habe aber hier kein Suse-SASL Paket mehr, der default bei Cyrus-SASL ist "/usr/local/etc/saslauthd.conf".
Nun soll das ganze jedoch abgesichert werden. Soweit ich die Unterlagen verstanden kann ich hierzu den Verbindungsaufbau mit TLS verschlüsselt abwickeln und die dananach aufgebaute Verbindung mit SSL verschlüsseln. Richtig?
SSL/TLS ist eine Verschlüsselung der kompletten Leitung. Damit würde dann auch der Authentifizierungs-Handshake (SASL) verschlüsselt.
SSL ist eine direkte Verschlüsselung der Leitung, meistens auf einem anderen Port. TLS ist eine Möglichkeit eine Verbindung über den normalen Port aufzubauen und wenn der Server TLS unterstüzt, nachträglich die Verschlüsselung einzuschalten. TLS hat SSL inzwischen fast verdrängt.
Ich denke mal das bei SASL noch mein Problem liegt. Wenn ich wie im Buch beschrieben den Befehl:
ldapsearch -d -1 -ZZ -b "dc=kundennetz" -s sub "(&(objectclass=posixaccount) (mail=*))"
direkt am Server eingebe um das Protokoll eines Verbindungaufbau betrachte zu können erhalte ich auch hier Fehlermeldungen die auf ein Zertifikat-Problem hindeuten.
[...] TLS trace: SSL_connect:bevor/connect initialization TLS trace: SSL_connect:SSLv2/v3 write client hello a TLS trace: SSL_connect:SSLv3 read server hello a TLS certificate verification: ....... TLS certificate verification: Error, self signed certificat [...] TLS trace: SSL3 alert write:warning:bad certificate TLS: unable to get per certificate [...] ldap_sasl_interactive_bind_s: server supports: LOGIN ldap_int_sasl_bind: LOGIN ldap_int_sasl_open: host=testserver.kundennetz SASL/LOGIN authentification started [...] sasl_client_step: 2 Please enter your passwort: [Hier gebe ich mein Passwort ein] [...] ldap_sasl_interactive_bind_s: Internal (implementation specific) error (80) additional info: SASL(-13): user not found: checkpass failed
Das deutet auf ein Problem mit SASL und dem Zertifikat hin, oder? Wenn ich z.B. am Server direkt den Befehl:
ldapwhoami
eingebe erhalte ich den Fehler:
ldap_sasl_interactive_bind_s: No such attribut (16)
Hast Du denn sasl überhaupt konfiguriert in der slapd.conf? -- Andreas