工控网首页
>

应用设计

>

【解决方案】工业控制系统中OPC通讯安全解决方案

【解决方案】工业控制系统中OPC通讯安全解决方案

       OPC(用于过程控制的OLE)被广泛应用在控制系统中,用于提供不同供应商的设备和软件之间的互操作性。
       最新版本的OPC (OPC UA)在其设计中已经包括了安全性需求,但OPCClassic协议(OPC DA, OPC HADOPC A&E) 基于微软的DCOM协议,DCOM协议是在网络安全问题被广泛认识之前设计的。因此,这些协议给那些希望能确保控制系统安全性和可靠性的工程师带来了极大的挑战。
       本应用指南简要介绍了与OPC相关的安全问题,并解释了如何使用OPC enforcer保护OPC服务器和OPC客户端。
OPC Classic的安全问题
       大多数TPCUDP通讯协议都使用单一的标准化端口号-例如,Modbus TCP通常使用502端口。客户端设备建立对服务器设备502端口的连接,然后发送数据到服务器设备,或者接受来自服务器设备的数据。使用防火墙来保护这些客户端和服务器设备相对而言比较简单-只需设置防火墙,仅允许指定端口号的上的通讯,阻止其他所有的网络通讯即可。
       OPC Classic协议就不是如此简单了。建OPC连接需要以下两步:
  1. 客户端通过135端口查询服务器以获取通讯所需的TCP端口号。
  2. 客户端使用第一步获取到的端口号连接到服务器,访问目标数据。
       步骤1中数据对象请求使用的端口号是标准化的,且是众所周知的。然而,实际数据连接(步骤2)使用的端口号是由OPC服务器以一个虚拟随机序列动态分配的,因此没有办法提前知道服务器返回给客户端的端口号。另外,服务器可以分配的端口号范围很广-Windows Server 2008下超过16000个端口号,早期的端Windows版本则超过了48000个口号。
       正因如此,传统的防火墙在保护OPC服务器时,不得不允许OPC客户端和OPC服务器之间如此大范围内的任何端口号的TCP连接。在这种情况下,防火墙提供的安全保障被降至最低。因此,目前绝大多数的OPC服务器都在没有任何防火墙保护的情况下运行,从而很容易受到恶意软件和其他安全威胁的攻击。
Tofino OPC Classic enforcer
       Tofino OPC enforcer动态跟踪OPC服务器分配的OPC数据连接的端口号。最低限度的打开通讯所需的防火墙的端口,允许数据连接通过,同时关闭所有未使用的端口。OPC enforcer也可以对OPC数据请求和响应信息执行sanity check,从而阻止任何不符合有关DCE/RPC标准的信息。
       因此,OPC enforcer能够对使用OPC Classic协议的系统提供有效的防火墙保护。OPC数据连接将畅通无阻地通过Tofino安全模块(SA),而任何异常通讯和恶意通讯都将被阻挡,同时通过Firewall LSM产生报告。Tofino安全模块提供的这些保护与Windows PC无关;不需要对OPC客户端或服务器做任何更改。
使用范例
       下面的内容介绍如何使用OPC enforcer来保护OPC客户端和服务器设备之间的通信。在这个例子中,我们将用Matrikon OPC Explorer作为一个客户端与Matrikon OPC仿真服务器进行通信。在OPC服务器和控制网络的其余部分之间安装Tofino安全模块。组态管理平台(CMP)用于配置和管理Tofino安全模块。系统网络结构图如图1所示。

CMP的配置
       CMP使用户可以通过拖放节点视图图标到网络编辑器中(或者通过使用Tofino discovery asset discovery功能),创建控制网络模型。如果需要的话,可以模拟整个网络,但是只有防火墙规则中涉及到的设备才是网络模型中必须包含的。因此,案例中的OPC网络的最终模型(图2)是非常简单的。

       一旦模型创建完成后,必须激活Tofino安全模块中的FirewallOPC enforcer软插件。这一工作在网络编辑器中的Tofino图标的Modules标签页中完成。
