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.