真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle口令怎么加密 oracle修改用戶密碼口令

如何應對被公開的Oracle口令加密算法

由于Oracle數(shù)據(jù)庫被廣泛應用,其口令加密算法也是備受關(guān)注。最早在1993年comp.databases.oracle.server新聞組中有人披露了加密算法的大部分細節(jié)。十年后,一本名為《Special Ops Host and Network Security for Microsoft, Unix and Oracle》的書中補全了算法最重要的一個環(huán)節(jié)——DES算法的KEY。至此,口令加密算法已無秘密可言。接踵而來的是互聯(lián)網(wǎng)上出現(xiàn)多個了Oracle口令破解工具。Oracle在2007年推出的最新版本11g中,使用了新的更安全的加密算法,但是新算法的細節(jié)很快又在互聯(lián)網(wǎng)上被公開。為提供兼容,11g版本保留了11g以前版本使用的加密口令,利用這一漏洞仍然可以對11g版本的加密口令進行破解。

專注于為中小企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)黔西免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

到底怎樣才能保證數(shù)據(jù)庫口令的安全呢?本文首先介紹Oracle數(shù)據(jù)庫各版本口令加密算法的內(nèi)容,然后針對算法重點介紹加強數(shù)據(jù)庫安全性的應對措施。

口令加密算法

從Oracle7到Oracle 10gR2,使用DES算法對口令進行加密。對算法進行分析,可以得出如下結(jié)論:口令不區(qū)分大小寫,任意大小寫組合均可登錄;由于只使用固定KEY,只要用戶名和口令相同,在任一DB中存放的加密口令都相同;由于采用了用戶名和口令串接的方式,所以用戶aaa、口令bbbccc的加密值與用戶aaabbb、口令ccc完全相同。

Oracle 11g版本的加密口令存放在SYS.USER$表中的SPARE4列中,而PASSWORD列中仍保留以前版本加密口令。由于客戶端計算加密口令需要用到SALT,在建立連接時,服務(wù)器端將SALT明文傳送給客戶端程序。Oracle 11g中新的口令加密算法中區(qū)分大小寫;由于加入了隨機數(shù)SALT,兩個不同用戶的口令即便完全相同,計算得到的SHA1的散列值也不同;不同DB中相同用戶相同口令,SHA1散列值也可能不同。

目前,大多數(shù)破解工具的工作方式是得到加密口令后,對每一個可能的口令進行加密計算,比較計算結(jié)果而確定是否正確。由此,抵御口令破解可以從三個方面著手:防止加密口令外泄;在加密口令落入黑客手中后,口令也是不可破解的,或盡量增加破解的時間;即便是口令被破解,也是無用的,不能存取數(shù)據(jù)庫。

防止加密口令泄露

1.應用“最少權(quán)限”原則,盡量限制可存取加密口令用戶的人數(shù)

在數(shù)據(jù)庫中檢查具有存取SYS.USER$或DBA_USERS權(quán)限的用戶,并從不需要的用戶中收回權(quán)限。但是操作并不簡單,這也是數(shù)據(jù)庫管理工作的特點。每一廠商的軟件中都實現(xiàn)了SQL標準之外的擴充,并且每一版本都有差異。限于篇幅,不可能對所有本文中建議的措施進行詳細的解釋說明,僅以此處檢查權(quán)限為例展示DBA工作的復雜性。本文中如未說明,則默認版本為11g。應用于11g以前版本時,請讀者確認是否需要修改。

檢查權(quán)限主要的工具是數(shù)據(jù)字典視圖(也可以直接存取SYS用戶的基表,但基表的定義沒有公布,官方不提供技術(shù)支持)。視圖DBA_TAB_PRIVS存放了數(shù)據(jù)庫中數(shù)據(jù)對象上的授權(quán)信息。假定用戶A1和A2可以存取SYS.USER$表,檢查在SYS用戶USER$上有存取權(quán)限的用戶,可執(zhí)行如下語句:

SELECT GRANTEE FROM DBA_TAB_PRIVS WHERE TABLE_NAME=‘USER$’;

我們已經(jīng)知道用戶A1和A2,都可以存取SYS.USER$表,但為什么在上面查詢結(jié)果中沒有出現(xiàn)呢?這是因為在Oracle的權(quán)限管理中,對一個表的存取權(quán)限還可以通過系統(tǒng)權(quán)限或角色賦予,而DBA_TAB_PRIVS中僅列出了直接的對象權(quán)限的授予信息。對于SYS.USER$表而言,系統(tǒng)權(quán)限SELECT ANY DICTIONARY和角色DBA都包含了這一表的存取權(quán)限。所以完整列出所有可存取這一表的用戶應增加下面兩條查詢語句的結(jié)果:

SELECT GRANTEE FROM DBA_SYS_PRIVS WHERE PRIVILEGE=‘SELECT ANY DICTIONARY’;

SELECT GRANTEE FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE=‘DBA’;

通過上面的查詢語句,還是會遺漏某些用戶。如果把DBA角色授權(quán)給另一角色Admin,然后又將Admin角色授權(quán)給另一用戶NEWU,則此用戶可存取SYS.USER$表,但在上述三個查詢中并沒有直接列出NEWU的名字(角色Admin會出現(xiàn)在第三個查詢語句的結(jié)果中)。

顯然,Oracle的授權(quán)構(gòu)成了一棵樹,完整的信息需要一段PL/SQL程序來完成。(對于11g以前版本,還需要檢查對DBA_USERS視圖有存取權(quán)限的用戶和角色。SELECT_CATALOG_ROLE角色如被授權(quán),則可以存取所有數(shù)據(jù)字典視圖,但不能存取SYS的基表。)

2.設(shè)定對加密口令存取的審計

如果當前系統(tǒng)中只有SYSDBA可以存取USER$,則一個變通辦法是審計SYSDBA的所有操作,其中也包括對USER$的存取。設(shè)置初始化參數(shù)audit_sys_operations =TRUE,重新啟動數(shù)據(jù)庫后激活對SYSDBA操作的審計。

審計文件的存放位置為:

11g版本中為:$ORACLE_BASE/admin/SID/ adump/ *.a(chǎn)ud

11g以前版本為: $ORACLE_HOME/rdbms/audit/ *.a(chǎn)ud。

嚴格限制和監(jiān)視SYSDBA用戶活動的最好辦法是使用Oracle Database Vault組件。

3.在操作系統(tǒng)級限制對數(shù)據(jù)庫數(shù)據(jù)文件的存取

SYSDBA用戶的加密口令存放在$ORACLE_HOME/dbs下的口令文件orapw〈SID〉中。SYS.USER$表同樣需要在數(shù)據(jù)文件中存放,多數(shù)為SYSTEM表空間的第一個數(shù)據(jù)文件中。此外,EXPORT文件、REDOLOG文件以及TRACE文件中都可能出現(xiàn)加密口令。需要嚴格限制上述文件的存取權(quán)限。

4.防止網(wǎng)絡(luò)竊聽

在建立連接時,客戶端需要向服務(wù)器端傳送用戶名和口令,并且服務(wù)器端與客戶端需要相互發(fā)送這次會話使用的SESSION KEY。Oracle采用Diffie-Hellman KEY交換算法和自己開發(fā)的O3LOGON協(xié)議完成上述任務(wù)。算法的細節(jié)同樣已在互聯(lián)網(wǎng)上被公開。建立連接時上述信息如果被截獲,同樣可以被用來破解口令。更為嚴重的是,如果黑客事先已經(jīng)獲得加密口令,結(jié)合SESSION KEY的信息,則不需要任何破解,執(zhí)行簡單還原運算就可算出口令明文。

另外,設(shè)計SID時不要使用如ORCL、TEST、PROD等常用名字,設(shè)定PORT號為遠遠大于1521的數(shù),都可以增加黑客SID掃描的難度和時間。

5. 刪除舊版的加密口令

存放在Oracle 11g數(shù)據(jù)庫中的以前版本的加密口令是口令破解工具的一個突破口。在沒有兼容性限制的系統(tǒng)中,可以考慮從系統(tǒng)中刪除舊版口令,從而增加破解難度。

具體操作如下:

在SQLNET.ORA中增加一行:SQLNET.ALLOWED_LOGON_VERSION=11(Oracle手冊中格式介紹有錯誤,不能加括號:…=(11)),指定最低版本。

