pdadmin-forum

pdadmin-forum » Information » HowTo's » SSL-Verschlüsselung für Imap, Pop3, smtp » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (3): [1] 2 3 nächste » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen SSL-Verschlüsselung für Imap, Pop3, smtp
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
incunabulum
Mitglied


Dabei seit: 01.10.2006
Beiträge: 165

SSL-Verschlüsselung für Imap, Pop3, smtp Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

Moin,

anbei drei Run-Skripte, mit denen Imap, Pop3 und Smtp über SSL verschlüsselt betrieben werden können. Ich hoffe jedenfalls, dass diese Lösung wirklich sicher ist....

Zum Betrieb erforderlich ist stunnel. apt-get stunnel reicht. In der /usr/local/pd-admin2/etc/imapd-ssl muss das Zertifikat entsprechend konfiguriert werden.

Weiss jemand, welche Rechte das Zertifikat von stunnel haben muss, damit dieser nicht meckert? Wenn ich das Zertifit read-only für root mache (chmod 400), so funktioniert pop3s einwandfrei. ssmtp aber nicht. Warum?

Für Imaps :
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
#!/bin/sh

HOSTNAME=`hostname --fqdn`
rm -rf ./env/*;
mkdir -p env
cd env
cat /usr/local/pd-admin2/etc/imapd | ../envconv
cat /usr/local/pd-admin2/etc/imapd-ssl | ../envconv
cd ..
exec 2>&1
exec /usr/local/bin/envdir ./env/ \
        /usr/local/bin/softlimit -m 9000000 \
        /usr/local/bin/tcpserver -v -R -H -l $HOSTNAME 0 993 \
        /usr/local/pd-admin2/bin/couriertls -server -tcpd \
        /usr/local/pd-admin2/sbin/imaplogin \
        /usr/local/pd-admin2/bin/imapd Maildir



Für pop3s:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
#!/bin/bash

QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
HOSTNAME=`hostname -f`

exec  /usr/local/bin/softlimit -m 30000000 /usr/local/bin/tcpserver -v -R -H -l 0 0 995 \
        /usr/sbin/stunnel -f -p /usr/local/pd-admin2/certs/mail.pem \
        -l /var/qmail/bin/qmail-popup $HOSTNAME \
        /var/qmail/bin/tcp-env /usr/sbin/logpopauth-pre /bin/checkpoppasswd \
        /usr/bin/logpopauth-post  /var/qmail/bin/qmail-pop3d Maildir


Für Secure SMTP
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
#!/bin/bash

QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
HOSTNAME=`hostname -f`

if [ "$HOSTNAME" == "" ]; then
        echo "Kein Hostname gesetzt."
        exit 11
fi

exec /usr/local/bin/softlimit -m 80000000 \
        /usr/local/bin/tcpserver -x /etc/tcp.smtp.cdb -H -P -R -u $QMAILDUID -g $NOFILESGID -c 40 -v 0 \
        ssmtp /usr/sbin/stunnel -f -p /usr/local/pd-admin2/share/imapd.pem -l \
        /var/qmail/bin/tcp-env relaylock /var/qmail/bin/qmail-smtpd $HOSTNAME \
        /usr/local/pd-admin2/bin/checksmtppasswd /bin/true 2>&1 | /var/qmail/bin/splogger smtpd 3


mz
01.12.2006 23:39 incunabulum ist offline E-Mail an incunabulum senden Beiträge von incunabulum suchen Nehme incunabulum in Deine Freundesliste auf
incunabulum
Mitglied


Dabei seit: 01.10.2006
Beiträge: 165

Themenstarter Thema begonnen von incunabulum
Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

Update: Bei einer erforderlichen Systemänderung wurde der verschlüsselte Zugriff gleich so eingerichtet, dass für pop3s, imaps und smpts 3 verschiedene Zertifikate zum Einsatz kommen. Dies löst auch eventuell auftretende Probleme mit Rechten.
- Imaps und pop3s wurde unverändert gelassen.
- Für smtps wurde das Script mkpop3cert kopiert & angepasst und damit das Zertifikat generiert. /service/qmail-smptds/run ändert sich dementsprechend zu:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
#!/bin/bash

QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
HOSTNAME=`hostname -f`

if [ "$HOSTNAME" == "" ]; then
        echo "Kein Hostname gesetzt."
        exit 11
fi

exec /usr/local/bin/softlimit -m 80000000 \
        /usr/local/bin/tcpserver -x /etc/tcp.smtp.cdb -H -P -R -u $QMAILDUID -g $NOFILESGID -c 40 -v 0 \
        ssmtp /usr/sbin/stunnel -f -p /usr/local/pd-admin2/share/smtd.pem -l \
        /var/qmail/bin/tcp-env relaylock /var/qmail/bin/qmail-smtpd $HOSTNAME \
        /usr/local/pd-admin2/bin/checksmtppasswd /bin/true 2>&1 | /var/qmail/bin/splogger smtpd 3


Wichtig:
Eigentümer von smtpd.pem ist qmaild. Ist dies nicht der Fall, so sind entsprechende Fehlermeldungen (Permission denied) in /var/log/daemon.log zu verzeichnen.
15.05.2008 10:18 incunabulum ist offline E-Mail an incunabulum senden Beiträge von incunabulum suchen Nehme incunabulum in Deine Freundesliste auf
kai
Mitglied


Dabei seit: 20.05.2006
Beiträge: 58

Achtung Bug im stunnel3 Wrapper Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

Ich habe auch ungefähr nach diesem hier vorgestellen Schema POP3s/sSMTP am Laufen.

Kennt ihr das Problem, dass man sporadisch beim Versand einer Mail wieder aufgefordert wird das PW einzugeben?

Der Server Antwortete dann mit
454 oops, unable to write pipe and I can't auth

Bei mir kam das in ca. 10% der Fälle vor. Und zwar nur über die stunnel Verbindung (SMTP und MSA waren nicht betroffen).

Nachdem ich softlimit ausschliessen konnte, habe ich diverse strace Sessions gestartet, um der Sache auf den Grund zu gehen.

Der Unterschied zwischen dem normalen Versenden und dem Versenden per SSMTP im strace ist:
code:
1:
2:
3:
4:
msa:
execve("/var/qmail/bin/qmail-smtpd", ["/var/qmail/bin/qmail-smtpd", "example.org", "/usr/local/pd-admin2/bin/checksm"..., "/bin/true"], [/* 12 vars */]) = 0
stunnel:
execve("/var/qmail/bin/qmail-smtpd", ["example.org", "/usr/local/pd-admin2/bin/checksm"..., "/bin/true"], [/* 13 vars */]) = 0


