等保测评2.0:Oracle身份鉴别(上)

来源:未知 时间:2020-05-01 18:00:48 字体:[ ]

原标题:等保测评2.0:Oracle身份鉴别(上)

一、表明

习水齐汁计算机公司

本篇文章主要说一下Oracle数据库中身份验证限制点中关于身份鉴别的知识点,由于这个地方比较“复杂”,以是这篇文章就不写测评项方面的东西了,放在下篇文章中。

在oracle的身份验证这方面,网上的文章许众,但是真伪难辨,而且异国把逻辑说晓畅,以是倘若不经过本身的测试往往会得到舛讹的结论或者半对半错的结论。

二、oracle的特性

先说一下吾行使的oracle的版本,是11g,装在redhat-7中。

三、启动数据库

启动监听,就是在操作体系中实走lsnrctl start命令,云云才能长途连接oracle数据库(不启动监听的话,就只能在本地进走访问了,也就是装有这个数据库的服务器上)。

对于oracle,启动数据库,必要先在本地对数据库进走连接,此时会表现:

Connected to an idle instance.

然后再实走startup:

倘若你不启动数据库,连接上往后是实走不了什么查询、更改操作的:

四、稀奇的角色

以是这边就存在一个和其它数据库不大相通的地方,比如SqlServer,吾要启动SqlServer,用命令走也益,用图形化界面也益,吾只要在windows中把SqlServer的有关服务启动首来就能够了。

但是在oracle这边,却必要行使oracle数据库中的用户往连接它然后启动它。

以是这边就会存在一栽稀奇的数据库的角色,它能够在数据库异国启动的时候,对数据库实走一些操作,比如启动数据库,也能够关闭数据库。

同时一定的,对于属于这列稀奇角色的用户,它的身份验证和权限鉴定一定不是倚赖数据库中有关字段的对比(由于数据库没启动前,无法查询到外中的数据)。

在oracle中,有两栽云云的角色,别离是sysdba和sysoper,都具备数据库的启动和关闭权限,这两个角色的权限答该是固定不及更改的,其权限如下:

五、暗号文件验证

以是,为了实现对拥有稀奇角色如sysdba的用户的口令验证和权限鉴定,就展现了暗号文件。

暗号文件中蓄积了稀奇用户的口令和一些权限字段,在linux中,这个文件在$ORACLE_HOME/dbs/现在录中,以orapw起头,其内容是添密的:

查望内里的内容,必要启动数据库后查望V$PWFILE_USERS视图:

这边就能望到,口令文件中仅存在SYS用户,且SYS用户同时拥有sysdba和sysoper角色。

在oracle中,有一个参数能够对暗号文件进走限制:remote_login_passwordfile

它有三个值,别离是:EXCLUSIVE、NONE、SHARED

EXCLUSIVE:对于这栽稀奇用户,行使暗号文件来进走验证,另外这也是独占模式,能够将sysdba权限给非sys用户。

NONE:无视任何暗号文件,不行使暗号文件对稀奇用户验证

SHARED:对于这栽稀奇用户,行使暗号文件来进走验证,另外这是共享模式,能够被一台服务器上的众个数据库或者RAC集群数据库共享,也无法将sysdba权限给非sys用户。

这边表明一点,选择NONE的时候,不行使暗号文件对稀奇用户进走验证,这边还存在另外一栽验证手段——操作体系验证手段。

六、操作体系验证之稀奇用户

比如在linux上,当你登录了操作体系的某些用户后,能够直接绕过数据库的验证,登录数据库的稀奇用户SYS。

比如上面的说到启动数据库时,行使的连接语句是空用户名、空暗号,用的就是操作体系认证手段:sqlplus / as sysdba;

这边进走的验证,内心上是鉴定你所行使的操作体系用户是否属于操作体系中的数据库用户组。

在windows以及linux中,安置oracle时,oracle默认就会在操作体系中竖立有关的用户组,属于这个用户组的用户,就能行使操作体系验证手段来连接数据库。

在windows中,这个组默认是ora_dba,linux中,这个组默认是oinstall。(仔细,由于oracle版本的分歧,以及安置时组名称的竖立,纷歧定都是这个名字和仅仅一个用户组)。

行使操作体系验证时,对于属于数据库用户组的用户而言,不论输入的数据库用户的用户名和暗号是什么,甚至是空的,只要你后面添了as sysdba,末了都会以sys用户的身份登录数据库。

在oracle中,连接语句中as后面能够跟三个单词,别离是sysdba、sysoper、normal。

