Problem
Some sysctls can turn off security features or affect every container on a host.
Description
Some sysctls can turn off security features or affect every container on a host, so they should be blocked except for a small “safe” list. A sysctl counts as safe only when it’s namespaced to its own container or Pod and kept separate from other Pods or host processes on the same node.
Solution
Consider removing all insecure sysctls, or use only the following safe ones:
- Undefined/nil
kernel.shm_rmid_forcednet.ipv4.ip_local_port_rangenet.ipv4.ip_unprivileged_port_startnet.ipv4.tcp_syncookiesnet.ipv4.ping_group_rangenet.ipv4.ip_local_reserved_ports(since Kubernetes 1.27)net.ipv4.tcp_keepalive_time(since Kubernetes 1.29)net.ipv4.tcp_fin_timeout(since Kubernetes 1.29)net.ipv4.tcp_keepalive_intvl(since Kubernetes 1.29)net.ipv4.tcp_keepalive_probes(since Kubernetes 1.29)
Problematic code
apiVersion: v1
kind: Pod
metadata:
name: unsafe-sysctl-demo
spec:
securityContext:
sysctls:
- name: net.core.somaxconn
value: "1024"
- name: kernel.msgmax
value: "65536"
containers:
- name: nginx
image: nginx:1.29-alpine
ports:
- containerPort: 80Verified code
apiVersion: v1
kind: Pod
metadata:
name: safe-sysctl-demo
labels:
app: demo
spec:
securityContext:
sysctls:
- name: net.ipv4.ip_local_port_range
value: "1024 65535"
- name: net.ipv4.tcp_syncookies
value: "1"
- name: net.ipv4.tcp_keepalive_time # ≥ 1.29
value: "7200"
- name: net.ipv4.tcp_keepalive_intvl # ≥ 1.29
value: "75"
- name: net.ipv4.tcp_keepalive_probes # ≥ 1.29
value: "9"
containers:
- name: nginx
image: nginx:1.29-alpine
ports:
- containerPort: 80
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop: ["ALL"]
readOnlyRootFilesystem: trueSource of the description:Pod Security Standards