Как защитить Kubernetes на уровне ядра Linux
👋 Приветствую в мире цифровой безопасности!
Продолжим обсуждать атаку Rules File Backdoor
⏺Минимум привилегий в Pod: Пример securityContext, который стоит применять по умолчанию:
securityContext:
runAsNonRoot: true
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop: ["ALL"]
Пункты: drop ALL capabilities, allowPrivilegeEscalation: false, readOnlyRootFilesystem: true, runAsNonRoot — базовый набор «first line of defence».
⏺Seccomp и AppArmor - база: Включите restrictive seccomp по умолчанию в runtime (containerd/runc) и назначайте профили для сервисов.
Пример аннотации pod для seccomp:
kubectl annotate pod mypod container.seccomp.security.beta.kubernetes.io/container=runtime/default
⏺Жёсткая конфигурация хоста (sysctl + mount flags): Ключевые sysctl, которые уменьшат поверхность атаки:
# запретить IP forwarding (если не нужен)
sysctl -w net.ipv4.ip_forward=0
# ограничить ptrace (уменьшает риск LPE через ptrace)
sysctl -w kernel.yama.ptrace_scope=1
Перемонтируйте временные точки с безопасными опциями:
mount -o remount,noexec,nodev,nosuid /tmp
mount -o remount,noexec,nodev,nosuid /var/tmp
Если контейнеры не требуют namespace хоста - не включайте hostPID/hostNetwork/hostIPC.
⏺Ограничения ресурсов и cgroup-защита: Задавайте CPU/Memory лимиты и requests, включайте OOM-score-adj и контролируйте cgroup-политику, чтобы потенциальный эксплойт не «съел» хост:
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "512Mi"
ZeroDay | #атака