Supporto TLS SMTP SSL per Postfix: Difference between revisions

From RVM Wiki
Jump to navigation Jump to search
 
(7 intermediate revisions by the same user not shown)
Line 4: Line 4:
Soluzione: attivare le opzioni tls
Soluzione: attivare le opzioni tls


== Copia dei certificati ssl ==
= Copia dei certificati ssl =


===Utilizzo dei certificati standard===
==Utilizzo dei certificati standard==


I certificati sono:
I certificati sono:
Line 13: Line 13:
  /etc/ssl/certs/ssl-cert-snakeoil.pem
  /etc/ssl/certs/ssl-cert-snakeoil.pem


===Utilizzo di certificati specifici===
==Utilizzo di certificati specifici==
Generare i certificati con un metodo conosciuto.
Generare i certificati con un metodo conosciuto.


Line 24: Line 24:
in /etc/postfix
in /etc/postfix


  sudo cp /etc/ssl/mail.galimberti.net.key /etc/postfix/mail.galimberti.net.key
  sudo cp /etc/ssl/mail.example.com.key /etc/postfix/mail.example.com.key
  sudo cp cp /etc/ssl/mail.galimberti.net.crt /etc/postfix/mail.galimberti.net.crt
  sudo cp cp /etc/ssl/mail.example.com.crt /etc/postfix/mail.example.com.crt
  sudo cp cp /etc/ssl/galimberti.net/cacert.crt /etc/postfix/ca.galimberti.net.crt
  sudo cp cp /etc/ssl/example.com/cacert.crt /etc/postfix/ca.example.com.crt


  sudo chmod 640  /etc/postfix/mail.galimberti.net.key
  sudo chmod 640  /etc/postfix/mail.example.com.key


== Configurazione di Postfix per SSL ==
= Configurazione di Postfix per SSL =


Configurare postfix per l'uso di TLS:
Configurare postfix per l'uso di TLS:
Line 43: Line 43:
# uncomment this to force use of smtp auth only for
# uncomment this to force use of smtp auth only for
# ssl connections
# ssl connections
smtpd_tls_key_file = /etc/postfix/mail.galimberti.net.key
smtpd_tls_key_file = /etc/postfix/mail.example.com.key
smtpd_tls_cert_file = /etc/postfix/mail.galimberti.net.crt
smtpd_tls_cert_file = /etc/postfix/mail.example.com.crt
smtpd_tls_CAfile = /etc/postfix/ca.galimberti.net.crt
smtpd_tls_CAfile = /etc/postfix/ca.example.com.crt
smtpd_tls_loglevel = 2
smtpd_tls_loglevel = 2
smtpd_tls_received_header = yes
smtpd_tls_received_header = yes
Line 53: Line 53:
</pre>
</pre>


* Disabilitare i protocolli ssl vulnerabili:
  sudoedit /etc/postfix/main.cf
  sudoedit /etc/postfix/main.cf
<pre>
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_protocols = !SSLv2, !SSLv3
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
smtp_tls_protocols = !SSLv2, !SSLv3
</pre>


Riavviare postfix
Riavviare postfix


  /etc/init.d/postfix stop; /etc/init.d/postfix start
  /etc/init.d/postfix stop; /etc/init.d/postfix start
