Container Hardening
Cloud Snel, Cloud Strak
Cloudomgevingen veranderen snel. Daarom moet beveiliging hier standaard en geautomatiseerd meebewegen.
Voor Container Hardening is automatisering leidend: guardrails in code, least privilege en continue driftcontrole.
Zo houd je snelheid in de cloud, zonder dat veiligheid afhankelijk wordt van handmatig geluk.
Directe maatregelen (15 minuten)
Waarom dit telt
De kern van Container Hardening is risicoreductie in de praktijk. Technische context ondersteunt de maatregelkeuze, maar implementatie en borging staan centraal.
Verdedigingsmaatregelen
Het zou onverantwoord zijn om alleen aanvalstechnieken te beschrijven zonder de verdediging te behandelen. Hier is wat daadwerkelijk werkt – en wat niet meer is dan security theater.
Pod Security Standards
Kubernetes Pod Security Standards (PSS) vervangen de oudere PodSecurityPolicies en definiëren drie niveaus:
| Niveau | Beschrijving | Wat het blokkeert |
|---|---|---|
| Privileged | Geen restricties | Niets – alles is toegestaan |
| Baseline | Minimale restricties | Privileged containers, hostNetwork, hostPID, hostIPC |
| Restricted | Maximale restricties | Root user, alle host namespaces, privilege escalation, capabilities |
# Enforcement via namespace labels
apiVersion: v1
kind: Namespace
metadata:
name: production
labels:
pod-security.kubernetes.io/enforce: restricted
pod-security.kubernetes.io/audit: restricted
pod-security.kubernetes.io/warn: restrictedNetwork Policies
# Default deny all ingress en egress
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny
namespace: production
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
---
# Sta alleen specifiek verkeer toe
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-webapp-to-db
namespace: production
spec:
podSelector:
matchLabels:
app: database
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
app: webapp
ports:
- protocol: TCP
port: 5432
---
# Blokkeer metadata service (cruciaal in cloud!)
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: block-metadata
namespace: production
spec:
podSelector: {}
policyTypes:
- Egress
egress:
- to:
- ipBlock:
cidr: 0.0.0.0/0
except:
- 169.254.169.254/32Tip: Network Policies werken alleen als de CNI-plugin ze ondersteunt. Calico, Cilium en WeaveNet ondersteunen ze. Flannel doet dat standaard niet. Controleer altijd welke CNI-plugin actief is voordat je aanneemt dat Network Policies worden afgedwongen.
Runtime security: Falco
Falco is een runtime security-tool die syscalls monitort en alerts genereert bij verdacht gedrag:
# Falco regel: detecteer container escape pogingen
- rule: Container Escape via Mount
desc: Detecteer het mounten van het host-filesysteem vanuit een container
condition: >
evt.type = mount and container and
evt.arg.source startswith "/dev/sd"
output: >
Container escape poging gedetecteerd
(user=%user.name container=%container.name
image=%container.image.repository
source=%evt.arg.source)
priority: CRITICAL
- rule: Docker Socket Accessed in Container
desc: Detecteer toegang tot de Docker socket vanuit een container
condition: >
evt.type in (open, openat) and
container and fd.name = /var/run/docker.sock
output: >
Docker socket benaderd vanuit container
(user=%user.name container=%container.name
image=%container.image.repository)
priority: WARNINGImage scanning
# Trivy - vulnerability scanner
trivy image TARGET_IMAGE
trivy image --severity CRITICAL,HIGH TARGET_IMAGE
# Grype
grype TARGET_IMAGE
# Snyk
snyk container test TARGET_IMAGE
# In CI/CD pipeline:
# Blokkeer images met CRITICAL vulnerabilities
trivy image --exit-code 1 --severity CRITICAL TARGET_IMAGEReferentietabel
| Techniek | Categorie | MITRE ATT&CK | Complexiteit |
|---|---|---|---|
| Docker socket escape | Container Escape | T1611 - Escape to Host | Laag |
| Privileged container escape | Container Escape | T1611 | Laag |
| Cgroup release_agent | Container Escape | T1611 | Middel |
| nsenter host escape | Container Escape | T1611 | Laag |
| Kernel exploit (container) | Container Escape | T1068 - Exploitation for Privilege Escalation | Hoog |
| runc overwrite (CVE-2019-5736) | Container Escape | T1611 | Middel |
| Image layer secret extraction | Credential Access | T1552.001 - Credentials In Files | Laag |
| Registry enumeration | Discovery | T1613 - Container and Resource Discovery | Laag |
| Registry image poisoning | Persistence | T1525 - Implant Internal Image | Middel |
| K8s API unauthenticated access | Initial Access | T1190 - Exploit Public-Facing Application | Laag |
| K8s secret theft | Credential Access | T1552.007 - Container API | Laag |
| K8s RBAC escalation | Privilege Escalation | T1078.001 - Default Accounts | Middel |
| K8s pod creation escape | Privilege Escalation | T1610 - Deploy Container | Middel |
| etcd credential dump | Credential Access | T1552.007 | Middel |
| Metadata service abuse | Credential Access | T1552.005 - Cloud Instance Metadata API | Laag |
| DNS spoofing in cluster | Collection | T1557 - Adversary-in-the-Middle | Middel |
| Service mesh bypass | Defense Evasion | T1562.001 - Disable or Modify Tools | Middel |
| Admission controller bypass | Defense Evasion | T1562.001 | Hoog |
| CI/CD base image poisoning | Supply Chain | T1195.002 - Compromise Software Supply Chain | Middel |
| Build pipeline compromise | Execution | T1204.003 - Malicious Image | Middel |
In het volgende hoofdstuk verlaten we de container en kijken we naar het systeem dat die containers bouwt, test en deployt: de CI/CD pipeline. Als containers de cellen zijn in onze digitale gevangenis, dan is de CI/CD pipeline de fabriek die de cellen bouwt. En die fabriek, zo blijkt, heeft zijn eigen deuren en ramen die niet op slot zitten.
Verder lezen in de kennisbank
Deze artikelen in het portaal geven je meer achtergrond en praktische context:
- De cloud — andermans computer, jouw verantwoordelijkheid
- Containers en Docker — wat het is en waarom je het moet beveiligen
- Encryptie — de kunst van het onleesbaar maken
- Least Privilege — geef mensen alleen wat ze nodig hebben
Je hebt een account nodig om de kennisbank te openen. Inloggen of registreren.
Gerelateerde securitymaatregelen
Deze artikelen bieden aanvullende context en verdieping: