Voglio proteggere il mio server di root (ulteriormente) dal servizio, iniziando con il servizio SMTP (Postfix MTA) come il più occupato. Durante il processo di impostazione, ho letto molto sulla sicurezza e la crittografia e ho fatto del mio meglio per raccogliere le informazioni più preziose. Tuttavia, alcuni problemi sembrano rimanere e non riesco a trovare nient'altro per rendere perfetta la configurazione.
Comportamento desiderato
Desidero che il servizio sia il più restrittivo possibile, ovvero utilizzare la crittografia sicura quando possibile. L'autenticazione dovrebbe essere consentita solo dopo STARTTLS
(invio) con crittografia sicura .
- Comunicazione server-server: altamente crittografata, non crittografata solo se necessario
- Comunicazione da client a server: solo crittografia elevata
- Autenticazione client solo sulla porta 587 (facoltativo?)
Differenziazione
La preoccupazione principale è la sicurezza, la crittografia e le impostazioni specifiche di sicurezza per il MTA Postfix. Non cerco consigli per anti-spam o anti-virus - questa è un'altra questione. La crittografia della posta elettronica non è un'opzione perché la preoccupazione è piuttosto la privacy che l'autenticità, che alla fine non giustifica lo sforzo irragionevolmente elevato del lato client necessario.
Configurazione corrente
- Server: Debian 7 (Wheezy)
- MTA: Postfix 2.9.6
- Certificato CaCert: 4096 bit / sha512-RSA
File /etc/postfix/main.cf
excerpt:
tls_random_source=dev:/dev/urandom
# Incoming
smtpd_tls_cert_file=/etc/ssl/cacert/certs/example.com.crt
smtpd_tls_key_file=/etc/ssl/cacert/private/example.com.key
smtpd_use_tls=yes
smtpd_tls_auth_only=yes
smtpd_tls_security_level=may
smtpd_tls_mandatory_ciphers=high
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
# Outgoing
smtp_tls_cert_file=/etc/ssl/cacert/certs/example.com.crt
smtp_tls_key_file=/etc/ssl/cacert/private/example.com.key
smtp_use_tls=yes
smtp_tls_security_level=may
smtp_tls_mandatory_ciphers=high
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# SASL Authentication (dovecot)
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
broken_sasl_auth_clients = no
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination
# prevent leaking valid e-mail addresses
disable_vrfy_command = yes
File /etc/postfix/master.cf
excerpt:
smtp inet n - - - - smtpd
submission inet n - - - - 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
Problemi aperti
-
starttls.info afferma:
There is a self-signed certificate in the trust chain [...] There are validity issues for the certificate. Certificates are seldom verified for SMTP servers, so this doesn't mean that STARTTLS won't be used. Generally speaking it's a bad practice not to have a valid certificate, and an even worse practice not to verify them. Any attempted encrypted communication is left all but wide open to Man-in-the-Middle attacks.
Si tratta di un problema riguardante la comunicazione da server a server? In tal caso, c'è qualcosa che posso fare per migliorare questo senza pagare un certificato ? (Ho solo clienti che conosco personalmente)
-
Lo stesso sito afferma:
Anonymous Diffie-Hellman is accepted. This is suspectible to Man-in-the-Middle attacks.
Quale impostazione è necessaria per disabilitare questi? (vedi anche la prossima voce dell'elenco)
-
testssl.sh mostra problemi per la porta 587:
--> Testing standard cipher lists ... Anonymous NULL Cipher offered (NOT ok) Anonymous DH Cipher offered (NOT ok) ...
Questo è probabilmente lo stesso problema dell'elemento precedente.
-
testssl.sh mostra problemi per la porta 25:
--> Testing Protocols SSLv3 offered (NOT ok) ... --> Testing standard cipher lists ... Anonymous NULL Cipher offered (NOT ok) Anonymous DH Cipher offered (NOT ok) 40 Bit encryption offered (NOT ok) 56 Bit encryption Local problem: No 56 Bit encryption configured in /usr/bin/openssl Export Cipher (general) offered (NOT ok) Low (<=64 Bit) offered (NOT ok) DES Cipher offered (NOT ok) Triple DES Cipher offered Medium grade encryption offered ... RC4 seems generally available. Now testing specific ciphers... ...
Questo vale solo per le comunicazioni da server a server? Altrimenti, come è possibile? Almeno SSLv3 dovrebbe essere disabilitato secondo il file
main.cf
. Come possono essere risolti questi problemi? -
ssl-tools.net afferma:
*.example.com - Certificate does not match hostname
Probabilmente non è un problema di sicurezza in sé, ma interessante in combinazione con l'articolo uno sopra. Quale hostname dovrei scegliere se un certificato con caratteri jolly non è ok? example.com o host.example.com ?
-
Che altro posso fare per rendere la configurazione perfettamente sicura?