K8s 系列七:NeuVector 容器安全平台部署与实践

🗺️ 系列目录:

    1. K8s系列一:Ubuntu 22.04 从零搭建集群(Flannel + Containerd)
    2. K8s系列二:安装 Dashboard – 原生 Web 控制台配置
    3. K8s系列三:安装 Rancher – 企业级多集群管理平台
    4. K8s系列四:安装 Kuboard – 国产可视化运维工具
    5. K8s系列五:Elkeid入侵检测系统 容器 K8s 安全部署与检测
    6. K8s系列六:HarborGuard 容器安全扫描平台部署与实战
    7. K8s系列七:NeuVector 容器安全平台部署与实践 👈 当前篇章
    8. K8s系列八:三大容器安全平台对比总结(HarborGuard / NeuVector / Elkeid)
一、前言
1.1 环境准备
  NeuVector 是 SUSE 开源的容器运行时安全平台,专为 Kubernetes 设计,提供容器网络可视化、漏洞扫描、运行时防护、策略管控、合规检查等能力,是云原生安全必备工具。
  • 重点注意:NeuVector 必须在 Kubernetes 集群内部署,不能像 HarborGuard 一样通过简单的 docker-compose 运行。
  • 测试环境:
    • OS: Ubuntu 22.04 LTS
    • IP: 192.168.20.165
    • 前置条件: 已部署完成的 K8s 集群。
  • 推荐安装方式:使用 Helm(官方推荐)

1.2 为什么要用 NeuVector?

在前面的实践中:

  • HarborGuard → 镜像扫描(静态安全)
  • Elkeid → 主机入侵检测

但缺少一个关键能力:

容器运行时安全(Runtime Security)

👉 这就是 NeuVector 的定位:

能力 说明
运行时防护 阻止异常进程 / 反弹 shell
网络可视化 自动绘制服务调用关系
漏洞扫描 容器镜像 CVE
安全策略 白名单控制
合规检查 CIS / PCI
二、部署 NeuVector(Helm)
2.1 添加 Helm 仓库并更新
helm repo add neuvector https://neuvector.github.io/neuvector-helm/
helm repo update
2.2 创建命名空间与 Bootstrap 密码
# 创建独立的命名空间
kubectl create namespace neuvector

# 创建初始化管理员密码
kubectl create secret generic neuvector-bootstrap-secret \
  -n neuvector \
  --from-literal=bootstrapPassword=Admin@123
2.3 使用 Helm 安装 NeuVector Core
helm install neuvector neuvector/core \
  --namespace neuvector
2.4 验证 Pod 运行状态
执行以下命令,等待所有 Pod 进入 Running 或 Completed 状态(耐心等待):
kubectl get pods -n neuvector
 三、 访问 NeuVector UI
3.1 临时访问(端口转发,仅供测试)

此方法适用于快速验证,关闭终端后转发即失效。

kubectl port-forward svc/neuvector-service-webui 8443:8443 -n neuvector --address 0.0.0.0
  • 访问地址:https://<任意节点IP>:8443
  • 用户名:admin
  • 密码:Admin@123

3.2 长期访问(配置 NodePort 类型 Service)

这是生产环境推荐方式,可将服务端口暴露到集群节点。

查看当前 Service 类型
root@k8s-master:~# kubectl get svc -n neuvector
NAME                              TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                         AGE
neuvector-service-webui           ClusterIP   10.103.182.109   <none>        8443/TCP                        7m7s
neuvector-svc-admission-webhook   ClusterIP   10.101.105.45    <none>        443/TCP                         7m7s
neuvector-svc-controller          ClusterIP   None             <none>        18300/TCP,18301/TCP,18301/UDP   7m7s
neuvector-svc-crd-webhook         ClusterIP   10.97.72.126     <none>        443/TCP                         7m7s
初始状态下 neuvector-service-webui 的类型为 ClusterIP

修改 Service 类型为 NodePort

kubectl edit svc neuvector-service-webui -n neuvector

找到 type: ClusterIP 这一行,将其改为 type: NodePort,保存退出。


 

确认映射端口
kubectl get svc -n neuvector
  • 8443:容器内部端口。
  • 30398:节点上对外暴露的端口(关键端口)。
最终访问地址https://192.168.20.165:30398/(节点 IP 和上述获得的 NodePort)

3.3 初始化设置
  • 首次登录后,系统会要求修改密码
  • 点击右上角头像 -> My Profile,可以:
    • 更改密码。
    • 设置界面语言(支持中文)。
 
四、核心功能说明
1️⃣ 概览(Overview)

提供整体安全态势:

  • 主机状态
  • 容器数量
  • 漏洞统计
  • 安全事件

👉 类似“安全大盘”

2️⃣ 网络活动(Network)

👉 最有价值的功能之一

作用:

  • 展示 Pod / 服务之间通信关系
  • 自动生成网络拓扑图
  • 可过滤流量

👉 用于:

  • 排查异常连接
  • 发现潜在攻击路径

3️⃣ 资产(Assets)

展示:

  • 平台
  • 主机
  • Pod / 容器

并支持:

👉 ✔ 自动漏洞扫描

可以看到:

  • CVE 等级
  • 影响组件
  • 修复建议

4️⃣ 策略(Policies)

核心安全能力:

  • 网络策略(谁能访问谁)
  • 进程白名单
  • 准入控制
  • DLP / WAF

5️⃣ 安全隐患(Vulnerabilities)🔥

👉 这是漏洞扫描的核心模块

主要作用:

  • 展示当前环境中所有已知漏洞(CVE)
  • 按严重等级分类(Critical / High / Medium / Low)
  • 提供修复建议

6️⃣ 设置(Settings / 模式)

👉 这一块是 NeuVector 的“灵魂” 三种运行模式

模式 行为 适用阶段
学习模式(Discover / Learn) 自动记录正常行为,生成白名单 初始阶段
监控模式(Monitor) 发现异常 → 只告警,不拦截 观察阶段
保护模式(Protect) 发现异常 → 直接拦截 生产环境
五、运行时安全能力测试(参照K8s系列五)

  本次测试参照《K8s系列五:Elkeid入侵检测系统 容器 K8s 安全部署与检测》相同攻击场景,在 NeuVector 环境下复现验证,对比检测与防护效果。验证覆盖容器逃逸、反弹 Shell、挖矿模拟、敏感信息访问、不安全镜像、RBAC 越权6 类典型风险,测试结果如下:


5.1 攻防验证结果汇总
测试项 Elkeid 社区版 NeuVector
特权容器创建 ✅ 检测到 ✅ 检测到(配置风险)
RBAC 越权(cluster-admin) ✅ 检测到 ✅ 检测到(审计日志)
敏感目录挂载(/etc) ❌ 未检测到 ✅ 检测到(进程违规)
hostNetwork / hostPID 滥用 ❌ 未检测到 ✅ 检测到(进程违规)
容器逃逸(CDK mount-disk) ❌ 未检测到 ✅ 检测到(25条告警,覆盖逃逸全过程)
反弹 Shell(bash -i) ❌ 未检测到 ✅ 检测到(明确识别为 reverse shell 隧道)
挖矿模拟(dd 占满CPU) ❌ 未检测到 ✅ 检测到(进程违规)
访问 K8s Secret ❌ 未检测到 ❌ 未检测到(仅审计日志,无安全告警)
使用 latest 标签镜像 ❌ 未检测到 ❌ 未检测到(镜像策略需手动配置)
5.2 关键发现
  1. 容器逃逸(CDK 工具)
    • NeuVector 产生了 25 条告警,完整覆盖从 tar 解压、chmod 加权、cdk 执行到多次 mount 挂载宿主磁盘的每一步。
    • 逃逸成功后,在宿主机执行的 useraddcat /etc/passwdgrep 等操作同样被记录为“进程规则违反”。
  2. 反弹 Shell
    • NeuVector 明确识别为 Tunnel detected: reverse shell,并给出源 IP、目标 IP、端口等详细信息,而不是简单的“进程违规”。
  3. 挖矿模拟
    • dd if=/dev/zero of=/dev/null 被检测为 Process profile violation。虽然未标注为“挖矿”,但异常高负载行为已被捕获。
  4. Secret 与 latest 镜像
    • 这两项在本次测试中未产生告警。Secret 访问仅存在于审计日志;latest 镜像需在策略中开启“镜像扫描”或“准入控制”才能阻断。
5.3 测试结论
  • 运行时防护能力突出NeuVector 对容器逃逸、反弹 Shell、异常进程、挖矿行为等运行时攻击实现全量精准检测,通过进程白名单、网络行为分析、文件监控形成有效防护,明显优于 Elkeid 社区版。
  • K8s 管控面审计较弱对 Secret 访问、latest 镜像、RBAC 越权 等配置 / 管控面风险暂未覆盖,需配合准入控制器或专用审计工具补齐。
  • 定位NeuVector 是强运行时防护平台,专注容器运行阶段安全;镜像安全、K8s 授权审计需与 HarborGuard、审计日志方案组合使用,形成完整安全体系。
六、常用运维命令
# 查看 Pod
kubectl get pods -n neuvector

# 查看 Service
kubectl get svc -n neuvector

# 卸载 NeuVector
helm uninstall neuvector -n neuvector
kubectl delete ns neuvector
kubectl delete crd $(kubectl get crd | grep neuvector | awk '{print $1}')
七、总结

  NeuVector 是专为 Kubernetes 设计的容器运行时安全平台,通过 Helm 即可快速部署。它具备进程白名单、网络微隔离、容器逃逸检测等核心防护能力,可有效覆盖从镜像构建到生产运行的全链路安全。经实测,其对反弹 Shell、容器逃逸等典型攻击均能精准告警,是构筑 K8s 运行时安全防线的理想选择。