监听投毒现象和解决办法


监听配置文件未改动,,只有1522能用1521配置没问题不能用
 

sqlnet.log报错

 VERSION INFORMATION:
    TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
    Windows NT TCP/IP NT Protocol Adapter for 64-bit Windows: Version 11.2.0.1.0 - Production
  Time: 23-4月 -2020 14:33:32
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12564
    TNS-12564: TNS: 拒绝连接
    ns secondary err code: 0
    nt main err code: 0
    nt secondary err code: 0
    nt OS err code: 0



服务用的orcl初始服务,客户说只手动添加了1522的就可以用


ID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\app\hbydidc\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\app\hbydidc\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = C:\app\hbydidc\product\11.2.0\dbhome_1)
      (SID_NAME = orcl)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = *******)(PORT = 1521))
    )
   (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = *******))(PORT = 1522))
    )
  )

 
C:\Users\Administrator>lsnrctl status

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 24-4月 -2020 15:5
3:57

Copyright (c) 1991, 2010, Oracle.  All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Produ
ction
启动日期                  23-4月 -2020 17:52:19
正常运行时间              0 天 22 小时 1 分 38 秒
跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序参数文件          C:\app\hbydidc\product\11.2.0\dbhome_1\network\admin\l
istener.ora
监听程序日志文件          c:\app\hbydidc\diag\tnslsnr\WINDOWS-MN9JOQG\listener\a
lert\log.xml
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WINDOWS-MN9JOQG)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=*******))(PORT=1522)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=*******))(PORT=1521)))
服务摘要..
服务 "CLRExtProc" 包含 1 个实例。
  实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "ORCLXDB" 包含 2 个实例。
  实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
  实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
服务 "orcl" 包含 3 个实例。
  实例 "orcl", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
  实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
  实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
命令执行成功




LSNRCTL> services
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
服务摘要..
服务 "CLRExtProc" 包含 1 个实例。
  实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
    处理程序:
      "DEDICATED" 已建立:0 已被拒绝:0
         LOCAL SERVER
服务 "ORCLXDB" 包含 1 个实例。
  实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
    处理程序:
      "D000" 已建立:0 已被拒绝:0 当前: 0 最大: 1022 状态: ready
         DISPATCHER <machine: IDCSERVER1, pid: 3828>
         (ADDRESS=(PROTOCOL=tcp)(HOST=IDCSERVER1)(PORT=49168))
服务 "orcl" 包含 2 个实例。
  实例 "orcl", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
    处理程序:
      "DEDICATED" 已建立:1 已被拒绝:0
         LOCAL SERVER
  实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...---<<<<<<<<<<<<< 服务中有动态注册的orcl服务
    处理程序:
      "DEDICATED" 已建立:7 已拒绝:0 状态:ready
         REMOTE SERVER
         (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))
命令执行成功
LSNRCTL> services
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=orcl)))
服务摘要..
服务 "ORCLXDB" 包含 1 个实例。
  实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
    处理程序:
      "D000" 已建立:0 已被拒绝:0 当前: 0 最大: 1022 状态: ready
         DISPATCHER <machine: IDCSERVER1, pid: 3828>
         (ADDRESS=(PROTOCOL=tcp)(HOST=IDCSERVER1)(PORT=49168))
服务 "orcl" 包含 2 个实例。
  实例 "orcl", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
    处理程序:
      "DEDICATED" 已建立:2 已被拒绝:0
         LOCAL SERVER
  实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...       <<<<<<<<<<<<<<<<<<<<<<<
    处理程序:
      "DEDICATED" 已建立:0 已拒绝:0 状态:ready
         REMOTE SERVER                                        <<<<<<<<<<<<<<<<<<<<<<  有远程注册过来的orcl 不正常
         (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))

 


这是监听投毒

暂时解决方法,新添加了一个服务,myorcl,并且静态注册,可以正常使用,  local_listener设置成别的地方,不让动态注册 '127.0.0.0:1524'




LSNRCTL> status
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production
启动日期                  26-4月 -2020 15:38:56
正常运行时间              0 天 22 小时 59 分 34 秒
跟踪级别                  off
安全性                    ON: Password
SNMP                      OFF
监听程序参数文件          C:\app\hbydidc\product\11.2.0\dbhome_1\network\admin\listener.ora
监听程序日志文件          c:\app\hbydidc\diag\tnslsnr\WINDOWS-MN9JOQG\listener\alert\log.xml
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=*******))(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=*******))(PORT=1522)))
服务摘要..
服务 "CLRExtProc" 包含 1 个实例。
  实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "ORCLXDB" 包含 1 个实例。
  实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
服务 "myorcl" 包含 1 个实例。
  实例 "orcl", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "orcl" 包含 1 个实例。
  实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
命令执行成功



SID_NAME,KEY 的值修改为要访问的oracle实例的名称,HOST 修为 oracle 服务器使用的地址



SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\app\hbydidc\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\app\hbydidc\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
    (SID_DESC =
      (GLOBAL_DBNAME = myorcl)
      (ORACLE_HOME = C:\app\hbydidc\product\11.2.0\dbhome_1)
      (SID_NAME = orcl)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = *******))(PORT = 1521))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = *******))(PORT = 1522))
    )
  )

ADR_BASE_LISTENER = C:\app\hbydidc


#----ADDED BY TNSLSNR 24-4月 -2020 16:51:25---
PASSWORDS_LISTENER = 6EB4D57DED041889
#---------------------------------------------

