[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