Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update TLS Ciphers. #918

Merged
merged 1 commit into from
Oct 10, 2016
Merged

Update TLS Ciphers. #918

merged 1 commit into from
Oct 10, 2016

Conversation

rhass
Copy link
Contributor

@rhass rhass commented Aug 29, 2016

Update the recommended TLS protocol and ciphers suggested by Mozilla
with support for modern browsers.

Oldest compatible clients : Firefox 27, Chrome 30, IE 11 on Windows 7,
Edge, Opera 17, Safari 9, Android 5.0, and Java 8

https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=nginx-1.8.1&openssl=1.0.1u&hsts=no&profile=modern

@marcparadise
Copy link
Member

Do you know which ones have been removed? Hard to see in the diff.

@rhass
Copy link
Contributor Author

rhass commented Sep 2, 2016

Here is a side-by-side diff (unified was harder to read in my opinion due to offsets) -- the left side is the old settings and the right side is the new.

ECDHE-RSA-AES128-GCM-SHA256             | DHE-ECDSA-CHACHA20-POLY1305
                                        > ECDHE-RSA-CHACHA20-POLY1305
ECDHE-ECDSA-AES128-GCM-SHA256             ECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-RSA-AES256-GCM-SHA384             | ECDHE-RSA-AES128-GCM-SHA256
ECDHE-ECDSA-AES256-GCM-SHA384             ECDHE-ECDSA-AES256-GCM-SHA384
                                        > ECDHE-RSA-AES256-GCM-SHA384
DHE-RSA-AES128-GCM-SHA256                 DHE-RSA-AES128-GCM-SHA256
DHE-DSS-AES128-GCM-SHA256               | DHE-RSA-AES256-GCM-SHA384
kEDH+AESGCM                             <
ECDHE-RSA-AES128-SHA256                 <
ECDHE-ECDSA-AES128-SHA256                 ECDHE-ECDSA-AES128-SHA256
ECDHE-RSA-AES128-SHA                    | ECDHE-RSA-AES128-SHA256
ECDHE-ECDSA-AES128-SHA                    ECDHE-ECDSA-AES128-SHA
ECDHE-RSA-AES256-SHA384                   ECDHE-RSA-AES256-SHA384
                                        > ECDHE-RSA-AES128-SHA
ECDHE-ECDSA-AES256-SHA384                 ECDHE-ECDSA-AES256-SHA384
ECDHE-RSA-AES256-SHA                    <
ECDHE-ECDSA-AES256-SHA                    ECDHE-ECDSA-AES256-SHA
                                        > ECDHE-RSA-AES256-SHA
DHE-RSA-AES128-SHA256                     DHE-RSA-AES128-SHA256
DHE-RSA-AES128-SHA                        DHE-RSA-AES128-SHA
DHE-DSS-AES128-SHA256                   <
DHE-RSA-AES256-SHA256                     DHE-RSA-AES256-SHA256
DHE-DSS-AES256-SHA                      <
DHE-RSA-AES256-SHA                        DHE-RSA-AES256-SHA
                                        > ECDHE-ECDSA-DES-CBC3-SHA
                                        > ECDHE-RSA-DES-CBC3-SHA
                                        > EDH-RSA-DES-CBC3-SHA
AES128-GCM-SHA256                         AES128-GCM-SHA256
AES256-GCM-SHA384                         AES256-GCM-SHA384
                                        > AES128-SHA256
                                        > AES256-SHA256
AES128-SHA                                AES128-SHA
AES256-SHA                                AES256-SHA
AES                                     <
CAMELLIA                                <
DES-CBC3-SHA                              DES-CBC3-SHA
!aNULL                                  | !DSS
!eNULL                                  <
!EXPORT                                 <
!DES                                    <
!RC4                                    <
!MD5                                    <
!PSK                                    <
!aECDH                                  <
!EDH-DSS-DES-CBC3-SHA                   <
!EDH-RSA-DES-CBC3-SHA                   <
!KRB5-DES-CBC3-SHA                      <

@rhass
Copy link
Contributor Author

rhass commented Sep 2, 2016

As a side note, we may want to consider enabling HSTS but it's a much bigger change to the config and may require changes in omnibus-software.

@marcparadise
Copy link
Member

Thanks for that split @rhass, let me dig into that - I wanted to verify that this isn't going to cause problems with our dated rest-client fork used by oc-chef-pedant. There's something in the back of my head from when we dropped SSLv3. I'm almost positive it was just for the protocol and not the cipher, but I wanted to double check. Will post back here in the a.m.

