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