溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Oracle服務(wù)端驗證機制

發(fā)布時間:2020-08-11 09:11:09 來源:ITPUB博客 閱讀:156 作者:zhouliaoyuan 欄目:建站服務(wù)器

今天我們簡單分析一下Oracle的數(shù)據(jù)驗證機制。在Oracle中,登錄數(shù)據(jù)庫服務(wù)器是需要進行驗證的,通常驗證的層次有兩個,操作系統(tǒng)OS層次和數(shù)據(jù)庫服務(wù)器驗證方式。

 

我們登錄到數(shù)據(jù)庫服務(wù)器所在主機后,常常使用下一種方式登錄,即使當(dāng)時數(shù)據(jù)庫實例沒有啟動。

 

SQL> conn / as sysdba;

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0

Connected as SYS

 

沒有輸入用戶名和密碼,我們也可以登錄DBMS。進一步實驗,我們可以發(fā)現(xiàn),即使我們輸入錯誤的密碼,也會順利登錄系統(tǒng)。

 

SQL> conn sys/ddd@orcl as sysdba;

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0

Connected as SYS

 

但是,這種特性在另一種方式下,就會失效。

 

SQL> conn sys/wrongcod@orcl;

Not logged on

 

說明:在某種方式下,sys用戶以sysdba身份登錄時,是可以繞過DBMS驗證機制,直接登入系統(tǒng)。

 

控制這個功能的參數(shù),在sqlnet.ora(NETWORK\ADMIN)的文件中。有一個參數(shù)SQLNET.AUTHENTICATION_SERVICES,用來表示這種驗證機制。在Oracle 11g的文檔(Oracle Net Services Reference)中,對該參數(shù)的說明如下:

 

Use the parameter SQLNET.AUTHENTICATION_SERVICES to enable one or more authentication services. If authentication has been installed, it is recommended that this parameter be set to either none or to one of the authentication methods.

 

上述說明中,該參數(shù)用于指定驗證服務(wù)的方式??梢栽O(shè)置為多種驗證方式,乃至安全驗證方法,默認值為none。

 

取值方面,分為兩個層次,OS驗證和Oracle Advanced Security。OS驗證層次有三個取值:

 

驗證取值

含義

備注

none

不使用任何驗證方式。只能通過合法用戶名密碼登錄系統(tǒng);

默認值,如果不在sqlnet.ora中設(shè)置,該值就是取值;

all

針對所有的驗證方法;

windows和Linux等多平臺均可使用;

nts

針對windows NT平臺特有驗證方式;

只在windows中使用;

 

此外,在Oracle中,還定義了kerberos5、radius和dcegssapi等高級驗證機制。設(shè)置的方式我們在windows平臺上常??吹降模?/SPAN>

 

SQLNET.AUTHENTICATION_SERVICES=(nts)

 

如果我們將這部分值設(shè)置為none,就可以關(guān)閉只通過OS進行驗證的功能。當(dāng)我們把這個設(shè)置關(guān)閉后,嘗試登錄:

 

SQL> conn / as sysdba;

ERROR:

ORA-01031: 權(quán)限不足

 

SQL> conn sys/ddd@orcl as sysdba;

ERROR:

ORA-01017: 用戶名/口令無效; 登錄被拒絕

 

通過OS進行驗證的登錄被拒絕,有一點要注意。雖然sqlnet.ora是一個文本文件,但是修改過之后,無需重新啟動DBMS就可以直接生效。

 

有一個問題需要注意一下,我們默認的OS驗證登錄,本質(zhì)上并不是不驗證,而是通過操作系統(tǒng)層面進行驗證。在windows中,安裝oracle的用戶會自動的加入到一個ora_dba的組中。操作系統(tǒng)層面驗證就是驗證當(dāng)前用戶是否屬于ora_dba組,進行操作。在Unix/Linux中,也存在一個oinstall的組,執(zhí)行操作也要隸屬在該組用戶中。

 

 

最后,我們要注意,Oracle的這個驗證參數(shù)是一個容易出現(xiàn)問題的安全漏洞。如果非法用戶設(shè)法攻破了主機用戶名和密碼,而Oracle恰恰設(shè)置了單一的OS驗證,數(shù)據(jù)庫的安全性毫無可言。所以,從安全性的角度看,起碼要將這個設(shè)置為none,并且將sqlnet.ora文件的修改權(quán)限上升為root用戶專有,拒絕一般用戶修改,拒絕這種單一的驗證方式。

 

 

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI