Closed the-hotmann closed 1 year ago
Any news on this? Would be nice to at least have the option to disable unsecure encryption :)
Thanks!
Hi @MartinHotmann there's a pull request for the latest Alpine versions. The PR's tests are failing with some SSL errors, so I think Alpine has changed something about it anyway. Could you test if #216 matches your requirements?
Hi, thanks for the heads-up! As far as I see, #216 is just an alpine update/upgrade to v3.17, but nothing specific about old TLS & SSL versions is mentioned there.
I guess adding the mentioned config snippets to the config, would solve this issue - apparently I could not overwrite the config with docker volumes as the container crashed, when I mapped in my own (modified config) due to some weird fs errors.
A short sumit what could have caused the SSL errors in alpine v3.17:
It might be OpenSSL
, as v3.16 uses v1.1.1s and v3.17 uses the newer v3.0.7. (click links to see repository)
But in fact I think this does not address the insecure TLS & SSL issue directly, since v3 of openssl also is capable of using them, it must be disabled in the application itself, so it that the application does not accept these insecure versions and rejects them.
Both mda & mta would need it - snippets are mentioned in the first post, I guess just copying them in the config-template will work if it is done at build time of the image.
Just for reference I will link this tutorial, where it is described how to disable the insecure SSL & TLS versions: https://www.transip.eu/knowledgebase/entry/5389-disabling-tls-and-your-mailserver/
I realised, that dovecot now does have the ssl_min_protocol = TLSv1.2
implemented?
Hi @MartinHotmann thank you for your useful information! I took a deeper look into it.
I've committed the changes in d65ff03. My testing library imap-tester is not able to connect to TLS1.2, as described in this bugreport. So now I have to dig deeper and implement another IMAP library into the tester. It might be Horde/Imap_Client.
I'll keep you updated.
Hi @MartinHotmann the issue is solved! Version 3.5.2 is ready to test.
Thank you very much! I will test it immediately and report back :)
Sooo. I'm back to report back:
TLSv1
& TLSv1.1
are not entorely disabled, but the application does not accept any data on them, but instead signalises to the client Secure Renegotiation IS supported
to renegotiate the TLS version and hopefully upgrade.This is all I expected. Sadly I forgot to add something, but the substance of this request is fullfilled, so I will create a new one.
New Ticket: https://github.com/jeboehm/docker-mailserver/issues/228
@jeboehm actually it seems, that TLSv1 & TLSv1.1 are not disabled.
At least that is what testssl.sh
reports:
SSLv2 not offered (OK)
SSLv3 not offered (OK)
TLS 1 offered (deprecated)
TLS 1.1 offered (deprecated)
TLS 1.2 offered (OK)
TLS 1.3 offered (OK): final
NPN/SPDY not offered
ALPN/HTTP2 not offered
So it seems it is still offered and not disabled completely.
I tested it like this:
docker run --rm -it drwetter/testssl.sh:latest [###IP###]:465
I think that at dovecot the config ssl_min_protocol
was not doing the trick on it's own. This seems to be required aswell:
ssl_protocols = TLSv1.3 TLSv1.2 !TLSv1.1 !TLSv1 !SSLv3 !SSLv2
ssl_prefer_server_ciphers = yes
ssl_cipher_list = ALL:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@STRENGTH
I tbh don't know if it is ssl_cipher_list
or ssl_ciphers
!TLSv1.1 !TLSv1 !SSLv3 !SSLv2
)TLSv1.3 TLSv1.2
)!aNULL:!eNULL
)ssl_cipher_list
should be chosen even more strict!? Maybe ssl_cipher_list = HIGH:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@STRENGTH
so that not everything needs to be disallowed explicitly.I hope that can make it a little more secure :)
Thank you @MartinHotmann! This will be solved in #241
Is your feature request related to a problem? Please describe. These days SSL v2, v3, TLSv1 & v1.1 are considered insecure and therefore should be disabled by default - with the option to enable it, for those who really want to. I anyway don't see any reason since littlerally all programms that support TLSv1.0 also support 1.2 and mostly also v1.3.
Describe the solution you'd like By default all insecure TLS & SSL Versions to be disabled.
Describe alternatives you've considered Disableing by default, but giving an option in
.env
to enable insecure stuff.Additional context I tried to add the config manually to
main.cf
andmain.cf.proto
in postfix, but all this just resultet in the container throwing errors.The config I used was:
The config seems valid, but overwriting the config files through docker-volumes (for persistent storage) was not possible.
For the dovecot I added this:
to
/etc/dovecot/conf.d/10-ssl.conf
but I don't know if it is enough to force TLS >= v1.2Best regards & thanks in advance!