OPC通讯的安全防护

2023-11-06

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


CMP的配置
CMP使用户可以通过拖放节点视图图标到网络编辑器中(或者通过使用Tofino discovery 和 asset discovery功能),创建控制网络模型。如果需要的话,可以模拟整个网络,但是只有防火墙规则中涉及到的设备才是网络模型中必须包含的。因此,案例中的OPC网络的最终模型(图2)是非常简单的。
一旦模型创建完成后,必须激活Tofino安全模块中的Firewall和OPC enforcer软插件。这一工作在网络编辑器中的Tofino图标的“Modules”标签页中完成。
创建和配置防火墙规则
接下来,创建防火墙规则,允许客户端和服务器之间的OPC通讯。参照以下步骤创建“talker”防火墙规则:
l 双击OPC服务器的图标显示服务器的设置,然后单击其中的firewall标签页。
l 在“network”视图中(Tofino CMP的左上角)找到OPC客户端图标,然后将该图标拖放到OPC服务器的firewall标签页中的“talker rules”一行。
l 从“protocols”视图(Tofino CMP的右下角)中将“OPC Classic TCP”协议拖放到服务器的firewall标签页中的OPC客户端图标上。
l 双击“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通信。根据网络的设计和使用的具体的通信协议,可能需要额外的broadband,talker和/或global规则。
对等网络下的广播规则设置如图7所示。广播规则在Firewall标签页中设置。


总结
Tofino OPC Classic enforcer为使用OPC Classic通信服务的OPC客户端和服务器提供了有效的防火墙保护。OPC enforcer配置简单,其特有的“测试”模式让您在真正部署之前有机会对组态规则进行测试。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OPC通讯的安全防护 的相关文章

  • 科学计算库Numpy

    一 创建Numpy数组 创建一个一维数组 data1 np array 1 2 4 创建一个二维数组 data2 np array 1 2 3 4 5 6 1 2 3 创造元素值都是0的数组 np zeros 3 4 创建元素值全是1的数组
  • ai作文批改_好未来:AI智能批改中英文作文为老师“减负”

    开篇诗词点题 结尾升华主题 非常赞 细节上 人物描写方法多样 人物的性格特点描绘细致 整体上 内容凸显文章主题 语言新颖清爽 读来令人如沐春风 这是一份语文作文的批改反馈 不过 这份生动详细的批改反馈并不普通 它是利用好未来自主研发的 中英
  • vue动态渲染ref,获取this.$refs.xxx.style为undefined获取循环元素中的style

    正常情况下通过this refs xxx style获取是没问题的 本文遇到的是要获取循环列表中某一元素 并改变其样式 设置ref在v for列表上 直接获取this r e f s n a
  • antd4.x 使用setfieldsvalue动态修改表单值

    表单的默认值可以用 Form 里的 initialValues 来设置 但是 initialValues 不能被 setState 动态更新 因此需要用 setFieldsValue 来更新 1 创建ref实例 创建ref实例 export
  • 技术支持岗位面试问题汇总,绝对有你遇到的面试题!!

    交换机与路由器的区别 1 路由器能拨号 交换机不能 2 无线路由器能使无线设备WIFI上网 交换机不行 3 外形上 从外形上我们区分两者 交换机通常端口比较多看起来比较笨重 而路由器的端口就少得多体积也小得多 4 工作层次不同 最初的交换机
  • 2019最新计算机毕业设计-题目汇总大全-系列1

    课设题目 备注 基于NLP ASR及TTS技术的智能语音分析工具 负责语义分析部分 论文替代 基于SpringBoot的用户音乐平台 家装设计公司客户关系系统 基于机器学习的文本语义分析工具 基于微信小程序的私教预约系统 标准化轮胎仓库管理
  • (转)读源码品Caffe - 结构流程篇

    原文链接 https blog csdn net jinzhuojun article details 79834697 背景 本文主要介绍深度学习框架Caffe的工作原理和实现 时至今日 各种深度学习框架百花齐放 百家争鸣 从流行程度来说
  • R软件的rattle安装指南

    rattle安装问题 1 正常安装情况 2 无法正常安装情况 2 1版本号不对应 2 2网络不稳定 2 3文字乱码问题 1 正常安装情况 这是先基于R4 0 0 这个在3 6的版本都成功过 看到有人说4 0 0不能安装 因此特地去安装尝试下
  • maven环境变量配置(超详细!)

    下载地址 官网地址 建议不要下载在C盘 配置过程 1 解压下载好的压缩包 2 此电脑 右键 属性 高级系统设置 环境变量 3 新建一个系统变量 点击系统变量的新建 变量名 MAVEN HOME 变量值 maven解压的目录 通过浏览目录选择
  • pyspark访问hive数据实战

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 之前我们部门在数据分析这边每天的日报都是直接使用hive脚本进行调用 随着APP用户行为和日志数据量的逐渐累积 跑每天的脚本运行需要花的时间越来越长 虽然进行了sql优化
  • 理解内连接中的隐式内连接、显式内连接和外连接中的左外连接、右外连接

    一 多表查询 二 在 MySQL 中创建 book 和 actor 两张表 1 创建 book 表及添加数据 CREATE TABLE book id INT PRIMARY KEY NOT NULL AUTO INCREMEN bookN
  • 容器技术之Docker&K8S

    1 Docker K8S区别 区别 1 k8s是一种开放源码的容器集群管理系统 而Docker是一种开放源码的应用容器引擎 2 k8s是一套自动化部署工具 可以管理docker容器是容器编排层面的 docker是容器化技术 是容器层面的 2
  • Axure RP9笔记--页面自适应

    笔记2 页面自适应 大三的时候曾经对猫耳FM进行重构 使用HTML 现在看看真是一塌糊涂 只做出了静态页面 当时还遇到了个问题 浏览器变成小窗后 里面的内容并不会改变大小 但是现在大部分网站都做了页面自适应 当时还对前端一无所知 今天的学习
  • 如何在macOS中编译LLVM

    第一步 在App Store中搜索并安装Xcode 如果不想安装整个Xcode 可以在terminal中运行以下命令来只安装命令行工具 xcode select install 第二步 安装LLVM的依赖库 首先运行以下命令 以官网为准 来
  • sql尚硅谷day1

    mysql基础 1 通过mysql自带服务端 只限root用户 2 cmd进入mysql命令 mysql h localhost P 3306 u 用户名 p 停止exit 显示数据库 show databases 打开一个库 use 库名
  • 五大板块(5)——字符串

    参考 五大板块 5 字符串 作者 丶PURSUING 发布时间 2021 03 18 16 03 48 网址 https blog csdn net weixin 44742824 article details 114982019 目录
  • 华为OD机试真题-士兵过河II【2023Q2】【JAVA、Python、C++】

    题目描述 一支N个士兵的军队正在趁夜色逃亡 途中遇到一条湍急的大河 敌军在T的时长后达河面 没到过对岸的士兵都会被消灭 现在军队只找到了1只小船 这船最多能同时坐上2个士兵 1 当1个士兵划船过河 用时为 a i 0 lt i lt N 2
  • java: framework from BLL、DAL、IDAL、MODEL、Factory, using MySql 8.0

    sql drop table BookKindList 书目录 create table BookKindList BookKindID INT NOT NULL AUTO INCREMENT 自动增加 BookKindName nvarc
  • G - LR Constraints(AtCoder - arc124_a )

    题目链接 题意 N个卡片 上面的数字为1 k 然后有k个限制条件 每个限制条件有1个字母 ci 和一个数字 ki 如果ci是 L 表示i能够输入的最左边的位置是ki 如果ci是 R 表示i能够输入的最右边的位置是ki 如果能理解题意 这个题

