Scoring an A grading from Qualys SSL Labs with VMware Horizon View 7.4.0 Security Server

Problem

I’ve been asked several times over the past year with how to configure VMware Horizon View to score a high rating on the Qualys SSL Labs (https://www.ssllabs.com/ssltest) portal because of the lack of information available on the internet so I thought I’d write this quick blog post to demonstrate one of the various ways you can achieve this.

Leaving a VMware Horizon View 7.4.0 security server with the default configuration would yield a B rating as shown here:

image

Note the following reasons why the rating is capped at B:

This server does not support Forward Secrecy with the reference browsers. Grade capped to B.

This server does not support Authenticated encryption (AEAD) cipher suites. Grade capped to B.

Analysis

The way to obtain a better score is to control the Cipher Suites that the security server offers and to review what is currently being offered, scroll down to the Configuration section of the report and review the protocols and suites listed:

image

Due to the lack of information for this, my first approach was to review the ciphers I use to obtain an A+ rating for NetScaler configurations but realized this would not work because:

  1. Horizon View does not support all of these ciphers
  2. The format of the ciphers is not the same between the NetScaler and VMware Horizon (they’re written differently

Solution

Official instructions provided by VMware to control the ciphers allowed by the security server can be found here:

Configure Acceptance Policies on Individual View Servers
https://docs.vmware.com/en/VMware-Horizon-7/7.0/com.vmware.horizon-view.security.doc/GUID-7FA3EE31-2DFD-4979-A972-87B40695FFC5.html

The way to override the default ciphers offered to connections, navigate to the following directory on the security server:

install_directoryVMwareVMware ViewServersslgatewayconf

Create a new file named locked.properties:

imageimage

Open the file in notepad and paste the following:

# The following list should be ordered with the latest protocol first:

secureProtocols.1=TLSv1.2

secureProtocols.2=TLSv1.1

# This setting must be the latest protocol given in the list above:

preferredSecureProtocol=TLSv1.2

# The order of the following list is unimportant unless honorClientOrder is false:

enabledCipherSuite.1=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

enabledCipherSuite.2=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

enabledCipherSuite.3=TLS_DHE_RSA_WITH_AES_256_GCM_SHA384

enabledCipherSuite.4=TLS_DHE_RSA_WITH_AES_128_GCM_SHA256

image

Restart the Security Server service to apply the changes.

Using the ciphers listed above would yield a score of A from the scan:

image

Scrolling down to the Configuration section will show that contains no weak ciphers are supported and TLSv1 is not supported:

image

It is also possible to support TLSv1 by using the following cipher configuration:

# The following list should be ordered with the latest protocol first:

secureProtocols.1=TLSv1.2

secureProtocols.2=TLSv1.1

secureProtocols.3=TLSv1

# This setting must be the latest protocol given in the list above:

preferredSecureProtocol=TLSv1.2

# The order of the following list is unimportant unless honorClientOrder is false:

enabledCipherSuite.1=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

enabledCipherSuite.2=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

enabledCipherSuite.3=TLS_DHE_RSA_WITH_AES_256_GCM_SHA384

enabledCipherSuite.4=TLS_DHE_RSA_WITH_AES_128_GCM_SHA256

enabledCipherSuite.5=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

enabledCipherSuite.6=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

enabledCipherSuite.7=TLS_DHE_RSA_WITH_AES_256_CBC_SHA

enabledCipherSuite.8=TLS_DHE_RSA_WITH_AES_128_CBC_SHA

Whether to support TLSv1 will be dependent on the clients connecting and my preference would be to omit it because it is a protocol that the world is deprecating.  The same can also be said with TLSv1.1 but I think it is safe to include that for now.

Why isn’t the score A+?

The reason why the score isn’t an A+ is is because of this line item:

Downgrade attack prevention

No, TLS_FALLBACK_SCSV not supported

image

I have yet to determine what changes to the configuration is required and will update this blog post when I do but the following is an interesting forum post about this topic that is worth reading:

https://security.stackexchange.com/questions/112531/is-tls-fallback-scsv-useless-if-only-tls-1-0-1-1-1-2-is-supported/112539#112539

To sum up: not supporting TLS_FALLBACK_SCSV is not necessarily a serious issue, depending on how well the client and server implement TLS 1.0 (by not supporting SSL 3.0 you already avoid the most glaring problems). However, good implementations cannot be guaranteed, and not supporting TLS_FALLBACK_SCSV is formally a weakness, even if it is not necessarily a vulnerability. That the weakness cannot be turned into a full exploit by attackers does not mean it does not exist.

In any case, you won’t implement TLS_FALLBACK_SCSV because you want security; you will implement TLS_FALLBACK_SCSV because you want an A+. If you do not, then you will spend inordinate amounts of time explaining to many people that the “A+” grade is meaningless in that respect and that you can afford not to take it. In the long term, not howling with the wolves is too expensive.

One Response