sysdba、sysoper的有趣就是以这两栽稀奇角色的身份登录数据库,以sysdba身份登录后,实际上就是以sys用户的身份登录:

以sysoper的身份登录,实际上是以public用户(角色)的身份登录,而倘若后面不写添上as或者行使as normal,那么就是以数据库内的清淡的用户身份登录,这个时候你行使什么用户名登录,就行使的什么用户的身份。

对于操作体系认证,在sqlnet.ora文件中,能够经过SQLNET.AUTHENTICATION_SERVICES参数来配置:

这边就有点麻烦了,网上的说法一大堆,而且还有互相矛盾的,这边吾仅给出吾在linux下的实验终局(windows和linux相通不大相通,行家有空本身测试下)

当SQLNET.AUTHENTICATION_SERVICES参数被注解失踪或者不存在时:操作体系中数据库用户组的用户能够行使操作体系验证手段以稀奇角色的身份登录。

当SQLNET.AUTHENTICATION_SERVICES参数的值是all:操作体系中数据库用户组的用户能够行使操作体系认证手段以稀奇角色的身份登录。

当SQLNET.AUTHENTICATION_SERVICES参数的值是none的时候:操作体系中数据库用户组的用户不能够行使操作体系认证手段以稀奇角色的身份登录。

当SQLNET.AUTHENTICATION_SERVICES参数的值是nts或者其它的杂乱无章的值的时候(由于nts这个值不是给linux体系用的,以是竖立这个值和你竖立一个有时义的值是相通的):操作体系数据库用户组的用户不能够行使操作体系认证手段以稀奇角色的身份登录。

仔细,在参数外貌添括号也能够,比如(all)和all是一回事,不过网上还有说(nts,none)这栽参数行使手段的,这栽写法逆正在linux上答该归于“其它的杂乱无章的值”,windows上吾就不晓畅了。

七、操作体系验证之清淡用户

操作体系验证也能够作用于数据库中的清淡用户,这个是否开启也是由SQLNET.AUTHENTICATION_SERVICES和remote_os_authent参数共同进走限制,这边先说一说是怎么一个验证手段。

在oracle中,有一个os_authent_prefix参数,其默认值是ops$

这个时候,倘若数据库内存在一个名为ops$cv的账户,而操作体系也有一个名为cv的账户,那么登录cv后,能够以空用户名、空暗号的手段以清淡用户(normal)的身份登录ops$cv账户,这边很容易望出来,os_authent_prefix的有趣就是用来竖立前缀的。

这边吾们来实际操作下,最先先创建一个ops$cv账户(仔细这边的语句和清淡的创建语句稍微有些分歧):

create user ops$cv identified externally;

这个时候,这个用户的暗号新闻是云云的(不过在11g中,暗号新闻页不存在DBA_USERS外中):

在11g中,清淡用户的暗号答该是存在USER$外中的PASSWORD中:

ops$cv账户在USER$外中的PASSWORD字段的值是:EXTERNAL,以是,实际上对于这栽账户,你没手段用用户名、暗号的手段登录上往的。

然后,授予ops$cv账户浅易的权限:

grant create session to ops$cv;

吾的虚拟机中存在一个cv账户,为了方便行使sqlplus,在cv账户的~/.bash_profile中竖立有关的环境变量:

这个时候,直接用空用户名、空暗号的手段以清淡用户的手段登录:

这边说一下限制规则:

在remote_os_authent为默认值也就是False的时候,是否启用清淡用户的操作体系验证,由SQLNET.AUTHENTICATION_SERVICES参数来限制,而限制的规则,和对于稀奇用户的操作体系验证的限制规则是相通的,这边就不重复表明了。

当remote_os_authent的值为True的时候,就和SQLNET.AUTHENTICATION_SERVICES参数能够了,不论SQLNET.AUTHENTICATION_SERVICES参数竖立什么值,清淡用户的操作体系验证手段都是开启的。

八、作体系验证之清淡用户之长途连接

这栽清淡用户的操作体系验证,也能够在客户端进走,由remote_os_authent参数进走限制,其默认值是False:

验证规则和本地其实是相通的,只不过这边用来验证的操作体系用户名由本地的变成了客户端的。

先将remote_os_authent竖立为true,仔细,对于这些参数的竖立,必要重启数据库后才能奏效:

吾的客户端的操作体系账户的用户名是cx,以是和上面相通,创建有关的数据库用户并授予权限:

这边用空用户名、空暗号,以normal的身份登录:

这边仔细下,是否开启长途的操作体系清淡用户验证,是由remote_os_authent单独限制,荣誉资质和SQLNET.AUTHENTICATION_SERVICES参数没啥有关,remote_os_authent是True,就开启,是False,就关闭。

九、总结一之互不作梗

从上面的表明能够望出,实际上有3个参数:

remote_login_passwordfile、SQLNET.AUTHENTICATION_SERVICES、remote_os_authent

不晓畅为何,在网上,莫名其妙的把SQLNET.AUTHENTICATION_SERVICES和remote_login_passwordfile有关了在一首,实际上remote_login_passwordfile和SQLNET.AUTHENTICATION_SERVICES是互不作梗的,不存在什么SQLNET.AUTHENTICATION_SERVICES的值是none的时候,暗号文件验证就不及用了。

它们是云云的有关:

remote_login_passwordfile决定是否启用暗号文件验证,而SQLNET.AUTHENTICATION_SERVICES、remote_os_authent决定是否启用操作体系的验证手段。

这remote_login_passwordfile和SQLNET.AUTHENTICATION_SERVICES、remote_os_authent是互不作梗的,remote_login_passwordfile不会影响到操作体系验证的开启与否,SQLNET.AUTHENTICATION_SERVICES、remote_os_authent也不会影响到暗号文件的验证开启与否。

开启暗号文件验证后,不论操作体系的哪一个用户,都能够行使sqlplus 用户名/暗号 as sysdba的手段登录数据库。

开启操作体系的验证手段后,是否能够以稀奇用户的身份登录数据库,望的是你行使的操作体系用户是否属于数据库的用户组。

remote_os_authent为默认值的前挑下,对于稀奇用户的登录,有:

remote_login_passwordfile不为none的时候,倘若数据库未启动,那么无法长途连接数据库,不存在能够在数据库未启动时长途经过暗号文件验证的手段以稀奇角色的身份登录数据库然后启动,起码吾本身测试时是不走的,登不上往。这个时候,能够在本地经过相通于sqlplus 用户名/暗号 as sysdba的手段以稀奇角色的身份登录数据库(暗号文件认证)。

不过,固然未启动时不能够,启动了数据库之后,就能够经过暗号文件认证的手段长途以sysdba的身份登录数据库了。

同样的,倘若remote_login_passwordfile为none,那么不光本地不能够行使暗号文件验证的手段以稀奇角色的身份登录数据库,长途也不能够。

以是这个参数为none时,就使得长途连接的时候,不及以sysdba、sysoper的身份登录数据库,只能够以normal的身份长途登录数据库。

当经过竖立SQLNET.AUTHENTICATION_SERVICES的值无法行使操作体系验证手段时,固然无法行使操作体系验证,但倘若此时remote_login_passwordfile不为none,任何一个操作体系用户在本地,都照样能够行使暗号文件验证的手段以稀奇角色的身份登录数据库,只不过非数据库用户组的用户必要配置下环境变量方便行使sqlplus而已。而且同时,长途以稀奇角色的身份连接数据库,也是能够的(两个参数互不作梗)。

当经过竖立SQLNET.AUTHENTICATION_SERVICES的值能够行使操作体系验证手段时,非数据库用户组的用户,行使sqlplus也无法行使操作体系验证手段的手段以稀奇角色身份登录数据库。此时倘若remote_login_passwordfile不为none,那么对于数据库用户组的用户,益似就同时存在暗号文件验证和操作体系验证,但实际上,答该行使的是操作体系验证,由于随意输入什么用户名、暗号,连接语句中添上as sysdba,都能以sysdba的身份登录。

不论是暗号文件认证照样操作体系认证,说来说往,影响到的都是以稀奇角色身份登录数据库是否能成功,倘若行行使户名、口令,并且以normal身份登录数据库,则不受到这两个参数的影响,只要数据库启动后,本地或者长途以normal身份登录数据库都是能够的,这个时候,行使的就是数据库中的用户名、口令的字段的验证了。

仔细,这边对于数据库的清淡用户,倘若行行使户名对比的操作体系验证手段,比如上面说到的ops$cv、ops$cx账户,照样受到SQLNET.AUTHENTICATION_SERVICES、remote_os_authent参数的限制的。

十、总结二之操作体系认证

在remote_os_authent为默认值也就是False的时候:

是否启用数据库的清淡用户、稀奇用户的本地操作体系验证,由SQLNET.AUTHENTICATION_SERVICES参数来限制,这边数据库中清淡用户本地操作体系验证的规则,和对于稀奇用户的操作体系验证的限制规则是相通的,这边就不重复表明了。

此时,长途客户端的操作体系验证手段是关闭的,和SQLNET.AUTHENTICATION_SERVICES参数无关。

当remote_os_authent的值为True的时候:

数据库中清淡用户的本地操作体系验证的限制,就和SQLNET.AUTHENTICATION_SERVICES参数能够了,不论SQLNET.AUTHENTICATION_SERVICES参数竖立什么值,清淡用户的操作体系验证手段都是开启的。

但是,这个时候,稀奇用户的本地操作体系验证照样由SQLNET.AUTHENTICATION_SERVICES参数限制,与remote_os_authent没啥有关。

同时,长途客户端的操作体系验证手段是开启的,也和SQLNET.AUTHENTICATION_SERVICES参数能够。

十一、总结三——测试

想自走测试的话,有一些仔细项,不仔细的话会得出舛讹的结论:

SQLNET.AUTHENTICATION_SERVICES是实时转折的,有趣就是转折了SQLNET.AUTHENTICATION_SERVICES的值,不必重启数据库。

remote_os_authent、remote_login_passwordfile则不然,转折了它们的值,必要关闭数据库,然后再启动数据库,才会添载新的值。

SQLNET.AUTHENTICATION_SERVICES对格式请求相通挺厉肃,比如在参数前线添一个空格,答该就相等于注解失踪它了:

以是图中固然参数是none,但实际照样能够行使操作体系验证登录稀奇用户。

长途登录测试的时候,倘若行使PLSQL,仔细,每次测试要把登录框关失踪,重新掀开。

比如关闭暗号文件验证的时候,你测试是否能长途登录稀奇用户:

自然登录不上,之后你在服务器端竖立remote_login_passwordfile参数开启暗号文件验证后,重新掀开个登录框进走登录是能够登录上的。但倘若照样用这个登录框,相通照样登录不上往,云云就会得到舛讹的结论。吾也不是很晓畅PLSQL连接的细节,行家本身仔细吧。

发现以前文章的舛讹或者有什么扩充,但是由于内容的题目,不及以写成新的文章,以是就放在这边了:

在等保测评2.0:Windows身份鉴别有这么一段话:

以是清淡的,本地登录超时,仅查望“屏幕珍惜程序”就能够了。

仔细,倘若在“屏幕珍惜程序”处竖立了超时,那么对于长途登录而言(不论行使长途桌面照样其他长途管理柔件),答该也会具备终局。

即,你在竖立了“屏幕珍惜程序”后(如15分钟),当你经过长途桌面登录到服务器时,在你异国竖立长途登录超时的情况下,超过15分钟异国行为,服务器就会最先运走“屏幕珍惜程序”了,也就是超时退出了(固然你的网络连接并异国断开)。

以是清淡的,本地登录超时,仅查望“屏幕珍惜程序”就能够了。

仔细,倘若在“屏幕珍惜程序”处竖立了超时,那么对于长途登录而言(不论行使长途桌面照样其他长途管理柔件),答该也会具备终局。

即,你在竖立了“屏幕珍惜程序”后(如15分钟),当你经过长途桌面登录到服务器时,在你异国竖立长途登录超时的情况下,超过15分钟异国行为,服务器就会最先运走“屏幕珍惜程序”了,也就是超时退出了(固然你的网络连接并异国断开)。

这边其实也没说错,但是没说全。

经过群中QQ群员的测试和挑醒:“屏幕珍惜程序”对于本地登录有效,长途登录也有效的,只不过这个竖立是用户竖立而不是全局竖立。

举个例子,你登录administrator用户时,竖立了“屏幕珍惜程序”,但这个竖立仅对administrator用户有效,对其他用户异国用,每个用户都有本身的竖立数据。

以是倘若竖立“屏幕珍惜程序”的话,答该是每个用户都要竖立一遍。

在等保测评主机坦然:CentOS暗号修改周期与登录战败处理中,关于本地图形化界面登录时调用的pam文件,吾写错了:

这边是评论区的孔明梅林123挑醒吾的,他还问了个新题目,吾就直接截图了:

*本文作者:首于凡而非于凡,转载请注解来自FreeBuf.COM

周一A股三大股指集体低开后全天窄幅震荡,盘面上,板块间强弱分化显著。

原标题:1-3年级语文下册【第17课】图文讲解+练习(可打印)

  新基建专项债调研:谨防两类风险

中国网地产讯  4月29日,鲁商发展发布2020年第一季度房地产经营情况简报。

原标题:文旅部:全国近7成旅游景区已有序开放

相关新闻

热门新闻

随机新闻

友情链接及相关站点

Powered by 搏岁家电零售公司 @2018 RSS地图 html地图

Copyright 站群 © 2013-2018 版权所有