ADMIN_RESTRICTIONS_LISTENER=ON
LOCAL_OS_AUTHENTICATION_LISTENER=OFF








SQL> show parameter service

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
service_names                        string      orcl
SQL> show parameter local

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
local_listener                       string
log_archive_local_first              boolean     TRUE
parallel_force_local                 boolean     FALSE



LSNRCTL> status
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=WINDOWS-MN9JOQG)(PORT=1521)))
TNS-12541: TNS: 无监听程序
 TNS-12560: TNS: 协议适配器错误
  TNS-00511: 无监听程序
   64-bit Windows Error: 61: Unknown error
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production
启动日期                  26-4月 -2020 15:38:56
正常运行时间              0 天 23 小时 23 分 34 秒
跟踪级别                  off
安全性                    ON: Password
SNMP                      OFF
监听程序参数文件          C:\app\hbydidc\product\11.2.0\dbhome_1\network\admin\listener.ora
监听程序日志文件          c:\app\hbydidc\diag\tnslsnr\WINDOWS-MN9JOQG\listener\alert\log.xml
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=*******))(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=*******))(PORT=1522)))
服务摘要..
服务 "CLRExtProc" 包含 1 个实例。
  实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "ORCLXDB" 包含 1 个实例。
  实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
服务 "myorcl" 包含 1 个实例。
  实例 "orcl", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "orcl" 包含 1 个实例。
  实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
命令执行成功

C:\Users\o>sqlplus *****/*******@*******:1521/orcl

SQL*Plus: Release 11.2.0.1.0 Production on 星期一 4月 27 14:54:24 2020

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

ERROR:
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务


请输入用户名:
C:\Users\o>sqlplus *****/*******@*******:1521/myorcl

SQL*Plus: Release 11.2.0.1.0 Production on 星期一 4月 27 14:54:31 2020

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> exit
从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 断




C:\Users\Administrator>netca

Oracle Net Services 配置:
正在配置监听程序:LISTENER
ServiceAliasException: 无法保存服务别名: TNS-04406: 对象已经存在
默认本地命名配置完成。
监听程序配置完成。
Oracle Net 监听程序启动:
    正在运行监听程序控制:
      C:\app\hbydidc\product\11.2.0\dbhome_1\bin\lsnrctl start LISTENER
    监听程序控制完成。
    正在设置监听程序服务以便自动启动。
    监听程序已成功启动。
成功完成 Oracle Net Services 配置。退出代码是0


C:\Users\Administrator>lsnrctl status

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 27-4月 -2020 15:18:49

Copyright (c) 1991, 2010, Oracle.  All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=WINDOWS-MN9JOQG)(PORT=1521)))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production
启动日期                  27-4月 -2020 15:17:20
正常运行时间              0 天 0 小时 1 分 33 秒
跟踪级别                  off
安全性                    OFF
SNMP                      OFF
监听程序参数文件          C:\app\hbydidc\product\11.2.0\dbhome_1\network\admin\listener.ora
监听程序日志文件          c:\app\hbydidc\diag\tnslsnr\WINDOWS-MN9JOQG\listener\alert\log.xml
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WINDOWS-MN9JOQG)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=******)(PORT=1521)))
服务摘要..
服务 "CLRExtProc" 包含 1 个实例。
  实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 2 个处理程序...
服务 "ORCLXDB" 包含 1 个实例。
  实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
服务 "orcl" 包含 1 个实例。
  实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
命令执行成功



重新配置后仍然无法识别
C:\Users\o>sqlplus *****/*******@*******:1521/orcl

SQL*Plus: Release 11.2.0.1.0 Production on 星期一 4月 27 15:12:50 2020

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

ERROR:
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务


请输入用户名:  exit
输入口令:
ERROR:
ORA-01005: 给出空口令; 登录被拒绝


C:\Users\Administrator> 监听日志摘取的服务注册时间,11G默认每隔1分钟左右自动注册一次


27-4月 -2020 17:12:19 * service_register * orcl * 0
27-4月 -2020 17:12:40 * service_update * orcl * 0
   
27-4月 -2020 17:13:38 * service_update * orcl * 0
27-4月 -2020 17:13:41 * service_update * orcl * 0


27-4月 -2020 17:14:41 * service_update * orcl * 0
27-4月 -2020 17:14:47 * ping * 0


27-4月 -2020 17:15:29 * service_update * orcl * 0
27-4月 -2020 17:15:33 * service_update * orcl * 0
27-4月 -2020 17:15:42 * service_update * orcl * 0


27-4月 -2020 17:13:21 * (CONNECT_DATA=(SID=ORCL)(CID=(PROGRAM=C:\app\hbydidc\product\11.2.0\dbhome_1\perl\bin\perl.exe)(HOST=WINDOWS-MN9JOQG)(USER=SYSTEM))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.126.133.17)(PORT=52095)) * establish * ORCL * 0
 
解决办法:
如果是11.2.0.4之前版本,特别是在rac环境中,如果要整改该问题相对比较麻烦,需要通过配置Oracle wallet来实现,配置比较复杂,而且还要重启实例,影响比较大,具体参考:Using Class of Secure Transport (COST) to Restrict Instance Registration in Oracle RAC (Doc ID 1340831.1)
单机环境需要打补丁12880299
从11.2.0.4开始Oracle引入了Valid Node Checking For Registration (VNCR)新特性,可以通过简单的配置即可完成该漏洞修复
 

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">





posted @   悠游~~~  阅读(668)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示