创建和配置防火墙规则
       接下来,创建防火墙规则,允许客户端和服务器之间的OPC通讯。参照以下步骤创建talker防火墙规则:
  1.  双击OPC服务器的图标显示服务器的设置,然后单击其中的firewall标签页。
  2. network视图中(Tofino CMP的左上角)找到OPC客户端图标,然后将该图标拖放到OPC服务器的firewall标签页中的talker rules一行。
  3. protocols视图(Tofino CMP的右下角)中将OPC Classic TCP协议拖放到服务器的firewall标签页中的OPC客户端图标上。
  4. 双击OPC Classic-TCP防火墙规则,将其权限改为enforcer,点击OK。该权限设置使OPC enforcer能检查计算机间的通讯,并且跟踪被创建的OPC数据连接。
       完成后的防火墙规则如图3所示。点击视图底部的OK按钮,新的规则即可保存到Tofino CMP中,同时也被下载到Tofino安全模块中。

测试规则
       独特的测试模式允许所有的网络通讯通过Tofino安全模块,但对实际运行中会受阻的通讯产生报警信息。从而可以在不存在意外阻止正确工厂操作所需通讯的风险下,对防火墙和OPC enforcer规则进行测试。
       使用general/communication标签页中底部的下拉控制,可以设置运行模式,在Tofino的工作模式改变后,必须停止并重启OPC客户端,这样的话OPC enforcer就能发现数据连接请求,解析出所分配的端口号,并配置防火墙以便让数据连接通过。
       当OPC enforcer创建完防火墙规则,允许数据连接通过Tofino安全模块后,将给CMP发送报警信息即exception heartbeat通知用户。这些信息都显示在屏幕底部的event视图中。双击这些心跳信息中的某一条信息,将打开图4所示详细视图。

       通过监测异常事件,编辑防火墙和OPC enforcer的配置,用户就能确保所有必需的系统通讯都能通过Toflno SA,同时也不会产生报警。测试完成后,可以将Tofino SA设置为运行模式,执行已配置好的规则。
OPC enforcer选项
     有三个选项可用来控制OPC enforcer如何管理每个OPC连接。
     Sanity check功能使OPC enforcer能检查数据连接请求和响应是否符合DCE/RPC协议标准,并且阻止任何不标准的通讯。对于一些OPC客户端和/或服务器,需要关闭该功能。
     Fragment check功能使OPC enforcer能阻止不完整的DCE/RPC数据连接请求。和Sanity check相同,对于一些OPC客户端,可能需要关闭该功能。
       “connection T/O”定义了数据连接请求和实际数据连接开始之间的最长时间限制。如果由于某种原因,OPC客户端不再创建数据连接,该设置将确保通过OPC enforcer在防火墙创建的大门及时关闭。默认的时间限制是5秒,但对于一些OPC客户端,这个值可能需要增加。对Matrikon OPC Explorer的测试表明,10秒的超时设置对该客户端是最佳的选择,如图5所示。

通过计算机名连接 VS 通过IP地址连接
       如果OPC客户端通过IP地址访问OPC服务器,那么只需要OPC Classic-TCP防火墙规则。如果OPC客户端被配置为不是通过OPC服务器的IP地址而是通过其计算机名访问OPC服务器,那么在Tofino安全模块中需要设置额外的防火墙规则,以便允许域名解析通讯通过防火墙。
       在范例系统中,必须在OPC服务器的Firewall标签页中配置talker规则,允许OPC客户端和OPC服务器之间的NetBIOS名字服务和NetBIOS数据报服务,如图6所示。

       在对等网络配置中,为了相互定位,OPC客户端和服务器还必须能发送和接受广播NetBIOS通讯。在基于域的网络中,这些机器必须能够发送和接受往返于域控制器的NetBIOS通信。根据网络的设计和使用的具体的通信协议,可能需要额外的broadbandtalker/global规则。
       对等网络下的广播规则设置如图7所示。广播规则在Firewall标签页中设置。

总结
       Tofino OPC Classic enforcer为使用OPC Classic通信服务的OPC客户端和服务器提供了有效的防火墙保护。OPC enforcer配置简单,其特有的测试模式让您在真正部署之前有机会对组态规则进行测试。
投诉建议

提交

查看更多评论
其他资讯

查看更多

能源领域网络安全框架实施指南(英文版)

【指导手册】有效网络防御的关键控制

【操作指南】SCADA与过程控制网络防火墙配置指南

【指导手册】控制系统安全实践汇编

【操作指南】工业控制系统(ICS)安全指南