CIS-4.2.5 - Ensure that the --streaming-connection-idle-timeout argument is not set to 0

Ensure that the --streaming-connection-idle-timeout argument is not set to 0

Note: to enable this control run Kubescape with host sensor (see here)

Framework

CIS

Severity

Low

Description of the the issue

Setting idle timeouts ensures that you are protected against Denial-of-Service attacks, inactive connections and running out of ephemeral ports.

Note: By default, --streaming-connection-idle-timeout is set to 4 hours which might be too high for your environment. Setting this as appropriate would additionally ensure that such streaming connections are timed out after serving legitimate use cases.

Related resources

What does this control test

Do not disable timeouts on streaming connections.

How to check it manually

Run the following command on each node:

ps -ef | grep kubelet

Verify that the --streaming-connection-idle-timeout argument is not set to 0.

If the argument is not present, and there is a Kubelet config file specified by --config, check that it does not set streamingConnectionIdleTimeout to 0.

Remediation

If using a Kubelet config file, edit the file to set streamingConnectionIdleTimeout to a value other than 0.

If using command line arguments, edit the kubelet service file /etc/kubernetes/kubelet.conf on each worker node and set the below parameter in KUBELET_SYSTEM_PODS_ARGS variable.

--streaming-connection-idle-timeout=5m

Based on your system, restart the kubelet service. For example:

systemctl daemon-reload
systemctl restart kubelet.service

Impact Statement

Long-lived connections could be interrupted.

Default Value

By default, --streaming-connection-idle-timeout is set to 4 hours.

Example

No example