我们要不要为Oracle listener设置密码

在各种论坛中,以及一些数据库安全加固规范中,经常还看到有人强列建议为Oracle listener设置密码的说法,最近,笔者在帮一个单位审核所编制的一份oracle安全加固策略时,发现文中仍然在以不分版本情况下要求为listener设置密码。

随着oracle版本的升级变迁,当今运行的oracle数据库,是否真的还需要设置listener密码呢?是否还能在各类标准规范文档中不分版本的区别就直接将listener设置密码作为标准规范之一呢?

1、看看10g以前版本如何远程管理listener

先来看一篇metalink上的文档 ID 460666.1(How To Remotely Administer a Listener),这是一篇关于如何远程管理listener的文章,文章的APPLIES TO部分,指出适应版本为“Oracle Net Services- Version: 8.1.7.4.0 to 9.2.0.8.0”,文章的GOAL部分,指出,在10g以前版本中,listener程序可以管理远程机器的listener,文中还给出在远程客户机器上关闭listener的方法,方法有两种:

第一种:客户端机器上直接以lsnrctl <command><ip_address>:<port>的方式实现,非常简单,如下所示:

lsnrctl status 192.168.1.100

lsnrctl stop 192.168.1.100:1522

--192.168.1.100就是被远程管理的服务器IP地址,1522为其端口

第二种:客户端机器上的listner.ora文件中配置远程机器的listener信息,如下:

Remote_lsnr =

(DESCRIPTION =

(ADDRESS =

(PROTOCOL = TCP) 

(Host = remote host)

(Port = listener port) 

Where "remote host" and "listener port" are the host and port where the remote listener is running.

然后,在客户端机器上,就象管理本地listener方式一样管理远端listener,如:

LSNRCTL> set current_listener Remote_lsnr

LSNRCTL> stop Remote_lsnr

从460666.1这篇文档中,其实已经看出来,在10g以前版本中,为listener设置密码的重要性。

2、再来看一篇8i/9i版本如何防止远程关闭listener的文档

Metalink上的文档 ID 361738.1(How To PreventRemote Shutdown of the Oracle 8i/9i Listener),这是一篇关于如何防止listener被远程关闭的文章,该文中的APPLIES TO中明确指出:


Oracle Net Services - Version: 8.1.5.0.0 to 9.2.0.8.0
 Information in this document applies to any platform.
 This article applies only to listener versions prior to 10g.

该方法,只适合于Version: 8.1.5.0.0 to 9.2.0.8.0,而不适合于10以上版本。

文中SOLUTION中的描述,对于10g以前版本,当然就是为listener设置密码了,这样,远程管理listener时,就必须要输入正确的密码才能完成操作。

3、那么10g以后listener不设置密码还安全吗?

再来看一篇metalink上的文档 ID 364388.1(How To NetworkSecure Your Oracle Database Listener in Intranet / Internet)  ,这篇文档中的SOLUTION中,对于10g以上和11gR2版本对listener password的描述如下:

For 10g and higher listeners, no listener password is needed (starting with 11gr2 listener password is deprecated), instead we are using by default OS authentication mechanism - see  Note 260986.1 Setting Listener Passwords With an Oracle 10g or Newer Listener and Note 1328725.1 Deprecation of Listener Password in Oracle Database 11g Release

在10g以上版本中已经不需要为listener设置password,在11gR2上,更是不赞成与反对设置listener密码,而是采用的默认本地主机操作系统认证。

4、那oracle 10g为什么还要保留change password功能呢。

再来看一篇上文中提到的metalink文档 ID 260986.1(SettingListener Passwords With an Oracle 10g or Newer Listener),这篇文档中的GOAL部分内容:

If the TNSListener is started as the "oracle" user and the user "sales" attempts
 to administer the listener, or if "oracle" on a different node attempts to
 administer the listener, the following error will be returned:

TNS-01190: The user is not authorized to execute the requested listener command

当listener是以oracle用户启动时,如果使用OS上的其它用户,例如,使用sales用户来管理listener,如stop等操作,则会遇到”TNS-01190 “ 信息,这时,sales用户需要输入listener的password后才能操作本地listener。

其实也可以控制本地启动listener的用户强制要求使用密码登陆,只需要在listener.ora文件中增加LOCAL_OS_AUTHENTICATION_listener_name = OFF,但是只要是已经登入了OS的管理员或对listener.ora文件有权限的用户,都可以修改该文件去掉该行,所以该操作并不具有意义。

5、oracle 11gR2不赞成与反对再为listener设置密码

再来看一篇Metalink文档 ID 1328725.1 (Deprecationof Listener Password in Oracle Database 11g Release 2) ,这是一篇关于11gR2已经刻弃listener设置密码的文章,该文章中的DETAILS中描述如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6313574fa96def28e85d62840634d532.html