Homepage Wolfgang Wilhelm :: v 0.9.1 21.02.2006 :: (v.0.9 __ 14.04.03) | ||
LINKWEG ::: inhalt / sendmail als MTA / SMTP Authentifizierung |
sendmail als Mail Transport Agent
SMTP Authentifizierung
sendmail als Server
sendmail als Client
sendmail als Server | |
Erzeuge eine Sendmail.conf in SASL Libary Verzeichnis, üblicherweise in /usr/lib/sasl. (/usr/lib/sasl2).
Dort wird die Methode festgelegt, wie sich am System authentifiziert werden soll, bsp. lokale Nutzertdaten, SASL Benutzerdatenbank oder über PAM (LDAP,MySQL...).
Die PLAIN Methoden bieten selbst keine sichere (im Sinne von verschlüsselt) Methode der Authentifizierung, sie sollten nur im Hinblick auf starke Verschlüsselung eingesetzt werden.
Hier werden die Passwörter im Klartext übertragen!
SASL stellt eigene interne Optionen für pwcheck_method:
SASLv1 | SASLv2 |
---|---|
|
|
pwcheck_method:saslauthdHilfprogramm: /usr/sbin/saslauthd -a pam
PAM selbst benötigt noch Angaben über die Art der Authentifizierung (lokal, MySQL, LDAP etc.), dazu wird noch eine Servicedatei smtp in /etc/pam.d/ erzeugt.
Eine einfache Konfigurationsdatei für lokale Authentifizierung per passwd/shadow sieht folgendermassen aus (Mandrake):
%PAM-1.0 auth required /lib/security/pam_stack.so service=system-auth account required /lib/security/pam_stack.so service=system-auth
Die Cyrus SASL library unterstützt shared secret
Authentifizierungsmethoden: CRAM-MD5 und DIGEST-MD5, durch den Einsatz werden keine Passwörter im Klartext über die Leitung gesendet.
Eine SASL DB Passwortdatei wird mittels saslpasswd2 (saslpasswd) für CRAM-MD5, DIGEST-MD5 und PLAIN erzeugt.
Diese Methoden basieren auf der Tatsache, das Server und Klient sich ein secret
teilen, normalerweise ein Kennwort. Diese Methode ist sicherer als einfach das Kennwort über die Leitung zu senden.
*Note: sendmail verlangt eine sichere
sasldb2 (sasldb), Eigentümer root oder trusted user und nur für diese(n) lesbar, da dort sensitive Daten wie Passwörter hinterlegt sind.
sasldb selbst speichert Klartextkennwörter!.
SASLv1 | SASLv2 |
---|---|
[root@mulder ~]# saslpasswd -a Sendmail -u mulder.home.lan -c testuser Password: ***** Again (for verification): ***** [root@mulder ~]# sasldblistusers user: testuser realm: mulder.home.lan mech: DIGEST-MD5 user: testuser realm: mulder.home.lan mech: PLAIN user: testuser realm: mulder.home.lan mech: CRAM-MD5 |
[root@mulder]# saslpasswd2 -a Sendmail -u mulder.home.lan -c testuser Password: ***** Again (for verification): ***** [root@mulder]# sasldblistusers2 testuser@mulder.home.lan: userPassword testuser@mulder.home.lan: cmusaslsecretOTP |
Hier ein Auszug aus der Sendmail Konfigurationsdatei /etc/mail/sendmail.mc
[...] dnl -------------- dnl Authentication dnl -------------- define(`confAUTH_MECHANISMS', `PLAIN LOGIN DIGEST-MD5 CRAM-MD5')dnl TRUST_AUTH_MECH(`PLAIN LOGIN DIGEST-MD5 CRAM-MD5')dnl [...]Nachdem die Konfigurationsdatei neu erstellt worden ist und der sendmail Daemon gestartet wurde kann durch ein Verbindungsaufbau die Antwort festgestellt werden:
[mulder ~]$ telnet localhost 25 Trying 127.0.0.1... Connected to localhost.home.lan (127.0.0.1). Escape character is '^]'. 220 mulder.home.lan ESMTP Sendmail 8.13.4/8.13.4; Fri, Fri, 5 Dec 2003 11:53:15 +0100 EHLO localhost 250-mulder.home.lan Hello localhost.home.de [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5 250-STARTTLS 250-DELIVERBY 250 HELP
Falls keine AUTH Zeile auftaucht sollten eventuelle Sicherheitsprobleme und die Logfiles überprüft werden (unsichere Dateien). Um mehr Informationen in den Logdateien zu erhalten ist es sinnvoll den LogLevel auf 13 zu erhöhen.
define(`confLOG_LEVEL',`13')
sendmail als Client | |
Arbeitet Sendmail als Client benötigt es einige Informationen um sich gegenüber dem anderen MTA zu authentifizieren. Diese Informationen werden über den Regelsatz authinfo bereitgestellt. Der authinfo
Regelsatz sucht den Servernamen mit vorangestelltem Kennzeichen AuthInfo:
in der Access Datenbank. Da ich dies etwas suspekt finde nutze ich ein Sendmail FEATURE zum Auslagern der Informationen. Die Option DefaultAuthInfo ist veraltet und sollte nicht mehr genutzt werden.
*Note: Auch in der Clientversion
muss sendmail mit SASL gebaut sein.
FEATURE(`authinfo',`hash /etc/mail/authinfo')Die Datei besteht aus einer Liste von Schlüsselwörtern:
AuthInfo:smtpauth.smarthost.tld "U:user" "I:user" "P:secret" "R:smarthost.tld" "M:DIGEST-MD5" AuthInfo:smtpauth.smarthost.tld "U:user" "P:Pa55w0rD"
Benutzer- oder Authentifizierungs-ID sowie das Passwort müssen vorhanden sein. Alle anderen Angaben haben Standardwerte. Da diese Tabelle schützenswerte Informationen enthält sollte sie für jeden Benutzer ausser root (oder dem "trusted user") unlesbar gemacht werden.Besondere Beachtung sollte hier dem Realm zukommen, die ist ein wichtiger Bestandteil der shared secret Mechanismen. Beim Provider nach diesem Wert nachfragen, normalerweise ist dies der vollqualifizierte Domänennamen FQDN. Natürlich könnte dort auch ein nicht so einfach zu erratender Wert stehen :-)
define(`SMART_HOST', `smtpauth.smarthost.tld')
Nun noch die Konfigurationsdateien generieren und den sendmail Daemon neu starten.
Software |
© 2003 by Wolfgang Wilhelm • mail: wwilhelm at rz-online dot de |