Die bei mir eingesetzte Version von stunnel 4.22 nutzt einen Perl Wrapper um das eigentliche stunnel4 aufzurufen (ftp://ftp.stunnel.org/stunnel/stunnel3). Dieser soll lediglich dazu dienen, dass man stunnel4 auch mit der alten stunnel3 Syntax aufrufen kann.

Diesen benutze ich auch in meinem run Script:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
HOSTNAME=`cat /var/qmail/control/me`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
exec /usr/local/bin/softlimit -m 30000000 \
    /usr/local/bin/tcpserver -v -H -R -l 0 \
    -x /etc/tcp.msa.cdb -c "$MAXSMTPD" \
    -u "$QMAILDUID" -g "$NOFILESGID" 0 ssmtp \
    /usr/bin/stunnel -f -p /usr/local/pd-admin2/share/smtpd.pem -l \
    /var/qmail/bin/qmail-smtpd \
    $HOSTNAME /usr/local/pd-admin2/bin/checksmtppasswd \
    /bin/true 2>&1


Und genau dieser Wrapper sorgt dafür, dass in der stunnel Variante das $0 auf den Hostname und nicht auf qmail-smtp gesetzt wird!

So sieht es aus:
...
print("exec = $opt_l\n") if defined $opt_l;
print("execargs = " . join(' ', @ARGV) . "\n") if @ARGV;

So sollte es aussehen:
...
print("exec = $opt_l\n") if defined $opt_l;
print("execargs = $opt_l " . join(' ', @ARGV) . "\n") if @ARGV;


Das ganze bewirkt, dass der $HOSTNAME verschluckt wird (, da dieser als $0 gesehen wird) UND dass qmail-smtp die Daten nicht an checksmtppasswd piped sondern an /bin/true!!

In 10% der Fälle kommt der /bin/true Aufruf schneller zurück als dass qmail-smtps die Daten pipen kann.

Das tollste daran ist, dass Username/Passwort so _nie_ geprüft werden und man ein schönes, SSL verschlüsseltes Open Relay hat!

Ich weiss bis heute nicht, wie lange das bei mir offen war bzw. wann ich stunnel auf eine Version >= 4.05 geupdated habe. Bei der Erstinbetriebnahme meine ich hatte ich diverse Tests unternommen.
Vom stunnel Author kommt bisher keine Reaktion, daher würde ich an eurer Stelle die o.g. Zeile ändern, sofern Ihr das in gleicher Konstellation betreibt.
04.10.2011 01:01 kai ist offline E-Mail an kai senden Beiträge von kai suchen Nehme kai in Deine Freundesliste auf
kai
Mitglied


Dabei seit: 20.05.2006
Beiträge: 58

Fragezeichen open relay!? Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

Sehr merkwürdig, dass es keine Reaktion gibt.
Eigentlich jeder der o.g. Anleitung SMTPS in Betrieb hat und stunnel4 dafür nutzt müsste sich so ein Open Relay gebaut haben.

Hat wirklich keiner ein Problem damit?
23.10.2011 22:03 kai ist offline E-Mail an kai senden Beiträge von kai suchen Nehme kai in Deine Freundesliste auf
incunabulum
Mitglied


Dabei seit: 01.10.2006
Beiträge: 165

Themenstarter Thema begonnen von incunabulum
Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

Moin!

damals hatte ich sehr ausführlich nach potentiellen Relay Schwachstellen gesucht. Das ist aber lange, lange her. Daher:
- Magst du erklären wie du auf ein SSL Open Relay testest?
- Und kann es sein, dass eben dieses open relay durch das /var/qmail/bin/tcp-env relaylock statement in meinem Skript unterbunden wird?

Michael
24.10.2011 16:16 incunabulum ist offline E-Mail an incunabulum senden Beiträge von incunabulum suchen Nehme incunabulum in Deine Freundesliste auf
kai
Mitglied


Dabei seit: 20.05.2006
Beiträge: 58

Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

Meine Güte hab ich eine Reaktionszeit. Ich muss wohl mal wieder das Notify aktivieren ;-)

