企業安全建設(二):構建開源企業WAF
閱讀說明:WAF就是Web防火牆,是對Web業務進行防護的一種工具。基本上,只要是利用HTTP/HTTPS協議進行互動的應用,都用得著WAF。Web應用通常充當著攻擊者入口的角色。本篇推薦幾款開源WAF,適用有一定動手能力,且預算不多的網路安全職能部門(如:一個人的網路安全部門)。開源產品雖然坑比較多,但是踩坑還是一件很快樂的事。
隨著網際網路應用技術的不斷髮展,Web應用越來越受到業務系統的重視,早期的Web應用在多數人的理解中,似乎就是網站。如今的電子商務、網上銀行、網上營業廳、以及新型醫院HIS系統,等眾多B/S架構的應用均以Web為載體。Web也由早期的網站轉變為網上購物、網上交易、網上辦公等多種業務應用系統。
1 WAF是什麼?
WAF,全稱 Web Application FireWall,也就是Web應用防火牆。在早期入口網站時代,我們所面臨的安全威脅主要源自網站被黑或者網站頁面被篡改,因此網頁防篡改技術得到成長並大量使用。應用推動系統架構革新,而系統架構革新推動了安全技術的發展。WEB應用防火牆也不例外,也是在現有WEB防護技術力日益無法滿足業務的新需求時誕生的。WAF即Web應用防火牆,是通過執行對HTTP/HTTPS請求的過濾,並對Web應用提供保護的一種產品。抵禦大量的攻擊行為。
我們現在使用的手機端app,多數的資料交方式依然是通過Web與伺服器進行通訊。那麼這些Web Api在呼叫時,隨之而來的安全風險,同樣可以交給WAF來處理。不過這裡我要申明一點, 這個世界上沒有絕對安全的產品 ,相信我, 絕對 沒有“ 絕對 ”。
2 為什要使用WAF?
在軟體應用的整個生命週期中,資訊保安工作包括了開發編碼,測試上線流程、升級維護、網路防護、日誌審計等一系列工作,即使這樣也無法保證100%的安全。那麼,企業投入10--30萬來上一臺WAF裝置,攔截90%以上的來自網際網路的攻擊,使得攻擊者沒有機會來嘗試。相比動輒幾百萬的安全監控專案,還不能保證100%的安全,我相信多數人都會選WAF。當然,無論你是選擇商用或開源產品。
3 有哪些WAF是開源的?
如果你查詢了搜尋引擎,那麼通常你會得到兩種結果: ModSecurity 和 OpenResty 。
前者確實是開源WAF,而後者是Nginx+lua(第三方Web平臺)。不可否認的是 OpenResty 確實是優秀的Web服務端平臺,可實現各種你能想到的功能(包括WAF)。但開源的世界從來不缺少優秀的專案,優秀的開源WAF包括但不限於: ModSecurity 、 NAXSI 、 WebKnight 、 Shadow Daemon, 當然還有我最近在用的 JXWAF(基於OpenResty) 。
4 開始討論WAF建設吧
除自建開源WAF之外,我們還有很多優秀的雲WAF可以選擇。雲WAF是在CDN技術上的一種擴充套件,反向代理使用者請求,並過濾攻擊請求。它應該是這個樣子的:
(請無檢視畫的醜,我是一邊畫圖一邊寫稿)
雲WAF接收到請求,也是通過Internet的方式請求真實的Web伺服器,國內有: 百度雲加速 , 360網站衛士 等優秀的免費雲WAF可以使用。
但是,如果你認為,使用了雲端WAF就沒事兒了? 那就真的大錯特錯了!
通常,Web業務都會先上線,再根據業務需求做雲端WAF的解析接入。這時候有兩點致命的安全問題:1, Web服務會開放到網際網路上,不會只開放給雲端WAF (也就是,本地修改hosts,即可訪問),當然,這方便了公司內部的開發人員和運維,但隱患也在這裡;2, 只為上線雲端WAF,沒必要更換Web服務的IP地址吧 ?
問題就在這裡,攻擊者可以通過 查詢 DNS歷史解析 ,很快可以找到真實的主機,更改到本地hosts或自建本地DNS,就優雅的繞過雲端WAF了。畢竟,資訊收集只是滲透測試的第一步。
但是,這並不是說雲端WAF沒有用,雲端WAF確實會攔截很多掃描類的攻擊,但要想防止攻擊者,雲端WAF確實還有所欠缺。
那麼,是不是該討論自建WAF了?以下給出推薦的開源WAF,搭建方式可以在官網找到,就不在這裡貼出了。
1.JXWAF
https://github.com/jx-sec/jxwaf
JXWAF(錦衣盾)是一款基於OpenResty(Nginx+Lua)開發的下一代web應用防火牆,獨創的業務邏輯防護引擎和機器學習引擎可以有效對業務安全風險進行防護,解決傳統WAF無法對業務安全進行防護的痛點。內建的語義分析引擎配合機器學習引擎可以避免傳統WAF規則疊加太多導致速度變慢的問題,同時增強檢測精準性(低誤報、低漏報)。
功能優勢不是最大的,既然是開源,當然是中文社群了。QQ群是最方便的工具,你有任何問題都可以快速得到響應 ( JXWAF QQ Group: 730947092)
OpenResty具有快速上手的優勢(當然如果你有開發能力的話),也是我非常喜歡的Web引擎。
2.ModSecurity
http://www.modsecurity.org/
無法否認,ModSecurity確實是非常流行的開源WAF之一,有很多的開源防火牆也是參照它的實現思路。
但是可惜的是,ModSecurity並沒有圖形介面,如果你需要的話,可以考慮使用WAF-FLE(http://waf-fle.org/about/)。它可以在控制檯中儲存、搜尋和檢視事件。 3.NAXSI
https://github.com/nbs-system/naxsi
NAXSI 是 Nginx Anti XSS & SQL Injection 的縮寫。它是一個nginx的第三方模組。它預設的規則庫自稱可以過濾99%的已知Web攻擊方式。當然,如果你將它放在生產環境,則還需要根據業務配置自動學習的工作方式,根據Web應用生成私有的白名單規則。 4. WebKnight
https://www.aqtronix.com/?PageID=99
WebKnight本質上是一個 ISAPI的過濾器,它通過掃描所有請求並根據管理員設定的篩選規則對其進行請求的處理。它並不依賴需要定期更新的規則庫(這也是它最大的亮點)。在預設配置中,記錄所有被阻止的請求,管理員可以根據需要進行自定義。WebKnight 3.0具有管理Web介面,可以在其中自定義規則並執行統計等。
5.Shadow Daemon
https://shadowd.zecure.org/overview/introduction/
Shadow Daemon 是一組工具,以過濾帶有惡意引數請求的方式,來檢測、記錄和防止Web攻擊。它有一個自己的UI,管理員可以在其中執行管理WAF、它還支援PHP/Perl/Python語言框架。(PHP是這個世界上最好的語言)
Shadow Daemon可以檢測 SQL注入、XML注入、程式碼注入、命令注入、XSS、後門、本地/遠端檔案包含等漏洞。開發人員可以將其嵌入Web應用中,以提升Web業務的安全性。
05 不能讓WAF影響效能
如果你的使用者量較大,單點WAF拖累了業務。不要著急, 我們還可以做WAF池。 LVS 就是我們的最佳實踐。
LVS+Keepalived負載均衡方案雖然不是我們本篇討論的重點,這裡還是要引申出來。我們可以把WAF作為反向代理來看待,如下圖:
(請再次原諒圖醜,感謝您寬大胸懷)
既然Web伺服器可以用負載均衡的方式,代理層就不行嗎? 當然是可行的! 鑑於LVS+KeepAlived已經有太多的參考資料了,這裡就不再複製貼上了。
06 開源有哪些風險?
開源軟體在一定程度上是免費的,但要與企業業務緊密結合,仍需要投入一定的人力成本(需要踩坑),以及需要一定的開發能力。當然,只能獲取社群支援。另外,既然是開源,也是攻擊者研究的物件,沒有“絕對”安全的產品。安全類產品一旦出現漏洞不能及時處理,則形同虛設。
這時候,商用WAF的價值就凸顯出來了,國內做的不錯的WAF廠有: 遠江盛邦(WebRay)、依訊資訊、安恆資訊 等。商用WAF各廠都有特色,具體可以直接與廠商聯絡。
後記:這篇討論WAF的稿子,明明有一肚子話要說,可是寫了又刪,再寫再改,連續折騰了幾天,難道我不是明明?忽然發現,20年前30分鐘寫1200字作文的小夥兒已經不知道去哪兒了。我承認,成長會讓我們失去一些能力。但解決這個問題的最佳方案就是 持續成長 。關注 河南CISP 公眾號,我們一同成長!學習交流,請在公眾號回覆 “ 我要入群 ” 獲得入群方式(人數夠100人拉群)。
宣告:本文來自河南CISP,版權歸作者所有。文章內容僅代表作者獨立觀點,不代表安全內參立場,轉載目的在於傳遞更多資訊。如需轉載,請聯絡原作者獲取授權。