🗺️ 系列目录:
-
- K8s系列一:Ubuntu 22.04 从零搭建集群(Flannel + Containerd)
- K8s系列二:安装 Dashboard – 原生 Web 控制台配置
- K8s系列三:安装 Rancher – 企业级多集群管理平台
- K8s系列四:安装 Kuboard – 国产可视化运维工具
- K8s系列五:Elkeid入侵检测系统 容器 K8s 安全部署与检测
- K8s系列六:HarborGuard 容器安全扫描平台部署与实战
- K8s系列七:NeuVector 容器安全平台部署与实践 👈 当前篇章
- 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
确认映射端口:
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 关键发现
- 容器逃逸(CDK 工具)
- NeuVector 产生了 25 条告警,完整覆盖从
tar解压、chmod加权、cdk执行到多次mount挂载宿主磁盘的每一步。 - 逃逸成功后,在宿主机执行的
useradd、cat /etc/passwd、grep等操作同样被记录为“进程规则违反”。
- NeuVector 产生了 25 条告警,完整覆盖从
- 反弹 Shell
- NeuVector 明确识别为
Tunnel detected: reverse shell,并给出源 IP、目标 IP、端口等详细信息,而不是简单的“进程违规”。
- NeuVector 明确识别为
- 挖矿模拟
dd if=/dev/zero of=/dev/null被检测为Process profile violation。虽然未标注为“挖矿”,但异常高负载行为已被捕获。
- 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 运行时安全防线的理想选择。