@stevendanna
Copy link
Contributor

Overall I'm 👍 on moving to a more modern list. Here are some random thoughts:

  • In the old list it was clear from the !EXPORT bit that we aren't including export ciphers, which was nice when evaluating security issues related to downgrade attacks.

Firefox 1, Chrome 1, IE 7, Opera 5, Safari 1, Windows XP IE8, Android 2.3, Java 7

  • What we tend to care about is the oldest version of ruby+openssl that we can support. The typical lower bound being the version of openssl shipped in RHEL5. However, my preference would be that we move to safe-by-default settings and allow those users to set the configuration if it doesn't work.
  • I wonder if there is an easy serverspec-style test we could write and include as part of pedant that would test some basic facts about our ssl setup. Namely: That we don't downgrade to export, we don't allow null ciphers, we don't allow rc4 ciphers, and maybe a few others.

@lamont-granquist
Copy link
Contributor

DES-CBC3-SHA needs to not be in the new list.

@lamont-granquist
Copy link
Contributor

i would honestly say that we prioritize mitigating attack surface over compatibility and ship the modern version of the ciphersuite, and then adjust downwards if anyone actually complains.

we're currently cargo culting forwards my settings which just a wildassed guess at the time about browser compatibility, we've had zero customer input over what our settings should be.

since the presence of DES-CBC3-SHA in this list makes us vulnerable to SWEET32 i think now is a good time to rethink that posture.

@rhass rhass force-pushed the rhass/update-security-settings branch from aa6e64a to ec42b39 Compare September 22, 2016 19:02
@rhass
Copy link
Contributor Author

rhass commented Sep 22, 2016

@lamont-granquist @stevendanna I updated the suite to the modern recommendations.

@rhass
Copy link
Contributor Author

rhass commented Sep 22, 2016

Travis seems to be unhappy about something unrelated with installing ruby.

@marcparadise
Copy link
Member

That's been happening at intervals, rerunning should clear it.

@rhass
Copy link
Contributor Author

rhass commented Sep 22, 2016

Now its failing to build gecode. =/

@stevendanna
Copy link
Contributor

@rhass Have a feeling we might need something like this: #940

Update the recommended TLS protocol and ciphers suggested by Mozilla
with support for modern browsers.

Oldest compatible clients : Firefox 27, Chrome 30, IE 11 on Windows 7,
Edge, Opera 17, Safari 9, Android 5.0, and Java 8

https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=nginx-1.8.1&openssl=1.0.1u&hsts=no&profile=modern
@rhass rhass force-pushed the rhass/update-security-settings branch from 1862dfa to ec8a5e2 Compare September 26, 2016 16:52
Copy link
Contributor

@stevendanna stevendanna left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The overall opinion in chat was that this is overall the correct path forward. If we want to do this, let's not delay.

Users who may need to update their settings after an upgrade:

  • Users on ancient old chef-10 omnibus builds or using chef installed from gems on old platforms
  • "FIPS" users
  • Users with clients connecting to Manage using very old web browsers.

@lamont-granquist
Copy link
Contributor

👍 lets do it.

document for users how to fix it, if anyone has compat issues.

otherwise, lets be more secure by default.

@stevendanna
Copy link
Contributor

stevendanna commented Oct 2, 2016

@chef/chef-server-maintainers Can another server maintainer review this?

@rhass
Copy link
Contributor Author

rhass commented Oct 7, 2016

Just poking @chef/chef-server-maintainers one more time.

@marcparadise
Copy link
Member

marcparadise commented Oct 7, 2016

👍 MWR

@rhass rhass merged commit d02a225 into master Oct 10, 2016
@rhass rhass deleted the rhass/update-security-settings branch October 10, 2016 18:16
@rhass rhass added the security label Oct 10, 2016
@ksubrama
Copy link

FYI - this completely breaks all reporting pedant tests.

