暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

有效节点注册检查(VNCR)

未入门dba 2025-02-25
197

适用于:

Oracle Net Services - 版本 11.2.0.4 到 12.1.0.2 [发行版 11.2 到 12.1]
本文档所含信息适用于所有平台
介绍listener新的注册相关的安全功能 - 有效节点检查功能。11.2.0.4以及更高版本里引入这个功能是为了解决下面的安全问题:
alert-cve-2012-1675https://www.oracle.com/technetwork/topics/security/alert-cve-2012-1675-1608180.html

用途

 VNCR 是 Oracle Net 11.2.0.4 和 12c 的一个新特性,只允许注册实例来自允许的服务器。

  • 仅当注册来自于一个有效节点时才允许注册成功,该想法确保了 listener 的安全性。
  • 通过 listener.ora 文件,用户可以指定允许注册的节点列表,或者排除掉的节点列表。
  • 这消除了复杂的 COST 设置来确保恶意的服务器不会注册到 listener。
  • 同一台主机不能同时出现在邀请和排除列表中。如果同时指定了,则邀请节点优先。
  • 该特性独立于客户端使用的有效节点检查。

详细信息

如果没有手工配置,12c listener(默认)不允许远程服务器注册它们的数据库实例。远程注册将会导致 TNS-01182 错误记录到 listener.log 文件中。这是正常行为,因为 listener 默认只允许注册的实例来自与 listener 相同的机器。


为了允许远程实例注册到 12c listener,在 listener.ora 文件中启用 VNCR。


注意:Oracle 11.2.0.4上,VALID_NODE_CHECKING_REGISTRATION_listener_name 默认 是OFF,必须设置成 ON 来启用阻塞远程注册的功能。

参见只影响 HPUX Itanium 系统的  BUG 20438237 VNCR doesn't work on RAC 



VALID_NODE_CHECKING_REGISTRATION_listener_name
参数值:
     OFF/0 - 禁用 VNCR
     ON/1/LOCAL - 默认。启用 VNCR。所有本地机器 IPs 都可以注册。
     SUBNET/2 - 子网下的所有机器都允许注册。

REGISTRATION_INVITED_NODES_listener-name
     参数值是有效 IP,有效主机,子网使用 CIDR 标记法(对于 ip4/6/),或者通配符(*)对于 ipv4。例如:REGISTRATION_INVITED_NODES_Listener=(<hostname>, 127.xx.yy.zz, 127.zz.y.*)

注意当设置了 INVITED 列表,它会自动在列表中包含机器的本地 IP。没有必要将其列入。

注意:对于12c GRID 环境,这个参数一般被CRS agent所管理。
也适用于GRID环境里的standalone DB。

对于GRID管理的standalone DB,agent可能会自动添加下面的配置到
listener.ora:

VALID_NODE_CHECKING_REGISTRATION_listener_name=SUBNET

REGISTRATION_EXCLUDED_NODES_listener_name – 和 INVITED_NODES 相比正好相反

Sample listener.ora file:

LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))) # line added by Agent
MGMTLSNR=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=MGMTLSNR)))) # line added by Agent
# listener.ora Network Configuration File: /u01/app/12.1.0.2/grid/network/admin/listener.ora
# Generated by Oracle configuration tools.

ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN3 = ON

ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN2 = ON

ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1 = ON

ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER = ON

LISTENER_SCAN3 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = LISTENER_SCAN3)) ) )

LISTENER_SCAN2 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = LISTENER_SCAN2)) ) )

LISTENER_SCAN1 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = LISTENER_SCAN1)) ) )

ENABLE_GLOBAL_DYNAMIC_ENDPOINT_MGMTLSNR=ON # line added by Agent

ADMIN_RESTRICTIONS_ADMIN=ON ENABLE_GLOBAL_DYNAMIC_ENDPOINT_EBSPRD01=ON # line added by Agent

VALID_NODE_CHECKING_REGISTRATION_MGMTLSNR=SUBNET # line added by Agent

VALID_NODE_CHECKING_REGISTRATION_LISTENER_SCAN3=OFF # line added by Agent

VALID_NODE_CHECKING_REGISTRATION_LISTENER_SCAN2=OFF # line added by Agent

VALID_NODE_CHECKING_REGISTRATION_LISTENER_SCAN1=OFF # line added by Agent

VALID_NODE_CHECKING_REGISTRATION_LISTENER = SUBNET

REGISTRATION_INVITED_NODES_LISTENER=(<hostname>, 127.xx.yy.zz, 127.zz.y.*)

关于12.2版本更多信息,请参考下面的文档:

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/netag/index.html

 非RAC/集群环境
~~~~~~~~~~
请注意上面的信息主要是针对RAC/集群环境。
对于非集群环境下的11.2.0.4 standalone listener(不属于grid infrastucture管理的),只需要下面的行即可
VALID_NODE_CHECKING_REGISTRATION_listener_name = ON

* 不管动态注册还是静态注册的11.2.0.4 listener,基于安全的原因,都应该设置上面这一行。


BUG:20438237 - VNCR DOESN'T WORK ON RAC

 

参考

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论