工控安全竞赛靶场(工控靶场专题一)

随着互联网技术的不断发展,DDoS 攻击频繁,木马病毒泛滥,网络威胁变得日益严重,网络安全问题已经深入到工业网络,对国家级工业、能源行业安全挑战严峻。建立工控网络靶场环境越来越必要,从全球范围看,网络靶场在形态、技术方面在不断发展,技术上以强化基础理论研究、核心技术研发为主,着重开展对大规模仿真环境建设、工控网络设备仿真、攻防行为模拟等技术研发;在靶场形态上,国外网络靶场建设已由纯虚拟化阶段到虚实结合阶段,其中,工控设备、工控网络成为靶场建设的新内容。

一、工控网络靶场技术要求

搭建工控网络靶场,技术需求可以分成如下几个部分:

1、虚拟网络环境:能够快速构建虚拟网络拓扑的技术,包括IP、MAC 地址的分配和回收以及路由算法,保证虚拟网络的隔离性,并能够快速复现及重构。

2、虚拟网络映射模型:保障映射所使用的物理服务器最少,寻找最优解合理进行资源分配,保障系统稳定性和经济性。

3、背景流量模拟:生成的背景流量满足工控网络的自相似性,保证背景流量的真实性。

4、攻击流量模拟:生成的攻击流量满足工控网络真实性,从网络安全和工控安全双重角度实现真实攻击行为的流量。

环境搭建后,保障多种工控生产、安全类设备可接入虚拟网络,形成虚实结合的可拓展网络,满足各类攻防研究和脆弱性测试等。

二、核心技术实现方式

在虚拟网络环境搭建方面,通过对国内外研究现状的分析,关键技术有试验床、网络仿真器和云计算等方式;根据工控网络特点,本文简要叙述以OpenStack-KVM 架构与轻量级虚拟化Docker相结合的方法搭建虚拟网络环境,生成网络流量;基于SDN的网络,以虚拟交换机 OpenvSwitch和 VXLAN隧道技术实现网络虚拟化。

2.1 KVM 虚拟化技术

KVM,基于内核的虚拟机(Kernel-based Virtual Machine),是目前唯一进入Linux 核心的虚拟化解决方案,KVM 采用硬件辅助虚拟化技术 Intel-VT 或 AMD-V,在物理硬件节点之上生成多个可以同时独立运行的虚拟计算机实例,具有独立运行操作系统软件的能力,即所谓的虚拟机(Virtual Machine)。在 KVM 架构中,每个虚拟机都是宿主机中的一个 Linux 进程,由宿主机统一进行管理。KVM 系统架构如图 2-1 所示。

工控安全竞赛靶场(工控靶场专题一)(1)

图 2-1 KVM 系统架构

它可以利用 Linux 的很多功能模块,因此成为了当前大多数 Linux 系统上的默认开源虚拟化方案,也是云平台中应用较为广泛的虚拟化技术。KVM 本身只能提供 CPU 和内存的虚拟化,必须结合 QEMU 提供的 I/O 虚拟化,才能构成完整的虚拟化技术,通常称为KVM-QEMU。位于内核的 KVM 模块负责创虚拟机并为其分配由上层用户为其指定大小的虚拟内存, 并控制着 VCPU 的运行;QEMU 则完成虚拟机用户控件组件的模拟功能,在主机 CPU 上直接执行虚拟客户端的代码。工控软件和服务大部分需要运行于windows环境中,KVM可以虚拟Linux和windows操作系统,为工控应用虚拟化提供了充分的条件。

2.2 OpenStack 管理平台

OpenStack 是一个开放源代码项目,是一个应用非常广泛的云计算管理平台,具备实施简单、可大规模扩展、标准统一、组网结构灵活多样等优势,多种主流的虚拟机软件可以接入到该平台中实现云计算平台的构建,包括 KVM、LXC、 QEMU、Hyper-V、VMware、XenServer 等,其中 OpenStack-KVM 是最常见云计算平台架构之一。OpenStack 是 IaaS 层的云操作系统,虚拟机在其中通过获取计算、网络和存储等资源来实现系统的独立运行。

工控安全竞赛靶场(工控靶场专题一)(2)

图 2-2 OpenStack 系统架构

OpenStack 平台主要由控制、计算、网络和存储四个部分组成。四个部分都有对应的节点,控制节点负责对其余节点进行管理,包括虚拟机建立、迁移、 网络分配、存储分配等;计算节点主要负责虚拟机的管理和运行;网络节点负责对外网络与内网络之间的通信;存储节点主要对虚拟机额外存储进行管理。

2.3 OpenStack-KVM 架构

