ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 为监听设置密码防止远端关闭监听

为监听设置密码防止远端关闭监听

原创 Linux操作系统 作者:tolywang 时间:2011-02-18 14:59:40 0 删除 编辑

出处: http://yangtingkun.itpub.net/post/468/461315

数据库的帐号需要密码进行保护,监听同样需要设置密码进行保护,否则就会留下安全隐患。


监听是操作系统上启动的进程,负责将用户的请求连接到Oracle的实例上。一旦监听被关闭,数据库服务器以外的用户将无法正常登陆数据库。

监听命令可以通过配置本地监听参数文件listener.ora来达到获取远端监听信息,甚至关闭远端监听的能力。

本地监听环境的设置如下:

# LISTENER.ORA Network Configuration File: E:oracleoracle920networkadminlistener.ora
# Generated by Oracle configuration tools.

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ytk-thinkpad)(PORT = 1521))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = E:oracleoracle920)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ytk92.ytk_thinkpad)
(ORACLE_HOME = E:oracleoracle920)
(SID_NAME = ytk92)
)
)


LISTENER1 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.1.100)(PORT = 1521))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
)

其中LISTENER1的设置是手工添加的远端配置,目前远端监听已经启动,下面就可以通过指定LISTENER1来获取远端监听的状态,甚至关闭远端监听:

E:>ipconfig

Windows IP Configuration


Ethernet adapter
无线网络连接 2:

Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 172.25.13.100
Subnet Mask . . . . . . . . . . . : 255.255.0.0
Default Gateway . . . . . . . . . : 172.25.13.1

Ethernet adapter 本地连接:

Media State . . . . . . . . . . . : Media disconnected

Ethernet adapter 本地连接 2:

Media State . . . . . . . . . . . : Media disconnected

E:>%ORACLE_HOME%/bin/lsnrctl

LSNRCTL for 32-bit Windows: Version 9.2.0.4.0 - Production on 07-5 -2008 00:00
:44

Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.

欢迎来到LSNRCTL,请键入"help"以获得信息。

LSNRCTL> status listener1正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.25.1.100)(PORT=1521)))
LISTENER
STATUS
------------------------
别名
LISTENER版本 TNSLSNR for 32-bit Windows: Version 9.2.0.4.0 - Produc
tion
启动日期 07-5
-2008 00:01:30正常运行时间 0 0 小时 3 49 跟踪级别 off安全性 OFF
SNMP OFF
监听器参数文件
F:oracleora92networkadminlistener.ora监听器日志文件 F:oracleora92networkloglistener.log监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=yangtk)(PORT=1521)))
服务摘要
..服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "dicsys.YANGTINGKUN" 包含 1 个例程。
例程 "DICSYS", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "test.yangtingkun" 包含 1 个例程。
例程 "test", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "test1" 包含 1 个例程。
例程 "test1", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "test2" 包含 1 个例程。
例程 "test2", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "test3" 包含 1 个例程。
例程 "test3", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "test4" 包含 1 个例程。
例程 "test4", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "test5" 包含 1 个例程。
例程 "test5", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "testst" 包含 1 个例程。
例程 "testst", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "yangtk.yangtingkun" 包含 1 个例程。
例程 "yangtk", 状态 UNKNOWN, 包含此服务的 1 个处理程序...命令执行成功
LSNRCTL> stop listener1
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.25.1.100)(PORT=1521)))命令执行成功

通过这个例子可以看到,只需要知道远端数据库的地址和监听端口,就可以通过配置来关闭远端的监听。这存在很大的安全隐患。

解决的方法是为监听设置密码,方法如下:

F:>lsnrctl

LSNRCTL for 32-bit Windows: Version 9.2.0.4.0 - Production on 07-5 -2008 00:15
:36

Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.

欢迎来到LSNRCTL,请键入"help"以获得信息。

LSNRCTL> start启动tnslsnr:请稍候...