以SYSDBA登錄后,執(zhí)行以下語句,刪除舊版口令。

update sys.user$ set password=NULL;

delete from user_history$;

commit;

設(shè)置修改后,基于OCI的工具如SQLPLUS、10gR1和10gR2版本都可以正常登錄,而JDBC type-4 則只有11g版本才允許登錄。

提高口令強度

1.禁止使用缺省口令,禁止與用戶名同名的口令,禁止字典詞匯的口令

Oracle 11g中提供一個視圖DBA_USERS_WITH_DEFPWD,可以方便地查出系統(tǒng)中使用缺省口令的所有用戶,不足的是還有不少遺漏。讀者可以在互聯(lián)網(wǎng)找到缺省口令的列表,雖然是非官方的,但是比DBA_USERS_WITH_DEFPWD使用的官方的列表更全。破解工具附帶的詞匯表有的包括了大型英文詞典中全部詞匯,并支持詞匯與“123”之類的常用后綴進行組合。需要注意的是,有的詞匯表中已經(jīng)出現(xiàn)了“zhongguo”這樣的字符串,所以漢語拼音組成的口令也是不安全的。檢查系統(tǒng)中是否存在弱口令的最常用方法就是使用前述口令破解工具進行攻擊。

2.規(guī)定口令最小字符集和口令最短長度

口令字符集最小應包括字母、數(shù)字和特殊符號,口令長度最短應不少于8位,對于安全性要求高的系統(tǒng),最短長度應為12位以上。同樣,問題的關(guān)鍵在于DBA指定初始口令以及用戶修改口令時保證不違反上述這些規(guī)定。每一用戶都對應一個Profile,如在Profile中指定口令驗證函數(shù),則每當創(chuàng)建或修改口令時,會自動檢查是否滿足驗證程序中所設(shè)定的條件,如果不滿足,則口令修改失敗。對口令明文進行檢查,顯然要比對加密口令破解效率高。此外,口令創(chuàng)建之時進行檢查可以及時封殺弱口令,不給黑客留下破解的窗口。

指定口令驗證函數(shù)的語句為:

ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION 口令驗證函數(shù)名;

上例中,為“DEFAULT” Profile指定了驗證函數(shù)。對用戶進行分類后,應當為每一類用戶分別創(chuàng)建自己的Profile,而不是全部使用DEFAULT。關(guān)閉口令驗證函數(shù)的語句為:

ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION NULL;

在$ORACLE_HOME/rdbms/admin/下,腳本文件UTLPWDMG.SQL提供了示例的口令驗證函數(shù),執(zhí)行這一腳本,將創(chuàng)建一名為VERIFY_FUNCTION的函數(shù)( Oracle 11g中,增加新函數(shù)verify_function_11G )。這一函數(shù)可以對口令長度是否同時出現(xiàn)了字母數(shù)字符號進行檢查,檢查是否與用戶名同名,也檢查口令是否是幾個最常用的詞匯,如welcome、database1、account1等。最后,口令修改時檢查新舊口令是否過于相似。讀者實際使用時應該根據(jù)系統(tǒng)需要對這一函數(shù)進行必要的修改和擴充。

3.使用易記憶的隨機口令限定口令長度后,如果口令沒有規(guī)律很難記憶,則用戶會采用他們自己的方式記住口令,大大增加了遭受社會工程攻擊的可能性。DBA需要幫助用戶設(shè)計一個容易記憶而又不易破解的口令。一個簡單易行的方法是找用戶非常熟悉的一個句子,如One world One dream,然后將每一個空格替換為數(shù)字或符號:One3world2One1dream#。

定期更換口令

抵御口令破解要從多方面著手

數(shù)據(jù)庫中存在多種權(quán)限用戶,各種授權(quán)用戶構(gòu)成一棵樹

應對口令泄露或被破解的措施是強制定期更換口令,設(shè)定口令重復使用限制,規(guī)定封鎖口令的錯誤次數(shù)上限及封鎖時間。即便是加密口令落入黑客手中,在被破解之前或入侵之前,修改了口令,則口令破解變得毫無意義。為了方便記憶,一般用戶有重新使用之前過期口令的傾向,如果對重用不加控制,則定期更換口令將失去意義。上述對口令的管理仍然是通過Profile完成:

ALTER PROFILE DEFAULT LIMIT

PASSWORD_LIFE_TIME 30

PASSWORD_GRACE_TIME 7

PASSWORD_REUSE_TIME 365

PASSWORD_REUSE_MAX 0

FAILED_LOGIN_ATTEMPTS 10

PASSWORD_LOCK_TIME UNLIMITED

PASSWORD_VERIFY_FUNCTION my_verify_function;

上面語句制定的口令管理政策為:口令的有效期為30天,隨后有7天的寬限期,寬限期后口令“過期”,必須更改口令后才能登錄。只有經(jīng)過365天后才能重新使用以前的口令。在連續(xù)10次輸入口令錯誤后,賬號被封鎖,設(shè)定不自動解鎖,必須由DBA手動解除封鎖。口令驗證函數(shù)為my_verify_function。

Oracle 11g以前版本,缺省設(shè)置中沒有設(shè)定口令的有效期,而在Oracle 11g中缺省設(shè)置有效期為180天。程序中直接寫入口令的應用在升級到11g時一定要注意有效期問題,避免半年后應用突然無法自動運行。另外,口令的有效期對SYS用戶不起作用,DBA一定要主動定期更換口令。

另外一個措施是對登錄數(shù)據(jù)庫服務(wù)器的主機進行限定,如指定網(wǎng)段或指定IP地址。進一步限定客戶端允許執(zhí)行的程序,如對非本地登錄禁止使用SQLPLUS,只允許執(zhí)行某特定應用。

認真實施本文中給出的措施后,可以很有效地防止口令被破解。然而我們的目的是提高數(shù)據(jù)庫系統(tǒng)的安全性,而不僅僅是保證口令不被破解。數(shù)據(jù)庫系統(tǒng)安全的任何一個環(huán)節(jié)出現(xiàn)問題,都會導致前功盡棄。黑客的目的是入侵系統(tǒng)盜竊數(shù)據(jù),是不會按常理出牌的,會嘗試各種手段方式,如社會工程、安全漏洞、物理入侵等等,而不會執(zhí)著地在口令破解上與我們較勁。這一點需要我們經(jīng)常提醒自己,從而切實保證數(shù)據(jù)庫系統(tǒng)安全。

TechTarget中國原創(chuàng)內(nèi)容

求一份Oracle和Java使用同一種加密方式

1:自己在oracle創(chuàng)建md5加密的function,代碼可以參考下面:

create or replace function MD5 (vin_string IN VARCHAR2)

RETURN VARCHAR2 IS

BEGIN

RETURN UPPER(Dbms_Obfuscation_Toolkit.Md5 ( input = utl_raw.cast_to_raw(vin_string) ));

END MD5

2:密碼均是以md5存儲的密文存在數(shù)據(jù)庫,匹配的時候也是密文比較一致性。無需解密,若解密,反而用戶不滿意了。

oracle數(shù)據(jù)庫的存儲過程如何加密?具體的實現(xiàn)方法是什么

可以例用Oracle

自帶的Wrap工具實現(xiàn),此工具在$ORACLE_HOME/BIN目錄下,具體如下

1、設(shè)置字符集環(huán)境變量

set

NLS_LANG=CHINESE_CHINA.ZHS16GBK

2、創(chuàng)建一個存儲過程文件

在E:\下創(chuàng)建test.sql文件,內(nèi)容如下:

create

or

replace

procedure

test1(i

in

number)

as

begin

dbms_output.put_line('

輸入?yún)?shù)是'||to_char(i));

end;

3、加密

c:\

cd

%ORACLE_HOME%\BIN

c:\wrap

iname=e:\test1.sql

PL/SQL

Wrapper:

Release

8.1.7.0.0

-

Production

on

Tue

Nov

27

22:26:48

2001

Copyright

(c)

Oracle

Corporation

1993,

2000.All

Rights

Reserved.

Processing

test1.sql

to

test1.plb

4、運行test1.plb

sqlplus

/nolog

SQLconn

TEST/TEST@db01

SQL

@e:\a.plb

過程已創(chuàng)建。

5、運行存儲過程

SQL

set

serveroutput

on

SQL

execute

test1(1);