Die Tests hatte ich mit strace gemacht und den STMP Dialog mit dem openssl client per Hand durchgetestet. Als Nagativtest hab ich dann einfach einen falschen User / Passwort genutzt. Ging trotzdem -> Panik

Relaylock nutze ich bei mir nicht, das ist ja nur für SMTP after POP und dass macht nur sinn für die User die immer noch per Port 25 versenden.

Inzwischen ist das in stunnel übrigens gefixed. Siehe Changenotes http://www.stunnel.org/?page=sdf_ChangeLog 4.45

so sollte es dann ganz richtig aussehen:
code:
1:
print("exec = $opt_l\nexecargs = " . join(' ', $opt_l, @ARGV) . "\n") if defined $opt_l;

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von kai: 20.11.2011 18:24.

20.11.2011 18:19 kai ist offline E-Mail an kai senden Beiträge von kai suchen Nehme kai in Deine Freundesliste auf
incunabulum
Mitglied


Dabei seit: 01.10.2006
Beiträge: 165

Themenstarter Thema begonnen von incunabulum
Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

Also ich habe dies jetzt mit mehreren Konfigurationen versucht nachzuvollziehen. Nur bekomme ich beim besten Willen keinen Mailversand mit falschen Passwort etc. hin. Grübel.

Kann es sein, dass dieser Fall wirklich nur bei z. B. besonders hoher Load etc. auftritt? Oder wieso hast du das Problem, ich aber nicht?
22.11.2011 18:47 incunabulum ist offline E-Mail an incunabulum senden Beiträge von incunabulum suchen Nehme incunabulum in Deine Freundesliste auf
kai
Mitglied


