1.2.35 Ensure that the API Server only makes use of Strong Cryptographic Ciphers

Information

Ensure that the API server is configured to only use strong cryptographic ciphers.

Rationale:

TLS ciphers have had a number of known vulnerabilities and weaknesses, which can reduce the protection provided by them. By default Kubernetes supports a number of TLS ciphersuites including some that have security concerns, weakening the protection provided.

Solution

Edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml on the master node and set the below parameter as follows, or to a subset of these values.

--tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384

Impact:

API server clients that cannot support modern cryptographic ciphers will not be able to make connections to the API server. Set the same subset in rule 4.2.13

Default Value:

By default the Kubernetes API server supports a wide range of TLS ciphers

References:

https://github.com/ssllabs/research/wiki/SSL-and-TLS-Deployment-Best-Practices#23-use-secure-cipher-suites

Notes:

The list chosen above should be fine for modern clients. It's essentially the list from the Mozilla 'Modern cipher' option with the ciphersuites supporting CBC mode removed, as CBC has traditionally had a lot of issues

See Also

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

Item Details

Category: SYSTEM AND COMMUNICATIONS PROTECTION

References: 800-53|SC-13, CSCv6|3.4, CSCv7|4.5

Plugin: Unix

Control ID: cf853a25f01aec95a5cfa6f8d097a292d659225eff1c1b5fa0002884e75c3b25