`

OS认证与密码文件认证(原创)

 
阅读更多

OS认证

所谓操作系统,就是当用户以dba组的身份登录数据库主机时,直接connect / as sysdba即可以sys用户登录数据库,而不需要密码,曾经有朋友觉得这样操作很危险,因为不需要密码即可以最大权限登录到数据库。其实不然,Oracle认为,数据库仅仅是操作系统的应用程序,都已经能成功登录到操作系统了,那自然该用户是安全的。

SQLNET.AUTHENTICATION_SERVICES

影响操作系统认证的参数为$ORACLE_HOME/network/admin/sqlnet.ora文件中的SQLNET.AUTHENTICATION_SERVICES该参数有三个值如下:

none: for no authentication methods. A valid username and password can be used to access the database.
all: for all authentication methods
nts:for Windows NT native authentication

由于测试过程比较简单,这边不再演示,提供如下地址供读者参考,有兴趣的读者可以自行进行测试

http://hi.baidu.com/%EE%D1%D7%D300544/blog/item/a546e0ee1c4eb4ecb3fb9569.html

关于SQLNET.AUTHENTICATION_SERVICES的结论如下

1、在windows下,SQLNET.AUTHENTICATION_SERVICES必须设置为NTS或者ALL才能使用OS认证;不设置或者设置为其他任何值都不能使用OS认证。
2、在linux下,在SQLNET.AUTHENTICATION_SERVICES的值设置为ALL或者BEQ,或者不设置的情况下,OS验证才能成功;设置为其他任何值都不能使用OS认证。

关于linux和windows下os验证方式的不同oracle有如下解释

Windows NT native authentication
An authentication method that enables a client single login access to a Windows NT server and a database running on the server.
An authentication method that enables a client single login access to a Windows NT server and a database running on the server.
从oracle的解释可以知道,SQLNET.AUTHENTICATION_SERVICES=(NTS)是WINDOWS系统专用的,对linux/UNIX是不适用的。个人猜测NTS应该指NT Server.
sqlnet.ora的其他相关参数

NAMES.DEFAULT_DOMAIN参数
在用户输入sqlplus system/manager@test后,sqlplus程序会自动到sqlnet.ora文件中找NAMES.DEFAULT_DOMAIN参数,假如该参数存在,则将该参数中的值取出,加到网络服务名的后面,即此例中你的输入由sqlplus system/manager@test自动变为sqlplus system/manager@test.server.com ,然后再到tnsnames.ora文件中找test.server.com网络服务名,这当然找不到了,因为该文件中只有test网络服务名,所以报错。解决的办法就是将sqlnet.ora文件中的NAMES.DEFAULT_DOMAIN参数注释掉即可,如 #NAMES.DEFAULT_DOMAIN = server.com。假如NAMES.DEFAULT_DOMAIN参数不存在,则sqlplus程序会直接到tnsnames.ora文件中找 test网络服务名,然后取出其中的host,port,tcp,service_name,利用这些信息将连接请求发送到正确的数据库服务器上。
在windows平台上安装数据库时,常常会根据登陆的域名自动将sqlnet.ora文件中的names.default_domain参数设置为域名。
name.directory_path参数
客户端的sqlnet.ora 有一个功能,说明连接的字符串是基于主机命名还是本地命名方法,就是使用这个参数。
设置IP保护
如果要在网络上做一些IP地址的限制,一般情况下我们首先想到的是用网络层的防火墙软件。要找网管来设置。但是如果网管不在,或者仅仅想在数据库层来实现IP地址的限制,DBA们只要修改Server端的一个网络配置文件sqlnet.ora文件就可以了。
tcp.validnode_checking=yes
#允许访问的ip
tcp.invited_nodes =(ip1,ip2,……)
#不允许访问的ip
tcp.excluded_nodes=(ip1,ip2,……)
修改sqlnet.ora后,重新启动listener服务,改动就可以生效了。
如果我们从未允许的IP客户端连接过来,会出现以下错误:
ERROR: ORA-12537: TNS: 连接已关闭
这种在Oracle网络层实现客户端IP访问限制的方法在防火墙后面的公司内部网或者托管机房的内部网里可以采用。
SQLNET.INBOUND_CONNECT_TIMEOUT 参数
SQLNET.INBOUND_CONNECT_TIMEOUT is set to a value in seconds and
determines how long a client has to provide the necessary authentication information to a database.
即表示客户端向数据库提交提供必要的认证信息的超时时间限制,这个参数常常和ORA-3136错误有关。
WARNING: inbound connection timed out (ORA-3136)

密码文件认证

密码文件是指,如果我们在远程的客户机上,通过Oracle的网络服务,试图登录数据库实例。那么对于Oracle数据库来说,试图登录的用户只是知道数据库服务器的地市,并不知道数据库所在服务器上操作系统的用户名和密码,因此需提供sys密码。我们知道普通用户的密码存在数据字典中,而sys用户由于需要进行启动数据库的操作,不能将密码仅仅存放在数据字典中,Oracle需要其他认证方式使得sys用户在数据库未打开情况下连接到数据库。因此,当采用密码文件认证方式时。
需要注意Windows平台和Linux/UNIX平台密钥文件的命名规则并不相同:
Windows平台命名规则:PWD[sid].ora 
Linux/UNIX平台命令规则:orapw[sid]

注意这里的密码文件要严格遵循大小写。

我们创建密码文件的命令为,ORACLE_SID=ora10g
$ cd $ORACLE_HOME/dbs
$ echo $ORACLE_SID
czmmiao
$ orapwd file=orapwczmmiao password=ora123 entries=5;

其中,entries表示有几个不同的Oracle用户用于sysdba权限,同时他们的密码都放在密码文件中里。

remote_login_passwordfile

remote_login_passwordfile这个参数控制能否使用密码文件,该参数有如下值:

none:oracle会忽略任何密码文件,此时有权限的用户(比如sys)必须使用操作系统认证。
shared:该密码文件可以被多个实例共享(用于RAC),这时密码文件中只能包含sys和system用户,不能添加其他用户的密码。
结论1、无论使用orapwd命令还是alter命令都会同时修改数据字典和密码文件中的密码,两个密码均可以作为sys用户的密码来使用。
exclusive:默认值,只有一个数据库实例可以使用此文件。可以向密码文件添加新用户。

下面我们来做具体测试,测试平台为rhel 5.4
首先先禁用操作系统认证。

$ grep -v "#" sqlnet.ora |grep -v ^$|grep -v ^" "
SQLNET.AUTHENTICATION_SERVICES=(NTS)

步骤1利用orapwd命令更改密码文件中的密码

SQL> alter user sys identified by ora123;
User altered.

$ orapwd file=orapwczmmiao.ora password=ora456 entries=5

SQL> conn sys/ora123 as sysdba;
ERROR:
ORA-01017: invalid username/password; logon denied
Warning: You are no longer connected to ORACLE.

SQL> conn sys/ora456 as sysdba;
Connected.

步骤2利用alter命令更改数据字典中sys用户的密码
$ orapwd file=orapwczmmiao.ora password=ora456 entries=5
[oracle@dg1 dbs]$ strings orapwczmmiao
]\[Z
ORACLE Remote Password file
INTERNAL
820879DB2FB6DA8B
6A8FB417FCC9E1E2

SQL> alter user sys identified by ora123;
User altered.

SQL> conn sys/ora456 as sysdba;
ERROR:
ORA-01017: invalid username/password; logon denied
Warning: You are no longer connected to ORACLE.

SQL> conn sys/ora123 as sysdba;
Connected.

[oracle@dg1 dbs]$ strings orapwczmmiao

]\[Z
ORACLE Remote Password file
INTERNAL
39D45C9706D01A22
17C6C339B77AC938

结论2、当remote_login_passwordfile为exclusive时,允许客户端以SYSDBA或SYSOPER权限登录到数据库实例中完成数据库管理操作;允许授予和回收SYSDBA或SYSOPER权限。

REMOTE_LOGIN_PASSWORDFILE参数的默认值是EXCLUSIVE
sys@ora10g> show parameter REMOTE_LOGIN_PASSWORDFILE
NAME                       TYPE       VALUE
-------------------------- ---------- ----------------------
remote_login_passwordfile  string     EXCLUSIVE
尝试将SYSDBA特权授予给普通用户secooler
sys@ora10g> grant sysdba to secooler;
Grant succeeded.
5)密码文件的变化
此时在密码文件中记录了这个授权的信息。
strings orapwczmmiao

]\[Z
ORACLE Remote Password file
INTERNAL
39D45C9706D01A22
17C6C339B77AC938
SECOOLER
034E4342BB2D437D

最后两行信息即是新增的内容。
客户端连接性测试
SQL>conn secooler/secooler  as sysdba
SQL> show user;
USER 为 "SYS"
注意,此处我们虽然使用的是普通用户secooler登录的数据库,但真实的用户名是SYS。因此我们便可以使用这种方法来管理数据库,这就是便捷所在。
人为移除密码文件测试,如果此时我们将密码文件删除,客户端将没有办法再以sysdba权限连接到数据库

$ sqlplus secooler/secooler@ora10g as sysdba
SQL*Plus: Release 10.2.0.3.0 - Production on 星期二 12月 21 21:53:50 2010
Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.
ERROR:
ORA-01031: insufficient privileges
请输入用户名:
因此,通过REMOTE_LOGIN_PASSWORDFILE参数和密码文件共同实现了客户端已SYSDBA权限登录系统的目的。
结论3、当REMOTE_LOGIN_PASSWORDFILE参数为NONE时,禁止授予和回收SYSDBA或SYSOPER权限。
调整参数REMOTE_LOGIN_PASSWORDFILE为NONE
sys@ora10g> alter system set remote_login_passwordfile=none scope=spfile;
System altered.
sys@ora10g> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
sys@ora10g> startup;
ORACLE instance started.
Total System Global Area  209715200 bytes
Fixed Size                  2071640 bytes
Variable Size             125830056 bytes
Database Buffers           75497472 bytes
Redo Buffers                6316032 bytes
Database mounted.
Database opened.
sys@ora10g> show parameter REMOTE_LOGIN_PASSWORDFILE
NAME                       TYPE       VALUE
-------------------------- ---------- ----------------------
remote_login_passwordfile  string     NONE
授权测试
sys@ora10g> grant sysdba to secooler;
grant sysdba to secooler
*
ERROR at line 1:
ORA-01994: GRANT failed: password file missing or disabled
注意,此处的报错原因是不是因为密码文件不存在,与前面曾经提到的报错信息有区别。
回收测试
sys@ora10g> revoke sysdba from secooler;
Revoke succeeded.
此处虽然提示权限回收成功,但是实际上并没有生效,是无效操作。证明之。在此基础上调整参数为EXCLUSIVE
sys@ora10g> alter system set remote_login_passwordfile=EXCLUSIVE scope=spfile;
System altered.
sys@ora10g> startup force;
ORACLE instance started.
Total System Global Area  209715200 bytes
Fixed Size                  2071640 bytes
Variable Size             130024360 bytes
Database Buffers           71303168 bytes
Redo Buffers                6316032 bytes
Database mounted.
Database opened.
此时客户端依然能够成功登陆
$ sqlplus secooler/secooler@172.17.193.211ora10g as sysdba
SQL*Plus: Release 10.2.0.3.0 - Production on 星期二 12月 21 22:06:05 2010
Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options
因此证明了当REMOTE_LOGIN_PASSWORDFILE参数为NONE时回收SYSDBA权限是无效的。
结论4、REMOTE_LOGIN_PASSWORDFILE参数SHARED时,允许客户端以SYSDBA或SYSOPER权限登录到数据库实例中完成数据库管理操作;禁止授予和回收SYSDBA或SYSOPER权限。
调整参数REMOTE_LOGIN_PASSWORDFILE为SHARED

sys@ora10g> alter system set remote_login_passwordfile=shared scope=spfile;
System altered.
sys@ora10g> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
sys@ora10g> startup;
ORACLE instance started.
Total System Global Area  209715200 bytes
Fixed Size                  2071640 bytes
Variable Size             125830056 bytes
Database Buffers           75497472 bytes
Redo Buffers                6316032 bytes
Database mounted.
Database opened.
sys@ora10g> show parameter REMOTE_LOGIN_PASSWORDFILE
NAME                       TYPE       VALUE
-------------------------- ---------- ----------------------
remote_login_passwordfile  string     SHARED
此时客户端的连接是不受限制的,连接通畅
$ sqlplus secooler/secooler@ora10g as sysdba
SQL*Plus: Release 10.2.0.3.0 - Production on 星期二 12月 21 22:08:04 2010
Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options
此时服务器端授予和回收SYSDBA权限是不被允许的
sys@ora10g> grant sysdba to secooler;
grant sysdba to secooler
*
ERROR at line 1:
ORA-01999: password file cannot be updated in SHARED mode
sys@ora10g> revoke sysdba from secooler;
revoke sysdba from secooler
*
ERROR at line 1:
ORA-01999: password file cannot be updated in SHARED mode

结论5、当密码认证文件重建时将会清楚除sys用户以外的所有其他用户的密码,导致其他用户无法以sysdba身份登录

重建前

strings orapwczmmiao

]\[Z
ORACLE Remote Password file
INTERNAL
39D45C9706D01A22
17C6C339B77AC938
SECOOLER
034E4342BB2D437D

重建后

$ orapwd file=orapwczmmiao password=ora123  force=y
$ strings orapwczmmiao
]\[Z
ORACLE Remote Password file
INTERNAL
820879DB2FB6DA8B
6A8FB417FCC9E1E2

hr用户以sysdba身份进行连接失败

SQL> conn hr/hr as sysdba;
ERROR:
ORA-01031: insufficient privileges

Warning: You are no longer connected to ORACLE

 

参考至:《教你成为10g OCP》韩思捷著

           http://www.linuxdiyf.com/viewarticle.php?id=85888

           http://blog.itpub.net/post/42643/514048

           http://hi.baidu.com/%EE%D1%D7%D300544/blog/item/a546e0ee1c4eb4ecb3fb9569.html

           http://hi.baidu.com/oraix/blog/item/448c91e79b9bf52ab93820d4.html

           http://space.itpub.net/?uid-519536-action-viewspace-itemid-682282
           http://www.linuxidc.com/Linux/2011-09/42721.htm

本文原创,转载请注明出处、作者

如有错误,欢迎指正

邮箱:czmcj@163.com

0
0
分享到:
评论

相关推荐

    Oracle_OS认证与口令文件认证详解

    在Oracle数据库管理系统中,提供了多种认证机制,其中OS认证和口令文件认证是两种常用的认证方式。本篇将详细介绍这两种认证方式的配置方法以及它们在验证SYSDBA/SYSOPER权限时的应用。 OS认证(操作系统认证)允许...

    Routeos软路由忘记密码破密

    在日常管理中,为了防止类似问题发生,建议定期备份RouterOS的配置文件,并采用安全的密码策略,比如定期更换密码,以及启用双因素认证等增强安全措施。同时,了解如何进入救援模式并进行基本的系统维护是每个Router...

    ROUTEROS密码清除工具

    1. **下载与准备**:首先,你需要从可靠的来源下载RouterOS密码清除工具v2.0的压缩包文件,并确保该文件未被篡改或携带恶意软件。解压文件,通常会得到一个可执行文件。 2. **连接设备**:使用以太网线连接你的...

    网大科技RouterOS专用U盘密码清除工具

    2. **制作启动盘**:将U盘插入电脑,然后使用特定的工具(如Rufus或UNetbootin)将其格式化为FAT32文件系统,并将它配置为RouterOS的启动盘。 3. **连接RouterOS设备**:将制作好的U盘插入运行RouterOS的设备,然后...

    HarmonyOS应用开发者基础认证考试题目及答案

    HarmonyOS应用开发者基础认证考试题目及答案HarmonyOS应用开发者基础认证考试题目及答案HarmonyOS应用开发者基础认证考试题目及答案HarmonyOS应用开发者基础认证考试题目及答案HarmonyOS应用开发者基础认证考试题目...

    RouterOS软路由器的密码破解方法

    ### RouterOS软路由器的密码破解方法详解 #### 直接删除法 对于忘记RouterOS密码的情况,有两种常用的方法可以恢复密码。首先介绍的是**直接删除法**。 这种方法涉及到关闭RouterOS设备并将其硬盘拆卸下来,然后...

    HarmonyOS云开发基础认证自刷题库

    为了帮助开发者更好地掌握HarmonyOS的云开发技能,官方提供了“HarmonyOS云开发基础认证”考试,旨在测试和提升开发者在Serverless、用户认证、云函数、云数据库、云存储等方面的理论知识与实践能力。本文将深入探讨...

    RouterOS5.x配置Hotspot认证实现UserManager中文认证管理归类.pdf

    RouterOS 5.x 配置 Hotspot 认证实现 UserManager 中文认证管理归类 RouterOS 5.x 配置 Hotspot 认证实现 UserManager 中文认证管理归类是 RouterOS 5.x 版本中的一种实现 Hotspot 认证的解决方案。该解决方案主要...

    HarmonyOS鸿蒙应用开发者高级认证题库(覆盖99%考题)

    ### HarmonyOS应用开发者高级认证题库解析 #### 一、判断题解析 1. **云函数打包完成后,需要到 AppGallery Connect 创建对应函数的触发器才可以在端侧中调用**(错误) - **解析**:云函数的调用并不一定需要在...

    HarmonyOS应用开发者认证题目满分指南

    【 HarmonyOS 应用开发者认证知识点详解】 HarmonyOS 是华为推出的一款面向全场景的分布式操作系统,旨在提供无缝跨设备的用户体验。为了帮助开发者快速掌握HarmonyOS应用开发,官方提供了"HarmonyOS第一课"系列...

    HarmonyOS应用开发者高级认证 word试题及答案

    以上内容详细解析了 HarmonyOS 应用开发者高级认证涉及的诸多知识点,包括但不限于端云一体化开发、组件和布局、服务与函数调用、应用发布流程、测试管理以及安全性等。掌握这些知识点对于成为一名合格的HarmonyOS...

    HarmonyOS应用开发者基础认证题目+答案

    HarmonyOS应用开发者基础认证题目,以及答案,本人目前已经取得证书啦,有需要的朋友自行下载哦~ 1.DevEco Studio是开发HarmonyOS应用的一站式集成开发环境。 (正确) 2.main_pages.json存放页面page路径配置信息。...

    [练习题+答案]Harmony OS应用开发者高级认证

    - **知识点13**:创建应用时,应用包名应与config.json文件中的`bundleName`字段保持一致,以确保应用的唯一标识符正确无误。 - **知识点14**:认证服务支持华为账号的认证方式,这为用户提供了一个安全便捷的身份...

    oracle中os认证,参数remote_login_passfile,口令文件(转)[文].pdf

    3. `SHARED`: 口令文件认证可被多个数据库实例共享,但在这种模式下,只有`INTERNAL`和`SYS`账户会被识别,即使文件中包含了其他用户的信息。 Oracle的口令文件,通常位于`$ORACLE_HOME/database/pwdsid.ora`,用于...

    HarmonyOS应用开发者高级认证.pdf

    ### HarmonyOS应用开发者高级认证详解 #### 一、认证价值 **系统化体系课程:**HarmonyOS应用开发者高级认证提供了官方标准认证课程,确保学习者能够系统地掌握HarmonyOS的核心技术和应用开发方法,从而确保课程...

    HarmonyOS应用开发高级认证考试-单选题.docx

    HarmonyOS应用开发高级认证考试-单选题.docx

Global site tag (gtag.js) - Google Analytics