Creating org pedant-testorg-27816
bundler: failed to load command: ./oc-reporting-pedant (./oc-reporting-pedant)
Errno::ECONNRESET: Connection reset by peer - SSL_connect
  /opt/opscode-reporting/embedded/service/gem/ruby/2.2.0/bundler/gems/chef-server-ab7a0fd8761f/oc-chef-pedant/lib/pedant/core_ext/net_http.rb:61:in `connect'
  /opt/opscode-reporting/embedded/service/gem/ruby/2.2.0/bundler/gems/chef-server-ab7a0fd8761f/oc-chef-pedant/lib/pedant/core_ext/net_http.rb:61:in `block in connect'
  /opt/opscode-reporting/embedded/lib/ruby/2.2.0/timeout.rb:73:in `timeout'
  /opt/opscode-reporting/embedded/lib/ruby/2.2.0/timeout.rb:124:in `timeout'
  /opt/opscode-reporting/embedded/service/gem/ruby/2.2.0/bundler/gems/chef-server-ab7a0fd8761f/oc-chef-pedant/lib/pedant/core_ext/net_http.rb:61:in `connect'
  /opt/opscode-reporting/embedded/lib/ruby/2.2.0/net/http.rb:863:in `do_start'
  /opt/opscode-reporting/embedded/lib/ruby/2.2.0/net/http.rb:852:in `start'
  /opt/opscode-reporting/embedded/service/gem/ruby/2.2.0/bundler/gems/rest-client-ba0d12258b77/lib/restclient/request.rb:183:in `transmit'
  /opt/opscode-reporting/embedded/service/gem/ruby/2.2.0/bundler/gems/rest-client-ba0d12258b77/lib/restclient/request.rb:69:in `execute'
  /opt/opscode-reporting/embedded/service/gem/ruby/2.2.0/bundler/gems/rest-client-ba0d12258b77/lib/restclient/request.rb:36:in `execute'
  /opt/opscode-reporting/embedded/service/gem/ruby/2.2.0/bundler/gems/rest-client-ba0d12258b77/lib/restclient.rb:73:in `post'
  /opt/opscode-reporting/embedded/service/gem/ruby/2.2.0/bundler/gems/chef-server-ab7a0fd8761f/oc-chef-pedant/lib/pedant/request.rb:143:in `authenticated_request'
  /opt/opscode-reporting/embedded/service/gem/ruby/2.2.0/bundler/gems/chef-server-ab7a0fd8761f/oc-chef-pedant/lib/pedant/request.rb:165:in `post'
  /opt/opscode-reporting/embedded/service/gem/ruby/2.2.0/bundler/gems/chef-server-ab7a0fd8761f/oc-chef-pedant/lib/pedant/platform.rb:322:in `block in create_org'
  /opt/opscode-reporting/embedded/service/gem/ruby/2.2.0/bundler/gems/chef-server-ab7a0fd8761f/oc-chef-pedant/lib/pedant/platform.rb:321:in `times'
  /opt/opscode-reporting/embedded/service/gem/ruby/2.2.0/bundler/gems/chef-server-ab7a0fd8761f/oc-chef-pedant/lib/pedant/platform.rb:321:in `create_org'
  /opt/opscode-reporting/embedded/service/gem/ruby/2.2.0/bundler/gems/chef-server-ab7a0fd8761f/oc-chef-pedant/lib/pedant/platform.rb:123:in `org_from_config'
  /opt/opscode-reporting/embedded/service/gem/ruby/2.2.0/bundler/gems/chef-server-ab7a0fd8761f/oc-chef-pedant/lib/pedant/platform.rb:42:in `initialize'
  /opt/opscode-reporting/embedded/service/gem/ruby/2.2.0/bundler/gems/chef-server-ab7a0fd8761f/oc-chef-pedant/lib/pedant.rb:79:in `new'
  /opt/opscode-reporting/embedded/service/gem/ruby/2.2.0/bundler/gems/chef-server-ab7a0fd8761f/oc-chef-pedant/lib/pedant.rb:79:in `create_platform'
  /opt/opscode-reporting/embedded/service/gem/ruby/2.2.0/bundler/gems/chef-server-ab7a0fd8761f/oc-chef-pedant/lib/pedant.rb:58:in `setup'
  /opt/opscode-reporting/embedded/service/oc-reporting-pedant/oc-reporting-pedant:15:in `<top (required)>'```

@lamont-granquist
Copy link
Contributor

did we just discover that reporting has an ancient version of openssl or an ancient client-side configuration that we need to fix?

or can you get the output of analyze.pl here against the chef-server:

http://stackoverflow.com/a/27937344/506908

@marcparadise
Copy link
Member

Thanks @lamont, that sets us down the right path - reporting pedant defaults to TLSv1.

@ksubrama
Copy link

@tas50 tas50 added Type: Enhancement Adds new functionality. and removed enhancement labels Jan 4, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Enhancement Adds new functionality.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants