container-security-testing
8
总安装量
2
周安装量
#34733
全站排名
安装命令
npx skills add https://github.com/ed1s0nz/cyberstrikeai --skill container-security-testing
Agent 安装分布
amp
1
opencode
1
kimi-cli
1
codex
1
github-copilot
1
codebuddy
1
Skill 文档
容å¨å®å ¨æµè¯
æ¦è¿°
容å¨å®å ¨æµè¯æ¯ç¡®ä¿å®¹å¨ååºç¨å®å ¨æ§çéè¦ç¯èãæ¬æè½æä¾å®¹å¨å®å ¨æµè¯çæ¹æ³ãå·¥å ·åæä½³å®è·µï¼æ¶µçDockerãKubernetesç容卿æ¯ã
æµè¯èå´
1. éåå®å ¨
æ£æ¥é¡¹ç®ï¼
- åºç¡éåæ¼æ´
- ä¾èµå æ¼æ´
- éåé ç½®
- ææä¿¡æ¯
2. è¿è¡æ¶å®å ¨
æ£æ¥é¡¹ç®ï¼
- 容卿é
- èµæºéå¶
- ç½ç»é离
- æä»¶ç³»ç»
3. ç¼æå®å ¨
æ£æ¥é¡¹ç®ï¼
- Kubernetesé ç½®
- æå¡è´¦æ·
- RBAC
- ç½ç»çç¥
Dockerå®å ¨æµè¯
éåæ«æ
使ç¨Trivyï¼
# æ«æéå
trivy image nginx:latest
# æ«ææ¬å°éå
trivy image --input nginx.tar
# åªæ¾ç¤ºé«å±æ¼æ´
trivy image --severity HIGH,CRITICAL nginx:latest
使ç¨Clairï¼
# å¯å¨Clair
docker run -d --name clair clair:latest
# æ«æéå
clair-scanner --ip 192.168.1.100 nginx:latest
使ç¨Docker Benchï¼
# è¿è¡Dockerå®å
¨åºåæµè¯
docker run --rm --net host --pid host --userns host --cap-add audit_control \
-e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \
-v /etc:/etc:ro \
-v /usr/bin/containerd:/usr/bin/containerd:ro \
-v /usr/bin/runc:/usr/bin/runc:ro \
-v /usr/lib/systemd:/usr/lib/systemd:ro \
-v /var/lib:/var/lib:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--label docker_bench_security \
docker/docker-bench-security
容å¨é ç½®æ£æ¥
æ£æ¥Dockerfileï¼
# å®å
¨é®é¢ç¤ºä¾
FROM ubuntu:latest # 使ç¨latestæ ç¾
RUN apt-get update && apt-get install -y curl # æªæå®çæ¬
COPY . /app # å¯è½å
嫿ææä»¶
ENV PASSWORD=secret # 硬ç¼ç å¯ç
USER root # 使ç¨rootç¨æ·
å®å ¨æä½³å®è·µï¼
# 使ç¨ç¹å®çæ¬
FROM ubuntu:20.04
# æå®å
çæ¬
RUN apt-get update && apt-get install -y curl=7.68.0-1ubuntu2.7
# 使ç¨érootç¨æ·
RUN useradd -m appuser
USER appuser
# æå°åéå
FROM alpine:3.15
# å¤é¶æ®µæå»º
FROM golang:1.18 AS builder
WORKDIR /app
COPY . .
RUN go build -o app
FROM alpine:3.15
COPY /app/app /app
è¿è¡æ¶æ£æ¥
æ£æ¥å®¹å¨æéï¼
# æ£æ¥ç¹æå®¹å¨
docker ps --filter "label=privileged=true"
# æ£æ¥æè½½ç主æºç®å½
docker inspect container_name | grep -A 10 Mounts
# æ£æ¥å®¹å¨ç½ç»
docker network inspect network_name
æ£æ¥èµæºéå¶ï¼
# æ£æ¥å
åéå¶
docker stats container_name
# æ£æ¥CPUéå¶
docker inspect container_name | grep -i cpu
Kuberneteså®å ¨æµè¯
é ç½®æ£æ¥
使ç¨kube-benchï¼
# è¿è¡kube-bench
kube-bench run
# æ£æ¥ç¹å®åºå
kube-bench run --targets master,node,etcd
使ç¨kube-hunterï¼
# è¿è¡kube-hunter
kube-hunter --remote target-ip
# 䏻卿¨¡å¼
kube-hunter --active
Podå®å ¨
æ£æ¥Podå®å ¨çç¥ï¼
# ä¸å®å
¨çPodé
ç½®
apiVersion: v1
kind: Pod
spec:
containers:
- name: app
image: nginx
securityContext:
privileged: true # ç¹ææ¨¡å¼
runAsUser: 0 # rootç¨æ·
å®å ¨é ç½®ï¼
apiVersion: v1
kind: Pod
spec:
securityContext:
runAsNonRoot: true
runAsUser: 1000
fsGroup: 2000
containers:
- name: app
image: nginx
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop:
- ALL
add:
- NET_BIND_SERVICE
RBACæ£æ¥
æ£æ¥è§è²æéï¼
# ååºææè§è²
kubectl get roles --all-namespaces
# æ£æ¥è§è²ç»å®
kubectl get rolebindings --all-namespaces
# æ£æ¥é群è§è²
kubectl get clusterroles
# æ£æ¥ç¨æ·æé
kubectl auth can-i --list --as=system:serviceaccount:default:sa-name
常è§é®é¢ï¼
- è¿åº¦æé
- æªä½¿ç¨çè§è²
- æªä½¿ç¨çæå¡è´¦æ·
ç½ç»çç¥
æ£æ¥ç½ç»çç¥ï¼
# ååºææç½ç»çç¥
kubectl get networkpolicies --all-namespaces
# æ£æ¥ç½ç»çç¥é
ç½®
kubectl describe networkpolicy policy-name -n namespace
ç½ç»çç¥ç¤ºä¾ï¼
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
å·¥å ·ä½¿ç¨
Falco
è¿è¡æ¶å®å ¨çæ§ï¼
# å®è£
Falco
helm repo add falcosecurity https://falcosecurity.github.io/charts
helm install falco falcosecurity/falco
# æ£æ¥è§å
falco -r /etc/falco/rules.d/
Aqua Security
# æ«æéå
aqua image scan nginx:latest
# æ«æKubernetesé群
aqua k8s scan
Snyk
# æ«æDockerfile
snyk test --docker nginx:latest
# æ«æKubernetesé
ç½®
snyk iac test k8s/
æµè¯æ¸ å
éåå®å ¨
- æ«æåºç¡éåæ¼æ´
- æ«æä¾èµå æ¼æ´
- æ£æ¥Dockerfileé ç½®
- æ£æ¥ææä¿¡æ¯æ³é²
è¿è¡æ¶å®å ¨
- æ£æ¥å®¹å¨æé
- æ£æ¥èµæºéå¶
- æ£æ¥ç½ç»é离
- æ£æ¥æä»¶ç³»ç»æè½½
ç¼æå®å ¨
- æ£æ¥Kubernetesé ç½®
- æ£æ¥RBACé ç½®
- æ£æ¥ç½ç»çç¥
- æ£æ¥Podå®å ¨çç¥
常è§å®å ¨é®é¢
1. éåæ¼æ´
é®é¢ï¼
- åºç¡éåå 嫿¼æ´
- ä¾èµå å 嫿¼æ´
- æªåæ¶æ´æ°
ä¿®å¤ï¼
- å®ææ«æéå
- åæ¶æ´æ°åºç¡éå
- ä½¿ç¨æå°åéå
2. è¿åº¦æé
é®é¢ï¼
- 容å¨ä»¥rootè¿è¡
- ç¹ææ¨¡å¼
- æè½½ææç®å½
ä¿®å¤ï¼
- 使ç¨érootç¨æ·
- ç¦ç¨ç¹ææ¨¡å¼
- éå¶æä»¶ç³»ç»è®¿é®
3. é ç½®é误
é®é¢ï¼
- é»è®¤é ç½®ä¸å®å ¨
- ç½ç»çç¥ç¼ºå¤±
- RBACé ç½®é误
ä¿®å¤ï¼
- éµå¾ªå®å ¨æä½³å®è·µ
- 宿½ç½ç»çç¥
- æ£ç¡®é ç½®RBAC
4. ææä¿¡æ¯æ³é²
é®é¢ï¼
- éåå å«å¯é¥
- ç¯å¢åéæ´é²
- é ç½®æä»¶æ³é²
ä¿®å¤ï¼
- 使ç¨å¯é¥ç®¡ç
- é¿å 硬ç¼ç
- 使ç¨Secret对象
æä½³å®è·µ
1. éåå®å ¨
- 使ç¨å®æ¹åºç¡éå
- å®ææ´æ°éå
- æ«æéåæ¼æ´
- æå°åéå大å°
2. è¿è¡æ¶å®å ¨
- 使ç¨érootç¨æ·
- éå¶å®¹å¨æé
- 宿½èµæºéå¶
- å¯ç¨å®å ¨ä¸ä¸æ
3. ç¼æå®å ¨
- é ç½®ç½ç»çç¥
- 宿½RBAC
- 使ç¨Podå®å ¨çç¥
- å¯ç¨å®¡è®¡æ¥å¿
注æäºé¡¹
- ä» å¨ææç¯å¢ä¸è¿è¡æµè¯
- é¿å 对ç产ç¯å¢é æå½±å
- 注æä¸å容å¨å¹³å°çå·®å¼
- 宿è¿è¡å®å ¨æ«æ