
(Koney: A Cyber Deception Orchestration Framework for Kubernetes)
作者:
Mario Kahlhofer(Dynatrace Research – mario.kahlhofer@dynatrace.com)
Matteo Golinelli(University of Trento – matteo.golinelli@unitn.it)
Stefan Rass(Johannes Kepler University Linz – stefan.rass@jku.at)
在快速演进的云原生环境中,网络诱捕(Cyber Deception)是一种可在真正损害发生前扰乱攻击者的有力手段。网络诱捕通过在基础架构中策略性地放置陷阱、诱饵或“蜜标”(honeytokens),以检测、延迟并分析潜在攻击者。随着 Kubernetes 等容器编排平台的普及,这些技术能够无缝集成到系统中,且无需访问或修改应用源代码。
Koney 是专为 Kubernetes 设计的新型网络诱捕编排框架。借助 Operator 部署模型,Koney 允许运维团队将各种诱捕技术以“代码”形式编写、部署、轮换、监控并最终移除。本文将深入介绍 Koney 的内部原理、设计与实现,并提供实际案例、 Bash 与 Python 命令示例,帮助开发者将网络诱捕集成进 Kubernetes 集群。
阅读完毕后,您将了解:
本文既适合刚入门的读者,也适合希望在云原生环境中应用高级诱捕技术的资深用户。
虽然网络诱捕对攻击早期检测与缓解的价值已广为人知,但许多组织仍对部署该技术持观望态度,原因包括:
Koney 旨在回答以下关键问题:
框架利用云原生技术(如 Istio 服务网格、eBPF 内核机制)在应用层面透明集成诱捕方法,目标是在保持可维护性、可扩展性与性能的同时,简化阻碍落地的技术难点。
理解 Koney 需掌握以下核心概念:
若要在 Pod 内监控网络异常,可运行:
# 检查 Pod 内网络流量
kubectl exec -it <pod-name> -- tcpdump -i eth0 -nn
Koney 同样利用 Sidecar 容器与 eBPF 探针,做到在不中断应用功能的前提下注入诱捕。
诱捕策略(Deception Policies)定义了诱饵与陷阱的配置与行为,在 Koney 中均以 YAML“代码”形式书写,便于版本控制与评审。
在文件系统中可创建蜜文件、蜜标、蜜文档甚至蜜目录,伪装为高价值资产,一旦被访问即触发日志与告警。
示例 YAML:
apiVersion: koney/v1
kind: DeceptionPolicy
metadata:
name: honeytoken-policy
spec:
trapType: fileSystem
details:
fileName: "secrets.txt"
content: "username: admin\npassword: Pa$w0rd123"
triggerAlert: true
策略应用后,Koney 在目标 Pod/卷中插入文件并监控读取事件。
Web 诱捕针对 HTTP 流量,可注入伪造端点、修改头部、篡改响应体或伪装整页内容,尤其对自动化扫描器或手动探测效果显著。
示例 YAML:
apiVersion: koney/v1
kind: DeceptionPolicy
metadata:
name: web-deception-policy
spec:
trapType: webApplication
details:
endpoint: "/wp-admin"
responseType: fixed
responseContent: "<html><body><h1>Fake Admin Login Portal</h1></body></html>"
triggerAlert: true
策略同时指定作用范围,如通过标签或命名空间,只对特定 Pod 部署诱捕。
apiVersion: koney/v1
kind: DeceptionPolicy
metadata:
name: target-specific-policy
spec:
trapType: fileSystem
selector:
matchLabels:
role: sensitive
details:
fileName: "credentials.log"
content: "dummy-credentials"
triggerAlert: true
仅 role: sensitive 的 Pod 会获得该蜜文件,减少误报与性能影响。
Koney 以 Operator 的形式运行,自动完成诱捕部署、轮换、告警与清理。其包含多种“诱饵”与“捕获器”策略。
直接在目标容器内执行命令修改文件系统或配置。
# 在 Pod 内创建蜜标
kubectl exec -it <pod-name> -- /bin/sh -c "echo 'dummy data' > /app/honeytoken.txt"
通过挂载额外卷将诱饵文件注入容器。
apiVersion: v1
kind: Pod
metadata:
name: decoy-pod
spec:
containers:
- name: app
image: myapp:latest
volumeMounts:
- name: deception-volume
mountPath: /app/decoy-files
volumes:
- name: deception-volume
configMap:
name: decoy-config
利用 Istio EnvoyFilter 动态重定向或替换 HTTP 请求/响应。
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: deception-virtual-service
spec:
hosts:
- myapp.example.com
http:
- match:
- uri:
exact: /wp-admin
route:
- destination:
host: decoy-service
port:
number: 80
利用 eBPF 监控系统调用、文件访问和网络事件。
import json
def parse_tetragon_log(log_file):
with open(log_file, 'r') as f:
for line in f:
try:
event = json.loads(line)
if 'deception_triggered' in event:
print("检测到可疑访问:", event)
except json.JSONDecodeError:
continue
parse_tetragon_log('/var/log/tetragon/deception.log')
通过 EnvoyFilter 记录 HTTP 交互。
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: captor-filter
spec:
workloadSelector:
labels:
app: myapp
configPatches:
- applyTo: HTTP_FILTER
match:
context: SIDECAR_INBOUND
patch:
operation: INSERT_BEFORE
value:
name: envoy.filters.http.lua
typed_config:
"@type": "type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua"
inlineCode: |
function envoy_on_request(request_handle)
local headers = request_handle:headers()
request_handle:logInfo("Captor Trigger: " .. headers:get("User-Agent"))
end
在测试集群中,诱捕触发后 Koney 自动记录事件并发送告警,已知攻击手法检测率 >90%。
未来方向:
Koney 的 CRD 架构便于新增策略类型。
早期蜜标到实时监控等,Koney 将其云原生化、自动化。
固定响应、Payload 篡改等,Koney 结合 Istio 进行动态注入与管理。
“Policy-as-code” 思想在安全领域应用,Koney 通过 Operator 自动化全生命周期。
Koney 通过“策略即代码”与 Kubernetes Operator,为云原生环境大幅降低部署网络诱捕的门槛。
主要收获:
随着威胁形势日益严峻,Koney 为防御者提供了敏捷、可扩展的诱捕能力。
apiVersion: koney/v1
kind: DeceptionPolicy
metadata:
name: filesystem-honeytoken
spec:
trapType: fileSystem
selector:
matchLabels:
app: sensitive-data
details:
fileName: "credentials.txt"
content: |
user: admin
password: L0ngR@nd0mP@ss
triggerAlert: true
rotationInterval: "24h"
apiVersion: koney/v1
kind: DeceptionPolicy
metadata:
name: webapp-deception
spec:
trapType: webApplication
selector:
matchLabels:
app: my-web-app
details:
endpoint: "/admin"
responseType: fixed
responseContent: |
<html>
<body>
<h2>Decoy Admin Panel</h2>
<p>This page is a decoy. Any unauthorized access is logged.</p>
</body>
</html>
triggerAlert: true
rotationInterval: "12h"
部署策略
kubectl apply -f filesystem-honeytoken.yaml
kubectl apply -f webapp-deception.yaml
监控诱饵交互
# 实时查看 Koney Operator 日志
kubectl logs -f deployment/koney-operator -n security
Python 日志分析:解析 tetragon 日志并告警。
响应流程:告警后可自动隔离受影响 Pod/服务。
更多阅读:
Koney 为容器化环境中的网络诱捕带来了新范式。欢迎您在自己的 Kubernetes 集群中尝试 Koney,并参与社区贡献。
祝各位“愉快诱捕”!
关键词:网络诱捕、Kubernetes、Koney Operator、网络安全、蜜罐、蜜标、Istio、服务网格、eBPF、DevSecOps、容器安全、策略即代码