您的位置:首页 > 其它

【password】操作系统认证和口令文件及两个相关的参数.

2013-03-13 15:12 387 查看
概要】讨论操作系统认证和口令文件认证及有关的两个参数:

SQLNET.AUTHENTICATION_SERVICES,REMOTE_LOGIN_PASSWORDFILE

环境】rhce5.0+oracle10g.r2

内容
操作系统认证:

我们在本机以sysdba用户登陆数据时,常使用如下命令:

[oracle@secdb1~]$sqlplus/assysdba

这条命令使用了操作系统认证的方式进行了登陆,我们不需要使用任何用户名和密码便进行了成功登陆,任何可以登陆到操作系统的人都可以轻易进入以管理员的身份进入数据库,出于安全的考虑,我想禁用[操作系统认证]。此时,可以通过参数SQLNET.AUTHENTICATION_SERVICES进行设置:

SQLNET.AUTHENTICATION_SERVICES=(ALL)

对Linux系统,支持OS认证和口令文件认证。

对Windows系统,实际实验是不支持此参数,验证失败。

SQLNET.AUTHENTICATION_SERVICES=(NTS)

此设置值仅用于WindowsNT系统,此设置同时支持OS认证和口令文件认证,只有在设置了(NTS)值之后运行在Windows系统上的Oracle才支持OS认证。

SQLNET.AUTHENTICATION_SERVICES=(NONE)

此设置值在Windows和Linux是作用一样的,指定Oracle只使用口令文件认证。

不设置此参数或SQLNET.AUTHENTICATION_SERVICES=

对Linux系统,默认支持OS认证和口令文件认证。

对Windows系统,默认只支持口令文件认证,不支持OS认证。

此参数在linux下存在于$ORACLE_HOME/network/admin/sqlnet.ora中,默认没有此文件,可以手动添加。

[oracle@secdb1admin]$pwd

/u01/app/oracle/product/10.2.0/db_1/network/admin

[oracle@secdb1admin]$visqlnet.ora


添加如下参数:

SQLNET.AUTHENTICATION_SERVICES=(none)


此时,我们在尝试使用操作系统认证登陆:

[oracle@secdb1admin]$exportORACLE_SID=PROD

[oracle@secdb1admin]$sqlplus/assysdba


SQL*Plus:Release10.2.0.1.0-ProductiononWedMar1313:12:092013

Copyright(c)1982,2005,Oracle.Allrightsreserved.


ERROR:

ORA-01031:insufficientprivileges

显然无法正常登陆

我们尝试将此参数改为all

SQLNET.AUTHENTICATION_SERVICES=(all)

再次尝试以系统认证的方式登陆

oracle@secdb1admin]$exportORACLE_SID=PROD

[oracle@secdb1admin]$sqlplus/assysdba


SQL*Plus:Release10.2.0.1.0-ProductiononWedMar1313:13:072013

Copyright(c)1982,2005,Oracle.Allrightsreserved.

Connectedto:

OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-Production

WiththePartitioning,OracleLabelSecurity,OLAPandDataMiningScoringEngineoptions

SYS@PROD>

显然可以成功登陆

(虽然,此参数可以禁用操作系统认证,但是此参数可以再操作系统上任意改动,我们依然无法彻底有效地防止可以登陆到系统的人员对数据库的访问)

口令文件:

远程客户端登陆数据时如果以ASSYSDBA的身份登陆,需要使用外部的口令文件,口令文件的使用受参数REMOTE_LOGIN_PASSWORDFILE={NONE|SHARED}的控制。

REMOTE_LOGIN_PASSWORDFILE=(NONE):不使用口令文件

REMOTE_LOGIN_PASSWORDFILE=(SHARED):一个或多个数据库可以共享使用一个密码文件。

补充:
EXCLUSIVE
是为了向后兼容而在10g里也被支持的一个值,但在10g里它的作用和shared已经是一样的了。

(一)在服务器端,如果我们禁用了操作系统认证,此时以SYSDBA登陆数据库就需要使用外部密码文件:

[oracle@secdb1admin]$sqlplus/assysdba

SQL*Plus:Release10.2.0.1.0-ProductiononWedMar13

Copyright(c)1982,2005,Oracle.Allrightsreserve

ERROR:

ORA-01031:insufficientprivileges

使用密码文件:

[oracle@secdb1admin]$sqlplussys/oracleassysdba

SQL*Plus:Release10.2.0.1.0-ProductiononWedMar13Copyright(c)1982,2005,Oracle.Allrightsreserved.

Connectedto:

OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-Production

WiththePartitioning,OracleLabelSecurity,OLAPandDataMiningScoringEngineoptions

如果我们同时通过修改参数禁用了密码文件:

SYS@PROD>showparameterremote_login_passwordfile;

NAMETYPEVALUE

--------------------------------------------remote_login_passwordfilestringEXCLUSIVE

SYS@PROD>altersystemsetremote_login_passwordfile=nonescope=spfile;

Systemaltered.

SYS@PROD>shutdownimmediate;

Databaseclosed.

Databasedismounted.

ORACLEinstanceshutdown.

SYS@PROD>startup

ORA-01031:insufficientprivileges

可以看到,此时因为无法使用外部的口令文件,我们已经无法重新启动数据库了。此时,只好改回操作系统认证登陆数据库,然后将此参数改回。

SQLNET.AUTHENTICATION_SERVICES=(all)

[oracle@secdb1admin]$sqlplus/assysdba

SQL*Plus:Release10.2.0.1.0-ProductiononWedMar1313:58:312013

Copyright(c)1982,2005,Oracle.Allrightsreserved.

Connectedtoanidleinstance.

SYS@PROD>startup

ORACLEinstancestarted.

TotalSystemGlobalArea314572800bytes

FixedSize1219184bytes

VariableSize92276112bytes

DatabaseBuffers218103808bytes

RedoBuffers2973696bytes

Databasemounted.

Databaseopened.

SYS@PROD>altersystemsetremote_login_passwordfile=exclusivescope=spfile;

Systemaltered.

重启使参数生效。

到此,我们可以清楚的看到了口令文件认证和操作系统认证的登陆方式。接下来,我们在来从客户端的角度更清晰的解析一下口令文件。

(二)在客户端,我们可以如下命令登陆数据库(注意:此时登陆机器是secdb2,上面的实验环境是secdb1机器):

[oracle@secdb2admin]$sqlplussys/oracle@PRODassysdba

SQL*Plus:Release10.2.0.1.0-ProductiononWedMar1314:24:072013

Copyright(c)1982,2005,Oracle.Allrightsreserved.

Connectedtoanidleinstance.

SYS@PROD>

此时使用了口令文件,如果在服务器端我们把口令文件禁用:

SYS@PROD>altersystemsetremote_login_passwordfile=nonescope=spfile;

Systemaltered.

重启使生效

此时客户端再来连接PROD数据库:

[oracle@secdb2admin]$sqlplussys/oracle@PRODassysdba

SQL*Plus:Release10.2.0.1.0-ProductiononWedMar1314:30:342013

Copyright(c)1982,2005,Oracle.Allrightsreserved.

ERROR:

ORA-01017:invalidusername/password;logondenied

无法连接到PROD数据库

此时再一次清楚的看到了口令文件的作用,以及如何对其进行禁用管理。

Ballontt

2013/3/13

---end---
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: