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