APP下载

DMZ 双向CS 模式安全数据交互设计开发与应用

2021-06-18同,刘

自动化仪表 2021年4期
关键词:端口号客户端服务器

朱 同,刘 媛

(廊坊开发区中油龙慧自动化工程有限公司,河北 廊坊 065000)

0 引言

隔离区(demilitarized zone,DMZ)是为了防止外部网络直接访问内部网络而设置的、非安全系统与安全系统之间的区域。通过设置DMZ,能够有效地保护内部网络。相比一般的防火墙方案,设置DMZ 对攻击者来说又多了一道关卡[1]。

目前,工业控制系统的数据访问需求已不再仅仅满足于数据的实时传输。DMZ 系统作为数据采集与监视控制(supervisory control and data acquisition,SCADA)系统的对外屏障,隶属于SCADA 系统。其部署了2 台DMZ 服务器,采用双主模式工作,是DMZ 系统的核心部分,负责实现SCADA 系统与外部网络的数据交互。DMZ 服务器可实现双向客户端服务器(client and server,CS)模式(双向客户端&服务器架构)通信。即:一方面作为客户端采集外部网络数据,又作为服务器向SCADA 系统转发外部网络数据;另一方面既作为客户端采集SCADA 系统数据,又作为服务器向外部网络转发SCADA 系统数据。DMZ 服务器除了实时传输数据之外,还能传递数据质量戳和时间戳,保证数据交互的时钟同步性,具备数据缓存和数据回填功能,并可实现数据加密和证书认证通信。

SCADA 系统内部署了北京油气调控中心研发的过程控制系统(process control system,PCS)工控人机界面(human machine interface,HMI)软件,以下简称PCS。PCS 与DMZ 服务器通信协议为 IEC104,外部网络与DMZ 服务器通信协议为OPC UA。DMZ 服务器作为中转平台,向双方提供所需数据后,由双方主动从中读取。

1 设计方案

以下是对DMZ 系统安全数据交互设计开发的详细阐述。系统已在中俄东线天然气管道工程黑河压气首站成功应用并投入正常运行。

1.1 数据传输总体架构

从提高安全性考虑,将数据传输分为3 个区域,分别为外部网络非安全数据区、DMZ 数据区、SCADA 系统安全数据区。SCADA 系统与外部网络相互间均有数据交互。交互的数据主要为工艺生产过程数据,类型主要为Float、Bool 型,并附带传递数据质量戳和时间戳,可监测数据质量、保证时间同步[2]。

数据传输总体框架如图1 所示。

图1 数据传输总体框架示意图Fig.1 Schematic diagram of overall data transmission framework

1.2 DMZ 服务器部署

在本方案中,DMZ 数据区包括2 台DMZ 服务器、2台隔离网闸、2 台路由器和2 台防火墙。其中,隔离网闸、路由器与防火墙用于网络安全监控及承担网络路由功能,在此不作重点描述。

2 台DMZ 服务器用于数据采集和转发。使用OPC UA 协议采集外部网络非安全数据区的数据,通过IEC104 协议转发至SCADA 系统安全数据区,并使用IEC104 协议采集SCADA 系统安全数据区的数据,通过OPC UA 协议再转发至外部网络非安全数据区。所描述的“转发”并非直接向目的地设备写入数据,而是采集数据后在本地生成数据源,并进行协议转换后供目的地设备读取。

DMZ 服务器采用华三H3C UniServer R4900 系列服务器。每台DMZ 服务器配置2 块千兆独立网卡,设置不同网段IP 地址,分别用于对接安全数据区与非安全数据区,实现两个方向、两种协议的数据采集和转发。利用不同网卡,互不干扰,避免了双方网络物理上的直接接触,增强数据通信的安全性[3]。DMZ 服务器中安装Windows Server2012 操作系统,并在此基础上部署OPC UA 与IEC104 协议转换应用及服务程序包。

在2 台DMZ 服务器上同时部署相同的协议转换应用及服务。每台服务器需部署2 个服务程序包。协议转换服务程序包如图2 所示。

图2 协议转换服务程序包Fig.2 Protocol conversion service package

“1042OpcCon”用于IEC104 协议数据的采集,并转发为OPC UA 协议的数据,即用于SCADA 系统安全数据区向外部网络非安全数据区的数据传递,部署IEC104 客户端及OPC UA 服务应用。“Opc2104Con”用于OPC UA 协议数据的采集,并转发为IEC104 协议的数据,即用于外部网络非安全数据区向SCADA 系统安全数据区的数据传递,部署OPC UA 客户端及IEC104 服务应用。为保证转发业务运行的可靠性,“1042OpcCon”与“Opc2104Con”两套服务为协议转换核心系统,分别运行、互不影响,既可以通过Bin 目录下提供的Install.bat 脚本进行服务的注册,又可以通过Uninstall.bat 脚本进行服务的卸载。

DMZ 服务及客户端的运行依赖于消息队列ActiveMq 和数据库引擎Mysql。消息队列用于服务与客户端的通信,采用消息队列方式可以最大化地降低服务和客户端之间的耦合,使服务更加稳定运行,并防止客户端对正常转发数据的影响。Mysql 用于存储历史数据,可以快速实现检索和查询。

Check_service.bat 用于守护服务的运行。对于服务在运行过程中可能出现的异常停止,此脚本可以自动检测并启动服务。

1.3 DMZ 服务器可视化客户端系统界面

DMZ 服务器安装了数据查询可视化界面客户端,并且可以可通过“1042OpcCon”服务目录与“Opc2104Con”服务目录下的Opc104ViewClient.exe 进行启动。客户端启动程序界面如图3 所示。

图3 客户端启动程序界面Fig.3 Client startup program interface

为防止客户端被误关闭,客户端最小化的时候会隐藏到系统托盘,双击即可打开界面。启动后,可通过可视化界面查询在DMZ 服务器中两个方向数据采集信息,用于通信故障后在本地的分析和筛查。客户端实时数据查询可视化界面包括数据点列表(展示转发和采集的数据点名称与地址)、实时曲线显示区域、实时数据值显示区域。通过该可视化界面,用户可自由查询当前各个采集与转发数据点的实时数值与实时变化曲线。

DMZ 服务器中组态了历史曲线界面,用于查询历史数据;可以根据左侧的转发地址列表进行筛选,并在右侧展示历史转发的数据曲线。客户端历史数据查询可视化界面包括数据点列表(展示转发和采集的数据点名称与地址)、历史曲线显示区域、历史数据值显示区域。通过该可视化界面,用户可自由查询当前各个采集与转发数据点的历史数值与历史曲线。

1.4 消息队列与时序数据库系统部署

消息队列系统用于在协议转换核心系统和客户端系统缓存和传输实时数据。DMZ 系统首先要保障的是两个基础的数据转换服务的稳定、可靠。从整个大系统的体系结构上,要保证子系统之间没有过多依赖,使核心系统在非必要系统不工作情况下也能正常运行。子系统之间采用消息队列方式通信,采用消息队列隔离核心系统和客户端界面之间的依赖,保证客户端系统的运行状态不会影响核心系统的数据接入和转发[4]。

时序数据库系统用于保存系统交换的实时数据,提供搜索引擎接口,保证数据查询的近实时性。DMZ需要存储高频率的实时数据,基本点位为1 000 个信号,存储频率为1 s,每天的数据量量为86 400 000 条。普通的关系型数据库无法满足此规模的数据量的查询,而传统的实时数据库系统是有损存储,会造成数据精度丢失。DMZ 系统采用近实时时序数据库Elasticsearch 存储高频数据,可以满足数据库存储和查询的近实时性[5]。

1.5 DMZ 数据区的多用户访问

DMZ 服务器部署完毕后,除需要访问SCADA 系统外,在安全区网络内可能会有多个第三方系统访问DMZ 服务器读取相关数据。为了防止未被许可的第三方系统随意接入DMZ 数据区获取数据信息,方案采用了网络协议(internet protocol,IP)地址绑定的方法,提出了多用户实时访问优化方案。

