转自http://www.cublog.cn/u/16889/showart_1097899.html
oracle 的监听机制 是外部应用程序连接oracle的入口。用oracle提供的lsnrctl 程序进行管理。一般很多人在管理oracle的时候,往往忽略对listener 的安全管理:监听在端口1521(默认端口)上的oracle tnslsnr未设置口令保护!
这会存在这个安全隐患:远程的Oracle tnslsnr服务器没有被设置密码,一个攻击者可以利用这个问题随意关闭oracle tnslsnr服务器或者设置新的口令,这将影响合法用户的正常使用。攻击者也可以获取数据库的一些细节信息以发动进一步攻击。结合其他漏洞,攻击者甚至可以在目标系统上创建或者修改文件,进而入侵系统。
这里对关于oracle监听模块密码安全设置的几个方法进行说明:
1. 如何进行远程操作:
在远程机器上修改listerner.ora 文件,增加对异地oracle服务器的配置,例如:
ls_oratest =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
)
)
这里的HOST = 192.168.1.10 即是指明远程的oracle服务器。如果默认的,oracle服务器上没有设置
listener 的管理密码,则在远程机器上只要执行:
lsnrctl stop ls_oratest
即可停止192.168.1.10 服务器上的监听服务。
2.如何修改密码:
listener的密码策略对start无效,目的是防止恶意stop(start ,如果有在运行,则不成功,所以也就不需要保护了)
修改密码方法如下:
打开命令提示符窗口,输入lsnrctl进入lsnrctl监听器管理窗口:
LSNRCTL> set current_listener listener
目前的监听器为 listener
LSNRCTL> change_password
Old password:<输入旧密码,没有的话直接回车>
New password:<输入新的密码>
Reenter new password:<再次输入新密码>
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.10)(PORT=1521)))
LISTENER的口令已更改
命令执行成功
LSNRCTL> set password
Password:<再输一次新密码>
命令执行成功
LSNRCTL> save_config
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xqing)(PORT=1521)))
保存的LISTENER配置参数。
监听器参数文件 D:\oracle\network\admin\listener.ora
旧的参数文件D:\oracle\network\admin\listener.bak
命令执行成功
LSNRCTL>exit
说明:
a.执行save_config 需要再执行一次 set password 提供新密码,是因为在lsnrctl 管理工具中,是通过 set password 命令来设置当前环境的密码。设置了正确的密码后,就可以执行一些重要的操作,如save_config, stop 等。
b 设置密码后,密码记录在listerner.ora 文件 中,
比如:
#----ADDED BY TNSLSNR 18-2月 -2011 16:16:25---
PASSWORDS_LISTENER = 9EDA43949D6C51A1
#---------------------------------------------
形式为:PASSWORDS_监听名称 = 密码密文。如果忘记密码,可以去掉该行,则密码为空。
c.设置了密码后,远程机器如果需要stop监听的时候,则需要提供密码,否则操作失败。
3.如何管理设置密码后的监听进程:
a.如果是人工交互的操作,则只需在执行操作前面键入两个命令:
lsnrct<
set current_listener listener_oratest <-- 设置当前监听器的配置名称
set password
Password: <输入口令>
stop
b.如果是脚本自动执行,则需要提供密码的密文(由isterner.ora 文件获得)
#!/bin/sh
lsnrctl << eof
set current_listener listener_oratest
set password AF15F0B512F2229A
stop
eof