
- Unnecessary services and open ports
- Outdated or unpatched software
- Excessive user or process privileges
- Unrestricted kernel modules or drivers
Minimizing installed software, disabling unused services, and enforcing least privilege are fundamental controls that reduce the number of potential vulnerabilities an attacker can exploit.

Use the following practical recommendations and examples for each area.
-
Use the principle of least privilege
- Grant users, services, and processes only the permissions they require.
- Prefer narrowly-scoped RBAC roles and role bindings. Reserve
cluster-adminfor tightly controlled admin tasks.
-
Limit access
- Restrict traffic using Kubernetes NetworkPolicies, perimeter firewalls, and host-based firewalls (iptables/nftables).
- Use bastion hosts or VPNs for management plane access instead of exposing ports to broad networks.
-
Restrict obsolete kernel modules
- Blacklist modules you do not need to prevent them from loading and increasing the kernel attack surface.
- Remove obsolete software
- Regularly audit installed packages and remove anything unnecessary to reduce the number of vulnerable components.
- Remove or disable obsolete services
- Identify enabled services and disable those not required, which prevents them from running or listening on ports.
- Use automated configuration management (for example, Ansible) or immutable images so hosts are consistent and reproducible.
- Apply automated patching and vulnerability scanning for OS packages and container images.
- Enforce runtime restrictions to reduce syscall exposure:
- Regularly audit and monitor for configuration drift, unexpected services, or new network listeners.
- Kubernetes Documentation
- Ansible — Automation for configuration management
- Seccomp filters documentation
- AppArmor project
- SELinux project