Dabei seit: 20.05.2006
Beiträge: 58

Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

Nein bei mir war das immer reproduzierbar, nicht nur unter Last.

Durch den Bug in dem stunnel Wrapper wird das zweite Argument nach der -l Option gefressen.

Bei mir war das der $HOSTNAME bei dir ist es relaylock.

Ich nehme also an, dass bei dir der Mechanismus des relaylocks nicht funktioniert,
oder kannst du SMTPS ohne user/pw nutzen wenn du vorher POP Zugriff hattests?
22.11.2011 21:57 kai ist offline E-Mail an kai senden Beiträge von kai suchen Nehme kai in Deine Freundesliste auf
incunabulum
Mitglied


Dabei seit: 01.10.2006
Beiträge: 165

Themenstarter Thema begonnen von incunabulum
Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

Zitat:
Original von kai
Ich nehme also an, dass bei dir der Mechanismus des relaylocks nicht funktioniert,
oder kannst du SMTPS ohne user/pw nutzen wenn du vorher POP Zugriff hattests?


SMTPS ohne /PW funktioniert nur nach vorherigem Pop-Abruf. Reproduzierbar. Ansonsten natürlich auch ohne vorhergehendem Pop-Abruf mittels Authentifizierung.
23.11.2011 19:26 incunabulum ist offline E-Mail an incunabulum senden Beiträge von incunabulum suchen Nehme incunabulum in Deine Freundesliste auf
kai
Mitglied


Dabei seit: 20.05.2006
Beiträge: 58

Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

OK, wenn du ganz sicher sein willst was da passiert, dann musste da mal ein strace mitlaufen lassen und dir dort die Aufrufkette ansehen.

Kann ja durchaus sein, dass das mit deiner Config kein Problem ist.

Ich hätte aber vermutet, dass nicht alle Leute dort das relaylock mit drin haben und zumidnest die müssten das gleiche Problem haben wie ich hatte.

Ich habe die alte Krücke Relaylock wirklich nur bei Port 25 mit drin.
Bei den anderen Ports macht das eigentlich keinen Sinn, weil die User dort ja eh gezwungen werden User/PW zu nutzen.
Relaylock erlaubt der IP zu Senden wenn vorher per POP gezogen wurde.
Der Zugriff ist hier also nicht zwangsläufig usergebunden, da sich hinter einer IP durchaus eine ganze Menge User verbergen können.

Was mir noch einfällt. Welche Version von stunnel hast du denn überhaupt im Einsatz?
Das Problem tritt nur auf bei Versionen zwischen 4.0 und 4.45.
Wenn man also noch eine gaaaanz alte 3er Verion hat, dann gibts auch kein Problem.
24.11.2011 09:42 kai ist offline E-Mail an kai senden Beiträge von kai suchen Nehme kai in Deine Freundesliste auf
Seiten (3): [1] 2 3 nächste » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
pdadmin-forum » Information » HowTo's » SSL-Verschlüsselung für Imap, Pop3, smtp

Impressum | Team | Hilfe

Forensoftware: Burning Board, entwickelt von WoltLab GmbH    |    Design entwickelt von You-Online.de