===Riferimenti===
*[https://access.redhat.com/solutions/120383 Resolution for POODLE SSL 3.0 vulnerability (CVE-2014-3566) in Postfix and Dovecot]


== Verifica del supporto TLS ==
== Verifica del supporto TLS ==
Line 82: Line 95:


* Testare la porta 25 senza cifratura
* Testare la porta 25 senza cifratura
  swaks -s mailserver.metrica.priv -au nome.cognome -f nome.cognome@deominio.dom -t mio.indirizzo@miodominio.dom -ap PASSWORD
  swaks -s mailserver.example.com -au nome.cognome -f nome.cognome@deominio.dom -t mio.indirizzo@miodominio.dom -ap PASSWORD


* Testare la porta 25 con STARTTLS
* Testare la porta 25 con STARTTLS
  swaks -s mailserver.metrica.priv -au nome.cognome -f nome.cognome@deominio.dom -t mio.indirizzo@miodominio.dom -ap PASSWORD -tls
  swaks -s mailserver.example.com -au nome.cognome -f nome.cognome@deominio.dom -t mio.indirizzo@miodominio.dom -ap PASSWORD -tls
 
* Per vedere i dettagli del certificato
openssl s_client -connect mailserver.example.com:25 -starttls smtp


== Attivazione del supporto per la porta 465 e 587 per SMTPS e SUBMISSION ==
== Attivazione del supporto per la porta 465 e 587 per SMTPS e SUBMISSION ==
Line 93: Line 109:
  sudoedit /etc/postfix/master.cf
  sudoedit /etc/postfix/master.cf


* Per SQUEEZE:
<pre>
<pre>
# port 465
# port 465
smtps     inet  n   -   y   -   -   smtpd
ssmtp     inet  n       -       y       -       -       smtpd
    -o smtpd_tls_wrappermode=yes
        -o smtpd_etrn_restrictions=reject
    -o smtpd_sasl_auth_enable=yes
        -o smtpd_tls_wrappermode=yes
        -o smtpd_sasl_auth_enable=yes


# port 587
# port 587
submission    inet  n  -  y  -  -  smtpd
submission    inet  n  -  y  -  -  smtpd
    -o smtpd_enforce_tls=yes
        -o smtpd_etrn_restrictions=reject
    -o smtpd_sasl_auth_enable=yes
        -o smtpd_enforce_tls=yes  
        -o smtpd_sasl_auth_enable=yes


# random number generator
# random number generator
Line 108: Line 127:
</pre>
</pre>


* Per WHHEZY:
<pre>
submission inet n      -      y      -      -      smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
smtps    inet  n      -      -      -      -      smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
tlsmgr    unix  -      -      -      1000?  1      tlsmgr
</pre>


* Riavviare postfix:
* Riavviare postfix:
Line 126: Line 163:


* Testare la porta 465 con:
* Testare la porta 465 con:
  swaks -s mailserver.metrica.priv -au nome.cognome -f nome.cognome@deominio.dom -t mio.indirizzo@miodominio.dom -ap PASSWORD -tlsc
  swaks -s mailserver.example.com -au nome.cognome -f nome.cognome@deominio.dom -t mio.indirizzo@miodominio.dom -ap PASSWORD -tlsc


* Testare la 587:
* Testare la 587:
  swaks -s mailserver.metrica.priv -au nome.cognome -f nome.cognome@deominio.dom -t mio.indirizzo@miodominio.dom -ap PASSWORD -tls -p 587
  swaks -s mailserver.example.com -au nome.cognome -f nome.cognome@deominio.dom -t mio.indirizzo@miodominio.dom -ap PASSWORD -tls -p 587


* Verificare che senza auth, la 587 non vada:
* Verificare che senza auth, la 587 non vada:


== Note relative ai client SMTP ==
= Note relative ai client SMTP =


Se risulta installato su un client Windows Norton Autoprotect, occorre disabilitare il checking delle email in uscita (Opzioni, email in uscita) altrimenti verrà bloccato l'invio delle email con ssl.
Se risulta installato su un client Windows Norton Autoprotect, occorre disabilitare il checking delle email in uscita (Opzioni, email in uscita) altrimenti verrà bloccato l'invio delle email con ssl.




== Riferimenti ==
= Riferimenti =
 
*[https://wiki.debian.org/PostfixAndSASL#Adding_TLS PostfixAndSASL - Debian Wiki]
* [http://workaround.org/articles/ispmail-etch/ Howto: ISP-style Email Server with Debian-Etch and Postfix 2.3]
* [http://workaround.org/articles/ispmail-etch/ Howto: ISP-style Email Server with Debian-Etch and Postfix 2.3]
* [http://blog.joerghoh.de/index.php?/archives/91-Debian-Etch,-postfix-and-TLS.html Debian Etch, postfix and TLS - Joerg on the web]
* [http://blog.joerghoh.de/index.php?/archives/91-Debian-Etch,-postfix-and-TLS.html Debian Etch, postfix and TLS - Joerg on the web]

Latest revision as of 12:36, 11 May 2018

Obiettivo: permettere l'invio di email con protocollo cifrato SSL Soluzione: attivare le opzioni tls

Copia dei certificati ssl

Utilizzo dei certificati standard

I certificati sono:

/etc/ssl/private/ssl-cert-snakeoil.key
/etc/ssl/certs/ssl-cert-snakeoil.pem

Utilizzo di certificati specifici

Generare i certificati con un metodo conosciuto.

Copiare poi

  • il certificato pubblico della C.A.
  • il certificato pubblico del server smtp
  • la chiave privata dell'smtp sena password

in /etc/postfix

sudo cp /etc/ssl/mail.example.com.key /etc/postfix/mail.example.com.key
sudo cp cp /etc/ssl/mail.example.com.crt /etc/postfix/mail.example.com.crt
sudo cp cp /etc/ssl/example.com/cacert.crt /etc/postfix/ca.example.com.crt
sudo chmod 640  /etc/postfix/mail.example.com.key

Configurazione di Postfix per SSL

Configurare postfix per l'uso di TLS:

cat | sudo tee -a /etc/postfix/main.cf > /dev/null <<'EOFile'
## TLS
#  Transport Layer Security
#
smtpd_use_tls = yes
#smtpd_tls_auth_only = yes
# uncomment this to force use of smtp auth only for
# ssl connections
smtpd_tls_key_file = /etc/postfix/mail.example.com.key
smtpd_tls_cert_file = /etc/postfix/mail.example.com.crt
smtpd_tls_CAfile = /etc/postfix/ca.example.com.crt
smtpd_tls_loglevel = 2
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
EOFile
  • Disabilitare i protocolli ssl vulnerabili:
sudoedit /etc/postfix/main.cf
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_protocols = !SSLv2, !SSLv3
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
smtp_tls_protocols = !SSLv2, !SSLv3


Riavviare postfix

/etc/init.d/postfix stop; /etc/init.d/postfix start

Riferimenti


Verifica del supporto TLS

Telnettare sulla porta 25 e verificare la risposta al comando STARTTLS:

C: [root@example.com]# telnet mail.example.com 25
S: 220 mail.example.com ESMTP Postfix (1.1.5)
C: EHLO example.com
S: 250-mail.example.com
S: 250-PIPELINING
S: 250-SIZE 10240000
S: 250-VRFY
S: 250-ETRN
S: 250-STARTTLS
S: 250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5 GSSAPI
S: 250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5 GSSAPI
S: 250-XVERP
S: 250 8BITMIME
C: STARTTLS
S: 220 Ready to start TLS
  • Testare la porta 25 senza cifratura
swaks -s mailserver.example.com -au nome.cognome -f nome.cognome@deominio.dom -t mio.indirizzo@miodominio.dom -ap PASSWORD
  • Testare la porta 25 con STARTTLS
swaks -s mailserver.example.com -au nome.cognome -f nome.cognome@deominio.dom -t mio.indirizzo@miodominio.dom -ap PASSWORD -tls
  • Per vedere i dettagli del certificato
openssl s_client -connect mailserver.example.com:25 -starttls smtp

Attivazione del supporto per la porta 465 e 587 per SMTPS e SUBMISSION

Se si vuole attivare anche il metodo con SSL wwrapper sulla porta 465, e submission sulla porta 587 scommentare e modificare le seguenti righe in

sudoedit /etc/postfix/master.cf
  • Per SQUEEZE:
# port 465
ssmtp     inet  n       -       y       -       -       smtpd
        -o smtpd_etrn_restrictions=reject
        -o smtpd_tls_wrappermode=yes
        -o smtpd_sasl_auth_enable=yes

# port 587
submission    inet  n   -   y   -   -   smtpd
        -o smtpd_etrn_restrictions=reject
        -o smtpd_enforce_tls=yes 
        -o smtpd_sasl_auth_enable=yes

# random number generator
tlsmgr    unix  -       -       -       1000?   1       tlsmgr
  • Per WHHEZY:
submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

smtps     inet  n       -       -       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

tlsmgr    unix  -       -       -       1000?   1       tlsmgr
  • Riavviare postfix:
sudo /etc/init.d/postfix stop
sudo /etc/init.d/postfix start

Controllare le porte in ascolto:

sudo netstat -an | grep ':25\|:465\|:587' | grep LISTEN
tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN    
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN    
tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN
  • Testare la porta 465 con:
swaks -s mailserver.example.com -au nome.cognome -f nome.cognome@deominio.dom -t mio.indirizzo@miodominio.dom -ap PASSWORD -tlsc
  • Testare la 587:
swaks -s mailserver.example.com -au nome.cognome -f nome.cognome@deominio.dom -t mio.indirizzo@miodominio.dom -ap PASSWORD -tls -p 587
  • Verificare che senza auth, la 587 non vada:

Note relative ai client SMTP

Se risulta installato su un client Windows Norton Autoprotect, occorre disabilitare il checking delle email in uscita (Opzioni, email in uscita) altrimenti verrà bloccato l'invio delle email con ssl.


Riferimenti