輸入?yún)?shù)是1

PL/SQL

過程已成功完成。

6、查看存儲過程的代碼

SQL

select

name,text

from

all_source

where

type='PROCEDURE'

and

name='TEST1';

結(jié)果:看不到其原碼

如何利用Oracle自帶的MD5對數(shù)據(jù)進行加密

1、DBMS_OBFUSCATION_TOOLKIT.MD5是MD5編碼的數(shù)據(jù)包函數(shù)

CREATE OR REPLACE FUNCTION MD5(passwd IN VARCHAR2)

RETURN VARCHAR2

IS

retval varchar2(32);

BEGIN

retval := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING = passwd)) ;

RETURN retval;

END;

select md5('123456') from dual;

MD5('123456')

e10adc3949ba59abbe56e057f20f883e

2、DES加密

create or replace function

encrypt_des(p_text varchar2, p_key varchar2) return varchar2 is

v_text varchar2(4000);

v_enc varchar2(4000);

raw_input RAW(128) ;

key_input RAW(128) ;

decrypted_raw RAW(2048);

begin

v_text := rpad( p_text, (trunc(length(p_text)/8)+1)*8, chr(0));

raw_input := UTL_RAW.CAST_TO_RAW(v_text);

key_input := UTL_RAW.CAST_TO_RAW(p_key);

dbms_obfuscation_toolkit.DESEncrypt(input = raw_input,key = key_input,encrypted_data =decrypted_raw);

v_enc := rawtohex(decrypted_raw);

dbms_output.put_line(v_enc);

return v_enc;

end;

DES加密:

update tb_salarysign_staff s set s.staffpwd =encrypt_des(s.staffpwd, 'test#5124*!de');

3、DES解密函數(shù)

create or replace function decrypt_des(p_text varchar2,p_key varchar2) return varchar2 is

v_text varchar2(2000);

begin

dbms_obfuscation_toolkit.DESDECRYPT(input_string = UTL_RAW.CAST_TO_varchar2(p_text),key_string =p_key, decrypted_string= v_text);

v_text := rtrim(v_text,chr(0));

dbms_output.put_line(v_text);

return v_text;

end;

DES解密:select decrypt_des(s.staffpwd, 'test#5124*!de') from tb_salarysign_staff s;

關(guān)于oracle數(shù)據(jù)庫加密的函數(shù)

Oracle 提供兩種加密方式:

a)加密 API 例如包 和 dbms_crypto 使用這些包,可以構(gòu)建我們自己的基礎(chǔ)架構(gòu),對數(shù)據(jù)進行加密。 這種方法的靈活性最強,但是構(gòu)建和管理卻相當復雜。

b)透明的數(shù)據(jù)加密是 Oracle 數(shù)據(jù)庫 ;使用該特性后,就不必手動進行密碼管理了。

數(shù)據(jù)庫管理密碼,但是正如名稱所指,加密是透明的——數(shù)據(jù)僅僅以加密的方式存儲而已。在Oracle10g中出現(xiàn)了dbms_crypto替代了之前的dbms_obfuscation_toolkit,DBMS_CRYPTO增加了若干新的加密算法、哈希算法。

DBMS_CRYPTO還撤銷了對于public組的執(zhí)行權(quán)限。

oracle安裝時候怎么樣自己設(shè)置密碼,然后還有什么超級用戶那些怎么設(shè)置,連接我就想平常那orac

安裝時候在這個位置設(shè)置系統(tǒng)用戶口令,系統(tǒng)用戶的用戶名是sys和system。

安裝后修改密碼是這個命令

alter user system identified by 你的新口令;

創(chuàng)建自己的用戶是這個步驟,在命令行登錄sqlplus,比如創(chuàng)建一個user1用戶

sqlplus / as sysdba

create user user1 identified by user1_password;

grant connect,resource to user1;

如果你打算用user1管理數(shù)據(jù)庫

grant dba to user1;

開發(fā)的時候可以用這個授權(quán),將user1編程管理員帳戶,但是在生產(chǎn)環(huán)境,不建議給應用的用戶授權(quán)dba。


網(wǎng)頁題目:oracle口令怎么加密 oracle修改用戶密碼口令
URL地址:http://weahome.cn/article/hhjpcj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部