資料庫安全
資料庫安全
資料庫安全包含兩層含義:第一層是指系統運行安全,系統運行安全通常受到的威脅如下,一些網路不法分子通過網路,區域網等途徑通過入侵電腦使系統無法正常啟動,或超負荷讓機子運行大量演演算法,並關閉cpu風扇,使cpu過熱燒壞等破壞性活動;第二層是指系統信息安全,系統安全通常受到的威脅如下,黑客對資料庫入侵,並盜取想要的資料。
據Verizon2012年的數據泄露調查分析報告和對發生的信息安全事件技術分析,總結出信息泄露呈現兩個趨勢:
(2)數據泄露常常發生在內部,大量的運維人員直接接觸敏感數據,傳統以防外為主的網路安全解決方案失去了用武之地。
資料庫在這些泄露事件成為了主角,這與我們在傳統的安全建設中忽略了資料庫安全問題有關,在傳統的信息安全防護體系中資料庫處於被保護的核心位置,不易被外部黑客攻擊,同時資料庫自身已經具備強大安全措施,表面上看足夠安全,但這種傳統安全防禦的思路,存在致命的缺陷。
Xsecure產品系列實現對資料庫的全方位防護,需要覆蓋資料庫的事前、事中、事後安全;覆蓋資料庫應用安全、維護安全、使用安全和存儲安全;是最全面的資料庫防泄露產品。
資料庫漏洞掃描系統Xsecure-DBScan,是一款幫助用戶對當前的資料庫系統進行自動化安全評估的專業軟體,能有效暴露當前資料庫系統的安全問題,提供對資料庫的安全狀況進行持續化監控,幫助用戶保持資料庫的安全健康狀態。
發現外部黑客攻擊漏洞,防止外部攻擊:實現非授權的從外到內的檢測;模擬黑客使用的漏洞發現技術,在沒有授權的情況下,對目標資料庫的安全性作深入的探測分析;收集外部人員可以利用的資料庫漏洞的詳細信息。
分析內部不安全配置,防止越權訪問:通過只讀賬戶,實現由內到外的檢測;提供現有數據的漏洞透視圖和資料庫配置安全評估;避免內外部的非授權訪問。
監控資料庫安全狀況,防止資料庫安全狀況惡化:對於資料庫建立安全基線,對資料庫進行定期掃描,對所有安全狀況發生的變化進行報告和分析。
資料庫保險箱Xsecure-DBCoffer,是一款基於透明加密技術的資料庫防泄漏系統,該產品能夠實現對資料庫中的敏感數據加密存儲、訪問控制增強、應用訪問安全、安全審計以及三權分立等功能。BCoffer基於主動防禦機制,可以防止明文存儲引起的數據泄密、突破邊界防護的外部黑客攻擊、內部高許可權用戶的數據竊取、逃開應用系統非法訪問資料庫,從根源上防止敏感數據泄漏。DBCoffer通過獨創的、已獲專利的三層視圖技術和密文索引等核心技術,突破了傳統資料庫安全加固產品的技術瓶頸,真正實現了數據高度安全、應用完全透明、密文高效訪問。
資料庫防火牆系統Xsecure-DBFirewall,是一款基於資料庫協議分析與控制技術的資料庫安全防護系統。DBFirewall基於主動防禦機制,實現資料庫的訪問行為控制、危險操作阻斷、可疑行為審計;通過SQL協議分析,根據預定義的禁止和許可策略讓合法的SQL操作通過,阻斷非法違規操作,形成資料庫的外圍防禦圈,實現SQL危險操作的主動預防、實時審計;面對來自於外部的入侵行為,提供SQL注入禁止和資料庫虛擬補丁包功能;通過虛擬補丁包,資料庫系統不用升級、打補丁,即可完成對主要資料庫漏洞的防控。
操作系統中的對象一般情況下是文件,而資料庫支持的應用要求更為精細。通常比較完整的資料庫對數據安全性採取以下措施:
(1)將資料庫中需要保護的部分與其他部分相隔。
(2)採用授權規則,如賬戶、口令和許可權控制等訪問控制方法。
(3)對數據進行加密后存儲於資料庫。
數據完整性包括數據的正確性、有效性和一致性。正確性是指數據的輸入值與數據表對應域的類型一樣;有效性是指資料庫中的理論數值滿足現實應用中對該數值段的約束;一致性是指不同用戶使用的同一數據應該是一樣的。保證數據的完整性,需要防止合法用戶使用資料庫時向資料庫中加入不合語義的數據。
如果資料庫應用要實現多用戶共享數據,就可能在同一時刻多個用戶要存取數據,這種事件叫做併發事件。當一個用戶取出數據進行修改,在修改存入資料庫之前如有其它用戶再取此數據,那麼讀出的數據就是不正確的。這時就需要對這種併發操作施行控制,排除和避免這種錯誤的發生,保證數據的正確性。
由資料庫管理系統提供一套方法,可及時發現故障和修復故障,從而防止數據被破壞。資料庫系統能儘快恢復資料庫系統運行時出現的故障,可能是物理上或是邏輯上的錯誤。比如對系統的誤操作造成的數據錯誤等。
資料庫的安全配置在進行安全配置之前,首先必須對操作系統進行安全配置,保證操作系統處於安全狀態。然後對要使用的操作資料庫軟體(程序)進行必要的安全審核,比如對ASP、PHP等腳本,這是很多基於資料庫的Web應用常出現的安全隱患,對於腳本主要是一個過濾問題,需要過濾一些類似“,; @ /”等字元,防止破壞者構造惡意的SQL語句。接著,安裝SQL Server2000后請打上最新SQL補丁SP4。
SQL Server的安全配置
1.使用安全的密碼策略
把密碼策略擺在所有安全配置的第一步,請注意,很多資料庫賬號的密碼過於簡單,這跟系統密碼過於簡單是一個道理。對於sa更應該注意,同時不要讓sa賬號的密碼寫於應用程序或者腳本中。健壯的密碼是安全的第一步,建議密碼含有多種數字字母組合併9位以上。SQL Server2000安裝的時候,如果是使用混合模式,那麼就需要輸入sa的密碼,除非您確認必須使用空密碼,這比以前的版本有所改進。同時養成定期修改密碼的好習慣,資料庫管理員應該定期查看是否有不符合密碼要求的賬號。
2.使用安全的賬號策略
由於SQL Server不能更改sa用戶名稱,也不能刪除這個超級用戶,所以,我們必須對這個賬號進行最強的保護,當然,包括使用一個非常強壯的密碼,最好不要在資料庫應用中使用sa賬號,只有當沒有其他方法登錄到 SQL Server 實例(例如,當其他系統管理員不可用或忘記了密碼)時才使用 sa。建議資料庫管理員新建立個擁有與sa一樣許可權的超級用戶來管理資料庫。安全的賬號策略還包括不要讓管理員許可權的賬號泛濫。
SQL Server的認證模式有Windows身份認證和混合身份認證兩種。如果資料庫管理員不希望操作系統管理員來通過操作系統登錄來接觸資料庫的話,可以在賬號管理中把系統賬號“BUILTIN\Administrators”刪除。不過這樣做的結果是一旦sa賬號忘記密碼的話,就沒有辦法來恢復了。很多主機使用資料庫應用只是用來做查詢、修改等簡單功能的,請根據實際需要分配賬號,並賦予僅僅能夠滿足應用要求和需要的許可權。比如,只要查詢功能的,那麼就使用一個簡單的public賬號能夠select就可以了。
3.加強資料庫日誌的記錄
審核資料庫登錄事件的“失敗和成功”,在實例屬性中選擇“安全性”,將其中的審核級別選定為全部,這樣在資料庫系統和操作系統日誌裡面,就詳細記錄了所有賬號的登錄事件。請定期查看SQL Server日誌檢查是否有可疑的登錄事件發生,或者使用DOS命令。
4.管理擴展存儲過程
對存儲過程進行大手術,並且對賬號調用擴展存儲過程的許可權要慎重。其實在多數應用中根本用不到多少系統的存儲過程,而SQL Server的這麼多系統存儲過程只是用來適應廣大用戶需求的,所以請刪除不必要的存儲過程,因為有些系統的存儲過程能很容易地被人利用起來提升許可權或進行破壞。如果您不需要擴展存儲過程Xp_cmdshell請把它去掉。使用這個SQL語句:
use master
sp_dropextendedproc 'Xp_cmdshell'
Xp_cmdshell是進入操作系統的最佳捷徑,是資料庫留給操作系統的一個大後門。如果您需要這個存儲過程,請用這個語句也可以恢復過來。
sp_addextendedproc 'xp_cmdshell', 'xpSQL70.dll'
如果您不需要請丟棄OLE自動存儲過程(會造成管理器中的某些特徵不能使用)。
這些過程如下: Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty
Sp_OAMethod Sp_OASetProperty Sp_OAStop
去掉不需要的註冊表訪問的存儲過程,註冊表存儲過程甚至能夠讀出操作系統管理員的密碼來,命令如下:
Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue
Xp_regenumvalues Xp_regread Xp_regremovemultistring
Xp_regwrite
還有一些其他的擴展存儲過程,也最好檢查檢查。在處理存儲過程的時候,請確認一下,避免造成對資料庫或應用程序的傷害。
5.使用協議加密
SQL Server 2000使用的Tabular Data Stream協議來進行網路數據交換,如果不加密的話,所有的網路傳輸都是明文的,包括密碼、資料庫內容等,這是一個很大的安全威脅。能被人在網路中截獲到他們需要的東西,包括資料庫賬號和密碼。所以,在條件容許情況下,最好使用SSL來加密協議,當然,您需要一個證書來支持。
6.不要讓人隨便探測到您的TCP/IP埠
默認情況下,SQL Server使用1433埠監聽,很多人都說SQL Server配置的時候要把這個埠改變,這樣別人就不會輕易地知道使用的什麼埠了。可惜,通過微軟未公開的1434埠的UDP探測可以很容易知道SQL Server使用的什麼TCP/IP埠。不過微軟還是考慮到了這個問題,畢竟公開而且開放的埠會引起不必要的麻煩。在實例屬性中選擇TCP/IP協議的屬性。選擇隱藏 SQL Server實例。如果隱藏了SQL Server實例,則將禁止對試圖枚舉網路上現有的 SQL Server實例的客戶端所發出的廣播作出響應。這樣,別人就不能用1434來探測您的TCP/IP埠了(除非用Port Scan)。
7.修改TCP/IP使用的埠
請在上一步配置的基礎上,更改原默認的1433埠。在實例屬性中選擇網路配置中的TCP/IP協議的屬性,將TCP/IP使用的默認埠變為其他埠。
8.拒絕來自1434埠的探測
由於1434埠探測沒有限制,能夠被別人探測到一些資料庫信息,而且還可能遭到DoS攻擊讓資料庫伺服器的CPU負荷增大,所以對Windows 2000操作系統來說,在IPSec過濾拒絕掉1434埠的UDP通信,可以儘可能地隱藏您的SQL Server。
9.對網路連接進行IP限制
SQL Server 2000資料庫系統本身沒有提供網路連接的安全解決辦法,但是Windows 2000提供了這樣的安全機制。使用操作系統自己的IPSec可以實現IP數據包的安全性。請對IP連接進行限制,只保證自己的IP能夠訪問,也拒絕其他IP進行的埠連接,對來自網路上的安全威脅進行有效的控制。
上面主要介紹的一些SQL Server的安全配置,經過以上的配置,可以讓SQL Server本身具備足夠的安全防範能力。當然,更主要的還是要加強內部的安全控制和管理員的安全培訓,而且安全性問題是一個長期的解決過程,還需要以後進行更多的安全維護。
安全性控制是指要儘可能地杜絕所有可能的資料庫非法訪問。每種資料庫管理系統都會提供一些安全性控制方法供資料庫管理員選用,以下是常用的幾種方法。
用戶標識與鑒別
授權
視圖定義與查詢修改
數據加密
安全審計
1.
用戶標識與鑒別
2.
授權
3.
視圖定義與查詢修改
4.
數據加密
5.
安全審計
拖庫現象頻發,黑客盜取資料庫的技術在不斷提升。雖然資料庫的防護能力也在提升,但相比黑客的手段來說,單純的資料庫防護還是心有餘而力不足。資料庫審計已經不是一種新興的技術手段,但是卻在資料庫安全事件頻發給我們以新的啟示。資料庫受到的威脅大致有這麼幾種:
內部人員錯誤
資料庫安全的一個潛在風險就是“非故意的授權用戶攻擊”和內部人員錯誤。這種安全事件類型的最常見表現包括:由於不慎而造成意外刪除或泄漏,非故意的規避安全策略。在授權用戶無意訪問敏感數據並錯誤地修改或刪除信息時,就會發生第一種風險。在用戶為了備份或“將工作帶回家”而作了非授權的備份時,就會發生第二種風險。雖然這並不是一種惡意行為,但很明顯,它違反了公司的安全策略,並會造成數據存放到存儲設備上,在該設備遭到惡意攻擊時,就會導致非故意的安全事件。例如,筆記本電腦就能造成這種風險。
由於攻擊者使用的高級釣魚技術,在合法用戶不知不覺地將安全機密提供給攻擊者時,就會發生大量的嚴重攻擊。這些新型攻擊的成功,意味著此趨勢在 2012年繼續。在這種情況下,用戶會通過一個受到損害的網站或通過一個電子郵件響應將信息提供給看似合法的請求。應當通知僱員這種非法的請求,並教育他們不要做出響應。此外,企業還可以通過適時地檢測可疑活動,來減輕成功的釣魚攻擊的影響。資料庫活動監視和審計可以使這種攻擊的影響最小化。
內部人員攻擊
很多資料庫攻擊源自企業內部。當前的經濟環境和有關的裁員方法都有可能引起僱員的不滿,從而導致內部人員攻擊的增加。這些內部人員受到貪慾或報復欲的驅使,且不受防火牆及入侵防禦系統等的影響,容易給企業帶來風險。
錯誤配置
黑客可以使用資料庫的錯誤配置控制“肉機”訪問點,藉以繞過認證方法並訪問敏感信息。這種配置缺陷成為攻擊者藉助特權提升發動某些攻擊的主要手段。如果沒有正確的重新設置資料庫的默認配置,非特權用戶就有可能訪問未加密的文件,未打補丁的漏洞就有可能導致非授權用戶訪問敏感數據。
未打補丁的漏洞
如今攻擊已經從公開的漏洞利用發展到更精細的方法,並敢於挑戰傳統的入侵檢測機制。漏洞利用的腳本在資料庫補丁發布的幾小時內就可以被發到網上。當即就可以使用的漏洞利用代碼,再加上幾十天的補丁周期(在多數企業中如此),實質上幾乎把資料庫的大門完全打開了。
高級持續威脅
之所以稱其為高級持續性威脅,是因為實施這種威脅的是有組織的專業公司或政府機構,它們掌握了威脅資料庫安全的大量技術和技巧,而且是“咬定青山不放鬆”“立根原在"金錢(有資金支持)"中”,“千磨萬擊還堅勁,任爾東西南北風”。這是一種正甚囂塵上的風險:熱衷於竊取數據的公司甚至外國政府專門竊取存儲在資料庫中的大量關鍵數據,不再滿足於獲得一些簡單的數據。特別是一些個人的私密及金融信息,一旦失竊,這些數據記錄就可以在信息黑市上銷售或使用,並被其它政府機構操縱。鑒於資料庫攻擊涉及到成千上萬甚至上百萬的記錄,所以其日益增長和普遍。通過鎖定資料庫漏洞並密切監視對關鍵數據存儲的訪問,資料庫的專家們可以及時發現並阻止這些攻擊。
指定一位系統的UNIX系統管理員。此人員的職務是管理UNIX環境,包括使用者、應用程序、檔案系統及裝置。使用者的管理注重在建立適當安全性的使用者帳號上,及定期去除不再使用的帳號。UNIX系統管理員通常必須負責維持根密碼(root password)的安全性。UNIX系統管理員必須負責執行企業的安全政策(security policy)及5300系統上的標準。