SSL Verschlüsselung für POP3, IMAP und SMTP

  • Hallo,


    da PD-Admin von Haus aus keine Verschlüsselung mitbringt möchte ich hier einen Weg zur Verschlüsselung mit Hilfe des Programmes "Stunnel" aufzeigen. Stunnel ist ein Wrapper mit dem man so ziemlich alles Verschlüsseln kann. Hier im Forum gibt es noch ein anderes HowTo (SSL-Verschlüsselung für Imap, Pop3, smtp), welches mir persönlich aber nicht so zusagte. ;)


    Getestet wurde das ganze nur unter CentOS, sollte aber auf anderen Distributionen ähnlich laufen.


    1. Stunnel installieren: yum install stunnel oder apt-get install stunnel
    2. Anlegen des Zertifikates per Skript: vi sshgen.sh --> i drücken --> Code einfügen --> :xall

    2.1. chmod +x ssgen.sh


    3. Skript ausführen: ./sshgen.sh mail --> Daten korrekt angeben
    4. cp mail.pem /usr/local/pd-admin2/share/
    4.1. chown qmaild:nofiles /usr/local/pd-admin2/share/mail.pem
    4.2. chmod 440 /usr/local/pd-admin2/share/mail.pem


    5. Stunnel Konfigurations-Files anlegen:
    vi /etc/stunnel/imaps --> i drücken --> Code *1 einfügen --> :xall
    vi /etc/stunnel/pop3s --> i drücken --> Code *2 einfügen --> :xall
    vi /etc/stunnel/smtps --> i drücken --> Code *3 einfügen --> :xall
    *1:

    Code
    1. [imaps]
    2. accept = 993
    3. connect = 143
    4. cert = /usr/local/pd-admin2/share/mail.pem

    *2:

    Code
    1. [pop3s]
    2. accept = 995
    3. connect = 110
    4. cert = /usr/local/pd-admin2/share/mail.pem

    *3:

    Code
    1. [smtps]
    2. accept = 465
    3. connect = 587
    4. local = Server-IP Adresse einfügen
    5. cert = /usr/local/pd-admin2/share/mail.pem

    6. Testing:
    Zum Test mal den POP3 Tunnel mit /usr/sbin/stunnel /etc/stunnel/pop3s starten. Mit netstat -an solltet ihr nun den Port 995 lauschen sehen. Nun könnt Ihr euch mal mit einem Client auf den Port 995 (SSL) verbinden und schauen ob es geht.


    7. Zum automatischen Start mit Systemboot habe ich das in /etc/rc.local oder bei Debian /etc/rc.d/rc.local, eingetragen:


    /usr/sbin/stunnel /etc/stunnel/pop3s
    /usr/sbin/stunnel /etc/stunnel/imaps
    /usr/sbin/stunnel /etc/stunnel/smtps


    Ich hoffe geholfen zu haben.
    Grüße, Lars

  • Moin Lars,


    Zitat

    Original von Lars
    Wrapper mit dem man so ziemlich alles Verschlüsseln kann. Hier im Forum gibt es noch ein anderes HowTo (SSL-Verschlüsselung für Imap, Pop3, smtp), welches mir persönlich aber nicht so zusagte. ;)


    Was gefiel dir denn an meiner Anleitung nicht so? Die Patcherei der run-Skripte?


    Schöne Anleitung. Wird so auch sichergestellt, dass Authentifizierung etc. per Pop3s und SMTPS erforderlich ist? Oder kann es hierbei vorkommen, dass eine SMPTS Verbindung von extern durch stunnel so umgeleitet wird, dass diese für den smtp als localhost connection erscheint?


    Zitat


    7. Zum automatischen Start mit Systemboot habe ich das in /etc/rc.local oder bei Debian /etc/rc.d/rc.local, eingetragen:


    /usr/sbin/stunnel /etc/stunnel/pop3s
    /usr/sbin/stunnel /etc/stunnel/imaps
    /usr/sbin/stunnel /etc/stunnel/smtps


    Jetzt noch eine daemontools basierende Lösung, und alle Dienste nach Aussen würden über eine gemeinsame Schnittstelle (svc) gehandelt :-) Das könnte der Übersicht förderlich sein.


    cu, mz

  • SMTPS geht nach meinen Tests nicht ohne Auth. Ich wäre aber dankbar wenn das noch mal jemand testen könnte. :) Deine Anleitung ist super, aber irgendwie hat es bei mir nicht wie gewünscht funktioniert. ;)

  • Hallo,


    bekomme folgende Fehlermeldung:


    SSL context initialized for service stunnel inetd mode must define a remote host or an executable


    weiß jemand abhilfe ?

  • Das ist sicher nicht die gesamte Fehlermeldung. Ich tippe darauf das vorher noch was mit "Wrong permissions" kommt. Chmod/Chown wie in Punkt 4. beschrieben ausgeführt?

  • ne das hab ich gemacht...


    Zitat

    2009.03.05 19:44:43 LOG7[11174:3082684080]: Snagged 64 random bytes from /root/.rnd 2009.03.05 19:44:43 LOG7[11174:3082684080]: Wrote 1024 new random bytes to /root/.rnd 2009.03.05 19:44:43 LOG7[11174:3082684080]: RAND_status claims sufficient entropy for the PRNG 2009.03.05 19:44:43 LOG7[11174:3082684080]: PRNG seeded successfully 2009.03.05 19:44:43 LOG7[11174:3082684080]: Certificate: /etc/stunnel/stunnel.pem 2009.03.05 19:44:43 LOG7[11174:3082684080]: Certificate loaded 2009.03.05 19:44:43 LOG7[11174:3082684080]: Key file: /etc/stunnel/stunnel.pem 2009.03.05 19:44:43 LOG7[11174:3082684080]: Private key loaded 2009.03.05 19:44:43 LOG7[11174:3082684080]: SSL context initialized for service stunnel inetd mode must define a remote host or an executable


    iCon

  • Prüfe mal die Konfigurationen ob die auch so aussehen wie vorgegeben. Stimmt der Cert Name, wurde die IP Adresse bei smtps -> local korrekt angegeben.


    Für mich sieht es aber so aus als ob Du entweder kein PD-Admin/SE einsetzt oder meiner Anleitung nicht korrekt gefolgt bist. Ansonsten würde z.b. das Zertifikat nicht unter /etc/stunnel/stunnel.pem zu finden sein.


    Diese Anleitung bezieht sich auf ein PD-Admin System mit der Serverumgebung (SE) und wurde nur da getestet. Das sollte zwar ähnlich in anderen Umgebungen funktionieren aber dafür möchte ich keinen "Support" geben. Mit der Fehlermeldung bei Google findet sich übrigens schon einiges. ;)

  • Zitat

    Original von Lars
    6. Testing:
    Zum Test mal den POP3 Tunnel mit /usr/sbin/stunnel /etc/stunnel/pop3s starten. Mit netstat -an solltet ihr nun den Port 995 lauschen sehen.


    Genau an dem Punkt hab ich ein Problem. Ich bekomme immer die Fehlermeldung:

    Zitat

    /etc/stunnel/stunnel.pem: No such file or directory (2)


    auch die Config-Datei unter /etc/stunnel/stunnel.conf hab ich schon angesehen und angepasst...
    Kein Erfolg bisher...


    Kann mir dabei vielleicht einer helfen?

    Installierte pd-admin-Version: v4.10
    Installierte Version d. Serverumgebung: 2-0.141
    Lizenztyp: light30
    System: Ubuntu 8.04 LTS Server

  • Die Datei XXX gibt es nicht. Die will ich ja auch eigentlich nicht nutzen, denn dafür sind ja die Config-Files da.
    Ich hab aber testweise mal die .pem-Datei kopiert und bekam dann folgende Meldung:


    Zitat

    inetd mode must define a remote host or an executable


    Dann hab ich das versucht:


    Zitat

    stunnel -p /usr/local/pd-admin2/share/mail.pem


    und bekam die selbe Fehlermeldung wie oben. Logisch, ihm fehlen die Config-Dateien und ich müsste jetzt alles per Parameter einstellen (was ich aber mit Config-Dateien ja eigentlich vermeiden wollte)

    Installierte pd-admin-Version: v4.10
    Installierte Version d. Serverumgebung: 2-0.141
    Lizenztyp: light30
    System: Ubuntu 8.04 LTS Server

  • Hallo,


    die von dor_neue beschriebenen Probleme ergeben sich auch bei meiner (Test)Installation:


    erst wird /etc/stunnel/stunnel.pem nicht gefunden und dann bei entsprechender Umbennenung und Kopieren einer zuvor erzeugten mail.pem die Fehlermeldung


    Zitat

    inetd mode must define a remote host or an executable


    Hat da irgendwer eine Lösung oder Variante, die nachvollziehbar wäre (gfls. detaillierter beschreibt, wie's funktioniert)?

  • Die Anleitung ist etwas... naja!


    Meine Config funzt wunderbar unter Ubuntu 12.04 (hat genau so auch unter CentOS5.6 geklappt), allerdings mit dem "echten" Zertifikat - ich gebe es auch nur ein mal an:


    Code
    1. root@XXX ~ # cat /etc/default/stunnel4
    2. ENABLED=1
    3. FILES="/etc/stunnel/*.conf"
    4. OPTIONS=""
    5. PPP_RESTART=0


    Installiert hab ich stunnel4 Version 3:4.42-1

  • Hallo somnium ,


    großen Dank! Allerdings kann ich damit auch nicht viel anfangen - offensichtlich mangels entspr. Know-How. Sorry. Da muss ich erst mal schauen, grundsätzliche Zusammenhänge und Strukturen zu verstehen. ;-)

  • Hallo,


    leider funktioniert es bei mir mit debian 7 nicht.


    Anleitung finde ich soweit gut,


    möchte ich am Ende pop3s starten bekommen ich das:



    Section stunnel: SSL server needs a certificate? 
    Das Zertifikat liegt wie angegeben unter /usr/local/pd-admin2/share/mail.pem oder benötige ich noch zusätzlich ein Zertifikat?


    Noch eine Anmerkung zur Anleitung unter 2.1 ist ein Rechtschreibfehler:
    2.1. chmod +x ssgen.sh sollte wohl
    2.1. chmod +x sshgen.sh heißen.


    Hat mir jemand eine Idee?


    #########Edit fehler gefunden
    stunnel war bei mir mit stunnel3 verknüpft, habe es nun auf
    stunnel4 geändert und siehe da es funktioniert :)