先分3點(diǎn)從全局來看
對(duì)操作系統(tǒng)的安全需求:防止對(duì)DBMS的非法訪問和修改,保護(hù)存儲(chǔ)的數(shù)據(jù)、文件的安全性,對(duì)數(shù)據(jù)庫用戶的認(rèn)證
對(duì)數(shù)據(jù)庫系統(tǒng)本身的安全需求:用戶認(rèn)證管理、訪問控制、審計(jì),數(shù)據(jù)庫的穩(wěn)定性,保證數(shù)據(jù)的安全性與完整性,完善的恢復(fù)功能,數(shù)據(jù)加密
對(duì)數(shù)據(jù)庫應(yīng)用系統(tǒng)的安全需求:訪問控制、認(rèn)證管理,對(duì)數(shù)據(jù)庫的保護(hù)防止非法訪問和修改,自身的穩(wěn)定性
舉一個(gè)實(shí)例
SQL注入:利用現(xiàn)有應(yīng)用程序,將(惡意)的SQL命令注入到后臺(tái)數(shù)據(jù)庫引擎執(zhí)行的能力,這是SQL注入的標(biāo)準(zhǔn)釋義。
所謂SQL注入式攻擊,就是攻擊者把SQL命令插入到Web表單的輸入域或頁面請(qǐng)求的查詢字符串,欺騙服務(wù)器執(zhí)行惡意的SQL命令。在某些表單中,用戶輸入的內(nèi)容直接用來構(gòu)造(或者影響)動(dòng)態(tài)SQL命令,或作為存儲(chǔ)過程的輸入?yún)?shù),比如典型的攻擊類型是在newsid變量后加后sql語句:exec xp_cmdshell ‘net user’
這樣就執(zhí)行了一個(gè)加用戶的命令了。
Web應(yīng)用程序訪問數(shù)據(jù)庫會(huì)造成特定的一些潛在安全問題。SQL注入攻擊仍然穩(wěn)居黑客至愛兵器榜的首位,對(duì)那些想要保護(hù)數(shù)據(jù)安全的企業(yè)來說,這是個(gè)大麻煩。
據(jù)CVE的2006年度統(tǒng)計(jì)數(shù)據(jù)顯示,SQL注入攻擊漏洞呈逐年上升的狀態(tài)
如何做好數(shù)據(jù)庫的安全工作
1.數(shù)據(jù)庫基本安全架構(gòu)
從廣義上講,數(shù)據(jù)庫的安全首先依賴于網(wǎng)絡(luò)系統(tǒng)。網(wǎng)絡(luò)系統(tǒng)的安全是數(shù)據(jù)庫安全的第一道屏障,外部入侵首先就是從入侵網(wǎng)絡(luò)系統(tǒng)開始的。
解決方案:防火墻,入侵檢測(cè) IDS—Instrusion Detection System,協(xié)作式入侵檢測(cè)技術(shù),IPS:Intrusion Prevention System 入侵防御系統(tǒng)
對(duì)于宿主操作系統(tǒng)層次,操作系統(tǒng)安全策略用于配置本地計(jì)算機(jī)的安全設(shè)置,包括密碼策略、賬戶鎖定策略、審核策略、IP安全策略、用戶權(quán)利指派、加密數(shù)據(jù)的恢復(fù)代理以及其它安全選項(xiàng)。
2 數(shù)據(jù)庫用戶及權(quán)限
減少特權(quán)管理,不要顯式地將同一特權(quán)組授權(quán)給幾個(gè)用戶,只需將這特權(quán)組授給角色,然后將角色授權(quán)給每一用戶。
動(dòng)態(tài)特權(quán)管理,如果一組特權(quán)需要改變,只需修改角色的特權(quán),所有授給該角色的全部用戶的安全域?qū)⒆詣?dòng)地反映對(duì)角色所作的修改。
特權(quán)的選擇可用性,授權(quán)給用戶的角色可選擇地使其使能(可用)或使不能(不可用)。
應(yīng)用可知性,當(dāng)一用戶經(jīng)一用戶名執(zhí)行應(yīng)用時(shí),該數(shù)據(jù)庫應(yīng)用可查詢字典,將自動(dòng)地選擇使角色使能或不能。
專門的應(yīng)用安全性,角色使用可由口令保護(hù),應(yīng)用可提供正確的口令使用權(quán)角色使能,達(dá)到專用的應(yīng)用安全性。因用戶不知其口令,不能使角色使能。
3 數(shù)據(jù)庫加密技術(shù)
庫外加密
將數(shù)據(jù)庫的文件作為加密對(duì)象,在庫外加密方式中,加/解密過程發(fā)生在DBMS之外,DBMS管理的是密文。加/解密過程大多在客戶端實(shí)現(xiàn),也有的由專門的加密服務(wù)器或硬件完成。
庫內(nèi)加密
加密對(duì)象為數(shù)據(jù)庫中存儲(chǔ)的數(shù)據(jù),比如表、記錄、元素、數(shù)據(jù)等。庫內(nèi)加密在DBMS內(nèi)核層實(shí)現(xiàn)加密,加/解密過程對(duì)用戶與應(yīng)用透明,數(shù)據(jù)在物理存取之前完成加/解密工作。
硬件加密
在物理存儲(chǔ)器與數(shù)據(jù)庫系統(tǒng)之間的硬件加密裝置,加密解密操作由硬件中間設(shè)備完成
4 數(shù)據(jù)庫備份技術(shù)
數(shù)據(jù)庫有三種標(biāo)準(zhǔn)的備份方法,它們分別為導(dǎo)出/導(dǎo)入(EXPORT/IMPORT)、冷備份、熱備份。
— 導(dǎo)入/導(dǎo)出備份:邏輯備份
— 冷備份:物理備份
— 熱備份:物理備份
設(shè)定數(shù)據(jù)庫備份計(jì)劃,啟動(dòng)數(shù)據(jù)庫歸檔模式,定期執(zhí)行數(shù)據(jù)庫備份,監(jiān)控檢查備份情況
5 數(shù)據(jù)庫審計(jì)技術(shù)
審計(jì)是對(duì)選定的用戶動(dòng)作的監(jiān)控和記錄,通常用于:
審查可疑的活動(dòng)。例如:數(shù)據(jù)被非授權(quán)用戶所刪除,此時(shí)安全管理員可決定對(duì)該 數(shù)據(jù)庫的所有連接進(jìn)行審計(jì),以及對(duì)數(shù)據(jù)庫的所有表的成功地或不成功地刪除進(jìn)行審計(jì)。
監(jiān)視和收集關(guān)于指定數(shù)據(jù)庫活動(dòng)的數(shù)據(jù)。例如:DBA可收集哪些被修改、執(zhí)行了多少次邏輯的I/O等統(tǒng)計(jì)數(shù)據(jù)。
數(shù)據(jù)庫常見攻擊與防護(hù)
1 破解弱口令或默認(rèn)的用戶名及口令
Oracle數(shù)據(jù)庫常見缺省用戶:SYS、SYSTEM、DBSNMP、SCOTT
數(shù)據(jù)庫常見缺省用戶:SA
2 特權(quán)提升
特權(quán)提升:惡意的用戶占有超過其應(yīng)該具有的系統(tǒng)特權(quán)
原因:
數(shù)據(jù)庫管理系統(tǒng)漏洞
如:oracle 10g DBMS_Scheduler本地特權(quán)提升漏洞:任何擁有CREATE JOB權(quán)限可通過dbms_scheduler執(zhí)行一個(gè)數(shù)據(jù)庫作業(yè)而轉(zhuǎn)換SESSION_USER到SYS,本地攻擊者可以利用此漏洞提升權(quán)限。
錯(cuò)誤的配置:一個(gè)用戶被錯(cuò)誤地授與了超過其實(shí)際需要用來完成工作的、對(duì)數(shù)據(jù)庫及其相關(guān)應(yīng)用程序的訪問和特權(quán)。
3 利用未用的數(shù)據(jù)庫服務(wù)和功能中的漏洞
利用未用的和不需要的數(shù)據(jù)庫服務(wù)和功能中的漏洞
利用未用的和不需要的數(shù)據(jù)庫服務(wù)和功能中的配置缺陷
4 針對(duì)未打補(bǔ)丁的數(shù)據(jù)庫漏洞
雖然Oracle和其它的數(shù)據(jù)庫廠商確實(shí)在為其漏洞打補(bǔ)丁,問題是單位不能跟得上這些補(bǔ)丁,因此它們總是處于企圖利用某種機(jī)會(huì)的老謀深算的攻擊者控制之下。
5 SQL注入攻擊及防護(hù)
漏洞原理:在數(shù)據(jù)庫應(yīng)用的編程過程中,由于程序員沒有對(duì)用戶輸入數(shù)據(jù)進(jìn)行規(guī)范檢查,導(dǎo)致攻擊者能夠通過構(gòu)造惡意輸入數(shù)據(jù),操作數(shù)據(jù)庫執(zhí)行,甚至能直接攻擊操作系統(tǒng)
SQL Injection(SQL注入),就是利用某些數(shù)據(jù)庫的外部應(yīng)用把特定的數(shù)據(jù)命令插入到實(shí)際的數(shù)據(jù)庫操作語言當(dāng)中,從而達(dá)到入侵?jǐn)?shù)據(jù)庫乃至操作系統(tǒng)的目的。
解決方案:
從根本上避免出現(xiàn)SQL Injection漏洞,必須提高WEB程序員的安全意識(shí)和安全編程技能來解決程序本身的漏洞;
代碼中必須對(duì)所有用戶輸入進(jìn)行嚴(yán)格的過濾,對(duì)單引號(hào)、雙引號(hào)以及“--”等符號(hào)、非指定的數(shù)據(jù)類型及數(shù)據(jù)長(zhǎng)度進(jìn)行過濾;
用存儲(chǔ)過程來執(zhí)行所有的查詢
限制表單或查詢字符串輸入的長(zhǎng)度
檢查用戶輸入的合法性,確信輸入的內(nèi)容只包含合法的數(shù)據(jù)
將用戶登錄名稱、密碼等數(shù)據(jù)加密保存
檢查提取數(shù)據(jù)的查詢所返回的記錄數(shù)量
合理設(shè)置數(shù)據(jù)庫應(yīng)用程序的權(quán)限;
對(duì)數(shù)據(jù)庫系統(tǒng)進(jìn)行必要的安全配置。