目前,公司正在建设基于网络流量镜像的相关系统,如npm、bpc、数据库sql语句审计等。并已初步搭建了type交换机网络。
但虚拟化平台中,部分虚拟机的网络流量可能在物理机内部的虚拟交换机中完成交互,无法从物理交换机上获取流量镜像。
我们了解到了虚拟化环境的网络流量镜像的以下三种方式:
1、使用vmware VDS分布式交换机的端口镜像功能
2、在每台宿主机上安装第三方的虚拟机,用于收集这台宿主机内部的虚拟机网络流量
3、在需要镜像流量镜像的虚拟机上安装第三方agent,收集自身的网络流量
三种方式都将通过区别业务网卡的单独网卡将镜像流量传送至type网络。
本人目前倾向于选择第一种方案,但是对于vmware的端口镜像功能是否会影响宿主机的整体性能存在担忧。
想向各位金融行业的前辈们请教下三种方案的优劣,大家都是使用哪种方式来实现的?实施过程中有没有踩过什么坑?
工作中并没有实际接触到需要全部镜像虚拟机w网络流量用来监控的情况。不过有过虚拟机因为中毒发包。导致整个物理机端口堵塞。无法管理,整个物理机上所有的虚机全部瘫痪的情况,结合这个需求和以前跟VMWARE做过的一些技术交流。说说一些自己的看法吧,
在每台宿主上安装第三方的虚拟机用来收集宿主内部的虚机网络流量,在资源上浪费的有些多。每个宿主都要安装调试一套收集系统,不仅要分配出一定的资源来运行第三方的虚机,如果宿主多了。整个系统的管理也会有些麻烦。
在每个虚拟机上安装第三方agent的方式,相比第二种方式,应该要好一些。因为没有实用过。只能根据其他类似部署方式的软件来参考。第三方ANENT。一般来说对系统的资源消耗都比较少,相对稳定。一次部署后就可以统一收集信息,在成本和管理上都算是不错的选择,只是第三方ANENT有时候会因为个别虚机系统本身的问题产生一些服务无法启动,或者部分系统没有响应的ANENT,或者被部分安全软件限制等问题,
第一种方式,我记得VMWARE有个网络虚拟化的功能NSX。是收费的,可以实现很详细的虚机网络的管理与安全防护,能够避免我们当时遇到的那种因为一台虚机网络发包,塞死了物理端口导致所有虚机全都无法工作。只能重启整个物理机去处理的情况。应该也可以实现更详细的端口镜像的功能。优点我觉得应该是VMWARE的原生产品,从兼容性,成熟度上都会比较好,缺点就是部署复杂,而且费用相对比较高。不过我还是倾向采用这种方式。如果资金和技术资源都比较紧张,那采用第三方ANENT的方式我觉得也不错。可以根据不同重要程度的虚机进行镜像,对于重要业务安装anent。一些辅助业务,测试业务则只通过物理交换机镜像一个物理接口。抓取数据就行了。
目前,某银行使用的是:
2、在每台宿主机上安装第三方的虚拟机,用于收集这台宿主机内部的虚拟机网络流量
我行主要使用Gigamon的解决方案。
Gigamon 的虚拟化流量采集方案部署由 3 部分组成,包括 FM 集中管理平台、 VM 虚拟化采集探针和 GigaSmart 流量处理引擎。
GigaVUE-FM 集中管理平台 ( 矩阵管理器 ) : Gigamon 的集中式管理程序 , 紧密整合 VMware vCenter, 用于批量部署和配置 GigaVUE-VM 矩阵节点采集虚拟机层面的流量监测策略。 可利用 vCenter 的 API, 在动态资源调度 (DRS) 和高可用性 (HA) 集群环境下追 踪 vMotion 事件 , 使可视化策略与被监视的虚拟机绑定 , 并随着虚拟机在物理宿主机之间的迁移而迁移。
GigaVUE-VM 矩阵节点: 是一套 vSphere 客户机虚拟机系统 , 部署在每一台宿主机, 无需特定的软件、内核加载模块或更改 Hypervisor 。用于从 VMware 的虚拟交换系统采集流量,并提供高级的过滤功能和数据包截短功能,然后将数据包进行封装转发至 GigaSmart 流量处理引擎。
GigaVUE-HC: 带有 GigaSmart 卡的 HC ,通过 GigaSmart 解封装功能,能够将数据包还原至原始报文,并可以调用其它高级功能如去重、脱敏等,并将数据包转发至相应的工具。
在本方案链路通讯部署上有 2 个组成部分,包括管理层面的链路通讯, Tunneling 链路通讯。
❶ 管理层面的链路通讯:用于 FM 对 VM 的安装、配置下发
❷ Tunneling 链路通讯:用于 VM 采集虚拟机流量通过 Tunneling 封装转发到 HC上
按照简单,控制方便,需要使用IP地址。
目前来说,对服务器性能影响很小。
首先,如果是物理交换机的化,一般都会采用专门的端口镜像设备把交换机上的流量进行镜像,然后用专门的软件基于镜像流量进行分析。这个是比较通用和成熟的做法,具体产品有很多。
那么,在虚拟化环境当中,第一种方案与物理环境的方案基本思路完全一致,从这个角度来看,其成熟度和稳定性是不需要担心的,至于说性能,只要将网卡的配置和流量的分析做好,不会出现大的性能问题。因为它并非实时扫描业务数据包的原理,而是对镜像流量包做处理的思路,唯一的区别是硬件资源并没有完全独立。镜像本身靠虚拟交换机本身的机制完成,物理交换机能把这个事情做好,虚拟交换机也不会有太大问题。
这个问题对于我们也是问题。谈谈自己一些看法哈。首先vmware目前也不是虚拟化唯一选择,感觉只用这个未来有一定的局限性。第二和第三也都有厂商解决方案,他们反馈都有相应的流控机制,理论上不会对业务有影响,资源不是那么紧张的情况下开销应该还好。目前这个问题我们也没有解决,所以我们尽量让访问流量跨交换机,通过交换机镜像流量,对于单台宿主机内的流量网络交换机确实没法镜像,此类只能用第三方专门的解决方案,个人比较倾向后两种,建议购买市场成熟产品,经过其他单位检验过的应该相对靠谱。
收起我个人觉得三种方案需要的考虑点如下
1.依赖于VDS本身提供的接口和功能,由于没实际用过,可能不全。
2.宿主机上安装会对宿主机本身增加一些开销,另外需要能适配到用的虚拟化技术,获取到虚机流量。另一方面,宿主机宕机后,上面的虚机是否还能采集到,需要提前考虑方案。
3.虚机本身安装会对虚机造成较大的工作量, 建议集成到镜像里,减少系统同事的工作量。 本身agent的资源消耗需要评估。
虚拟化及云环境下审计尤其是数据库审计普遍三种模一般如下
a 、虚拟机虚拟网卡绑定物理网卡
要求宿主主机有多个物理网卡,每个物理网卡和上层交换机直连,虚拟机层面在安装时可以指定将虚拟网卡绑定在对应的宿主主机的物理网卡上,然后使用传统的镜像方式镜像物理网卡的流量完成审计,这种缺点非常明显,要求物理服务器要有多个网卡,因此,在实际部署上并没有那么多网卡可供绑定,存在诸多限制,实际上并无法实施。
b 、在 VDS 上配置流量镜像
Vmware ESX 推出的功能,将某虚拟机网卡流量通过 GRE 封包,直接通过 TCP 协议发送到某个 IP 地址上(数据库审计设备),数据库审计设备接收 GRE 数据包完成审计,但是这种解决方案的缺点如下:
Vmware 版本及 VDS (分布式虚拟交换机),因为版本原因部分客户现场环境实际并不支持部署。一般通过 GRE 封装做流量镜像对宿主主机的物理网卡性能影响非常严重,所有镜像流量都要通过宿主主机的物理网卡进出,极大影响了物理网卡的性能, VDS 属于虚拟交换机,其对数据包的处理依赖于 CPU ,并不像传统交换机靠硬件进行流量转发, 目前大部分客户为了避免单一硬件的故障,基本上都采用虚拟化集群的方式实现企业的虚拟化,当碰到单一硬件的故障,虚拟机会在整个硬件虚拟化资源池中自动迁移 。
c 、开启流量广播
这种方式将数据库审计以虚拟机的方式部署在对应的宿主主机,当做宿主宿主机的一个虚拟机看待,然后开启 Vmware 的流量广播功能,每个虚拟机都将收到 Vswitch 上每个端口通信的 IP 流量,因此 DB 审计设备只需要采集其虚拟网卡上的流量就可以采集到目标数据库服务器的流量,只需要在采集阶段过滤掉其他流量即可完成审计, 开启流量广播虽然大部分 Vswitch 都支持,但是这种方式就好比早期的 Hub 一样, tcp 通信能力将明显降低,严重影响整体网络传输的时延及可靠,
总体上讲,如果虚拟交换机端口资源足够的情况下, 在 VDS 上配置流量镜像更好,把镜像流量从单独的网口走出,确保宿主机影响降低到最小
收起和您的想法一致,建议采用第一个方案,原因:
1.虚拟化的流量镜像对物理主机性能的消耗非常少;
2.建议虚拟化环境具备独立的镜像网络;
3.需要实际测试,此方案使用的不多;
4.可以参考一下第三方的流量性能监控设备,NPM方面的,如Netscout。