freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

网络靶场虚拟化管理层实现路线之争
2022-09-27 17:21:01
所属地 北京

网络靶场虚拟化管理层的主要功能

网络靶场本质上是通过构建一个虚实融合的仿真环境,在仿真环境上进行人才培养、比赛演练、安全测评等活动。仿真环境的构建依赖于底层的虚拟化管理层,该层主要用于虚拟机、容器、虚拟网络等资源的管理。

目前网络靶场虚拟化管理层常用的功能:

1、虚拟机(KVM、Vmware)、容器(Docker、kata-container)的管理。

2、虚拟镜像的管理。

3、虚拟网络的管理(VLAN、VXLAN等网络隔离技术的支持,DHCP、DNS支持,虚拟交换机(openvswitch)的管理、默认虚拟路由器的管理等)。

4、流量镜像,包括虚拟设备到虚拟设备的镜像、虚拟设备到实体设备的镜像。

5、虚拟设备状态、日志、内部行为信息的采集,用到带内和带外采集方式,带内采集需要保证传出的网络效率。

6、文件从宿主机传入到虚拟设备内,以及在宿主机执行虚拟设备内的命令,实现诸如flag注入,脚本启动等功能。

7、虚拟设备的接入,包括使用VNC、SSH、RDP等方式接入。

8、虚实结合,能够通过SDN等技术自动配置虚实结合交换机,实现实体设备、网络与虚拟设备、网络互相打通,构建更高仿真度的环境。

9、集群动态扩容,包括控制节点、计算节点的扩容,保证虚拟化管理层高可用、高性能、高可扩展性。

网络靶场虚拟化管理层两种主要的实现路线

目前国内网络靶场虚拟化管理层主要使用两种路线(限于国内外环境及网络靶场厂家规模及业务等):

1 、开源的云计算或虚拟化平台,像Openstack 、Proxmox、Ovirt等

2、自研的轻量级虚拟化管理平台。

当然也有少量上规模的网络靶场建设使用商业云,比如新华三云。商业云稳定性和性能相对好很多。但是对于网络靶场厂商来说,由于体量和业务方向问题,无法牵引商业云厂商跟随自己,所以商业云对于网络靶场厂商可控性和可定制性差,无法灵活适配自己的应用,加上成本较高,所以一般采用意愿不强。当然如果不存在对虚拟化管理层的随意定制,商业云是能够基本满足网络靶场对虚拟化管理层的功能需求的,成本合适的情况下跟商业云结合肯定是最好的方式,擅长的人做擅长的事儿,这个也是当前国内网络靶场厂商和国外厂商的一点区别,国外在底层平台和一些核心资源方面习惯采用商业版本,自己则重点打造擅长的应用功能、业务流程、训练场景等内容,当然成本会较高,但是站在产品长期价值的角度看,对于客户来说成本可能反而低。

围绕上面两种技术路线各厂家之间因为商业竞争的缘故也经常爆发口水仗,用开源平台的公司会说自研的平台扩展性、功能方面不如开源平台。自研平台厂家又说开源平台性能、稳定性上会差很多,定制化成本高、可控性差等。导致客户也难以分辨。

我的观点是,没有一种技术是绝对的好或者绝对的坏,我们不能站在自己的认知里自嗨,技术需要适合的场景,抛开场景谈论技术就是耍流氓,这里的场景包括公司的人才构成、公司的主要业务方向、产品的核心价值点、公司预期的投入等。 可能站在自己的角度,公司拥有的资源不适合用开源方案,因为没有必要为了网络靶场维护一套很重的方案,而且该方案还不单独产生价值。但是这就能说明自研就比开源好吗?你能保证自己开发的就一定优于开源的吗?同时使用开源方案的也不能断定自研肯定没有开源好,不能全面超越,局部超越应该还是可以做到的,尤其是在网络靶场这个经过多年发展,基本需求已经相对固定,而且不会快速变化的领域。

我们习惯于把自己不懂的就当成不适合自己的,这本质是一种固定性思维,就像我们往往喜欢把自己写的代码当成可控的,把开源或者别人写的代码当成不可控的。所以我们还是要理性的看待各种技术,学习开源方案的架构和思路,能够开阔我们的视野,拓展我们的知识面,提升我们的技能。然后具体是自研还是使用开源方案,这个结合自身情况定。

两种实现路线优劣分析

开源方案以目前网络靶场厂家常用的openstack为例

Openstack优势:

1、未来的扩展性强:功能全面,能快速满足未来的一些需求,比如有租户和域的概念,对于后期靶场的saas化发展可以支持的更好;弹性十足,能应对不同场景,openstack里面的虚拟机管理、网络管理、镜像管理等模块都是独立的服务,可以单独部署且可以多实例部署,这种分布式微服务架构设计弹性十足,可以通过部署方式应对未来不同的规模需求和性能需求,满足单服务器和多服务器部署场景。

