Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
centos:mail_c7:dovecot_4 [09.06.2015 20:03. ] – [Diffie-Hellmann-Verfahren und Perfect Forward Secrecy] djangocentos:mail_c7:dovecot_4 [22.07.2019 14:48. ] (aktuell) – [Links] django
Zeile 141: Zeile 141:
 </code> </code>
  
-==== Cipher-Suites und Diffie-Hellmann ====+==== Cipher-Suites und Diffie-Hellman ====
 Möchte man in Erfahrung bringen, welche Cipher-Suites((Sammlung von standardisierten kryptographischer Algorithmen)) unser installiertes OpenSSL-Paket mitbringt, können wir wie folgt abfragen((Ausgabe in formatierter Tabelle)). Möchte man in Erfahrung bringen, welche Cipher-Suites((Sammlung von standardisierten kryptographischer Algorithmen)) unser installiertes OpenSSL-Paket mitbringt, können wir wie folgt abfragen((Ausgabe in formatierter Tabelle)).
    # openssl ciphers -v    # openssl ciphers -v
Zeile 1383: Zeile 1383:
    # vim /etc/dovecot/conf.d/10-ssl.conf    # vim /etc/dovecot/conf.d/10-ssl.conf
  
-<file bash /etc/dovecot/conf.d/10-ssl.conf>## +<file bash /etc/dovecot/conf.d/10-ssl.conf>##                                                                         
-## SSL settings +## SSL settings                                                            
-##+##                                                                        
  
 # SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt> # SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
 # disable plain pop3 and imap, allowed are only pop3+TLS, pop3s, imap+TLS and imaps # disable plain pop3 and imap, allowed are only pop3+TLS, pop3s, imap+TLS and imaps
-# plain imap and pop3 are still allowed for local connections +# plain imap and pop3 are still allowed for local connections                       
-ssl = required+ssl = required                                                                     
  
 # PEM encoded X.509 SSL/TLS certificate and private key. They're opened before # PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
-# dropping root privileges, so keep the key file unreadable by anyone but +# dropping root privileges, so keep the key file unreadable by anyone but      
-# root. Included doc/mkcert.sh can be used to easily generate self-signed +# root. Included doc/mkcert.sh can be used to easily generate self-signed      
-# certificate, just make sure to update the domains in dovecot-openssl.cnf +# certificate, just make sure to update the domains in dovecot-openssl.cnf     
-# Django : 2014-04-09 +# Django : 2015-06-09                                                          
-# old    : ssl_cert = </etc/pki/dovecot/certs/dovecot.pem +# old    : ssl_cert = </etc/pki/dovecot/certs/dovecot.pem                      
-#          ssl_key = </etc/pki/dovecot/private/dovecot.pem +#          ssl_key = </etc/pki/dovecot/private/dovecot.pem                     
-ssl_cert = </etc/pki/dovecot/certs/servercert_2014-04-09.pem +ssl_cert = </etc/pki/dovecot/certs/imap.nausch.org.cert_bundle.2015-06-09.pem 
-ssl_key = </etc/pki/dovecot/private/serverkey_2014-04-09.pem+ssl_key = </etc/pki/dovecot/private/serverkey_2015-06-09.pem                 
  
 # If key file is password protected, give the password here. Alternatively # If key file is password protected, give the password here. Alternatively
 # give it when starting dovecot with -p parameter. Since this file is often # give it when starting dovecot with -p parameter. Since this file is often
 # world-readable, you may want to place this setting instead to a different # world-readable, you may want to place this setting instead to a different
-# root owned 0600 file by using ssl_key_password = <path. +# root owned 0600 file by using ssl_key_password = <path.                   
-#ssl_key_password =+#ssl_key_password =                                                        
  
 # PEM encoded trusted certificate authority. Set this only if you intend to use # PEM encoded trusted certificate authority. Set this only if you intend to use
 # ssl_verify_client_cert=yes. The file should contain the CA certificate(s) # ssl_verify_client_cert=yes. The file should contain the CA certificate(s)
 # followed by the matching CRL(s). (e.g. ssl_ca = </etc/pki/dovecot/certs/ca.pem) # followed by the matching CRL(s). (e.g. ssl_ca = </etc/pki/dovecot/certs/ca.pem)
-#ssl_ca = +#ssl_ca =
  
 # Require that CRL check succeeds for client certificates. # Require that CRL check succeeds for client certificates.
Zeile 1433: Zeile 1433:
  
 # DH parameters length to use. # DH parameters length to use.
-#ssl_dh_parameters_length = 1024+Django : 2015-05-21 
 +# default: ssl_dh_parameters_length = 1024 
 +ssl_dh_parameters_length=4096 
 + 
 +# Weekly regeneration of the ssl-parameters 
 +# Django : 2015-06-10 
 +# default: ssl_parameters_regenerate = 0 
 +#          ssl_parameters_regenerate = 2 hours 
 +#          Won't work since dovecot 2.2! 
 +#          Update ssl_dh_parameters_length with script dh-params 
 +#          https://dokuwiki.nausch.org/doku.php/centos:mail_c7:dovecot_4?&#diffie-hellman-verfahren_und_perfect_forward_secrecy
  
 # SSL protocols to use # SSL protocols to use
-#ssl_protocols = !SSLv2+# Django : 2014-10-16 
 +# default: #ssl_protocols = !SSLv2 
 +ssl_protocols = !SSLv2 !SSLv3
  
 # SSL ciphers to use # SSL ciphers to use
-#ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL+# Django : 2014-10-16 
 +# default: #ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL 
 +ssl_cipher_list = EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4
  
 # Prefer the server's order of ciphers over client's. # Prefer the server's order of ciphers over client's.
-#ssl_prefer_server_ciphers = no+# Django : 2015-05-20 
 +# default: #ssl_prefer_server_ciphers = no 
 +ssl_prefer_server_ciphers = yes
  
 # SSL crypto device to use, for valid values run "openssl engine" # SSL crypto device to use, for valid values run "openssl engine"
Zeile 1450: Zeile 1466:
 Über den Paramter **ssl** kann man steuern, ob **SSL/TLS** nun verwendet werden kann, oder ob es verwendet werden muss, oder eben nicht. Wir lassen den Default-Wert //**required**// stehen, was bedeutet, dass den Clients **SSL/TLS** als **zwingend vorgeschrieben** ist. Ein //**yes**// setzt die Transportverschlüsselung als **optional** und ein //**no**//  **deaktiviert** die Transportverschlüsselung gar ganz, aber wer will das seinen Endkunden in Zeiten vob **NSA**, **BND** und **Tempora** noch guten Gewissens verkaufen?  Über den Paramter **ssl** kann man steuern, ob **SSL/TLS** nun verwendet werden kann, oder ob es verwendet werden muss, oder eben nicht. Wir lassen den Default-Wert //**required**// stehen, was bedeutet, dass den Clients **SSL/TLS** als **zwingend vorgeschrieben** ist. Ein //**yes**// setzt die Transportverschlüsselung als **optional** und ein //**no**//  **deaktiviert** die Transportverschlüsselung gar ganz, aber wer will das seinen Endkunden in Zeiten vob **NSA**, **BND** und **Tempora** noch guten Gewissens verkaufen? 
  
-=== Diffie-Hellmann-Verfahren und Perfect Forward Secrecy  ===+=== Diffie-Hellman-Verfahren und Perfect Forward Secrecy  ===
 Wie am Anfang des Artikels bereits angeschnitten, basiert Perfect Forward Secrecy (**PFS**) auf der Idee, dass Client und Server ihre Kommunikation über einen zusätzlichen temporären Schlüssel absichern, der wechselt.  Wie am Anfang des Artikels bereits angeschnitten, basiert Perfect Forward Secrecy (**PFS**) auf der Idee, dass Client und Server ihre Kommunikation über einen zusätzlichen temporären Schlüssel absichern, der wechselt. 
  
Zeile 1461: Zeile 1477:
 Entgegen den Angaben im Abschnitt **SSL security settings** im [[http://wiki2.dovecot.org/SSL/DovecotConfiguration|Dovecot WIKI]] wird die Parameterdatei __nicht__ wöchentlich erneuert! Diese Funktion wurde ab Dovecot-Version **2.2.7** nicht mehr bereitgestellt. Entgegen den Angaben im Abschnitt **SSL security settings** im [[http://wiki2.dovecot.org/SSL/DovecotConfiguration|Dovecot WIKI]] wird die Parameterdatei __nicht__ wöchentlich erneuert! Diese Funktion wurde ab Dovecot-Version **2.2.7** nicht mehr bereitgestellt.
  
-Die Hintergründe und die Lösung zu diesem Problem, basieren auf den Information von **//[[https://andreasschulze.de/dovecot/ssl-params|Andreas Schulze]]//**, dem hier ein ausdrücklicher Dank gebührt!+Die Hintergründe und die Lösung zu diesem Problem, basieren auf den Hinweisen von **//[[https://andreasschulze.de/dovecot/ssl-params|Andreas Schulze]]//**, dem hier ein ausdrücklicher Dank gebührt!
 </WRAP> </WRAP>
  
Zeile 1472: Zeile 1488:
  
 <file bash /etc/dovecot/ssl-params.conf># Django : 2015-06-09 <file bash /etc/dovecot/ssl-params.conf># Django : 2015-06-09
-#          Länge der Diffie-Hellmann-Parameter, diese muss der Länge des privaten RSA-Schlüssels entsprechen+#          Länge der Diffie-Hellman-Parameter, diese muss der Länge des privaten RSA-Schlüssels entsprechen
 ssl_dh_parameters_length = 4096 ssl_dh_parameters_length = 4096
 # #
-#          Speicherort der Diffie-Hellmann-Parameter-Datei ssl-parameters.dat+#          Speicherort der Diffie-Hellman-Parameter-Datei ssl-parameters.dat
 state_dir = /var/lib/dovecot/tmp state_dir = /var/lib/dovecot/tmp
 </file> </file>
Zeile 1522: Zeile 1538:
    # less /var/log/maillog    # less /var/log/maillog
  
-<code>Jun  9 20:08:31 vml000077 dovecot: ssl-params(4526): renewed diffie-hellman parameters 4096bit +  Jun  9 20:08:31 vml000077 dovecot: ssl-params(4526): renewed diffie-hellman parameters 4096bit 
-Jun  9 20:08:31 vml000077 dovecot: master: Warning: SIGHUP received - reloading configuration</code>+  Jun  9 20:08:31 vml000077 dovecot: master: Warning: SIGHUP received - reloading configuration
  
  
Zeile 1710: Zeile 1726:
  
 ===== Dovecot Verbindungstest ===== ===== Dovecot Verbindungstest =====
 +==== openssl ====
 Zum Testen der kompletten Konfigurationsänderungen greifen wir auf die Bibliothek **openssl** zurück. Im nachfolgendem Beispiel bauen wir eine Verbindung von einem entferneten Linux-Host im eigenen Netz auf. Somit haben wir auch gleich noch den Test, ob es ggf. nicht eine Firewall gibt, die unseren Verbindungsaufbauwunsch unter Umständen blockiert. Zum Testen der kompletten Konfigurationsänderungen greifen wir auf die Bibliothek **openssl** zurück. Im nachfolgendem Beispiel bauen wir eine Verbindung von einem entferneten Linux-Host im eigenen Netz auf. Somit haben wir auch gleich noch den Test, ob es ggf. nicht eine Firewall gibt, die unseren Verbindungsaufbauwunsch unter Umständen blockiert.
  
Zeile 1854: Zeile 1871:
 **Wichtig:** \\ Nicht der Server definiert letztendlich, welcher **Cipher** bei der Absicherung der Übertragung verwendet wird, sondern der Mailclient! Und hier kann man durchaus sehr interessante Aha-Erlebnisse haben, wenn man mit den einschlägigen teuren Clientlösungen Verbindungen testet. m( **Wichtig:** \\ Nicht der Server definiert letztendlich, welcher **Cipher** bei der Absicherung der Übertragung verwendet wird, sondern der Mailclient! Und hier kann man durchaus sehr interessante Aha-Erlebnisse haben, wenn man mit den einschlägigen teuren Clientlösungen Verbindungen testet. m(
 </WRAP> </WRAP>
 +
 +==== cipherscan ====
 +Zum Überprüfen welche Chiffren vom Server angeboten und unterstützt werden, greifen wir auf das Tool **[[https://github.com/jvehent/cipherscan|cipherscan]]** von [[julien@linuxwall.info|Julien Vehent]] und [[hkario@redhat.com|Hubert Kario]] zurück. Das Projekt basiert auf den openssl-Bibliotheken und wird auf [[https://github.com|GitHub]] zur Verfügung gestellt.
 +
 +Mit nachfolgendem Aufruf kann überprüft werden, welche Ciphers angeboten werden.
 +   # /usr/local/src/cipherscan-master/cipherscan -o /usr/local/src/cipherscan-master/openssl --curves -starttls imap imap.nausch.org:143
 +
 +<code>.....................................
 +Target: imap.nausch.org:143
 +
 +prio  ciphersuite                  protocols              pfs                 curves
 +1     ECDHE-RSA-AES256-GCM-SHA384  TLSv1.2                ECDH,P-256,256bits  prime256v1,secp384r1,secp521r1
 +2     ECDHE-RSA-AES128-GCM-SHA256  TLSv1.2                ECDH,P-256,256bits  prime256v1,secp384r1,secp521r1
 +3     ECDHE-RSA-AES256-SHA384      TLSv1.2                ECDH,P-256,256bits  prime256v1,secp384r1,secp521r1
 +4     ECDHE-RSA-AES128-SHA256      TLSv1.2                ECDH,P-256,256bits  prime256v1,secp384r1,secp521r1
 +5     ECDHE-RSA-AES256-SHA         TLSv1,TLSv1.1,TLSv1.2  ECDH,P-256,256bits  prime256v1,secp384r1,secp521r1
 +6     ECDHE-RSA-AES128-SHA         TLSv1,TLSv1.1,TLSv1.2  ECDH,P-256,256bits  prime256v1,secp384r1,secp521r1
 +7     DHE-RSA-AES256-GCM-SHA384    TLSv1.2                DH,4096bits         None
 +8     DHE-RSA-AES256-SHA256        TLSv1.2                DH,4096bits         None
 +9     DHE-RSA-AES256-SHA           TLSv1,TLSv1.1,TLSv1.2  DH,4096bits         None
 +10    DHE-RSA-CAMELLIA256-SHA      TLSv1,TLSv1.1,TLSv1.2  DH,4096bits         None
 +11    DHE-RSA-AES128-GCM-SHA256    TLSv1.2                DH,4096bits         None
 +12    DHE-RSA-AES128-SHA256        TLSv1.2                DH,4096bits         None
 +13    DHE-RSA-AES128-SHA           TLSv1,TLSv1.1,TLSv1.2  DH,4096bits         None
 +14    DHE-RSA-SEED-SHA             TLSv1,TLSv1.1,TLSv1.2  DH,4096bits         None
 +15    DHE-RSA-CAMELLIA128-SHA      TLSv1,TLSv1.1,TLSv1.2  DH,4096bits         None
 +
 +Certificate: trusted, 4096 bit, sha512WithRSAEncryption signature
 +TLS ticket lifetime hint: 300
 +OCSP stapling: not supported
 +Cipher ordering: server
 +Curves ordering: server
 +Curves fallback: False
 +</code>
 +
 +Die Bewertung der einzelnen Chiffren müssen wir hier immer noch selbst vornehmen; hilfreiche Informationen hierzu findet man z.B. im Buch **//[[https://www.feistyduck.com/books/bulletproof-ssl-and-tls/|BULLETPROOF SSL AND TLS]]//** von **[[http://blog.ivanristic.com/|Ivan Ristić]]**.
 +
 +
  
 ====== Links ====== ====== Links ======
Zeile 1859: Zeile 1914:
   * **[[wiki:start|Zurück zu >>Projekte und Themenkapitel<<]]**   * **[[wiki:start|Zurück zu >>Projekte und Themenkapitel<<]]**
   * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**   * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**
- 
-~~DISCUSSION~~ 
- 
  
  • centos/mail_c7/dovecot_4.1433880195.txt.gz
  • Zuletzt geändert: 09.06.2015 20:03.
  • von django