联系:手机/微信(+86 17813235971) QQ(107644445)
标题:Oracle Database Server 'TNS Listener'远程数据投毒漏洞(CVE-2012-1675)的解决方案
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
根据oracle mos官方描述,该问题需要打patch和配置同步进行,这篇主要提供单机Oracle Database Server ‘TNS Listener’远程数据投毒漏洞(CVE-2012-1675)的解决方案,参考文档Using Class of Secure Transport (COST) to Restrict Instance Registration (Doc ID 1453883.1),因为文档本身描述比较繁琐,这里对其进行简单总结:
数据库版本要求
包含12880299补丁,最低版本要求(高于以下版本即可)
通过$ORACL_HOME/OPatch/opatch lsinventory 命令获取版本信息,大于等于上述文档版本即可,具体版本对应关系参考:数据库补丁对应关系
listener.ora文件配置
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)) # (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) --注释掉,一般不会使用ipc,绝大部分应用使用tcp连接数据库 ) ) ADR_BASE_LISTENER = /home/u01/app/oracle SECURE_REGISTER_LISTENER = (TCP) --增加该参数
重启监听
lsnrctl stop lsnrctl start
验证配置生效
1.查看数据库监听日志 $ORACLE_BASE/diag/tnslsnr/主机名/listener/trace/listener.log 2.在局域网中找一台数据库服务器(单机环境),登录数据库 Sqlplus / as sysdba Show parameter remote_listener;--记录该值(一般是空) alter system set remote_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=ip)(PORT=1521))' scope=memory; IP为修改为上述监听的数据库服务器地址 3.再次查看监听日志,会发现类似记录(亦可在数据库中之执行alter system register观察) 02-NOV-2018 20:37:53 * service_register_NSGR * 1194 TNS-01194: The listener command did not arrive in a secure transport 02-NOV-2018 20:37:56 * service_register_NSGR * 1194 TNS-01194: The listener command did not arrive in a secure transport 观察一会儿,表明我们的监听配置生效,数据库拒绝远程监听,修复该漏洞. 如果没有出现类似记录,请核查数据库版本补丁是否满足要求,listener.ora参数配置是否正确 4.还原remote_listener参数以前值 sqlplus / as sysdba alter system set remote_listener='2中查询记录的值' scope=memory;
对于rac环境,配置比较复杂,参考mos文档:Using Class of Secure Transport (COST) to Restrict Instance Registration in Oracle RAC (Doc ID 1340831.1)