NDR = Network Detection and Response(网络检测与响应),即网络威胁检测与响应。
简单理解:
EDR 监控服务器内部发生了什么,NDR 监控网络中发生了什么。
NDR 通过分析网络流量、连接行为和通信模式,发现网络攻击、横向移动、恶意通信和数据外传等安全威胁。
一、NDR 是怎么工作的?
网络流量数据
交换机镜像 / TAP / VPC Flow Logs / 网络传感器
NDR 检测引擎
流量分析
协议、连接、流量大小
异常检测
异常访问与通信行为
威胁检测
C2、扫描、横向移动
关联分析
IP、资产、会话、时间
告警
调查
响应
NDR 不一定需要在每台服务器安装 Agent。它通常通过流量镜像、网络探针、云网络日志等方式获取数据。
不过,只有流量日志时,检测能力会受到限制,例如无法直接检查完整 HTTP 请求内容。
二、NDR 能发现哪些攻击?
| 检测场景 | 典型异常行为 |
|---|---|
| 网络扫描 | 某服务器突然访问大量 IP 和端口 |
| 横向移动 | Web 服务器尝试连接其他服务器的 SSH、RDP |
| C2 通信 | 服务器周期性连接可疑外部地址 |
| 数据外传 | 某容器突然向外部传输大量数据 |
| DNS 隧道 | 异常高频 DNS 查询、可疑长域名 |
| 内部异常访问 | 不相关的业务系统突然互相通信 |
| 网络攻击 | 端口探测、已知恶意协议特征、漏洞利用流量 |
例如你们之前遇到的 Java Agent 注入攻击:
1 | |
特别需要注意:如果恶意 Java Agent 完全运行在 JVM 内部,没有产生异常子进程,EDR 和容器运行时检测可能不容易发现。
但只要它产生了可观察的异常网络通信,NDR 就有机会检测出来。
当然,使用正常 HTTPS 通道进行少量数据外传时,NDR 也不一定能够准确识别。
三、NDR 与 EDR、SIEM、XDR 的区别
| 产品类型 | 主要监控对象 | 核心价值 |
|---|---|---|
| EDR | 服务器、PC、操作系统 | 检测恶意进程和端点攻击 |
| NDR | 网络通信 | 检测网络攻击、横向移动、C2 和数据外传 |
| NeuVector | Kubernetes 容器和网络 | 容器运行时检测、微隔离 |
| SIEM | 各类安全日志和事件 | 集中分析、关联告警、审计 |
| XDR | 多个安全领域 | 跨域攻击关联与响应 |
| SOAR | 安全处置工作流 | 自动调查、编排和响应 |
NDR 和防火墙也不同:防火墙主要根据策略允许或阻止通信,而 NDR 侧重识别已经允许的网络通信中是否存在异常或恶意行为。
四、有哪些开源 NDR 方案?
开源领域比较成熟的项目主要有:
| 产品 | 定位 | 主要能力 |
|---|---|---|
| Suricata | IDS/IPS | 基于规则检测网络攻击,可提供协议日志 |
| Zeek | 网络安全监控 | 深度协议分析、网络元数据、行为调查 |
| Arkime | 网络流量取证 | PCAP 存储、索引、会话检索 |
| Security Onion | 综合网络安全监控平台 | 整合 Suricata、Zeek 等检测与调查能力 |
它们不一定是完整意义上的商业 NDR 平台,但可以组合建设开源 NDR。
例如:
1 | |
五、实施建议
生产环境运行在 Azure Kubernetes,我认为 NDR 值得建设,但不一定需要立即采购商业 NDR 产品。
建议先关注三个方面:
- 南北向流量(North-South):互联网与支付系统之间的通信,重点检测恶意外联、C2 和数据外传。
- 东西向流量(East-West):Pod 与 Pod、应用与数据库之间的通信,重点检测横向移动和越权访问。
- 网络流量可见性:明确 Azure VNet、AKS、NAT、网络策略和日志采集能够提供哪些数据,哪些场景需要额外部署网络探针。
如果采用开源方案,可以考虑 Suricata + Zeek + Wazuh SIEM。不过在 AKS 中部署前,要确认实际的流量采集方式,不能假设普通 DaemonSet 就能看到全部 Pod 网络流量。
总结一下:
- EDR:机器里面有没有异常?
- NDR:网络通信有没有异常?
- NeuVector:容器运行和网络访问是否安全?
- SIEM:各系统的安全事件能否集中分析?
- XDR:这些异常是否属于同一次攻击?
- SOAR:发现攻击后,如何自动调查和处置?
对于你们目前的安全体系,我更倾向于 EDR + Kubernetes Runtime Security + SIEM 优先落地,再逐步补充 NDR 和 SOAR。这样可以先建立基础检测能力,再完善网络可见性和自动化响应。