Inhaltsverzeichnis

SASL-Authentifikation

Zur Authentifizierung eines Clients gegenüber unserem Mailserver nutzen wir SMTP-Auth1). Da SMTP-Auth nicht regelt, wie der Mailserver auf die eigentliche Userdatenbank zugreift, nutzen wir SASL2). Diese Bibliothek können verschiende Programme Logindaten überprüfen.

Installation

Diese Authentifizierungsbibliothek ist bei CentOS in dem Paket cyrus-sasl enthalten und wird i.d.R. bei der Systemgrundinstallation bereits mit installiert.

 # yum list cyrus-sasl
 Installed Packages
 cyrus-sasl.i386                          2.22.1.-4               installed

Was uns das Programmpaket mitbringt und wohin die entsprechenden Konfigurationsdatein installiert wurden, offenbart uns ein rpm -ilq.

# rpm -ilq cyrus-sasl
Name        : cyrus-sasl                   Relocations: (not relocatable)
...

...
URL         : http://asg.web.cmu.edu/sasl/sasl-library.html
Summary     : Die Cyrus SASL-Bibliothek.
Description :
Das Paket cyrus-sasl enthält die Cyrus SASL-Implementierung. SASL
steht für Simple Authentication and Security Layer, eine Methode
zum Hinzufügen von Authentifizierungsunterstützung zu
verbindungsorientierten Protokollen.
/etc/rc.d/init.d/saslauthd
/etc/sysconfig/saslauthd
/usr/lib/sasl2
/usr/lib/sasl2/libsasldb.la
/usr/lib/sasl2/libsasldb.so
/usr/lib/sasl2/libsasldb.so.2
/usr/lib/sasl2/libsasldb.so.2.0.22
/usr/sbin/dbconverter-2
/usr/sbin/pluginviewer
/usr/sbin/saslauthd
/usr/sbin/sasldblistusers2
/usr/sbin/saslpasswd2
/usr/sbin/testsaslauthd
/usr/share/doc/cyrus-sasl-2.1.22
/usr/share/doc/cyrus-sasl-2.1.22/LDAP_SASLAUTHD
/usr/share/man/man8/pluginviewer.8.gz
/usr/share/man/man8/saslauthd.8.gz
/usr/share/man/man8/sasldblistusers2.8.gz
/usr/share/man/man8/saslpasswd2.8.gz
/var/run/saslauthd

Konfiguration

Damit die Authentifizierung gegen LDAP funktionieren kann, nehmen wir folgende Änderungen an den vorgegebenen Konfigurationsdateien vor.

saslauthd

In der Konfigurationsdatei des SASL-Auth-Dämons /etc/sysconfig/saslauthd tragen wir folgende Parameter ein.

# vim /etc/sysconfig/saslauthd

# Directory in which to place saslauthd's listening socket, pid file, and so
# on.  This directory must already exist.
SOCKETDIR=/var/run/saslauthd

# Mechanism to use when checking passwords.  Run "saslauthd -v" to get a list
# of which mechanism your installation was compiled with the ablity to use.
#MECH=pam
# Für die Authentifizierung gegen LDAP am 05.02.09 eingetragen:
MECH=ldap

# Additional flags to pass to saslauthd on the command line.  See saslauthd(8)
# for the list of accepted flags.
FLAGS=

smtpd.conf

:!: Die Konfigurationsdatei in Sachen SMTP-Auth liegt nicht, wie man es soinst erwarten würde unter /etc/ sondern bei CentOS unter /usr/lib/sasl2/. Mit dem Editor unserer Wahl bearbeiten wir nun diese Datei.

# vim /usr/lib/sasl2/smtpd.conf

# Für die Authentifizierung gegen LDAP am 05.02.09 eingetragen:
pwcheck_method: auxprop
# Fehler, fehlerhafte Authentifizierungen und Warnungen loggen
log_level: 3
# Festlegung der Authentifizierungsmechanismen
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5

saslauthd.conf