除了在隔离网闸内进行IP 地址的过滤之外,在DMZ 服务器中通过设置允许客户端访问清单,绑定DMZ 服务器向安全数据区发布数据的信任IP 地址,开放同一端口号,使得在信任清单里面的设备能够访问、清单外的设备拒绝访问[6]。通过这种方式,有效实现了多用户的实时访问,也保护了DMZ 系统的信息安全。

IP 地址绑定举例如下所示。

由此例可知,仅允许IP 地址为“10.211.3.11”“10.211.3.12”“10.31.147.21”和“10.31.147.22”的设备进入DMZ 数据区访问。

1.6 数据缓存与推送

针对数据通信可能会发生短暂中断的情况,DMZ服务器中增加了数据缓存与推送功能,开辟数据缓存寄存器区域。一旦发生通信中断,DMZ 服务器会向缓存区域存储缓存数据。根据预先设定的数据存储量,到达溢出点后,新产生的缓存数据会把最先存储的数据依次覆盖掉[7]。当通信恢复后,DMZ 服务器重新建立链接,并把缓存数据主动推送给最终用户。用户可根据需要,决定是否把缓存数据回填至本地数据库。

选取某一个数据点,模拟DMZ 服务器与SCADA系统安全数据区通信中断。在一定时间内通信恢复后,SCADA 系统接收到的DMZ 服务器向缓存区域写入的数据队列形成的趋势曲线图,与在通信中断期间该点的实际变化一致。DMZ 服务器数据缓存趋势曲线如图4 所示。

图4 DMZ 服务器数据缓存趋势曲线图Fig.4 Trend curve of DMZ server data cache

1.7 证书认证与数据加密

OPC UA 通信可以开启认证证书的校验功能。开启后,OPC 客户端与服务器在建立通信连接时会检测对方证书是否在自己的信任列表内:如果在信任列表内,则进行正常数据通信;否则,通信终止。证书通过双方的OPC 软件生成,相互交换后,将对方证书添加到信任列表内,并可以设置证书有效期。有效期过后,原先信任的证书将不再为双方数据通信提供认证校验,数据通信终止,必须重新生成证书并再次互相交换才可继续通信。在使用认证证书的同时,还可以对通信数据进行加密。加密方式可采用以下几种。

①Basic128Rsa15-签名。

②Basic128Rsa15-签名和加密。

③Basic256-签名。

④Basic256-签名和加密。

⑤Basic256Sha256-签名。

⑥Basic256Sha256-签名和加密。

通过认证证书和数据加密,可以有效增强DMZ 服务器的数据通信安全性。

2 SCADA 系统设置方案

以下阐述了SCADA 系统内进行的与DMZ 系统安全数据交互通信设置,以及数据对外发布的方案。

2.1 SCADA 系统的组态配置

安全数据区SCADA 系统包括2 台实时服务器、1套冗余可编程逻辑控制器(programmable logic controller,PLC)[8]。实时服务器部署了PCS 上位机软件。

SCADA 系统通过实时服务器PCS 上位机软件采集DMZ 服务器的数据,在PCS 软件内组态配置IEC104 数据采集通道,使PCS 作为IEC104 客户端。SCADA 系统IEC104 协议采集通道配置如下。

①建立通道描述,命名为“IEC104 数据采集”,通信类型选择为实时采集。

②通信规约选择为fes_104、客户端模式。设置对端第一 IP 地址与对端第二 IP 地址,分别为10.211.3.11 与10.211.3.12。

③设置第一端口号与第二端口号均为2404。

规约类型选择IEC104,通道类型为实时采集,配置PCS 上位机作为客户端,2 个对端IP 地址分别为2台DMZ 服务器。PCS 上位机可实现数据采集的双网冗余,在通信不发生故障的前提下,使用对端第一IP地址作为主访问路径采集数据,而对端第二IP 地址路径处于备用休眠状态。第一端口号和第二端口号分别对应主备两条访问路径。