随机推荐

  • simulink的工具箱开发stm32步骤

    1 打开stm32cubeMx 配置芯片信息 记得配置时钟 之前就是因为没有配置time 出现灯不亮的问题 2 打开Matlab 将当前工作目录切换到配置文件的目录IOC配置文件 stm32cubeMx 然后开始调用simulink模块 3
  • linux tcpdump rpm,linux命令——tcpdump

    这样tcpdump就顺利地安装到你的linux系统中 怎么样 很简单吧 二 Tcpdump的使用 tcpdump采用命令行方式 它的命令格式为 tcpdump adeflnNOpqStvx c 数量 F 文件名 i 网络接口 r 文件名 s
  • 在CentOS7中安装JDK1.8并配置环境变量

    在CentOS7中安装JDK1 8并配置环境变量 准备工作 首先下载jdk的压缩包 64位 链接 http pan baidu com s 1o7B1PXK 密码 el7b 1 新建 usr java文件夹 将jdk 8u45 linux
  • HIVE中关于collect_set与explode函数妙用

    hive的复合数据类型 hive中的列支持使用三类复杂的集合数据类型 即 array map及struct 这些类型的名称是保留字 具体用法可参见该篇博文 里面有关于三类基本集合数据类型的操作实例 注 map中可嵌套array类型 例如 定
  • openwrt中samba及ftp服务器设置

    1 挂载点设置 U盘或硬盘格式化为exfat或ext4 挂载点自定义为 mnt sda1 并记得勾 上启用挂载项 2 samba设置 3 ftp设置 新手折腾很久 只会最简单的设置 还没完全搞明白但能用root登录使用了 但自定义用户和匿名
  • Linux下Qt程序运行时找不到so的解决办法

    一 全局性设置 将so放入相应的系统lib目录 修改环境变量 在环境变量中添加so所在路径 修改一些文件 在其中指定so所在路径 大概有上面的这3种方式 就不详细说了 相信大家都清楚 二 指定编译选项 上面介绍的方式 无一例外 都需要修改环
  • vulnhub-lampiao

    lampiao 1 信息收集 nmap p 192 168 14 189 dirb http 192 168 14 189 1898 X txt php 发现更新日志文件CHANGLOG txt 访问更新日志文件CHANGELOG txt
  • iOS 15 适配踩坑:NavigationBar、UITabBar失效问题

    苹果前两天推出了iOS 15 秋天都等不及 相关链接 ios 15 0 适配问题 NavigationBar和UITabBar失效问题 Xcode 13 beta版 iOS 15 beta 3的系统 除了客户提出的问题 自己还发现了两处UI
  • python常用的类间关系

    1 类之间的关系 1 1 定义 1 2 例子 2 定义可访问性 2 1 定义 2 2 例子 附录 1 类之间的关系 1 1 定义 简单的说 类和类之间的关系有三种 is a has a和use a关系 is a关系也叫继承或泛化 比如学生和
  • 《软件测试的艺术》第七章 可用性(或用户体验)测试

    软件测试的艺术 第七章 可用性 或用户体验 测试 7 0 前言 7 1 可用性测试基本要素 7 2 可用性测试流程 7 2 1 测试用户的选择 7 2 2 需要多少用户进行测试 7 2 3 数据采集方法 7 2 4 可用性调查问卷 7 2
  • 网页使用jssdk微信分享报错

    网页使用jssdk微信分享报错 显示找不到文件 jssdk php文件如下
  • 判断字符串是否以 endStr 为结尾

    String prototype endWith function endStr 判断字符串以 endStr 为结尾 let d this length endStr length return d gt 0 this lastIndexO
  • ubuntu16.04 从源码编译安装caffe(纯CPU版)

    需要做caffe在嵌入式的移植 决定先在X86上理清所有依赖包关系 再做交叉编译 由于目的是用在嵌入式 暂不支持GPU 1 boost 官网 http www boost org Caffe 中主要使用了Boost 的智能指针 新版v1 6
  • python中的字典(Dictionary)

    python中的字典 Dictionary 在Python中 字典 Dictionary 是一种键 值对的无序集合 用于存储和查找具有唯一键的元素 字典提供了一个高效的方式来根据键访问和操作值 特点 字典是无序的 其中的元素没有固定的顺序
  • 51单片机入门——单片机最小系统

    单片机最小系统 1 什么是最小系统 2 最小系统的三要素 2 1 电源 2 2 晶振 2 3 复位电路 2 3 1 外部RST引脚复位 2 3 2 软件复位 2 3 3 上电复位 掉电复位 2 3 4 看门狗复位 2 3 5 冷启动复位和热
  • 从小学开始学机器人编程教育的好处

    不过对于绝大多数孩子来说 情况也许并不是这样 他们学习机器人编程并非一定要成为程序员 更不一定要为将来创业做准备 但是他们同样能从编程学习中获益 获得多方面的思维训练 格物斯坦表示 通过学习编程 除了通常被提及的一些如促进学科知识学习 了解
  • C语言经典100例题(46)--宏#define命令练习(1)

    目录 题目 问题分析 代码 运行结果 题目 宏 define命令练习 1 问题分析 define是宏定义 程序在预处理阶段将用define定义的内容进行了 替换 因此在程序运行时 常量表中并没有用define定义的常量 系统不为它分配内存
  • Navicat 无法连接 MySQL 怎么办?

    本文背景 Navicat 是图形化操作 MySQL 的强大工具 但是当数据库的服务器没有开放 3306 端口给办公网络时 在办公网使用 navicat 连接数据库是连不上的 要操作数据库 只能先 ssh 登陆到数据库服务器 然后在黑屏敲命令
  • 修改网站在浏览器上方显示的logo

    1 准备好要显示的图片 通过百度 ico在线制作 转换成为ico的格式 放在对应的位置中 2 在html的head中添加 3 href是ico的位置 4 刷新页面 清除缓存即可
  • OPC通讯的安全防护

    http www dqjsw com cn dianqi OPC 111931 html OPC通讯的安全防护 OPC 用于过程控制的OLE 被广泛应用在控制系统中 用于提供不同供应商的设备和软件之间的互操作性 最新版本的OPC OPC U