Oracle
為什麼作業系統身份驗證被認為是 Oracle 數據庫的低安全性?
Oracle 正在根據Oracle Database Security Guide棄用 OS 身份驗證,其中說
請注意,REMOTE_OS_AUTHENT 參數在 Oracle 數據庫 11g 第 1 版 (11.1) 中已被棄用,並且僅為了向後兼容而保留。
此外,大多數安全資訊和工具都認為 作業系統(外部)身份驗證是一個安全問題。我試圖理解為什麼會這樣。以下是我看到的作業系統身份驗證的一些優點:
- 如果沒有作業系統身份驗證,應用程序必須將密碼儲存在各種應用程序中,每個應用程序都有自己的安全模型和漏洞。
- 域身份驗證必須是安全的,因為如果不是,那麼數據庫安全性只會減慢對數據庫的訪問速度,但無法阻止它。
- 隨著他們必須連接的不同數據庫數量的增加,與創建更不安全的數據庫密碼相比,只需記住一個域密碼的使用者可以更容易地創建更安全的域密碼。
考慮以下場景:
- 在 Oracle 伺服器上有一個名為 Unix 的使用者
gaius
,具有外部身份驗證,因此在 Oracle 中有一個對應的使用者名為ops$gaius
. 登錄到 shell 時,我也可以直接登錄到我的 Oracle 模式,而且我的 cron 作業也不需要嵌入在腳本中的密碼。- 允許遠端作業系統身份驗證,前提是 LAN 100% 安全並且客戶端可以信任(與通常允許的
rlogin
/過去相同)rsh
- 攻擊者通過任何方式將他或她的筆記型電腦連接到 LAN,知道我在那里工作,並在他們的筆記型電腦上創建一個本地使用者,
gaius
並以該使用者身份執行 SQL*Plus- Oracle 看到(即
OSUSER
在V$SESSION
)是gaius
並將遠端使用者記錄為ops$gaius
這不僅很容易被欺騙,而且戴上我憤世嫉俗的帽子,甲骨文不能再通過向您出售他們花哨的單點登錄產品來賺錢……順便說一句,這確實滿足了您作為作業系統優勢提出的所有要點-級別的身份驗證。兩個比一個更好的密碼完全是虛假的;無論如何,大多數人都會將它們設置為相同(Oracle 中沒有機制可以防止這種情況發生)。
一般原則是,當攻擊者俱有物理訪問權限時,在軟體中進行防禦是極其困難的。永遠不要相信客戶。