Für den egentlichen LDAP-Aufruf müssen wir nun dem System noch einige Aufrufparameter übergeben, die wir in der Konfigurationsdatei /etc/saslauthd.conf hinterlegen.

# vim /etc/saslauthd.conf

ldap_servers: ldap://ldap.domain.de
ldap_search_base: dc=domain,dc=de
ldap_bind_dn: cn=System_User,dc=domain,dc=de
ldap_bind_pw: klaus-der-spammer
ldap_scope: sub
ldap_uidattr: uid
ldap_filter_mode: yes
ldap_filter: uid=%U

Programmstart

Beim installierten RPM ist zum Starten des Dämon ein passendes Startscript mitgeliefert worden, somit reicht ein einfaches service saslauthd start aus:

 service saslauthd start

Mit einem Blick in die Prozessliste können wir uns vergewissern, ob der daemon auch gestartet wurde:

# ps auxw | grep saslauthd
root     19858  0.0  0.0   5520   480 ?        Ss   11:58   0:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a shadow
root     19859  0.0  0.0   5520   260 ?        S    11:58   0:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a shadow
root     19860  0.0  0.0   5520   256 ?        S    11:58   0:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a shadow
root     19861  0.0  0.0   5520   256 ?        S    11:58   0:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a shadow
root     19862  0.0  0.0   5520   256 ?        S    11:58   0:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a shadow

automatisches Starten des Dienste beim Systemstart

Damit der Daemon automatisch bei jedem Systemstart startet, kann die Einrichtung des Start-Scripte über folgenden Befehle erreicht werden:

 # chkconfig saslauthd on

Die Überprüfungung ob der Dienst (Daemon) saslauthd wirklich bei jedem System-(re)-Start automatisch mit gestartet werden, kann durch folgenden Befehle erreicht werden:

 # chkconfig --list | grep sasl
 saslauthd       0:Aus   1:Aus   2:Ein   3:Ein   4:Ein   5:Ein   6:Aus

Postfix

Konfigurationsänderungen

Damit unser Postfix nun die Authentifizierung mittels Usernamen und Passwort im SMTP-Dialog unterstützt ändern wir unsere Konfiguration wie folgt.

#
# Mails sicher relayen via SASL & Co.                   (Kapitel 11.2 Mails sicher relayen)
# eingetragen am 05.02.09
#
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes

und

# Unsere eigenen Nutzer zulassen-/erlauben              (Kapitel 8.2.2 Relaying erlauben und verbieten)
        permit_sasl_authenticated,

Mit einem anschließenden Reload geben wir unsere Konfigurationsänderungen dem System bekannt.

 # service postfix reload

Im SMTP-Dialog werden nun die zusätzlichen Möglichkeiten offeriert:

$ telnet mx1.nausch.org 25
Trying 88.217.187.21...
Connected to mx1.nausch.org (88.217.187.21).
Escape character is '^]'.
220 mx1.nausch.org ESMTP Postfix
EHLO testanfrage
250-mx1.nausch.org
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN DIGEST-MD5 CRAM-MD5
250-AUTH=LOGIN PLAIN DIGEST-MD5 CRAM-MD5
250-ENHANCEDSTATUSCODES
250 8BITMIME
quit
221 2.0.0 Bye
Connection closed by foreign host.

Test und Debug

Über das Tool testsaslauthd können wir überprüfen ob die Authentifizierungskette funktioniert und wenn nicht, wo wir ggf. weiter nachforschen können.

Fehlerhafte LDAP-Attribute

 # testsaslauthd -u klaus -p klaus-der-spammer
 0: NO "authentication failed"

Auf Grund fehlerhaften LDAP-Attribute konnte Username und Passwort nicht verifiziert werden.

Korrekter Zu-/Durchgriff

 # testsaslauthd -u klaus -p klaus-der-spammer
 0: OK "Success."

Nach Änderunk /Korrektur der zuvor fehlerhaften LDAP-Attribute konnte nun erfolgreich Username und Passwort verifiziert werden.

1)
SMTP-Authentication
2)
Simple Authentication and Security Layer