Securing MicroK8S

These notes apply to version v1.26.6 of MicroK8S.

See:

To list ciphers on port:

sudo snap install nmap
nmap --script ssl-enum-ciphers -p 16443 192.168.1.97

Ports

Port Usage Notes
16443 api server
10259 kube-scheduler
10257 kube-controller
10250 kubelet
25000 cluster-agent Can’t control ciphers

Update Configuration

Edit:

  • /var/snap/microk8s/current/args/kube-apiserver
  • /var/snap/microk8s/current/args/kube-scheduler
  • /var/snap/microk8s/current/args/kube-controller-manager
  • /var/snap/microk8s/current/args/kubelet

Add:

--tls-min-version=VersionTLS12
--tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA

You cannot directly edit cipher suites for cluster-agent. So either turn it off (microk8s disable ha-cluster) or ..

Edit /var/snap/microk8s/current/args/cluster-agent and add:

--min-tls-version=tls13

Restart Microk8s

Run:

sudo snap restart microk8s

You can then check the port usage, using nmap as described above.