On Wed, Feb 17, 2021 at 07:04:54PM +0100, Jeff Abrahamson wrote:
> But the man page makes a good argument for setting this to medium.
> I'd originally set smtpd_tls_mandatory_ciphers = high, I've switched
> it to medium.
You can set it back to "high". Perhaps that should even be the new
default in the upcoming Postfix 3.6...
> > Yes, on the submission port, dropping support for TLS < 1.2
> > is much more reasonable, because presumably you can make
> > informed judgements as to what software the authorised users
> > have at their disposal.
>
> I was surprised by the level of disagreement on what best practice is.
There is no substantive disagreement, there's a well known trade-off
between:
A. Righteously sending a signal to the folks in the long tail
of the curve to finally get off their behinds and support modern
TLS specs.
B. Barring substantive downgrade exposure, raising the ceiling
and leaving the floor alone, until such time as the long tail
withers away to effectively nobody. (RFC7435). This improves
security without needlessly forcing laggards to cleartext.
Some laggards don't get the message until some folks take option A,
while the pragmatic and sensible thing is option B. Do you want to
be a hero or a pragmatist?
> Setting these two should guarantee that no incoming connection is
> unencrypted.
>
> smtpd_use_tls = yes
> smtpd_tls_auth_only = yes
Sorry, no. The first is an obsolete syntax to *enable* TLS, it was
replaced with "smtpd_tls_security_level = may". The second also does
not enforce TLS, but it does cause SASL AUTH to not be offered as option
until and unless a TLS connection is established.
> But which versions? This seems to make sense: require high grade
> ciphers.
See RFC7435. At this point the *only* medium cipher that's still
used by a very few laggards is RC4-SHA1. Otherwise "high" is no
longer an issue. For most sites, even RC4-SHA1 is never seen in
practice. We have now probably reached the point in time where
the long tail for medium has withered away. You can use "high"
or "medium", either is fine.
OpenSSL 1.1.1 by default disables RC4 at compile time, leaving just
SEED, which nobody needs for interoperability.
$ openssl ciphers -s -tls1_2 -v MEDIUM
DHE-RSA-SEED-SHA SSLv3 Kx=DH Au=RSA Enc=SEED(128) Mac=SHA1
DHE-DSS-SEED-SHA SSLv3 Kx=DH Au=DSS Enc=SEED(128) Mac=SHA1
SEED-SHA SSLv3 Kx=RSA Au=RSA Enc=SEED(128) Mac=SHA1
> I had initially set smtpd_tls_exclude_ciphers = RC4, aNULL, but,
> again, I see the man page makes a good argument against that, so I've
> removed the exclusion.
You don't need to and should not exclude aNULL, and "high" already
excludes "RC4", so you're all set in terms of the basic algorithms.
> The default value of smtpd_tls_mandatory_protocols is !SSLv2, !SSLv3.
> The suggestion on this thread was to set it as follows, which was
> certainly better than what I had (an explicit inclusion rather than an
> explicit exclusion). I'm rather tempted, based on the man page, to
> change it to its default value (essentially, >= TLSv1). I'm open to
> argument.
>
> smtpd_tls_mandatory_ciphers = medium
> # smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
> smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
The default is still reasonable for opportunistic TLS in SMTP. On
the submission port, you can reasonably require >= TLS 1.2, if all
the authorised clients are expected to be able to do that.
--
Viktor.