目录
1 安全防护
1.1 防火墙
1.2 网闸
2 OPC是通讯协议吗
2.1 什么通讯协议
2.2 那么OPC又是什么?
OPC官方说明文档
1 安全防护
本文阐述了控制网络以OPC接口接入信息网络应当采用的安全防护。
1.1 防火墙
防火墙是大家熟知的网络安全产品,并被用作控制网络与信息网络的安全隔离。实际上,这样的方案是不合适的。
这是由于防火墙由于其自身机理的原因,存在很多先天不足,主要包括:
1) 由于防火墙本身是基于TCP/IP协议体系实现的,所以它无法解决TCP/IP协议体系中存在的漏洞。
2) 防火墙只是一个策略执行机构,它并不区分所执行政策的对错,更无法判别出一条合法政策是否真是管理员的本意。从这点上看,防火墙一旦被攻击者控制,由它保护的整个网络就无安全可言了。
3) 防火墙无法从流量上判别哪些是正常的,哪些是异常的,因此容易受到流量攻击。
4) 防火墙的安全性与其速度和多功能成反比。防火墙的安全性要求越高,需要对数据包检查的项目(即防火墙的功能)就越多越细,对CPU和内存的消耗也就越大,从而导致防火墙的性能下降,处理速度减慢。
5) 防火墙准许某项服务,却不能保证该服务的安全性,它需要由应用安全来解决。
从实际应用来看,防火墙较为明显的局限性包括以下几方面:
1) OPC基于DCOM机制,无法穿透防火墙。
2) 防火墙不能阻止感染病毒的程序和文件的传输。就是防火墙只能做网络四层以下的控制,对于应用层内的病毒、蠕虫都没有办法。
3) 防火墙不能防范全新的威胁,更不能防止可接触的人为或自然的破坏。
4) 防火墙不能防止由自身安全漏洞引起的威胁。
5) 防火墙对用户不完全透明,非专业用户难于管理和配置,易造成安全漏洞。
6) 防火墙很难为用户在防火墙内外提供一致的安全策略,不能防止利用标准网络协议中的缺陷进行的攻击,也不能防止利用服务器系统漏洞所进行的攻击。
7) 由于防火墙设置在内网与外网通信的信道上,并执行规定的安全策略,所以防火墙在提供安全防护的同时,也变成了网络通信的瓶颈,增加了网络传输延时,如果防火墙出现问题,那么内部网络就会受到严重威胁。
8) 防火墙仅提供粗粒度的访问控制能力。它不能防止数据驱动式的攻击。
防火墙正是由于这些缺陷与不足,以防火墙为核心的安全防御体系未能有效地防止工业控制网络攻击。
1.2 网闸
在防火墙的发展过程中,人们最终意识到防火墙在安全方面的局限性。高性能、高安全性、易用性方面的矛盾没有很好地解决。防火墙体系架构在高安全性方面的缺陷,驱使人们追求更高安全性的解决方案,人们期望更安全的技术手段,网闸应运而生。
网闸的指导思想与防火墙也有很大的不同,体现在防火墙的思路是在保障互联互通的前提下,尽可能安全;而网络隔离的思路是在必须保证安全的前提下,尽可能支持数据交换,如果不安全则断开。
网闸主要目标是解决目前信息安全中的各种漏洞:操作系统漏洞、TCP/IP漏洞、应用协议漏洞、链路连接漏洞、安全策略漏洞等,网络隔离是目前唯一能解决上述问题的安全技术。
网闸主要的技术原理是从OSI模型的七层上全面断开网络连接,同时采用“2+1”的三模块架构,即内置有两个主机系统,和一个用于建立安全通道可交换数据的隔离单元。这种架构可以实现连接到外网和内网的两主机之间是完全网络断开的,从物理上进行了网络隔离,消除了数据链路的通信协议,剥离了TCP/IP协议,剥离了应用协议,在安全交换后进行了协议的恢复和重建。通过TCP/IP协议剥离和重建技术消除了TCP/IP协议的漏洞。在应用层对应用协议进行剥离和重建,消除了应用协议漏洞,并可针对应用协议实现一些细粒度的访问控制。从TCP/IP的OSI数据模型的所有七层断开后,就可以消除目前TCP/IP存在的所有攻击。
网闸的应用同防火墙,部署于控制网络与信息网络之间,实现过程控制系统和管理信息系统之间进行单向物理隔离并传输过程数据。
2 OPC是通讯协议吗
2.1 什么通讯协议
OPC是当前工业互联常用的通讯技术,我们经常会说OPC通讯协议,那OPC是通讯协议吗?严格地说,OPC不是通讯协议,而是一种通讯规范,是一种通讯接口标准。
首先,来看什么是通讯协议?通讯协议就是两个(或多个)设备之间通信必须要遵循的一种协议。通过通信信道互连起来的多个数据通信系统,要实现协同信息交换,它们之间必须具有共同的约定,约定信息在哪条通道间交流,什么时间交流,交流什么信息,信息怎样交流。这个约定就是通信协议。
不同的通信协议虽然具有不同的特点和功能,但它们都包含了三个基本要素:
语法:定义了数据传输的格式和结构,以确保发送方和接收方都能正确地解释数据内容。
语义:定义了数据的意义和目的,以确保通信双方在数据传输过程中能够理解对方的意图。
定时:定义了数据的传输速率和时间,以确保通信的有效性和流畅性。
通信中的数据往往以数据包的形式进行传送的,我们把这样的一个数据包称作为一帧数据。比较可靠的通信协议往往包含有以下几个组成部分:帧头、地址信息、数据类型、数据长度、数据块、校验码、帧尾。这些组成部分构成了语法,其中数据代表的意义就是语义。
比如:以下是Modbus协议读取线圈的报文。
其中,报文格式就是语法,其语义为:读取服务器1号从站输出线圈,起始地址为0x13=19,对应地址为00020,线圈数量为0x1B=27,即读取1号从站输出线圈,地址从00020-00046,共27个线圈的状态值。
2.2 那么OPC又是什么?
OPC是英文“OLE for Process Control”的缩写,是工业自动化领域中的一种工业通信标准。它通过定义一些在不同平台上具有通用性的规范,实现了各种设备、不同制造厂商及不同代表的设备可互联互通。
经典OPC是第一代OPC技术, 英文全称为:OLE for Process Control。OLE技术是基于微软公司的COM/DCOM技术,因此经典OPC本质上是基于COM/DCOM的过程控制技术。经典OPC提供了一整套过程控制中数据交换的软件标准和接口,包括:
1)OPC DA(OPC Data Access):OPC数据访问接口,这是最常用到的接口,接口定义了数据交换的规范,包括:过程值、更新时间、数据品质等信息。目前OPC DA经历1.0版本(1997年)、2.0版本(2002年)、3.0版本(2003年)。
2) OPC AE (OPC Alarms & Events):OPC报警与事件接口,接口定义了报警、事件消息、变量的状态及如何管理。
3) OPC HDA(OPC Historical Data Access): OPC历史数据访问接口,接口定义了访问及分析历史数据的方法。
4) OPC XML-DA:XML数据访问,脱离Windows COM/DCOM技术,提供基于XML、SOAP、HTTP的数据交换。
5) OPC DX(Data eXchange):提供在OPC服务器之间交换数据的功能,该标准的主要目的是为来自不同制造商的设备和程序之间的数据交换创建网关。
可以看出,OPC是一整套过程控制中数据交换的软件标准和接口规范,定义了服务器和客户端双方通讯接口的要求。以OPC DA为例。
OPC Server必须提供OPCServer对象接口,OPCGroup对象接口,OPCItem对象接口,OPCClient通过调用这些接口与OPC服务器实现数据交换,而不用去关心通讯报文的语法、语义。
所以,严格地说,OPC不是通讯协议,是通讯规范。用形象的比喻来说,OPC更像描述插头、插座的规范,而通讯协议则更像是描述邮件如何传输,信封如何封装。