监听器的安全性
Oracle 监听机制是外部应用程序连接oracle服务器的入口。
给监听器listener设置密码,可以防止非管理员用户或远程用户恶意停止监听器。通过Net Manager GUI、lsnrctl实用程序、Database Control 或手动编辑 listener.ora文件,都可以启动和设置侦听器的口令。使用Net Manager、Database Control 设置的密码都会被oracle自动加密。
一、使用Net Manager 设置侦听器的口令
依次打开,开始》所有程序》Oracle - OraDb10g_home1》配置和移植工具》Net Manager,选择需要设置密码的监听器,选择“一般参数” ,如图1 所示
图1:使用Net Manager设置监听器的口令
然后,点击,文件》保存网络配置。现在打开listener.ora文件,会发现在其中多出了一行:
PASSWORDS_LISTENER= (514D21EE661694F9)
LISTENER为监听器的名称,等号右边的是经过加密的密码
二、使用lsnrctl设置监听器的口令
C:\Users\SUN>lsnrctl
LSNRCTL>status 查看监听器的状态
注意:Security 安全性 ON:Local OS Authentication
LSNRCTL>set current_listener listener 设置使用哪个监听器
LSNRCTL>set pasword encrypted_password 设置密码为加密口令,
或者 LSNRCTL>set password encrypted_password (没成功)密码是不加密的,此种情况的目的仅仅是防止口令出错,而不能防止恶意行为
LSNRCTL>change_password 开始设置密码
Old password: 因为没有设置过密码,所以此处直接按回车“Enter"
New password: 键入要设置的密码
Reenter new password: 再次输入密码
LSNRCTL> save_config 保存配置
LSNRCTL>status
注意: Security ON: Password or Local OS Authentication
此时在listener.ora文件中多了如下三行:
#----ADDED BY TNSLSNR 15-JUL-2011 18:49:43---
PASSWORDS_LISTENER = 514D21EE661694F9
#--------------------------------------------
到此,监听器密码设置成功!
三、通过Database Control 设置侦听器的口令
登陆EM,进入 ”网络服务管理“,此时需要输入主机身份证明(将主机加入作为批处理作业登陆,http://www.orafaq.com/forum/t/89472/2/)
然后“监听程序”开始编辑,Authentication验证,设置密码。
四、手动添加口令
直接在listener.ora文件中添加口令,这个没有试验成功!!!
控制对数据库的访问
默认情况下,侦听器对能够连接数据库服务器的用户没有进行任何限制,如果需要限制对数据库的访问,需要修改sqlnet.ora文件。我们可以通过Net Manager Gui 或者 手动编辑sqlnet.ora文件,进行相应的设置。
主要有三个指令:
TCP.VALIDNODE_CHECKING
TCP.EXCLUDED_NODES
TCP.INVITED_NODES
如果TCP.VALIDNODE_CHECKING被设置为YES,则其他两个指令可用。
使用TCP.INVITED_NODES时,会将其他所有节点排除在外。
使用TCP.EXCLUDED_NODES时,其他所有节点都会以隐式的方式加入,即允许访问。
在TCP.EXCLUDED_NODES和TCP.INVITED_NODES同时使用的时候,会优先使用TCP.INVITED_NODES,而屏蔽TCP.EXCLUDED_NODES。
如下图所示,使用Net Manager限制对数据库的访问
保存 网络配置后,会在sqlnet.ora文件中加入 如下两行:
TCP.VALIDNODE_CHECKING = YES
TCP.INVITED_NODES= (www.google.cn)
特别提示:在做访问控制的实验时,启动了节点过滤,在结束实验的时候,我只把 TCP.INVITED_NODES 和 EXCLUDED_NODES 删除了,而没有关闭访问控制。
导致在下次启动Oracle的时候提示Listener服务无法启动,查看listener.log显示如下:
Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=SUN-PC)(PORT=1521)))
TNS-12560: TNS:protocol adapter error
TNS-00584: Valid node checking configuration error
node checking 配置错误。
总结:通过这个错误,我们知道在启动了节点过滤,而没有设置任何允许和拒绝访问的地址的时候,oracle会拒绝一切外部访问。监听器是监听外部链接对数据库服务的访问的。