OpenStack 几乎支持所有的虚拟化管理程序,包括开源的 Xen、KVM 和商业化的 Hyper-V 与 VMware。由于 OpenStack 是基于 KVM 开发的,因此在一般的 OpenStack 云管理平台中,KVM 常作为其默认的虚拟机管理程序,OpenStack-KVM 架构部署灵活,技术更新快,是当前最为普遍的云平台架构之一,其架构如图2-3所示。

工控安全竞赛靶场(工控靶场专题一)(3)

图 2-3 典型 OpenStack-KVM 架构层级

OpenStack-KVM 架构由 KVM、QEMU-KVM、Libvirt 与 OpenStack 组成。由于 KVM 是最底层的 hypervisor,只能模拟 CPU 的运行,它缺少对 Network 和周边 I/O 的支持。QEMU-KVM 则完美地解决了这个问题,它基于 KVM 构建,是一个完整的模拟器,提供了完整的网络和 I/O 支持。OpenStack 不会直接控制 QEMU-KVM,而是通过叫 Libvirt 的库去间接控制QEMU-KVM。Libvirt 是用于管理虚拟化平台的开源的 API,它可以用于管理 KVM、 Xen、VMware ESX,QEMU 和其他虚拟化技术。Libvirt 提供了跨 VM 平台的功能 为了 OpenStack 的跨 VM 性,OpenStack 通过 Libvirt 管理 KVM 虚拟化平台。

2.4 轻量级虚拟化 Docker

网络靶场环境中背景流量节点采用轻量级虚拟化容器 Docker 来实现,容器是轻量级虚拟化技术,和容器对应的更为重量级的虚拟化技术是虚拟机, KVM就是重量级虚拟化技术。虚拟机与 Docker 容器的对比如图 2-4 所示。

工控安全竞赛靶场(工控靶场专题一)(4)

图 2-4 虚拟机和 Docker 容器对比

图中,容器和宿主主机共享内核,所有容器运行在容器引擎之上,在进程级进程隔离,而每一个虚拟机都建立在虚拟的硬件之上,提供指令级的虚拟,具有一个完整的操作系统。容器更为高效、集中,单个硬件节点可以运行数以百计的容器,非常节省资源,而虚拟机具有一整套的资源:CPU、RAM 和磁盘,消耗资源高。容器启动快速,秒级即可配置好并启动,而虚拟机配置时间长,启动时间是分钟级。容器与虚拟机各有各的优缺点。容器相比于虚拟机的优势在于效率更高,资源占用更小,管理更为便捷,在需要部署的系统都是同一系列的操作系统时,这种性能和便捷性上的优势非常明显,因此本文使用容器作为背景流量节点。KVM 虚拟机在安全性以及配置共享方面更有优势, 而使用 KVM 虚拟机作为攻防环境的虚拟节点和虚拟路由器。Docker 系统架构如图 2-5 所示。

工控安全竞赛靶场(工控靶场专题一)(5)

图 2- 5 Docker 系统架构

如图 2-5 所示,Docker 使用 C/S 架构模式。用户通过 Docker client 与 Docker daemon 建立通信,并将请求发送给后者。而 Docker 的后端是松耦合结构,不同模块各司其职并有机组合,完成用户的请求。

Docker daemon 是 Docker 架构中的主要用户接口。首先,它提供了 API Server 用于接收来自 Docker client 的请求,其后根据不同的请求分发给 Docker daemon 的不同模块执行相应的工作。Docker 通过 driver 模块来实现对 Docker 容器执行环境的定制。当需要创建 Docker 容器时,可从 Docker registry 中下载镜像,并通过镜像管理驱动 graphdriver 将下载的镜像以 graph 的形式存储在本地;当需要为Docker 容器创 建网络环境时,则通过网络管理驱动 networkdriver 创建并配置 Docker 容器的网络环境;当需要限制 Docker 容器运行资源或执行用户指令等操作时,则通过 execdriver 来完成。

Libcontainer 是一个独立的容器管理包,networkdriver 和execdriver 都通过 Libcontainer 来实现对容器的具体操作,包括利用 UTS、IPC、 PID、Network、Mount、User 等 Namespace 实现容器之间的资源隔离和利用 Cgroups 实现对容器的资源限制。当运行容器的命令执行完毕后,实际的容器就处于运行状态,该容器拥有独立的文件系统、安全且相互隔离的运行环境。

背景流量节点生成使用 Docker 的镜像构建技术,Docker 镜像采用分层的结构构建,最底层是引导文件系统,之上的部分是容器的根目录。Dockerfile 是 Docker 用来构建镜像的文本文件,包含自定义的指令和格式,可以通过 docker build 命令从 Dockerfile 中构建镜像,同时,Dockerfile 与镜像配合使用, 使 Docker 在构建时可以充分利用镜像的功能进行缓存,大大提升了 Docker 的 使用效率。Dockerfile 描述了构建镜像的步骤,其中每条指令都是单独执行的。

