■李興
為什么應(yīng)用防火墻不能確保數(shù)據(jù)庫安全
■李興
Web應(yīng)用程序防火墻(WAF)現(xiàn)在已經(jīng)成為許多商業(yè)Web網(wǎng)站與系統(tǒng)的基本保護措施,它的確在防范許多針對Web系統(tǒng)的安全攻擊方面卓有成效,但是WAF在面對攻擊方式多種多樣的SQL注入方面還是顯得束手無策。所以,不要以為有了WAF的保護,數(shù)據(jù)庫安全就萬無一失了。事實上,數(shù)據(jù)庫仍然存在很大的安全隱患。
Web應(yīng)用防火墻(WAF)是一種基礎(chǔ)的安全保護模塊,主要針對HTTP訪問的Web程序保護,部署在Web應(yīng)用程序前面,在用戶請求到達Web服務(wù)器前對用戶請求進行掃描和過濾,分析并校驗每個用戶請求的網(wǎng)絡(luò)包,確保每個用戶請求有效且安全,對無效或有攻擊行為的請求進行阻斷或隔離。
WAF可通過定義一些常見的 SQL注入特征碼對常見SQL注入攻擊提供防護,比如SQL注入代碼加入到某些命令或某些輸入,這些WAF是沒有問題的。但是市面上的關(guān)系型數(shù)據(jù)總類非常多,雖然有統(tǒng)一的SQL結(jié)構(gòu)化數(shù)據(jù)查詢語言,但是每個數(shù)據(jù)庫的具體實現(xiàn)有非常多的差異,這些差異就導(dǎo)致了多種SQL注入攻擊方式的產(chǎn)生。因此也就導(dǎo)致了像WAF這類安全保護系統(tǒng)在不理解應(yīng)用程序的上下文,不熟悉數(shù)據(jù)庫類型、命令、結(jié)構(gòu)的情況下,僅僅通過分析網(wǎng)絡(luò)數(shù)據(jù)包,加上定義一些數(shù)據(jù)庫特殊字符黑名單,遠遠不足以防護多種多樣的SQL注入攻擊。
WAF在Web應(yīng)用安全防護方面的作用的確值得認可,它能有效防護多種Web攻擊,每個企業(yè)都應(yīng)該使用WAF為Web應(yīng)用程序提供安全保障。但是,千萬不要天真地以為,有了WAF你的數(shù)據(jù)庫就安全了,這種想法非常的危險。
從WAF的原理來看,WAF并不能完全保護Web應(yīng)用程序免受SQL注入攻擊,因為它在Web應(yīng)用程序外部,不了解應(yīng)用程序的上下文,不知道目標(biāo)數(shù)據(jù)庫的類型,這就從根本上決定了WAF只能防范最常見的SQL注入方式。
即使WAF做的足夠好,能夠防范絕大多數(shù)從Web系統(tǒng)進入的SQL注入攻擊,也不能斷言數(shù)據(jù)庫得到了全面的保護,因為能訪問數(shù)據(jù)庫的不僅僅是Web系統(tǒng),還有許多其他途徑。
除了Web系統(tǒng)外,還有三類主要的數(shù)據(jù)庫訪問途徑:
1.組織內(nèi)其他應(yīng)用系統(tǒng)能訪問數(shù)據(jù)庫:比如在電子商務(wù)系統(tǒng)里,價格和庫存可能會用一些自動化的腳本來定時更新。
2.一些內(nèi)部管理程序可以訪問系統(tǒng),也可能是一些接口,方便雇員添加信息或者發(fā)送信息給客戶。
3.還有就是數(shù)據(jù)庫DBA,IT經(jīng)理,QA,開發(fā)人員等等內(nèi)部人員通過數(shù)據(jù)庫管理工具可以訪問數(shù)據(jù)庫。
WAF只監(jiān)控通過HTTP方式來的數(shù)據(jù),這些潛在的數(shù)據(jù)庫訪問源頭WAF是毫不知情的,但是來自內(nèi)部的攻擊則更可怕。內(nèi)部人員非常清楚數(shù)據(jù)庫的結(jié)構(gòu)和內(nèi)容,目標(biāo)性也更加明確,不是獲取經(jīng)濟利益就是獲取大量內(nèi)部信息,造成的危害可以說是毀滅性的,比如前兩年發(fā)生在銀行客戶數(shù)據(jù)庫大規(guī)模泄露事件就很清晰地證明了這一點。同時現(xiàn)在黑客攻擊手段越來越高明,翻墻技術(shù)已經(jīng)非常成熟,而且在云時代有明顯邊界的網(wǎng)絡(luò)拓撲結(jié)構(gòu)越來越少??傊?,WAF對SQL注入攻擊的防護作用越來越小。
既然數(shù)據(jù)庫的訪問途徑很多,要想比較好的解決數(shù)據(jù)泄露的危險,多維度防護才是最佳方法,只有堵住每條可能泄露的攻擊才能確保數(shù)據(jù)庫的安全,可能的方法包括但不僅限于:
1.數(shù)據(jù)庫防火墻
2.模式學(xué)習(xí)過程
3.職責(zé)分離
4.風(fēng)險為基礎(chǔ)的政策
5.敏感信息屏蔽
6.定期審計管理和訪問敏感信息
運行時應(yīng)用程序自我保護(RASP)
RASP針對應(yīng)用程序保護的,不僅僅是對Web應(yīng)用測試,它將代碼掃描工具的漏洞發(fā)現(xiàn)功能和WAF的實時攻擊攔截能力結(jié)合起來,將這些防護功能像疫苗一樣注入到應(yīng)用程序中,讓應(yīng)用程序像人體擁有疫苗一樣。
對攻擊擁有免疫能力,找到所有已知漏洞,像一個虛擬的大補丁一樣修補所有已知漏洞,免于大多數(shù)漏洞攻擊,同時它和應(yīng)用程序一起運行同一個進程,擁有應(yīng)用程序的上下文,了解應(yīng)用程序的每一個動作,因此能精確了解每一個攻擊并能夠?qū)崟r對攻擊進行防御。比如SQL注入,它在每個數(shù)據(jù)庫JDBC的statement具體實現(xiàn)里,根據(jù)每個不同的數(shù)據(jù),有針對性地將SQL注入保護程序注入,這樣就能確保各種可能的SQL注入攻擊得到有效的防范,并且這個防護是在應(yīng)用程序訪問數(shù)據(jù)庫的必經(jīng)之路,是不可繞過的。這兩個優(yōu)勢是WAF無法企及的。如果每個應(yīng)用程序都進行RASP保護,至少無論內(nèi)外通過應(yīng)用進行SQL注入基本上是不可能的,這樣就可以堵住應(yīng)用程序訪問數(shù)據(jù)庫的漏洞。目前RASP是比較新的概念,國外有HP在做,國內(nèi)有一個初創(chuàng)安全OneRASP在做類似的產(chǎn)品。
數(shù)據(jù)庫防火墻技術(shù)是針對關(guān)系型數(shù)據(jù)庫保護需求應(yīng)運而生的一種數(shù)據(jù)庫安全主動防御技術(shù),數(shù)據(jù)庫防火墻部署于應(yīng)用服務(wù)器和數(shù)據(jù)庫之間。用戶必須通過該系統(tǒng)才能對數(shù)據(jù)庫進行訪問或管理。數(shù)據(jù)庫防火墻所采用的主動防御技術(shù)能夠主動實時監(jiān)控、識別、告警、阻擋繞過企業(yè)網(wǎng)絡(luò)邊界(FireWall、IDSIPS等)防護的外部數(shù)據(jù)攻擊、來自于內(nèi)部高權(quán)限用戶(DBA、開發(fā)人員、第三方外包服務(wù)提供商)的數(shù)據(jù)竊取、破壞、損壞等,從數(shù)據(jù)庫SQL語句精細化控制的技術(shù)層面,提供一種主動的安全防御措施。
基于自學(xué)習(xí)機制的風(fēng)險管控模型,主動監(jiān)控數(shù)據(jù)庫活動,防止未授權(quán)的數(shù)據(jù)庫訪問、SQL注入、權(quán)限或角色升級,與對敏感數(shù)據(jù)的非法訪問等。
任何類型的數(shù)據(jù)庫查詢語句或命令,都可以用一些方法來評估。影響風(fēng)險評估的因素包括白名單和黑名單,命令是從哪里過來的,在一定時間有多少個類似的命令等等,利用所有的信息,一個基于規(guī)則的系統(tǒng)可以借助一系列的規(guī)則來評估哪些命令是可疑的。
為數(shù)據(jù)庫訪問分配適當(dāng)?shù)臋?quán)限是非常必要的。基于Web的應(yīng)用程序只應(yīng)該有有限的查詢權(quán)限,數(shù)據(jù)庫管理員擁有更大的管理權(quán)限是有必要的。通過適當(dāng)?shù)貓?zhí)行職責(zé)分離,可以有效避免多種數(shù)據(jù)庫攻擊。
所有人都應(yīng)該能查看敏感數(shù)據(jù),甚至包括數(shù)據(jù)庫管理員,程序員,以及高管。DBA可以執(zhí)行一些數(shù)據(jù)庫管理任務(wù),但是沒有必要讓他們能看到數(shù)據(jù)庫中個人的敏感數(shù)據(jù),為了達到這個目的,使用一個非常強大的和實時的數(shù)據(jù)混淆解決方案是非常重要的。一些組織使用離線的“生產(chǎn)”系統(tǒng)進行屏蔽,但隨著實時數(shù)據(jù)的混淆的成熟,實時數(shù)據(jù)混淆系統(tǒng)在成本和避免數(shù)據(jù)更新方面有更大的優(yōu)勢,所有改變都可以實時在數(shù)據(jù)庫中體現(xiàn)。
定時審計對敏感數(shù)據(jù)的管理和訪問行為
一致的和可靠的審計過程中,尋找可疑的活動和更新政策,不斷提高數(shù)據(jù)庫安全還有很長的路要走。數(shù)據(jù)庫安全產(chǎn)品可以根據(jù)可定制的規(guī)則對某些種類的訪問提供警報服務(wù)。
在以前,數(shù)據(jù)庫安全保護只有少數(shù)大公司花大價錢才能搞好,數(shù)據(jù)庫防火墻非常昂貴。制定規(guī)則,審計行為都需要大量的人力去解決,小公司基本沒有能力去做?,F(xiàn)在RASP是一種非常好的解決方案,只要制定簡單規(guī)則,比如只有管理員能訪問生產(chǎn)數(shù)據(jù)庫等,其他所有數(shù)據(jù)庫訪問都通過應(yīng)用程序進行,而每個應(yīng)用程序都安裝RASP保護程序,這樣數(shù)據(jù)庫的安全才是有保障的。