SCADA 系统内的数据需要通过DMZ 服务器发布给外部网络非安全数据区。从安全角度考虑,禁止外部网络直接访问SCADA 系统内PLC,因此需要通过SCADA 系统的实时数据服务器对外转发数据。实时服务器PCS 上位机软件通过MDOBUS TCP/IP 协议采集PLC 数据,并配置IEC104 数据转发通道,以及数据点的点对点映射,在上位机软件应用层面实现MODBUS TCP/IP 数据和IEC104 数据的实时对接。当PCS 上位机建立了与站控PLC 的MODBUS TCP/IP 通信,就会启动相应的IEC104 数据转发通道。把采集到的PLC 数据打上时间标签后用IEC104 数据格式向DMZ 服务器转发,从而实现SCADA 系统数据向外部网络的传输[9]。

DMZ 系统2 台服务器采用双主机制,SCADA 系统PCS 上位机建立2 条独立的IEC104 数据转发通道。每条通道指向其中1 台DMZ 服务器。2 条通道同时对外转发数据,2 条通道的主备由DMZ 服务器决定。

SCADA 系统IEC104 协议转发通道配置如下。

①建立通道描述,命名为“IEC104 数据转发通道1”,通信类型选择为实时转发。

②通信规约选择为fes_104、服务端模式,设置对端第一IP 地址为10.211.3.11,对端第二IP 地址不作设置。

③设置第一端口号为2404,第二端口号不作设置。

规约类型选择IEC104,通道类型为实时转发,并配置PCS 上位机作为服务端,配置对端第一IP 地址为DMZ 服务器1,端口号使用双方预先定义的2404端口。

IEC104 数据转发通道2 配置与通道1 一致,仅需修改对端第一IP 地址指向DMZ 服务器2 即可。

2.2 SCADA 系统内DMZ 数据上传调控中心

PCS 上位机除实现MODBUS 数据采集和IEC104数据转发外,还可实现IEC104 数据采集和IEC104 数据转发。这就为DMZ 数据上传调控中心提供了解决方案。

由于调控中心不能直接访问DMZ 数据区,因此也需要通过SCADA 实时数据服务器进行转发[10]。转发协议采用IEC104,方法与SCADA 实时服务器向DMZ服务器的转发一致,在PCS 上位机进行数据点的地址映射,配置转发通道,与调控中心建立连接后启动转发通道。调控中心转发通道配置如下。

①建立通道描述,命名为“DMZ 数据转发第三方系统通道”,通信类型选择为实时转发。

②通信规约选择为fes_104、服务端模式,设置对端第一IP 地址为10.0.1.114,设置对端第二IP 地址为10.0.1.115。

③设置第一端口号与第二端口号均为2404。

规约类型选择IEC104,通道类型为实时转发,并配置PCS 上位机作为服务端,配置对端第一IP 地址和第二IP 地址指向调控中心2 台服务器。

3 结论

综上所述,通过DMZ 实现SCADA 系统和外部网络的安全数据交互的设计已在中俄东线天然气管道黑河压气首站投入运行,主要用于中俄双方输气生产数据的实时交换。该应用数据传输快速、稳定、可靠,安全性高,极大地方便了中俄双方生产运行人员对数据的实时监控分析,安全保障了双方生产控制系统。DMZ 服务器的数据中转应用完全自主开发,OPC UA与IEC104 之间协议转换可根据实际需求高效对接,兼容性优于直接部署不同品牌的协议转换软件。该方案的实际应用,为OPC UA 和IEC104 之间的协议转换应用开发提供了较为完善的实现方法,对今后SCADA 系统对外数据发布具有较高的参考价值,能够为信息化智慧管道在数据共享层面的建设提供一定的指导。

猜你喜欢

端口号客户端服务器
在Docker容器中安装应用程序
通信控制服务器(CCS)维护终端的设计与实现
如何看待传统媒体新闻客户端的“断舍离”?
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
浅谈以java为基础的Socket通信简介及实现
中国服务器市场份额出炉
得形忘意的服务器标准
计算机网络安全服务器入侵与防御
Winsock编程在《计算机网络基础》教学中的应用