2、支持多种虚拟化方式:服务器虚拟化:KVM、Vmware、hyper-V等, 应用虚拟化:Docker、LXD、kata-container等。

3、调度策略丰富:不像一些自研平台只是基于cpu、内存、硬盘、虚拟化架构等这些少量的维度进行调度,openstack里面包含更丰富更细粒度的调度策略,这也意味着调度程序需要从计算节点收集更丰富的特性信息。

4、支持不同的网络方式:包括linux bridge、openvswitch等,以及隔离方式 vlan、vxlan、gre等。

Openstack劣势:

1、封装层次过多,调用链过长:为了支持后端多种具体实现技术,必须增加公共层,屏蔽底层实现技术的差异,对外暴露统一的接口,导致流程边长,性能存在一定损耗,维护成本高。

2、支持功能过多,对靶场有很多冗余:对于网络靶场来说,很多技术只使用一种就可以,没必要支持很多,比如网络就使用openvswitch和VXLAN,那多余的linux bridge和 vlan、gre这些就显得多余,同时会带来多余的学习成本和维护成本。

3、维护和定制开发成本过高:如果把其比如成一把屠龙刀的话,那它能发挥什么价值就要看用刀的人了。 毕竟是全世界很多开源爱好者共同维护的平台,所以他的功能上肯定是很全面的,而且很多商业云也是基于其开发的。但是由于其体量及缺乏产品化等原因,要想让它发挥出应有的价值,需要付出很大的运维和开发、测试成本,摸清里面的门门道道,但这是现在很多网络靶场厂家缺乏的,没有足够的人才供给,不能完全抛开投入产出比。

4、部署成本高,但是有很多开源的部署脚本,或者自己把部署过程脚本化后,部署也会相对很容易。

自研底层优势:

1、代码可控:使用到什么就添加什么,可以保持代码的清洁,做到可控。

2、交付成本低(开发成本、人力成本、时间成本):针对网络靶场定制化比较多的情况,能够快速的实现定制化,完成交付。相较于开源方案来说,开发成本会小很多。

3、适配性好:能够跟中台、应用层进行更好的配合,就像苹果的硬件、操作系统、应用程序那样,最大化的发挥虚拟化管理层的价值,做更适合网络靶场的虚拟化管理平台,做只为网络靶场使用的虚拟化管理平台。

自研底层劣势:

1、性能、可扩展性、稳定性等方面待持续加强:限于多数网络靶场厂家优秀开发者的缺乏,自研底层在性能、可扩展性、稳定性等方面需要持续加强。

2、后期的维护成本不一定低:当代码量增加之后,规范性就会变得很重要,随着初始开发团队人员的流失,如果自研平台缺乏文档和规范,随着代码量的增大及无序发展,维护成本甚至会比开源方案维护成本还高。

3、技术要求高且深:需要具备比较全面且深入的底层虚拟化、网络、SDN、资源管理调度等方面的知识,开源方案这些都是现成的,可以直接拿来用,自研的话需要自己从头进行开发或者基于开源技术组合,所以对开发设计人员知识面的宽度和深度有一定要求。

结语

经过多年的实践和踩坑之后,面对依然难以把控的开源方案, 对于老牌厂家,由于已经基于开源方案做了大量工作,所以完全抛弃采用自研方案有成本顾虑,这个就要基于现有方案权衡产品发展的阻碍成本和切换成自研的成本高低,以及坚持现有路线对于今后发展的可持续性及与新进厂商的竞争力等方面综合考虑。

对新进入网络靶场赛道的厂家来说,由于站在前人的肩上,看到和认清了很多基本事实,为了避免重复踩坑,在拥有虚拟化及云计算相关技术人员的情况下,自研对中小规模且业务单一的网络靶场厂商来说是一种妥协,也是一种智慧,但同时也要学习、吸纳开源方案的优势和一些理念,不断优化自研虚拟化管理平台,保证自研方案架构设计的合理,以适应不同规模下的弹性扩展及不同需求下的功能扩展,同时保持文档的同步留存、代码规范的把控,避免无序繁荣后带来的过高的维护成本。

不管是使用开源还是自研,都要积极收集用户反馈,在稳定性、性能和可用性等方面不断优化,同时沉淀能力、优化流程、总结方法,经过市场的淬炼,练就过硬的实力,打造过硬的产品。

道阻且长 行则将至。

文/王文杰

# 攻防演练 # 攻防对抗 # 网络靶场 # 网络仿真搭建 # 攻防实战
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录