除了 FROM 指令外,其他每一条指令都会在上一条指令所生成镜像基础上执行,执行完后会生成一个新的镜像层,新的镜像层在原来的镜像之上形成了新的镜像。Dockerfile 所生成的最终镜像就是在基础镜像上面叠加一层层的镜像层构建的。

使用 Docker 作为背景流量节点,背景流量节点的客户端和服务端均采用 Dockerfile 文件生成。

2.5 网络虚拟化及管理

对于网络部分,使用支持REST API的开源FloodLight作为SDN控制器,使用支持OpenFlow协议的OpenvSwitch作为虚拟交换机。引用最新的SDN网络架构作为网络攻防平台的网络部分,使得工控网络靶场环境真正的运行在OpenFlow协议下,可以在SDN环境下进行平台各类应用开发。SDN网络的工作原理如图 2-6 所示。

工控安全竞赛靶场(工控靶场专题一)(6)

图2- 6 SDN网络架构图

虚拟网络通信使用网络虚拟化方案来实现,虚拟交换机 OpenvSwitch和 VXLAN隧道技术。

2.5.1 虚拟交换机 OpenvSwitch

OpenvSwitch 是一个虚拟交换软件,简称 OVS,主要用于虚拟机和容器环境,作为一个虚拟交换机,支持 Xen、KVM、Docker、VitualBox 等多种虚拟化技术。在一台机器的虚拟化环境中,虚拟交换机主要有两个作用:传递虚拟机之间的流量,以及实现虚拟机和外界网络的通信。虚拟交换机的工作原理如图 2-7 所示。

工控安全竞赛靶场(工控靶场专题一)(7)

图 2- 7 虚拟交换机工作原理

在图2-7 中,当数据包从虚拟机或容器发出后,首先将通过虚拟机或容器上配置的虚拟网卡。虚拟网卡会依据相关规则对数据包做相关处理,包括拦截、发送或者过滤数据包。数据包在被网卡放行后将转发至虚拟交换机,与其他虚拟交换机不同的是,虚拟交换机提供了 OpenFlow 支持能力。虚拟交换机保存着数据流表,当虚拟交换机收到数据包时,如果数据包和流表匹配成功则按照流表的要求来操作数据包,如果不成功则将数据包发送给控制器。如果是跨主机通信,数据包最后会被发送到物理网卡,物理网卡负责将数据包发送到实际的网络环境中。

2.5.2 VXLAN 隧道技术

工控网络靶场环境构建需要实现大量虚拟机和容器间的跨主机网络通信,使用传统 VLAN 技术的局限性在于 VLAN 要求主机在同一个子网中,VLAN 是在二层帧头上做文章,VLAN ID 只有 12 个比特单位,可用数量很少,且 VLAN 配置比较繁琐,目前普遍的解决方法是使用 Overlay 的虚拟化网络技术。隧道被广泛用于连接因使用不同网络而被隔离的主机和网络,该模型可以很好解决跨网络 Docker 容器和跨网络虚拟机实现二层通信的需求。VXLAN 作为一种 Overlay 技术,它是将报文封装在 UPD 上的隧道转发模式,它采用 24 位比特标识二层网络分段,成为 VNI,类似于 VLAN ID 的作用。使用 VXLAN 隧道技术实现跨主机容器通信,跨主机通信如图 2-8 所示。

工控安全竞赛靶场(工控靶场专题一)(8)

图 2- 8 VXLAN 跨网络通信

三、小结

一个优秀的工控网络靶场需要一众的核心技术汇聚,通过以OpenStack-KVM 架构与轻量级虚拟化Docker相结合的方法搭建虚拟网络环境,基于SDN网络,以虚拟交换机 OpenvSwitch和 VXLAN隧道技术实现网络虚拟化,可以满足搭建工控网络靶场最核心的技术要求,建立可靠的底层架构。

针对真实的硬件(工控设备/PLC/HMI/交换机/路由器/安全设备),可以使用以太网的方式将硬件接入到虚拟化环境网络上,也可以使用虚拟化或数字孪生技术接入,接入的工控设备可以访问到虚拟机系统,也使得虚拟化环境内的VM系统可以访问到工控设备。

通过本文的介绍,一个工控网络靶场的核心技术骨架初步成型,满足在虚拟化,虚拟网络,虚实结合等方面的应用和拓展,为下一步进行应用服务开发创造了先决条件;如何开发出满足市场的需求的服务,如教学培训,攻防对抗,应急演练,和工控安全竞赛等内容,每项都需要根据服务定位,市场需求进行单独的功能设计和考量,是工控网络靶场形成竞争力的核心。

关于工控网络靶场的应用服务介绍,敬请期待后续工控靶场专题。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页