oracle TNS Listener 远程投毒漏洞修复

有个客户在等保测评过程,测评公司扫出一个关于oracle的漏洞如下:
oracle TNS Listener 远程投毒漏洞修复_第1张图片
客户是RAC环境11.2.0.4,在生产修复漏洞前我做了如下测试验证:

测试环境准备:

  1. RAC一套11.2.0.4 实例名dbserver
[oracle@hisdb1 ~]$ cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.31.160.112 hisdb1
172.31.160.113 hisdb2

10.255.160.5 hisdb1-priv1
10.255.160.6 hisdb2-priv1

10.254.160.5 hisdb1-priv2
10.254.160.6 hisdb2-priv2

172.31.160.114 hisdb1-vip
172.31.160.115 hisdb2-vip

172.31.160.111 hisdb-scan
  1. 单机Oracle一套11.2.0.4(这里使用的是windows环境) 实例名orcl
    数据库地址:172.31.160.110

测试:我们要将单机数据库远程注册到RAC服务器

  1. 单机数据库配置remote_listener参数
--这里注册使用的是rac节点1的public ip,之前使用的是scan_ip无法注册,具体原因未知。
SQL> alter system set remote_listener='(ADDRESS = (PROTOCOL = TCP)(HOST =172.31.160.112)(PORT = 1521))' scope=memory;
系统已更改。
SQL> alter system register;
系统已更改。

在这里插入图片描述

–我们这是临时注册,所以只写在内存中,重启后失效

  1. RAC数据库查看是否有远程注册
[grid@hisdb1 ~]$ lsnrctl services listener

oracle TNS Listener 远程投毒漏洞修复_第2张图片

图中sevice为orcl的实例remote server为远程注册,同时这个也提示存在远程注册漏洞。

  1. 修改RAC两节点listener.ora配置
--RAC监听配置文件位于grid用户$ORACLE_HOME/network/admin/下
--修改前做好listener.ora备份
在listener.ora中添加如下内容
VALID_NODE_CHECKING_REGISTRATION_LISTENER=ON
VALID_NODE_CHECKING_REGISTRATION_LISTENER_SCAN1=ON
REGISTRATION_INVITED_NODES_LISTENER_SCAN1=(172.31.160.112,172.31.160.113,172.31.160.114,172.31.160.115,172.31.160.111)
-- REGISTRATION_INVITED_NODES_LISTENER_SCAN1参数中ip地址为RAC节点所有public_ip、vip、scan_ip

修改完监听配置文件要重启一下scan和listener

Grid用户重启监听:snrctl reload
Oracle重启scan:
srvctl stop scan
srvctl stop scan_listener
srvctl start scan
srvctl start scan_listener
  1. 重新测试
    –将单机数据库remote_listener参数置空,或者指向别的库,重新注册一下。
    oracle TNS Listener 远程投毒漏洞修复_第3张图片

–重新配置单机数据库remote_listener参数,重新注册一下。
在这里插入图片描述

–RAC上查看是否还有远程注册
oracle TNS Listener 远程投毒漏洞修复_第4张图片

没有显示有remote server,漏洞修复成功。

你可能感兴趣的:(oracle,数据库)