RPC ALG
远程过程调用 (RPC) ALG 使用众所周知的端口 TCP 111 和 UDP 111 进行端口映射,用于动态为 RPC 服务分配和打开端口。RPC Portmap ALG 会跟踪端口请求,并动态开启这些请求的端口的防火墙。RPC ALG 可通过指定允许的程序编号来进一步限制 RPC 协议。
了解 RPC AALG
Junos OS基本远程过程呼叫应用层网关 (RPC ALG) 服务。RPC 是一种协议,允许一个地址空间内运行的应用程序访问在另一个地址空间中运行的应用程序的资源,就像资源是首个地址空间的本地应用程序一样。RPC ALG 负责 RPC 数据包处理。
Junos OS RPC ALG 支持以下服务和功能:
Sun Microsystems RPC 开放网络计算 (ONC)
Microsoft RPC 分布式计算环境 (DCE)
动态端口协商
允许和拒绝特定 RPC 服务的能力
静态网络地址转换 (NAT) 和源NAT(无端口转换)
安全策略中的 RPC 应用程序
如果您需要运行基于 RPC 的应用程序,如 NFS 或 Microsoft Outlook,请使用 RPC ALG。默认情况下,RPC ALG 功能启用。
了解 Sun RPC AALG
Sun Microsystems 远程过程调用 (Sun RPC)(也称为开放网络计算远程过程调用 (ONC RPC))提供了一种在一个主机上运行的程序调用另一主机上运行的程序中的过程的方法。由于 RPC 服务大量且需要广播,因此 RPC 服务的传输地址将基于服务的程序编号和版本号动态协商。定义了几种绑定协议,用于将 RPC 程序编号和版本号映射到传输地址。
Junos OS将 Sun RPC 作为预定义服务进行支持,并允许您根据配置的安全策略拒绝信息流。应用层网关 (ALG) 为 瞻博网络 设备提供处理 Sun RPC 的动态传输地址协商机制和确保基于程序编号的安全策略实施的功能。您可定义安全策略以允许或拒绝所有 RPC 请求,或者允许或拒绝特定程序编号。ALG 还支持路由模式,网络地址转换和NAT请求的路由模式( NAT)模式。
当应用程序或 PC 客户端呼叫远程服务时,需要查找服务的传输地址。对于 TCP/UDP,地址为端口号。此案例的典型过程如下:
客户端将 GETPORT 消息发送到远程机器上的 RPCBIND 服务。GETPORT 消息包含其尝试呼叫的远程服务的程序编号以及版本和过程编号。
RPCBIND 服务回复端口号。
客户端使用返回的端口号呼叫远程服务。
远程服务会回复客户端。
客户端还可使用 CALLIT 消息直接呼叫远程服务,无需确定服务的端口号。在这种情况下,过程如下:
客户端将 CALLIT 消息发送到远程机器上的 RPCBIND 服务。CALLIT 消息包含其尝试呼叫的远程服务的程序编号以及版本和过程编号。
RPCBIND 为客户端调用服务。
如果呼叫成功,RCPBIND 会回复客户端。回复包含通话结果和服务端口号。
Sun RPC ALG 动态分配新的映射条目,而不是使用默认大小(512 个条目)。它还提供了一个灵活的基于时间的 RPC 映射条目,移除映射条目(自动清除),而不影响关联的活动 RPC 会话,包括控制会话和数据会话。
从Junos OS 15.1X49-D10 Junos OS版本17.3R1,可定义 Sun RPC 映射条目 ageout 值。使用 set security alg sunrpc map-entry-timeout value
命令。长距离值的范围为 1 小时到 72 小时,默认值为 32 小时。如果 Sun RPC ALG 服务即使在 72 小时之后未触发控制协商,则最大 RPC ALG 映射条目值会过长,并且与服务的新数据连接失败。
启用 Sun RPC AALG
Sun RPC ALG 默认启用,无需配置。
启用 Sun RPC AALG(CLI过程)
要禁用 Sun RPC ALG,请输入以下命令:
user@host# set security alg sunrpc disable
要重新启用 Sun RPC ALG,请输入以下命令:
user@host# delete security alg sunrpc
定制 Sun RPC 应用程序(CLI过程)
所有 Sun RPC 应用程序都可以通过预先定义的应用程序集进行自定义。
例如,可以定制应用程序以仅打开控制会话,不允许任何数据会话:
application-set junos-sun-rpc { application junos-sun-rpc-tcp; application junos-sun-rpc-udp; }
以下示例中,预定义的应用程序集仅允许数据会话。如果没有控制会话,它将不起作用:
application-set junos-sun-rpc-portmap { application junos-sun-rpc-portmap-tcp; application junos-sun-rpc-portmap-udp; }
要使用预定义的应用程序集自定义所有 Sun RPC 应用程序,在策略中同时使用两个应用程序集:
application-set [junos-sun-rpc junos-sun-rpc-portmap]
MS RPC 应用程序以与 Sun RPC 应用程序相同的方式自定义。
了解 Sun RPC 服务
Sun RPC 也称为开放网络计算远程过程调用 (ONC RPC),提供了一种在一个主机上运行的程序调用另一主机上运行的程序中的过程的方法。Sun RPC 服务由程序标识符定义。程序标识符独立于任何传输地址,大多数 Sun RPC 会话通过 TCP 或 UDP 端口 111 启动。每个主机将所需的 RPC 服务链路到通过端口 111 控制通道协商的动态 TCP 或 UDP 端口,从而允许客户端连接到 TCP 或 UDP 端口 111。
预定义的 Sun Microsystems 远程过程调用 (Sun RPC) 服务包括:
junos-sun-rpc-tcp
junos-sun-rpc-udp
Sun RPC ALG 可通过以下方法应用:
ALG 默认应用程序 — 使用以下预定义应用程序之一在策略中控制数据连接:
junos-sun-rpc-any-tcp
junos-sun-rpc-any-udp
junos-sun-rpc-mountd-tcp
junos-sun-rpc-mountd-udp
junos-sun-rpc-nfs-tcp
junos-sun-rpc-nfs-udp
junos-sun-rpc-nlockmgr-tcp
junos-sun-rpc-nlockmgr-udp
junos-sun-rpc-portmap-tcp
junos-sun-rpc-portmap-udp
junos-sun-rpc-rquotad-tcp
junos-sun-rpc-rquotad-udp
junos-sun-rpc-ruserd-tcp
junos-sun-rpc-ruserd-udp
junos-sun-rpc-sadmind-tcp
junos-sun-rpc-sadmind-udp
junos-sun-rpc-sprayd-tcp
junos-sun-rpc-sprayd-udp
junos-sun-rpc-status-tcp
junos-sun-rpc-status-udp
junos-sun-rpc-walld-tcp
junos-sun-rpc-walld-udp
junos-sun-rpc-ypbind-tcp
junos-sun-rpc-ypbind-udp
junos-sun-rpc-ypserv-tcp
junos-sun-rpc-ypserv-udp
默认控制应用程序 — 使用预定义的控制
junos-sun-rpc
方式:创建数据应用程序 (
USER_DEFINED_DATA
)。您可以自己创建一组数据(例如),my_rpc_application_set
并使用该策略。ALG 默认应用程序集 — 使用预定义的应用程序集在策略中控制和自定义数据应用程序:
junos-sun-rpc
(用于控制会话)junos-sun-rpc-any
junos-sun-rpc-mountd
junos-sun-rpc-nfs
junos-sun-rpc-nfs-access
junos-sun-rpc-nlockmgr
junos-sun-rpc-portmap
(对于数据会话)junos-sun-rpc-rquotad
junos-sun-rpc-ruserd
junos-sun-rpc-sadmind
junos-sun-rpc-sprayd
junos-sun-rpc-status
junos-sun-rpc-walld
junos-sun-rpc-ypbind
junos-sun-rpc-ypserv
自定义控制和自定义数据应用程序 - 使用自定义应用程序:
创建用于控制 ( ) 和数据
USER_DEFINED_CONTROL
( ) 的应用程序USER_DEFINED_DATA
。在策略中,使用用户定义的应用程序集进行控制和自定义数据应用程序:
USER_DEFINED_CONTROL
USER_DEFINED_DATA
表 1 列出了预定义的 Sun RPC 服务、与每项服务相关联的程序标识符,以及每项服务的说明。
服务 |
计划 ID |
描述 |
---|---|---|
端口MAP |
100000 |
Sun RPC 端口映射协议是基于 TCP 或 UDP 端口的服务,包括 TCP 或 UDP 端口 111。 |
NFS |
100003 |
Sun RPC 网络文件系统。 |
安装 |
100005 |
Sun RPC 安装过程。 |
YPBIND |
100007 |
Sun RPC 黄色页面绑定服务。 |
地位 |
100024 |
Sun RPC 状态。 |
了解 Microsoft RPC AALG
Microsoft 远程过程调用 (MS-RPC) 是 Microsoft 对分布式计算环境 (DCE) RPC 的实施。与 Sun RPC 一样,MS-RPC 为在一个主机上运行的程序提供了一种方式,可以调用另一个主机上运行的程序中的过程。由于 RPC 服务大量且需要广播,因此 RPC 服务的传输地址将基于服务程序的通用唯一标识符 (UUID) 动态协商。特定 UUID 映射到传输地址。
Junos OS应用程序Junos OS将 MS-RPC 作为预定义服务,并基于配置的策略允许和拒绝信息流。应用层网关 (ALG) 为 瞻博网络 设备提供处理 MS-RPC 的动态传输地址协商机制以及确保基于 UUID 的安全策略实施的功能。您可定义安全策略以允许或拒绝所有 RPC 请求,或者允许或拒绝特定 UUID 编号。ALG 还支持路由模式,网络地址转换和NAT请求的路由模式( NAT)模式。
如果 MS-RPC 客户端和 MS-RPC 服务器均支持 64 位功能(如 MS Exchange 2008),则它们协商在网络通信期间使用 NDR64 传输语法。使用 NDR64 时,接口参数应按 NDR64 语法编码,因为 NDR64 的数据包格式与 NDR20 的数据包格式不同(32 位版本)。
在 MS-RPC 中,有一个称为 ISystemActivator(也称为 IRemoteSCMActivator)的 DCOM 远程协议远程激活接口。它由 Windows 管理设备命令行 (WMIC)、互联网信息服务 (IIS) 和广泛使用的许多其他应用程序使用。
MS-RPC ALG 动态分配新的映射条目,而不是使用默认大小(512 个条目)。它还提供了一个灵活的基于时间的 RPC 映射条目,移除映射条目(自动清除),而不影响关联的活动 RPC 会话,包括控制会话和数据会话。
从Junos OS版本15.1X49-D10和Junos OS版本17.3R1,可定义 MS-RPC 映射条目年龄线值。使用 set security alg msrpc map-entry-timeout value
命令。长距离值的范围为 1 小时到 72 小时,默认值为 32 小时。如果 MS-RPC ALG 服务即使在 72 小时后未触发控制协商,最大 MS-RPC ALG 映射条目值会过长,并且与服务的新数据连接失败。
启用 Microsoft RPC AALG
默认情况下,MS-RPC ALG 已启用,不需要配置。
启用 Microsoft RPC AALG(CLI过程)
要禁用 Microsoft RPC ALG,请输入以下命令:
user@host# set security alg msrpc disable
要重新认证 Microsoft RPC ALG,请输入以下命令:
user@host# delete security alg msrpc
配置 Microsoft RPC ALG
您可以使用以下三种方法配置 Microsoft RPC ALG:
使用预先定义的 Microsoft 应用程序配置 MS-RPC ALG
有几个预定义的 MS 应用程序。要查看来自 CLI 的预定义 Microsoft 应用程序,请输入 show configuration groups junos-defaults
命令。
user@host> show security policies from-zone trust to-zone untrust { policy p1 { match { source-address any; destination-address any; application junos-ms-rpc-msexchange; } then { permit; } } }
在您提交配置后(从 CLI输入 show security alg msrpc object-id-map
命令可查看输出。
user@host> show security alg msrpc object-id-map UUID OID 1544f5e0-613c-11d1-93df-00c04fd7bd09 0x80000001 a4f1db00-ca47-1067-b31f-00dd010662da 0x80000002 f5cc5a18-4264-101a-8c59-08002b2f8426 0x80000003
输出显示 UUID 已应用于策略。
使用通配符 UUID 配置 MS-RPC ALG
要允许配置任何 MS RPC 应用程序,请将 语句 application junos-ms-rpc-any
添加至 Permit 配置。
user@host> show security policies from-zone trust to-zone untrust { policy p1 { match { source-address any; destination-address any; application junos-ms-rpc-any; } then { permit; } } }
在您提交配置后(从 CLI输入 show security alg msrpc object-id-map
命令可查看输出。
user@host> show security alg msrpc object-id-map UUID OID ffffffff-ffff-ffff-ffff-ffffffffffff 0x80000004
使用特定 UUID 配置 MS-RPC ALG
对于尚未预定义的应用程序,您需要手动配置特定的 UUID。例如,要允许尚未预定义的 NETLOGON 应用程序,您可将 语句 application msrpc-netlogon
添加至 Permit 配置。
在Junos OS SRX 系列15.1X49-D90和早期版本中, Microsoft 远程过程调用 (MS-RPC) 的自定义应用程序通用唯一标识符 (UUID),具有领先的零和 nil UUID (0000000-0000-0000-0000-00000000) 可能匹配所有 TCP 流量和参考策略,以允许所有 TCP 流量,而不是输入 MS-RPC ALG 检查。
从 Junos OS 15.1X49-D100 版和 Junos OS 版 17.3R1 开始,带前导零的自定义应用程序 UUID 不匹配所有 TCP 流量和参考策略,这进入 MS-RPC ALG 检查。此新应用程序不允许使用 nil UUID。
user@host> show applications application msrpc-netlogon { term t1 protocol tcp uuid 12345678-1234-abcd-ef00-01234567cffb; term t2 protocol udp uuid 12345678-1234-abcd-ef00-01234567cffb; term t3 protocol tcp uuid 12345778-1234-abcd-ef00-0123456789ab; } user@host> show security policies from-zone trust to-zone untrust { match { source-address any; destination-address any; application msrpc-netlogon; } then { permit; } } }
在您提交配置后(从 CLI 输入 命令以验证 show security alg msrpc object-id-map
对象 ID (UUID 到 OID) 映射表的 Microsoft 通用唯一标识符。Microsoft RPC ALG 监控 TCP 端口 135 上的数据包。
user@host> show security alg msrpc object-id-map UUID OID 12345778-1234-abcd-ef00-0123456789ab 0x80000006 12345678-1234-abcd-ef00-01234567cffb 0x80000005 be617c0-31a5-11cf-a7d8-00805f48a135 0x80000020 e3514235-4b06-11d1-ab04-00c04fc2dcd2 0x80000002 67df7c70-0f04-11ce-b13f-00aa003bac6c 0x80000014
CLI 命令具有机箱群集节点选项,以允许将输出限制为特定节点 show security alg msrpc object-id-map
或查询整个群集。CLI show security alg msrpc object-id-map node
命令选项为 <node-id | all | local | primary>
。
了解 Microsoft RPC 服务
MS-RPC 是 Microsoft 对分布式计算环境 (DCE) RPC 的实施。与 Sun RPC 一样,MS-RPC 为在一个主机上运行的程序提供了一种方式,可以调用另一个主机上运行的程序中的过程。MS-RPC 根据服务程序的通用唯一标识符 (UUID) 动态协商。特定 UUID 映射到传输地址。
在Junos OS SRX 系列15.1X49-D90和早期版本中, Microsoft 远程过程调用 (MS-RPC) 的自定义应用程序通用唯一标识符 (UUID),具有领先的零和 nil UUID (0000000-0000-0000-0000-00000000) 可能匹配所有 TCP 流量和参考策略,以允许所有 TCP 流量,而不是输入 MS-RPC ALG 检查。
从 Junos OS 15.1X49-D100 版和 Junos OS 版 17.3R1 开始,带前导零的自定义应用程序 UUID 不匹配所有 TCP 流量和参考策略,这进入 MS-RPC ALG 检查。此新应用程序不允许使用 nil UUID。
预先定义的 Microsoft 远程过程调用 (MS-RPC) 服务包括:
junos-ms-rpc-epm
junos-ms-rpc-tcp
junos-ms-rpc-udp
MS-RPC 应用程序默认值包括:
junos-ms-rpc-iis-com-1
junos-ms-rpc-iis-com-adminbase
junos-ms-rpc-msexchange-directory-nsp
junos-ms-rpc-msexchange-directory-rfr
junos-ms-rpc-msexchange-info-store
junos-ms-rpc-uuid-any-tcp
junos-ms-rpc-uuid-any-udp
junos-ms-rpc-wmic-admin
junos-ms-rpc-wmic-admin2
junos-ms-rpc-wmic-mgmt
junos-ms-rpc-wmic-webm-callresult
junos-ms-rpc-wmic-webm-classobject
junos-ms-rpc-wmic-webm-level1login
junos-ms-rpc-wmic-webm-login-clientid
junos-ms-rpc-wmic-webm-login-helper
junos-ms-rpc-wmic-webm-objectsink
junos-ms-rpc-wmic-webm-refreshing-services
junos-ms-rpc-wmic-webm-remote-refresher
junos-ms-rpc-wmic-webm-services
junos-ms-rpc-wmic-webm-shutdown
MS-RPC 应用程序集默认值包括:
junos-ms-rpc
junos-ms-rpc-any
junos-ms-rpc-iis-com
junos-ms-rpc-msexchange
junos-ms-rpc-wmic
表 2 列出了预定义的 MS-RPC 服务、与每项服务关联的 UUID 值,以及每项服务的说明。
服务 |
UUID |
描述 |
---|---|---|
EPM |
e1af8308-5d1f-11c9-91a4-08002b14a0fa |
MS-RPC 端点映射器 (EPM) 协议是基于 TCP/UDP 端口的服务,包括 TCP/UDP 端口 135。 |
交换数据库 |
1a190310-bb9c-11cd-90f8-00aa00466520 |
Microsoft Exchange 数据库服务。 |
EXCHANGE-DIRECTORY |
f5cc5a18-4264-101a-8c59-08002b2f8426 f5cc5a7c-4264-101a-8c59-08002b2f8426 f5cc59b4-4264-101a-8c59-08002b2f8426 |
Microsoft Exchange Directory 服务。 |
WIN-DNS |
50abc2a4-574d-40b3-9d66-ee4fd5fba076 |
Microsoft Windows DNS 服务器。 |
赢 |
5f52c28-7f9f-101a-b52b-08002b2efabe 811109bf-a4e1-11d1-ab54-00a0c91e9b45 |
Microsoft WINS 服务。 |
WMIC-Webm-Level1Login |
f309ad18-d86a-11d0-a075-00c04fb68820 |
此服务允许用户连接到特定命名空间中的管理服务接口。 |
自定义 Microsoft RPC 应用程序(CLI过程)
MS-RPC 应用程序与 SUN RPC 应用程序的自定义方式相同。
安全策略中的 MS-RPC 服务包括:
0e4a0156-dd5d-11d2-8c2f-00c04fb6bcde
1453c42c-0fa6-11d2-a910-00c04f990f3b
10f24e8e-0fa6-11d2-a910-00c04f990f3b
1544f5e0-613c-11d1-93df-00c04fd7bd09
相应的 TCP/UDP 端口是动态的。要允许,您可以使用以下语句来表示每个编号:
set applications application-name term term-name uuid hex-number
ALG 根据这四个 UUID 将程序编号映射到动态协商的 TCP/UDP 端口,并根据您的配置策略允许或拒绝服务。