徐海洲,周纯杰
(华中科技大学 人工智能与自动化学院,武汉 430074)
随着工业4.0、《中国制造2025》战略不断推动工业控制系统向网络化、智能化升级,许多新兴网络技术逐渐应用到工业控制系统中,工业控制系统从封闭走向互联,也引入了很多的安全问题。从2010年伊朗核电站遭受震网病毒攻击,再到2018年台积电感染勒索病毒损失17亿,2019年3月委内瑞拉遭受网络攻击全国停电,工业控制系统的信息安全问题日益突出,成为不可回避的关键问题[1]。SDN(软件定义网络)作为一项网络架构,由应用层、控制层和转发层构成,其核心在于控制与转发的分离,以其灵活性、开放性、实时性、高效集中管控的特点得到了广泛应用[2]。随着技术的发展,SDN技术也逐渐应用到工业控制系统中,实现生产线的动态重构等功能[3]。
本文深度结合工业控制系统防护特点和需求,提出一种基于SDN的工控信息安全防护系统架构,通过软件定义网络建立工控系统信息安全防护框架,形成入侵检测到安全响应闭环,实现工控系统的动态安全防护。本文的剩余内容组织如下:第一节分析了工控系统信息安全防护的特点和需求;第二节,基于软件定义网络设计了工控系统的动态安全防护架构;第三节,利用Mininet仿真环境对防护系统的性能进行了测试,并基于双容水箱实验平台进行攻防实验,验证了防护框架的有效性;第四节对全文的研究成果进行了总结,并对后续可能的研究方向进行了分析。
工控系统信息安全防护最初沿用IT领域的防护思想,采用基于分区、分域、隔离的静态防护技术[4,5],通过漏洞扫描[6]特征匹配等方法对系统进行识别、保护和评测。然而,这种静态防护具有滞后性,无法应对层出不穷的未知攻击。针对工控系统的攻击,一旦突破到系统现场层,轻则引起产品的减产降质,重则造成重特大安全事故,引起人员伤亡、环境污染,危及公共生活乃至国家安全[7]。工业过程系统的信息安全防护的核心和焦点是保证过程系统的安全运行,它的防护必须是深度结合系统运行特点,在传统的静态防护的基础上,进行动态防护。因此只有建立入侵检测到安全响应的安全闭环控制,才能有保障系统的运行安全。
软件定义网络作为一种架构,其核心在于控制和转发的分离:SDN交换机只负责按照流表进行转发,控制器通过修改SDN交换机流表,实现对网络报文的细粒度控制。SDN的灵活性为实现工控系统的动态安全防护提供了基础平台。
基于SDN的工业控制信息安全防护系统分为物理层、现场层、转发层、控制层和应用层五层,如图1所示。其中:
1)物理层为工控系统的各种物理对象。
2)现场层为由传感器、控制器、执行器组成的控制系统以及操作员站。
3)转发层由SDN交换机构成,现场层设备通过转发层进行数据通信传输,SDN交换机根据流表将对应的报文进行转发,并将网络中的通信数据镜像发送到应用层进行安全分析。
4)控制层由SDN控制器构成,通过OpenFlow协议对转发层SDN交换机进行集中管理和控制,执行应用层下发的防护策略。
5)应用层包含安全监测和安全响应两个模块,安全监测模块通过SDN镜像获取的网络流量,对网络状态进行实时监测,当检测到异常时,安全响应模块通过REST API向控制器发送防护指令,实现系统的动态安全防护。
系统的核心在于,通过SDN有选择的镜像获取工控系统网络中的通信流量进行监测和分析,当系统发生异常后,再通过SDN执行相应的防护策略,实现检测到响应的防护闭环,保障系统的动态安全。
图1 基于SDN的工业控制信息安全防护系统架构
安全监测模块由可视化监控、入侵检测和哨兵节点构成,通过对镜像获得流量以及流表信息,对系统进行实时的安全监测。
1.2.1 可视化监控
传统网络交换机、路由器内部流量如何交换很难展现,进而无法对于网络设备进行监测和管理。基于SDN实现网络流量可视化[8],将网络数据以图形图像的方式表现出来,可以更加高效快速地识别非法网络设备和异常通信行为。通过SDN拓扑发现形成的连接关系[9],结合网络通信数据包的特征,可以有效地对工业控制系统进行实时的监控,防止恶意设备的非法接入,发现系统的流量异常,并对通信设备进行统一管理。
1.2.2 入侵检测
Snort作为一款非常优秀的开源软件工具,能够对网络上的数据包进行抓包分析,并根据事先定义的规则进行响应及处理,被很多安全公司用做入侵检测模块的核心引擎[10],支持自定义检测规则。本文拟通过Snort实时分析网络镜像流量,实现入侵检测。
1.2.3 哨兵节点
哨兵节点,指通过软件定义网络部署大量虚拟主机,开放容易被攻击者利用的敏感服务端口对攻击者进行诱捕[11]。一旦非正常的流量访问哨兵节点,即可触发安全防护策略。Conpot作为一款轻量级低交互工控蜜罐,支持一系列通用工业控制协议,能够模拟复杂的工业基础设施。本文拟利用Conpot作为工业网络中的哨兵节点,实现对攻击者的迷惑和诱捕。
1.3.1 隔离、流量清洗
隔离、流量清洗技术主要通过修改交换机流表,对非法的报文进行丢弃。由于SDN的灵活性,可以有针对性的对某一类型的数据包进行丢弃,从而实现通信授权、流量清洗等功能。通过流量清洗可以防止SYN洪水攻击、恶意扫描、远程登录等攻击。具体的流程如下:应用层生成隔离指令,利用REST API下发给SDN控制器,控制器通过OpenFlow协议修改SDN交换机流表,SDN交换机根据流表对报文进行转发,对于正常的报文进行转发,对于异常的报文直接进行丢弃等操作,从而实现对非法设备的隔离,异常报文的清洗。
1.3.2 地址/端口跳变
现有工业控制系统中通信双方大多使用固定的IP和端口进行通讯,攻击者能够很好的判断工控设备的角色(PLC、操作员站、WEB服务器)以及型号,分析存在的漏洞,进而确定攻击方法与攻击路线。攻击者通过网络监听,收集并分析发送报文数据,能够轻而易举的获得通信主机的真实IP和端口,从而发动各种网络攻击,如拒绝服务、重返攻击、中间人攻击等。端口跳变是一种典型的移动防御技术,通过持续改变服务端口、IP等信息迷惑攻击者,使其难以发动攻击,从根源上防止攻击的发生,实现系统的主动防御。工业控制系统中存在着大量的PLC、DTU等设备,运算资源有限,更不允许去直接修改它的程序,传统端口跳变技术需要在发送方和接收方增加额外的程序,无法直接应用在工业控制系统中。本文针对工业控制系统的特殊条件,通过SDN交换机修改报文传输过程中的IP、端口进行端口跳变,在不修改双方通信程序的基础上,实现通信双方在端口跳变下的透明通信。
1.3.3 拓扑变换
拓扑变换旨在通过改变通信网络结构,给攻击者呈现出动态变化的网络结构,提高网络的复杂程度,使其无法定位攻击目标,发起攻击[12]。一方面通过拓扑变换可以有效阻断攻击者的攻击链条,另一方面可以将攻击者的报文导入到蜜网中,对攻击进行追根溯源。由于SDN的集中控制结构使得多个SDN交换机可以在同一个控制器的控制下协同动作,改变逻辑网络拓扑结构,从而实现全局的网络拓扑结构变换。本文拟结合拓扑跳变与Conpot组成工控蜜网,保障系统安全。
本文首先通过Mininet仿真环境对端口跳变、拓扑跳变等防护手段对通信性能的影响进行了测试,随后搭建了实体环境,基于双容水箱控制系统实际对象进行攻防实验验证了防护框架的有效性。
2.1.1 仿真环境
本文采用Mininet作为实验的仿真环境,RYU作为SDN控制器,对系统的通信性能进行测试。Mininet作为一个完整的软件定义网络仿真开发平台,能够进行开发、测试和演示,具有良好的可移植性。RYU是一款开源的基于Python开发的控制器,因其架构简单,部署方便,得到了广泛的应用。
2.1.2 地址/端口跳变
1)为了验证系统在进行端口/地址跳变时对工控系统通信的影响,在Mininet中创建如图2所示的网络结构。
图2 地址/端口跳变仿真原理图
2)通过REST接口对流表进行修改。使SDN交换机在转发的同时对报文的IP地址进行修改,实现传输过程中的跳变。
3)经过测试,在进行端口跳变时主机h1能够和h2进行正常的数据通信,通过抓包验证了通信过程中报文的IP不断变化,能够有效的迷惑攻击者。经过实验发现IP跳变前后通信系统的延迟基本相同,仅在切换的一瞬间延迟增大到0.11ms,能够满足工业控制系统通信实效性的要求,如图3所示。
图3 地址/端口跳变网络延时变化曲线
2.1.3 拓扑跳变
1)为了验证系统在拓扑跳变时对工业控制系统通信的影响,在Mininet中创建如图4所示的网络结构,验证拓扑跳变。
图4 拓扑跳变仿真原理图
2)通过REST接口对流表进行修改,使得原本由S1直接发送到S2的报文,经由S3再发送到S2,实现通信链路拓扑的变换。
3)通过抓包验证了变换的有效性,h1和h2在变换时能够正常通信。通过对变换过程中的通信的时延进行了统计如图5所示,拓扑变换过程中对于通信系统的时效性影响较小。仅在切换的一瞬间,系统延时由0.04ms变为0.131ms,又变回0.04ms,能够满足工业控制系统通信时效性的要求。
为了验证防护框架的有效性,利用一台多网口工控主机安装Ubuntu与Open vSwitch实现SDN交换机功能,使用一台笔记本作为安全分析主机,基于双容水箱控制系统搭建了实体仿真环境,对系统的有效性进行验证,实验平台结构如图6所示。
图5 拓扑变换网络延时变化曲线
图6 攻防实验平台结构图
2.2.1 环境搭建
1)配置OVS交换机。通过ovs-vsctl创建网桥,并将实体的物理端口添加到网桥上,最后制定交换机控制器的IP地址。
2)开启RYU控制器,修改交换机流表,将网络数据包镜像发送到安全控制主机。
3)开启防护程序,主要包含Snort入侵检测和安全响应两个部分。安全防护程序的流程如图7所示。
图7 安全防护程序流程图
2.2.2 攻防实验
本文通过hping3攻击工具,模拟黑客入侵操作员站之后,对1号区域的PLC发起拒绝服务攻击,造成1#PLC与人机界面的通信中断。
Snort根据检测规则检查出异常的攻击报文,输出报警,触发安全响应程序,发送流表,对拒绝服务的数据源进行清洗,实现对拒绝服务攻击的防护。
经验证,在本防护框架下,能够在1号区域PLC断连之前,阻断拒绝服务攻击,达到保障系统安全的效果。如图8所示,系统正常时1#PLC的通信数据包在每秒40个左右,在第5秒发起拒绝服务攻击,数据包数量直线上升到60000个左右,没有开启防护时在一段时间后1#PLC发生断连;开启防护措施后,在第7秒数据包数量开始下降,能够保障系统的正常通信。
图8 攻防实验网络数据包曲线图
本文综合分析工业控制系统安全防护的需求,基于SDN设计了一种工控信息安全防护架构,实现了检测到响应的安全防护闭环。并在仿真与实体环境对系统的通信性能及防护效果进行了测试和验证,实验结果表明,设计系统满足工业控制系统通信时效性要求并且能够保障系统的安全。由于交换机数量的限制,端口跳变、拓扑跳变等未能在实际系统中进行验证。在后续的工作中,将进一步开展欺骗防御技术,以及多域入侵检测技术在防护框架中的应用。