TNSLSNR for 32-bit Windows: Version 9.2.0.4.0 - Production系统参数文件为F:oracleora92networkadminlistener.ora写入F:oracleora92networkloglistener.log的日志信息监听:(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=yangtk)(PORT=1521)))

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=yangtk)(PORT=1521)))
LISTENER
STATUS
------------------------
别名
LISTENER版本 TNSLSNR for 32-bit Windows: Version 9.2.0.4.0 - Produc
tion
启动日期 07-5
-2008 00:15:38正常运行时间 0 0 小时 0 0 跟踪级别 off安全性 OFF
SNMP OFF
监听器参数文件
F:oracleora92networkadminlistener.ora监听器日志文件 F:oracleora92networkloglistener.log监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=yangtk)(PORT=1521)))
服务摘要
..服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "dicsys.YANGTINGKUN" 包含 1 个例程。
例程 "DICSYS", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "test.yangtingkun" 包含 1 个例程。
例程 "test", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "test1" 包含 1 个例程。
例程 "test1", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "test2" 包含 1 个例程。
例程 "test2", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "test3" 包含 1 个例程。
例程 "test3", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "test4" 包含 1 个例程。
例程 "test4", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "test5" 包含 1 个例程。
例程 "test5", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "testst" 包含 1 个例程。
例程 "testst", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "yangtk.yangtingkun" 包含 1 个例程。
例程 "yangtk", 状态 UNKNOWN, 包含此服务的 1 个处理程序...命令执行成功
LSNRCTL> change_password
Old password:
New password:
Reenter new password:
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=yangtk)(PORT=1521)))
LISTENER
的口令已更改
命令执行成功
LSNRCTL> set password
Password:
命令执行成功
LSNRCTL> save_config
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=yangtk)(PORT=1521)))保存的LISTENER配置参数。监听器参数文件 F:oracleora92networkadminlistener.ora旧的参数文件F:oracleora92networkadminlistener.bak命令执行成功

由于设置了密码,以后无论是本地还是远端执行类似LSNRCTL STOP或者SAVE_CONFIG等操作都会提示输入密码。

以后本地的关闭监听操作为:

LSNRCTL> exit

F:>lsnrctl

LSNRCTL for 32-bit Windows: Version 9.2.0.4.0 - Production on 07-5 -2008 00:19
:55

Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.

欢迎来到LSNRCTL,请键入"help"以获得信息。

LSNRCTL> stop正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=yangtk)(PORT=1521)))
TNS-01169:
监听器尚未识别口令

LSNRCTL> set password
Password:
命令执行成功
LSNRCTL> stop
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=yangtk)(PORT=1521)))命令执行成功
LSNRCTL> start
启动tnslsnr:请稍候...

TNSLSNR for 32-bit Windows: Version 9.2.0.4.0 - Production系统参数文件为F:oracleora92networkadminlistener.ora写入F:oracleora92networkloglistener.log的日志信息监听:(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=yangtk)(PORT=1521)))

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=yangtk)(PORT=1521)))
LISTENER
STATUS
------------------------
别名
LISTENER版本 TNSLSNR for 32-bit Windows: Version 9.2.0.4.0 - Produc
tion
启动日期 07-5
-2008 00:20:20正常运行时间 0 0 小时 0 0 跟踪级别 off安全性 ON
SNMP OFF
监听器参数文件
F:oracleora92networkadminlistener.ora监听器日志文件 F:oracleora92networkloglistener.log监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=yangtk)(PORT=1521)))
服务摘要
..服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "dicsys.YANGTINGKUN" 包含 1 个例程。
例程 "DICSYS", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "test.yangtingkun" 包含 1 个例程。
例程 "test", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "test1" 包含 1 个例程。
例程 "test1", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "test2" 包含 1 个例程。
例程 "test2", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "test3" 包含 1 个例程。
例程 "test3", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "test4" 包含 1 个例程。
例程 "test4", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "test5" 包含 1 个例程。
例程 "test5", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "testst" 包含 1 个例程。
例程 "testst", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "yangtk.yangtingkun" 包含 1 个例程。
例程 "yangtk", 状态 UNKNOWN, 包含此服务的 1 个处理程序...命令执行成功

这时远端尝试关闭监听就会报错并提示输入密码:

LSNRCTL> stop listener1正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.25.1.100)(PORT=1521)))
TNS-01169:
监听器尚未识别口令

通过设置监听的密码,提高了系统的安全性。

从10g开始,Oracle增加了监听程序的安全性,即使不设置密码,也没有办法从远端关闭监听。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-687500/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    13777179