OPC DA协议是工控领域常用协议之一,OPC DA采用微软的COM技术,在不同工控机上采用OPC DA通讯则采用DCOM技术,而DCOM则采用微软的RPC动态端口,所以在普通商用防火墙上是无法支持OPC DA这个协议。这也是为什么工业防火墙的具备防护OPC DA专业技能,工业防火墙会根据DCOM中RPC来跟踪动态端口的变化,记录协商出来的动态端口,并在策略上动态开放。但实际上工业防火墙在企业内网采购比较少,更多是商业防火墙,而随着IT和OT融合,在企业网络中获取控制网络的数据的场景越来越多,但很多的DCS和SCADA系统仅仅具备OPC DA对外通讯能力,所以多数企业需要在IT和OT边界部署工业防火墙。此篇文章就是指导IT和OT边界采用商业防火墙的情况下如何采用修改注册表的方式,把RPC中DCOM端口限制在一个小范围内从而保证网络的通讯畅通切安全。
Windows 中的RPC服务是允许在自定义配置项(例如注册表项)中指定服务器端口。当指定专用服务端口时,就知道哪些流量在穿越防火墙的主机之间流动。可以以更直接的方式定义允许哪些流量。
使用注册表编辑器,可以修改 RPC 的以下参数。下面讨论的 RPC Port 键值均位于注册表中的以下键中:
HKEY_LOCAL_MACHINESoftwareMicrosoftRpcInternetEntry name Data Type
Port REG_MULTI_SZ
指定一组 IP 端口范围,其中包含网络上可用的所有端口或不可用的所有端口。每个字符串代表一个端口或一组包含的端口。
例如,单个端口可以用5984表示,一组端口可以用5000-5100表示。如果任何条目超出 0 到 65535 的范围,或者任何字符串无法解释,则 RPC 运行时会将整个配置视为无效。
PortsInternetAvailable REG_SZ Y 或 N(不区分大小写)
如果是,则端口项中列出的端口是该计算机上的所有网络可用端口。如果为 N,则“端口”项中列出的端口是所有不可通过网络访问的端口。
UseInternetPorts REG_SZ Y 或 N(不区分大小写)
指定系统默认策略。
如果是,则使用默认值的进程将从网络可用端口集中分配端口,如先前所定义。如果为 N,则使用默认值的进程将从仅限网络的端口集中分配端口。
例子
在此示例中,任意选择了端口 5000 到 6000(包括端口 5000 和 6000),以帮助说明如何配置新的注册表项。它并不是任何特定系统所需的最小端口数的建议。
在下面添加Internet密钥HKEY_LOCAL_MACHINESoftwareMicrosoftRpc
在Internet项下,添加值Ports (MULTI_SZ)、PortsInternetAvailable (REG_SZ) 和UseInternetPorts (REG_SZ)。
例如,新的注册表项如下所示:
Ports: REG_MULTI_SZ: 5000-6000
PortsInternetAvailable: REG_SZ: Y
UseInternetPorts: REG_SZ: Y
重新启动服务器。所有使用 RPC 动态端口分配的应用程序都使用端口 5000 到 6000(含)。
应该打开端口 5000 以上的一系列端口。低于 5000 的端口号可能已被其他应用程序使用,并可能导致与 DCOM 应用程序发生冲突。此外,根据以往的经验,至少应打开 100 个端口,因为工控服务依赖这些 RPC 端口进行相互通信。
原文始发于微信公众号(IRTeam工业安全):普通防火墙下如何放行工业OPC DA协议