在安全加固过程中,经常会遇到REMOTE_LOGIN_PASSWORDFILE和SQLNET.AUTHENTICATION_SERVICES这两个加固项,如果对这两项理解不清楚,就进行安全加固,可能会导致严重的影响。这里就这两项做一些测试,以便加强对参数的理解。
REMOTE_LOGIN_PASSWORDFILE参数的含义:
REMOTE_LOGIN_PASSWORDFILE:指定是否使用口令文件验证特权用户,其值为none、exclusive(默认)、shared。
none:禁用口令文件。
exclusive:默认值,以独占方式使用口令文件,在这种情况下,可以执行对sysdba特权用户的增加、修改、删除,这些修改会保存在口令文件中。
shared:在多个数据库之间共享口令文件。这种模式下口令文件不能被修改,不能将sysdba权限再授予非sys用户;不能修改具有sysdba特权用户的密码,即使是sys用户也不能修改。
SQLNET.AUTHENTICATION_SERVICES参数的含义:
这个参数在sqlnet.ora文件中设置,针对具有sysdba特权的用户,决定是否使用操作系统认证登录数据库。
有以下几个值:
NONE:禁用操作系统认证,这时只能通过口令文件认证登录数据库。
ALL:在linux/unix平台,启用操作系统认证登录数据库。
NTS:在windows平台,启用操作系统认证登录数据库。
一般在安全加固时,REMOTE_LOGIN_PASSWORDFILE会设置为none,
SQLNET.AUTHENTICATION_SERVICES也会设置为none。这样设置会有什么效果呢?
下面就这两个参数的设置,做一下测试。
测试环境:
os:oracle linux 5.2
oracle database: 10.2.0.1
测试用户:sys 测试密码:Pwd1234
测试TNS: tnsdb
测试1:
REMOTE_LOGIN_PASSWORDFILE为exclusive,SQLNET.AUTHENTICATION_SERVICES不设置。
服务端(通过操作系统认证登录):
sqlplus /nolog
conn /as sysdba
conn sys/Pwd1234 as sysdba
conn sys/Pwd4321 as sysdba
conn u1/Pwd1234 as sysdba
conn u1/Pwd4321 as sysdba
客户端(通过口令文件认证登录):
sqlplus /nolog
conn sys/Pwd1234@tnsdb as sysdba
conn sys/Pwd4321@tnsdb as sysdba
conn u1/Pwd1234@tnsdb as sysdba
conn u1/Pwd4321@tnsdb as sysdba
服务端:
odb1.test.com-PROD1> sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jun 22 12:43:53 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL>
SQL> conn /as sysdba
Connected.
SQL>
SQL> select username from dba_users where username='U1'; --查出不存在U1用户
no rows selected
SQL>
SQL> conn sys/Pwd1234 as sysdba
Connected.
SQL>
SQL> conn sys/Pwd4321 as sysdba
Connected.
SQL>
SQL> conn u1/Pwd1234 as sysdba
Connected.
SQL>
SQL> conn u1/Pwd4321 as sysdba
Connected.
客户端:
odb1.test.com-PROD1> sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jun 22 12:43:53 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL>
SQL> conn sys/Pwd1234@tnsdb as sysdba
Connected.
SQL>
SQL> conn sys/Pwd4321@tnsdb as sysdba
ERROR:
ORA-01017: invalid username/password; logon denied
SQL> conn u1/Pwd1234@tnsdb as sysdba
ERROR:
ORA-01031: insufficient privileges
Warning: You are no longer connected to ORACLE.
SQL>
SQL> conn u1/Pwd4321@tnsdb as sysdba
ERROR:
ORA-01031: insufficient privileges
测试总结:当REMOTE_LOGIN_PASSWORDFILE为exclusive,SQLNET.AUTHENTICATION_SERVICES不设置时,
在服务端,使用操作系统认证,可以不输入用户和密码,就能登录数据库。如果要输入用户和密码,即使输入的用户不存在或者密码错误或者用户与密码都不对,也可以成功登录数据库。
在客户端,以sys远程登录数据库,是通过口令文件验证登录数据库,必须指定正确的用户和密码才能登录。
测试2:
REMOTE_LOGIN_PASSWORDFILE为exclusive,SQLNET.AUTHENTICATION_SERVICES设置为none。
服务端(禁用操作系统认证登录,通过口令文件认证登录):
sqlplus /nolog
conn /as sysdba
conn sys/Pwd1234 as sysdba
conn sys/Pwd4321 as sysdba
conn u1/Pwd1234 as sysdba
conn u1/Pwd4321 as sysdba
客户端(通过口令文件认证登录):
sqlplus /nolog
conn sys/Pwd1234@tnsdb as sysdba
服务端:
odb1.test.com-PROD1> sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jun 22 13:02:14 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL>
SQL> conn /as sysdba
ERROR:
ORA-01031: insufficient privileges
SQL>
SQL> conn sys/Pwd1234 as sysdba
Connected.
SQL> conn sys/Pwd4321 as sysdba
ERROR:
ORA-01017: invalid username/password; logon denied
SQL> conn u1/Pwd1234 as sysdba
ERROR:
ORA-01031: insufficient privileges
Warning: You are no longer connected to ORACLE.
SQL>
SQL> conn u1/Pwd4321 as sysdba
ERROR:
ORA-01031: insufficient privileges
客户端:
odb1.test.com-PROD1> sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jun 22 13:04:06 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL>
SQL> conn sys/Pwd1234@tnsdb as sysdba
Connected.
测试总结:当REMOTE_LOGIN_PASSWORDFILE为exclusive,SQLNET.AUTHENTICATION_SERVICES设置为none时,将禁用操作系统认证登录,服务端sys通过口令文件验证登录,客户端sys通过口令文件验证登录。
测试3:
REMOTE_LOGIN_PASSWORDFILE为none,SQLNET.AUTHENTICATION_SERVICES不设置。
服务端(通过操作系统认证登录):
sqlplus /nolog
conn /as sysdba
conn sys/Pwd1234 as sysdba
conn sys/Pwd4321 as sysdba
conn u1/Pwd1234 as sysdba
conn u1/Pwd4321 as sysdba
客户端(口令文件被禁用,不能通过口令文件认证登录):
sqlplus /nolog
conn sys/Pwd1234@tnsdb as sysdba
服务端: odb1.test.com-PROD1> sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jun 22 12:50:40 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL>
SQL> conn /as sysdba
Connected.
SQL>
SQL> show parameter REMOTE_LOGIN_PASSWORDFILE
NAME TYPE VALUE
----------------------------------- ----------- ------------------------------
REMOTE_LOGIN_PASSWORDFILE string EXCLUSIVE
SQL>
SQL> alter system set REMOTE_LOGIN_PASSWORDFILE=none scope=spfile;
System altered.
SQL>
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
SQL> startup
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 75499764 bytes
Database Buffers 88080384 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SQL> show parameter REMOTE_LOGIN_PASSWORDFILE
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
REMOTE_LOGIN_PASSWORDFILE string NONE
SQL>
SQL> conn /as sysdba
Connected.
SQL> conn sys/Pwd1234 as sysdba
Connected.
SQL> conn sys/Pwd4321 as sysdba
Connected.
SQL> conn u1/Pwd1234 as sysdba
Connected.
SQL> conn u1/Pwd4321 as sysdba
Connected.
客户端:
odb1.test.com-PROD1> sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jun 22 13:27:18 2014
Cpyright (c) 1982, 2005, Oracle. All rights reserved.
SQL>
SQL> conn sys/Pwd1234@tnsdb as sysdba
ERROR:
ORA-01017: invalid username/password; logon denied
SQL>
测试总结:当REMOTE_LOGIN_PASSWORDFILE为none,SQLNET.AUTHENTICATION_SERVICES不设置时,服务端sys通过操作系统验证登录,客户端sys用户被禁止远程通过口令文件验证登录。
测试4:
REMOTE_LOGIN_PASSWORDFILE为none,SQLNET.AUTHENTICATION_SERVICES设置为none。
服务端(不能通过操作系统认证登录):
sqlplus /nolog
conn /as sysdba
conn sys/Pwd1234 as sysdba
客户端(口令文件被禁用,不能通过口令文件认证登录):
sqlplus /nolog
conn sys/Pwd1234@tnsdb as sysdba
服务端:
odb1.test.com-PROD1> sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jun 22 12:58:24 201
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL>
SQL> conn /as sysdba
ERROR:
ORA-01031: insufficient privileges
SQL>
SQL> conn sys/Pwd1234 as sysdba
ERROR:
ORA-01017: invalid username/password; logon denied
客户端:
odb1.test.com-PROD1> sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jun 22 13:20:46 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL>
SQL> conn sys/Pwd1234@tnsdb as sysdba
ERROR:
ORA-01017: invalid username/password; logon denied
SQL>
测试总结:当REMOTE_LOGIN_PASSWORDFILE为none,SQLNET.AUTHENTICATION_SERVICES设置为none时,服务端和客户端都禁止sys用户登录。
注意事项:
同时将REMOTE_LOGIN_PASSWORDFILE和SQLNET.AUTHENTICATION_SERVICES都设置为none,会导致sys用户或者具有sysdba特权的用户登录不上数据库。在实际生产环境中,备份用户通常是sys用户或者具有sysdba特权的用户,如果都将这两个参数设置为none,那么很可能导致备份用户无法登录数据库,进行备份。所以生产环境中对这两个参数的设置要格外注意,避免引起不必要的备份故障。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24626891/viewspace-2131731/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24626891/viewspace-2131731/