4.1.4 Ensure only modern TLS protocols are used

Warning! Audit Deprecated

This audit has been deprecated and will be removed in a future update.

View Next Audit Version

Information

Only modern TLS protocols should be enabled in NGINX for all client connections and upstream connections. Removing legacy TLS and SSL protocols (SSL 3.0, TLS 1.0 and 1.1), and enabling emerging and stable TLS protocols (TLS 1.2), ensures users are able to take advantage of strong security capabilities and protects them from insecure legacy protocols.

Rationale:

**Why disable SSL 3.0:**
The [POODLE Vulnerability](https://nvd.nist.gov/vuln/detail/CVE-2014-3566) allowed attackers to exploit SSL 3.0 to obtain cleartext information by exploiting weaknesses in CBC in 2014. SSL 3.0 is also no longer FIPS 140-2 compliant.

**Why disable TLS 1.0:**
TLS 1.0 was deprecated from use when PCI DSS Compliance mandated that it not be used for any applications processing credit card numbers in June 2018. TLS 1.0 does not make use of modern protections, and almost all user agents that do not support TLS 1.2 or higher are no longer supported by their vendor.

**Why disable TLS 1.1:**
Because of the increased security associated with higher versions of TLS, TLS 1.0 should be disabled. Modern browsers will begin to flag TLS 1.1 as deprecated in early 2019.

**Why enable TLS 1.2:**
TLS 1.2 takes advantage of several security features including modern cipher suites, perfect forward security, and authenticated encryption.

Solution

Run the following commands to change your ssl_protocols if they are already configured. This remediation advice assumes your nginx configuration file does not include server configuration outside of /etc/nginx/nginx.conf. You may have to also inspect the include files in your nginx.conf to ensure this is properly implemented.

**Web Server:**

sed -i 's/ssl_protocols[^;]*;/ssl_protocols TLSv1.2;/' /etc/nginx/nginx.conf

**Proxy:**

sed -i 's/proxy_ssl_protocols[^;]*;/proxy_ssl_protocols TLSv1.2;/' /etc/nginx/nginx.conf

If your ssl_protocols are not already configured, this can be accomplished manually by opening your web server or proxy server configuration file and manually adding the directives.

**Web Server:**

server {
ssl_protocols TLSv1.2;
}

**Proxy:**

location / {
proxy_pass cisecurity.org;
proxy_ssl_protocols TLSv1.2;
}

See Also

https://workbench.cisecurity.org/files/2275