SQL Server安全問題案例研究
編者按:本系列關于SQL Server安全的文章共分四部分,本文是第一部分。
數(shù)據(jù)庫備份被盜了,病毒攻擊了服務器,數(shù)據(jù)庫有未經(jīng)授權的更改——如果SQL Server安全保護設置寬松的話,這些事情都會發(fā)生。
數(shù)據(jù)庫技術本質(zhì)上就是許多信息系統(tǒng)的組件,這是由于它們用來存儲大量敏感企業(yè)數(shù)據(jù)而決定的,比如客戶信息和其它機密商業(yè)數(shù)據(jù)。正因如此,把像SQL Server這樣的數(shù)據(jù)庫稱為任何組織最有價值的資產(chǎn)并不為過,這也正是數(shù)據(jù)庫在內(nèi)部和外部攻擊面前必須確保安全的原因。
不幸的是,事實并非如此,許多組織仍然發(fā)現(xiàn)數(shù)據(jù)庫安全是一個不太受人關注的話題。結果,他們沒有全面的數(shù)據(jù)庫安全策略來保護他們的數(shù)據(jù)庫基礎設施不受內(nèi)部和外部攻擊。許多數(shù)據(jù)庫甚至不能滿足常規(guī)法規(guī)需求,比如Gramm-Leach-Bliley法案(簡稱GLBA)、歐洲數(shù)據(jù)保護聯(lián)盟(簡稱EUDPD)、健康保險流通與責任法案(簡稱HIPAA)、支付卡行業(yè)數(shù)據(jù)安全標準(簡稱PCI DSS)以及塞班斯法案(簡稱SOX)。
公司缺乏SQL Server安全策略
XYZ公司是一家大型制藥公司,在全球范圍內(nèi)針對小型制藥公司銷售各種醫(yī)藥產(chǎn)品。因為SQL Server有良好的往績記錄,漏洞和弱點比較少,所以XYZ公司使用SQL Server作為主數(shù)據(jù)庫技術,存儲公司的保密數(shù)據(jù),比如客戶信息、卡信息和員工信息。這些數(shù)據(jù)是從原始Excel電子表格中移植過來的。近幾年來,XYZ公司已經(jīng)在其所有業(yè)務領域獲得了顯著增長。然而,在過去一年里,該公司卻面臨巨大輿論壓力——泄露客戶數(shù)據(jù),未經(jīng)授權訪問以及其它造成SQL Server基礎設施不安全的原因。
下面是XYZ公司SQL Server基礎設施安全漏洞列表:
◆未經(jīng)授權的更改。
在過去的一年中,未經(jīng)授權的數(shù)據(jù)庫變更是其SQL Server基礎設施故障的主要因素。這是因為XYZ公司目前沒有變更管理流程。未經(jīng)授權對數(shù)據(jù)庫變更意味著更大的外部威脅,比如來自外部黑客或惡意代碼的攻擊。
對于XYZ公司SQL Server數(shù)據(jù)庫代碼部署,很需要一套文檔化而且健全的變更管理流程,因為它可以確保授權變更應用到生產(chǎn)數(shù)據(jù)庫并避免不必要的風險。
◆未授權用戶。
在少數(shù)情況下,會有未經(jīng)授權的用戶連續(xù)訪問XYZ公司的SQL Server數(shù)據(jù)庫。這主要發(fā)生在SQL Server實例配置為混合授權模式的情況下,或者“BUILTIN\Administrators”是“系統(tǒng)管理員”角色也有可能發(fā)生。經(jīng)調(diào)查,大部分SQL登錄(包括用sysadmin(sa)權限的登錄)存在漏洞或者空密碼,而且用戶沒有被強制要求定期修改密碼。
微軟SQL Server安全最佳實踐建議你在混合認證模式使用Windows認證,因為SQL Server存儲的SQL登錄密碼是純文本形式。如果混合模式是為了向后兼容的緣故,那么要確保給sysadmin和所有其它SQL登錄賬號使用復雜密碼。這一點可以通過對sysadmin和所有其它SQL登錄用戶啟用“強制密碼過期”和“強制實施密碼策略”選項實現(xiàn)。
SQL Server安全最佳實踐還推薦對這些賬號重命名,因為sysadmin是超級用戶,許多黑客都知道這個賬號,修改用戶名會使得黑客控制攻擊更困難。最佳實踐還建議不要使用sysadmin管理SQL Server。同時,確保“BUILTIN\Administrators”不是sysadmin角色成員;而要授予sysadmin權限給本地管理員組中的任何賬號。
◆SQL注入攻擊。
SQL注入是未經(jīng)授權訪問數(shù)據(jù)庫的另一種方式。那是因為應用程序中的SQL代碼允許直接更新表,而且大部分SQL代碼參數(shù)沒有做驗證。推薦驗證代碼參數(shù)并用SQL Server存儲過程執(zhí)行所有數(shù)據(jù)庫更新。
◆來賓用戶。
使用與數(shù)據(jù)庫內(nèi)部用戶沒有關聯(lián)的用戶登錄仍然有可能訪問到敏感數(shù)據(jù)。這是因為這些數(shù)據(jù)庫啟用了來賓賬戶。所以我們要禁用來賓賬號。這將確保公共服務器角色不能訪問到SQL Server中的用戶數(shù)據(jù)庫,除非你明確地賦予了對數(shù)據(jù)庫的訪問權限。
◆計算機病毒攻擊。
XYZ公司的SQL Server在前幾年已經(jīng)被計算機病毒攻擊了幾次。大部分SQL Server安全補丁、修復包以及更新包還沒有應用到這些受影響的SQL Server上。微軟公司持續(xù)發(fā)布的安全更新和補丁應該升級上去,這樣能保護避免前述問題。
◆使用慣用的TCP/IP端口。
人們已經(jīng)注意到大部分服務器攻擊情況,黑客使用的是慣用的TCP/IP端口,比如1433和1432。如果條件允許的話,應該修改這些標準端口,可以確保SQL Server安全。
◆數(shù)據(jù)庫備份被盜。
在過去幾個月里,人們已經(jīng)注意到由于網(wǎng)絡安全性不足導致的數(shù)據(jù)庫備份被盜情況。而且,數(shù)據(jù)已經(jīng)被盜,從表復制到操作系統(tǒng)文件。XYZ公司接到建議,加強數(shù)據(jù)庫備份安全性,啟用透明數(shù)據(jù)加密。另外,要確保SQL Server實例上的“xp_cmdshell ”和“OPENROWSET ”保持禁用,只有系統(tǒng)管理員能訪問這些SQL Server功能特性。
◆缺乏監(jiān)視。
目前,XYZ公司SQL Server數(shù)據(jù)庫的SQL Server用戶活動并沒有被監(jiān)視起來。很明顯,這就為黑客打開了大門,他們可以訪問該公司服務器而沒有任何后顧之憂。SQL Server提供了各種功能,比如登錄審計或者登錄觸發(fā)器,通用遵守準則,ddl觸發(fā)器,甚至還有專門跟蹤SQL Server惡意活動的通知和審計。