The API server should only bind to secure, known ports
Set up the kubernetes integration.
Description
Do not bind to insecure port.
Rationale
Setting up the apiserver to serve on an insecure port would allow unauthenticated and unencrypted access to your master node. This would allow attackers who could access this port, to easily take control of the cluster.
Audit
Run the following command on the master node:
ps -ef | grep kube-apiserver
Verify that the --insecure-port
argument is set to 0
.
Edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml on the master node and set the below parameter. –insecure-port=0
Impact
All components that use the API must connect via the secured port, authenticate themselves, and be authorized to use the API. This includes: kube-controller-manager kube-proxy kube-scheduler kubelets
Default value
By default, the insecure port is set to 8080.
References
- https://kubernetes.io/docs/admin/kube-apiserver/
CIS controls
Version 6 9.1 Limit Open Ports, Protocols, and Services Ensure that only ports, protocols, and services with validated business needs are running on each system. Version 7 9.2 Ensure Only Approved Ports, Protocols and Services Are Running Ensure that only network ports, protocols, and services listening on a system with validated business needs, are running on each system.