[Postfixbuch-users] trotz SMTPAUTH keine sichere Authentifikation
Patrick Ben Koetter
p at state-of-mind.de
Mi Nov 3 23:47:20 CET 2004
* Mark Riemann <divejbba at gmx.de> [041103 22:32]:
> Stell mir Fragen und ich beantworte sie nach bestem Wissen und Gewissen.
> Vielleicht erst einmal zu meiner Motivation (Vorsicht, das wird
> alles ein bisschen länger):
> Ich habe mit einem Freund einen kleinen root-Server (FC1). Ich teile
> mir die Kosten mit ihm. Da wir beide irgendwie das Gefühl haben, dass
> wir sendmail nicht wirklich verstehen und es andere Mailer gibt, haben
> wir uns postfix auserkoren. Installiert ist das Ding ja schnell. Aber
> wie bekomme ich denn PF denn dazu nur für mich zu relayen. Antwort
> SMTP-AUTH incl. TLS. Und das möglichst so, dass Passwörter nicht
> mitgesnifft werden können. Also bin ich erstaml los und habe die Kosten
> nicht gescheut und mir das Postfix-Buch von Peter Heinlein gekauft und
> gelesen UND angefangen mein PF zu konfigurieren. Das hatte ich vor
> einiger Zeit hier schon einmal geschrieben. Anfangs habe ich alles auf
> einmal versucht, aber da wurde ich darauf hingewiesen, dass man PF erst
> einmal mit SMTP-AUTH hinkriegen soll, bevor man an TLS denken kann.
Guter Hinweis.
> Zurück zur Motivation. Was ich (wir) wollen ist ein richtiger
> eigener Mailserver über den wir Mails versenden können und empfangen
> können. Nicht Mehr und auch nicht Weniger. Und da wir nicht als
> OpenRelay Mails für Andere verschicken wollen, dachten wir an ein PF mit
> SMTP-AUTH und TLS, damit die Daten verschlüsselt übertragen werden können.
>
>
> >Also fangen wir mal ganz von vorne an.
> >
> >1. Du willst SMTP AUTH anbieten
> >2. Du willst als Datenquelle in der die usernamen und passwords sind
> > einen IMAP Server benützen.
>
> Hmm, das weiß ich nicht genau (weil ich nicht weiß, ob es das ist, was
> Du meinst). Ich will keine eigene Datenbank pflegen für Mails (also kein
> sasldb(2)). Ich will nur, das die User relayen fürfen, welche einen
> Account haben. Möchte allerdings wiederum nicht PF erlauben auf
> /etc/shadow zuzugreifen. Was ich haben würde wollen ist, dass ein
> Programm die Authentifizierung übernimmt, in dem es einfach schaut, ob
> es den User mit dem dazugeh. Passwort gibt (bspw. durch Einwahl mit den
> übergebenen Daten).
einwahl wäre Authentisierung über einen RADIUS Server. das wäre ein ganz
anderes Thema...
sasldb ist OK, denn es ist einfach, stabil und eine eigene DB, die
nichts mit /etc/shadow zu tun hat.
> >3. Du willst Postfix dazu benützen.
>
> Jepp ...
>
>
> >Ja? Wenn ich was falsch genannt habe, dann korrigiere mich bitte, denn
> >sonst sind wir komplett auf dem falschen Weg.
> >
> >Bitte lade die aktuelle Version 0.9.8 von saslfinger herunter,
> >installiere sie und schicke den Output zusammen mit den antworten auf
> >die Fragen oben als Antwort.
>
> hab ich gemacht. Das Ergebnis habe ich als Attachement der Mail
> hinzugefügt (weil es der Lesbarkeit dieser Mail ja nicht gerade
> zuträglich ist, wenn ich den Output hier einfüge). Ich hoffe, dass das
> erlaubt ist und nicht herausgefiltert wird.
>
>
> >Karma. Ich muß ein schlimmer Mensch im letzten Leben gewesen sein...
>
> Na diesmal bist Du kein schlimmer Mensch. Schade, denn das heißt, wir
> müssen auf Dich im nächsten Leben verzichten.
>
> MfG
> Mark
> saslfinger - postfix Cyrus sasl configuration Mi Nov 3 20:45:18 CET 2004
> version: 0.9.8
> mode: server-side SMTP AUTH
>
> -- basics --
> Postfix: 2.1.3
> System: Fedora Core release 1 (Yarrow)
>
> -- smtpd is linked to --
> libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x4001a000)
gut. Cyrus-SASL.2.x. Alles andere ignorieren wir.
>
> -- active SMTP AUTH and TLS parameters for smtpd --
> broken_sasl_auth_clients = yes
> smtpd_sasl_auth_enable = yes
> smtpd_sasl_local_domain =
> smtpd_sasl_security_options = noanonymous
> smtpd_tls_auth_only = no
>
> -- listing of /usr/lib/sasl2 --
> insgesamt 2400
> drwxr-xr-x 2 root root 2048 Nov 3 16:43 .
> drwxr-xr-x 3 root root 2048 Okt 25 19:56 ..
> -rwxr-xr-x 1 root root 695 Okt 25 19:56 libanonymous.la
> -rwxr-xr-x 1 root root 87968 Okt 25 19:56 libanonymous.so
> -rwxr-xr-x 1 root root 87968 Okt 25 19:56 libanonymous.so.2
> -rwxr-xr-x 1 root root 87968 Okt 25 19:56 libanonymous.so.2.0.19
> -rwxr-xr-x 1 root root 683 Okt 25 19:56 libcrammd5.la
> -rwxr-xr-x 1 root root 91372 Okt 25 19:56 libcrammd5.so
> -rwxr-xr-x 1 root root 91372 Okt 25 19:56 libcrammd5.so.2
> -rwxr-xr-x 1 root root 91372 Okt 25 19:56 libcrammd5.so.2.0.19
> -rwxr-xr-x 1 root root 713 Okt 25 19:56 libdigestmd5.la
> -rwxr-xr-x 1 root root 137104 Okt 25 19:56 libdigestmd5.so
> -rwxr-xr-x 1 root root 137104 Okt 25 19:56 libdigestmd5.so.2
> -rwxr-xr-x 1 root root 137104 Okt 25 19:56 libdigestmd5.so.2.0.19
> -rwxr-xr-x 1 root root 749 Okt 25 19:56 libgssapiv2.la
> -rwxr-xr-x 1 root root 102095 Okt 25 19:56 libgssapiv2.so
> -rwxr-xr-x 1 root root 102095 Okt 25 19:56 libgssapiv2.so.2
> -rwxr-xr-x 1 root root 102095 Okt 25 19:56 libgssapiv2.so.2.0.19
> -rwxr-xr-x 1 root root 668 Okt 25 19:56 libotp.la
> -rwxr-xr-x 1 root root 153472 Okt 25 19:56 libotp.so
> -rwxr-xr-x 1 root root 153472 Okt 25 19:56 libotp.so.2
> -rwxr-xr-x 1 root root 153472 Okt 25 19:56 libotp.so.2.0.19
> -rwxr-xr-x 1 root root 679 Okt 25 19:56 libplain.la
> -rwxr-xr-x 1 root root 86954 Okt 25 19:56 libplain.so
> -rwxr-xr-x 1 root root 86954 Okt 25 19:56 libplain.so.2
> -rwxr-xr-x 1 root root 86954 Okt 25 19:56 libplain.so.2.0.19
> -rwxr-xr-x 1 root root 704 Okt 25 19:56 libsasldb.la
> -rwxr-xr-x 1 root root 146804 Okt 25 19:56 libsasldb.so
> -rwxr-xr-x 1 root root 146804 Okt 25 19:56 libsasldb.so.2
> -rwxr-xr-x 1 root root 146804 Okt 25 19:56 libsasldb.so.2.0.19
> -rw-r--r-- 1 root root 670 Nov 3 16:43 smtpd.conf
>
> -- listing of /usr/local/lib/sasl2 --
> insgesamt 2400
> drwxr-xr-x 2 root root 2048 Nov 3 16:43 .
> drwxr-xr-x 3 root root 2048 Okt 25 19:56 ..
> -rwxr-xr-x 1 root root 695 Okt 25 19:56 libanonymous.la
> -rwxr-xr-x 1 root root 87968 Okt 25 19:56 libanonymous.so
> -rwxr-xr-x 1 root root 87968 Okt 25 19:56 libanonymous.so.2
> -rwxr-xr-x 1 root root 87968 Okt 25 19:56 libanonymous.so.2.0.19
> -rwxr-xr-x 1 root root 683 Okt 25 19:56 libcrammd5.la
> -rwxr-xr-x 1 root root 91372 Okt 25 19:56 libcrammd5.so
> -rwxr-xr-x 1 root root 91372 Okt 25 19:56 libcrammd5.so.2
> -rwxr-xr-x 1 root root 91372 Okt 25 19:56 libcrammd5.so.2.0.19
> -rwxr-xr-x 1 root root 713 Okt 25 19:56 libdigestmd5.la
> -rwxr-xr-x 1 root root 137104 Okt 25 19:56 libdigestmd5.so
> -rwxr-xr-x 1 root root 137104 Okt 25 19:56 libdigestmd5.so.2
> -rwxr-xr-x 1 root root 137104 Okt 25 19:56 libdigestmd5.so.2.0.19
> -rwxr-xr-x 1 root root 749 Okt 25 19:56 libgssapiv2.la
> -rwxr-xr-x 1 root root 102095 Okt 25 19:56 libgssapiv2.so
> -rwxr-xr-x 1 root root 102095 Okt 25 19:56 libgssapiv2.so.2
> -rwxr-xr-x 1 root root 102095 Okt 25 19:56 libgssapiv2.so.2.0.19
> -rwxr-xr-x 1 root root 668 Okt 25 19:56 libotp.la
> -rwxr-xr-x 1 root root 153472 Okt 25 19:56 libotp.so
> -rwxr-xr-x 1 root root 153472 Okt 25 19:56 libotp.so.2
> -rwxr-xr-x 1 root root 153472 Okt 25 19:56 libotp.so.2.0.19
> -rwxr-xr-x 1 root root 679 Okt 25 19:56 libplain.la
> -rwxr-xr-x 1 root root 86954 Okt 25 19:56 libplain.so
> -rwxr-xr-x 1 root root 86954 Okt 25 19:56 libplain.so.2
> -rwxr-xr-x 1 root root 86954 Okt 25 19:56 libplain.so.2.0.19
> -rwxr-xr-x 1 root root 704 Okt 25 19:56 libsasldb.la
> -rwxr-xr-x 1 root root 146804 Okt 25 19:56 libsasldb.so
> -rwxr-xr-x 1 root root 146804 Okt 25 19:56 libsasldb.so.2
> -rwxr-xr-x 1 root root 146804 Okt 25 19:56 libsasldb.so.2.0.19
> -rw-r--r-- 1 root root 670 Nov 3 16:43 smtpd.conf
Hast Du zwei VErzeichnisse /usr/lib/sasl2 und /usr/local/lib/sasl2 oder
ist /usr/lib/sasl2 ein Link auf /usr/local/lib/sasl2?
> -- mechanisms on localhost --
> 250-AUTH PLAIN
> 250-AUTH=PLAIN
Das ist gut. Postfix liest die smtpd.conf.
> -- content of /usr/lib/sasl2/smtpd.conf --
> # Check mit SASL Datenbank
> # pwcheck_method: sasldb
>
> # pwcheck_method: pam Hier wird PAM benutzt; hiermit lassen sich Anmeldungen ?ber LDAP, RADIUS oder NIS durchf?hren
Das galt für Cyrus-SASL.1.x aber nicht für deine Version. Ist auch nicht
ratsam.
> # pwcheck_method: shadow Es wird die Datei /etc/shadow gelesen. Problematisch da der Postfix-User Leserechte auf die Datei braucht
Falsch
> # pwcheck_method: sasldb SASL benutzt seine eigene Datenbank
> # pwcheck_method: pwcheck Eine alternative zum Lesen der /etc/shadow. Hier wird ein pwcheck helper daemon benutzt
Falsch.
> # pwcheck_method: kerberos_v4 Authentifizierung mit Kerberos
auch falsch.
Das sind alles Angaben für Cyrus-SASL.1.x kannste also getrost
vergessen.
> # Check ?bernimmt saslauthd
> pwcheck_method: saslauthd
> saslauthd_path: /var/state/saslauthd
> mech_list: PLAIN LOGIN
> log_level: 3
Ja, richtig.
> -- content of /usr/local/lib/sasl2/smtpd.conf --
> # Check mit SASL Datenbank
> # pwcheck_method: sasldb
>
> # pwcheck_method: pam Hier wird PAM benutzt; hiermit lassen sich Anmeldungen ?ber LDAP, RADIUS oder NIS durchf?hren
> # pwcheck_method: shadow Es wird die Datei /etc/shadow gelesen. Problematisch da der Postfix-User Leserechte auf die Datei braucht
> # pwcheck_method: sasldb SASL benutzt seine eigene Datenbank
> # pwcheck_method: pwcheck Eine alternative zum Lesen der /etc/shadow. Hier wird ein pwcheck helper daemon benutzt
> # pwcheck_method: kerberos_v4 Authentifizierung mit Kerberos
>
> # Check ?bernimmt saslauthd
> pwcheck_method: saslauthd
> saslauthd_path: /var/state/saslauthd
> mech_list: PLAIN LOGIN
> log_level: 3
Scheint identisch mit /usr/lib/sasl2/smtpd.conf zu sein.
> -- active services in /etc/postfix/master.cf --
> # service type private unpriv chroot wakeup maxproc command + args
> # (yes) (yes) (yes) (never) (100)
> smtp inet n - n - - smtpd
gut, Postfix ist nicht chrooted.
> pickup fifo n - n 60 1 pickup
> cleanup unix n - n - 0 cleanup
> qmgr fifo n - n 300 1 qmgr
> rewrite unix - - n - - trivial-rewrite
> bounce unix - - n - 0 bounce
> defer unix - - n - 0 bounce
> trace unix - - n - 0 bounce
> verify unix - - n - 1 verify
> flush unix n - n 1000? 0 flush
> proxymap unix - - n - - proxymap
> smtp unix - - n - - smtp
> relay unix - - n - - smtp
> showq unix n - n - - showq
> error unix - - n - - error
> local unix - n n - - local
> virtual unix - n n - - virtual
> lmtp unix - - n - - lmtp
> anvil unix - - n - 1 anvil
> maildrop unix - n n - - pipe
> flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
> old-cyrus unix - n n - - pipe
> flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
> cyrus unix - n n - - pipe
> user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
> uucp unix - n n - - pipe
> flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail.postfix ($recipient)
> ifmail unix - n n - - pipe
> flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
> bsmtp unix - n n - - pipe
> flags=Fq. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
>
> -- end of saslfinger output --
>
Also irgendwas ist mächtig verbockt mit deinem saslauthd socket. Die
Config scheint richtig nur kann Postfix nicht mit saslauthd
kommunizieren.
Ich schlage vor, dass Du mal einen "testuser" "testpass" (ohne !)
anlegst und mit dem testest ob testsaslauthd authentifizieren kann.
Vorher macht es gar keinen Sinn mit Postfix zu testen.
Wenn Du aber keinen IMAP Server hast, den saslauthd fragen kann, dann
sollest Du auf sasldb umschwenken. Später, wenn Du das im Griff hast,
kannst Du dir ja immer noch eine andere Lösung bauen.
p at rick
--
SMTP AUTH
Howto: <http://postfix.state-of-mind.de/patrick.koetter/smtpauth/>
Debug: <http://postfix.state-of-mind.de/patrick.koetter/saslfinger/>
Mehr Informationen über die Mailingliste Postfixbuch-users