當前位置:
首頁 > 新聞 > 互聯網公司WAF系統設計

互聯網公司WAF系統設計

0×01 WAF簡介

WAF 全稱是Web Application Firewall, 簡單講就是web防火牆, 是對web業務進行防護的一種安全防護手段。

其實,現在很多的移動app,也是使用的http協議進行數據交換,也可以理解成web業務,可以對app server進行防護。

主要的web危害,一般指的是OWASP Top 10,比如SQL注入、XSS、CSRF等常見的web危害方法。當然可能不止這些方法,比如社工。輕則用你的伺服器打個ddos,重則數據全部被盜,損失公司的信譽和money。

互聯網公司的業務傾向於雲平台,雲WAF就應運而生,除去考慮硬體WAF的考慮,下面只講基於互聯網公司的需求,打造一款WAF聯動系統。


0×02 WAF基本組成

大部分互聯網公司的業務,都會使用Nginx做各種各樣的工作,負載均衡、A/B測試、Web網關等等的功能;另外,加上openresty(nginx + lua)的開發效率和易用性,提高了程序猿開發nginx功能的效率。

現在互聯網公司招WAF開發的,一般都會加上nginx lua的要求,可見使用nginx + lua開發WAF,實在是天時地利人和。

現在簡單的說一下WAF系統的組成。WAF系統主要是由三部分組成的:執行前端、後端中心系統及資料庫。

執行前端是WAF的執行引擎, 主要是根據規則進行過濾。根據規則匹配的結果,執行相應的動作。

後端中心系統主要是生成規則的邏輯,並與執行前端的nginx進行必要的數據交換。

資料庫就是存放規則和一些配置及狀態的地方,可以根據實際情況,選擇關係型資料庫或者Nosql。

其中,可以看到後端中心系統相當於WAF的大腦,會根據不同的域名或者設備hostname的配置生成對應的邏輯。當執行前端拉取配置和規則時, 後端中心會把它對應的內容發給執行前端。

這裡做成集中式的管理模式,主要是方便統一管理,另外可以監控執行前端的狀態,具體的狀態數據,可以根據實際的情況進行協商,目前是建議json數據走http協議,方便易用。當然,數據傳輸的過程最好還是使用對稱加密加base64 encode。


0×03 WAF細節考慮

一直比較關注cloudflare的雲WAF,基本上WAF規則可以考慮為三類(不考慮長亭科技的sqlchop https://github.com/chaitin/sqlchop ,據說有類似的xss 要開源):: 1. 通用的規則,比如sql、xss 規則,攔截惡意爬蟲和掃描器等等的非常有效,這種基本上通用的。

2. cms規則,就是根據不同的cms,根據相應的漏洞定製的規則,比如php網站,不可能存在java語言的漏洞,具有專一性。

3. 自定義規則,這就是根據自己的需求,自定義一些規則。根據入侵類型,再細分就會更多了,攔截shell、爬蟲等等的,這裡只是輸了大概。

在github上面,最具參考的lua waf 就屬 https://github.com/p0pr0ck5/lua-resty-waf 她了, 其它的並不是說不好,然而只有這個最接近Modsecurity的邏輯, 最突出的有點就是規則的彈性化,最接近Modsecrity的規則。

不過, https://github.com/starjun/openstar 裡面的很多防禦方法,也是可以借鑒的。


執行前端:

基於p0pr0ck5 的WAF,二次修改一下,就可以做成上述的執行前端,但是它是有Bug的,生產環境下需要線下流量測試。

主要在這個基礎上,添加拉取配置和規則的timer就可以了, 有些人說用zookeeper什麼的, 另外還有用的http 來進行配置更新通知,zookeeper不建議,當你reload的時候,就可以看見很多nginx 處於shutting down狀態,就只zookeeper處於keepalive狀態。

使用http訪問加共享內存,京東的濤哥是這樣做的,也是有些坑,不過timer最簡單,每個worker單獨維護一個配置,避免了鎖的情況。

另外,收集日誌最好不要用kafka, 打火焰圖的時候,明顯cpu時間有點長,用tcp或者http 發送最靠譜。執行前端大概就是這些內容,記得加上xpcall 能把一些小的問題catch到,避免影響請求。

所有的配置是用json傳輸的,然後轉換成 lua的數據格式,使其能正確識別出WAF規則。WAF規則類似如下:


確保WAF能夠識別出這些規則就可以了,嚴格按照它的格式來,畢竟lua腳本的優勢在這裡體現的一覽無餘。


後端中心系統

:

後端中心系統同樣是使用的Openresty(別的我也不會,開個玩笑),設計成類似api網關,還是那句話好管理。根據不同的域名和設備Hostname發送不同的配置。

甚至,可以把所有WAF的邏輯放到這裡,這是lua支持熱載入的功能。這裡是如何做你的WAF的關鍵,主要邏輯還是在這裡。

這裡是一些基本配置涵蓋了:



WAF基本配置,包括了規則拉取服務配置、日誌中心配置及更新組件等配置。
這些基本配置決定了,WAF主要的邏輯處理。


IP列表, 包括了所有黑名單的ip,及對應host或者uri對應的ip,其中,支持配置生效時間。


規則列表,主要是Web入侵規則配置,包括了default集合及對應host的waf配置。

基本配置主要是配置規則拉取服務配置、日誌中心配置及更新組件等配置。這些配置也可以有由服務端動態生成。


IP列表, 其中有些是全局封禁,有些是針對某些介面,配置有過期時間的功能。


規則的內容就是上面已經列出的內容了。 其中因為要適合配置的邏輯需要根據根據自己的需求進行修改。


資料庫和Web:

資料庫規則設計:


這個是最主要的,有些屬性暫時沒有設置。

對於web而言,主要還是配合下發配置,規則方面,我是設置了三層結構:規則->規則組->host。

它們只是邏輯上的關係,具體在後面邏輯實現時,會把散列的規則進行分組並根據資料庫的邏輯進行組合,生成對唯一host的配置。同理,可以設置不同的分組,達到灰度測試的目的。

這是具體規則的web設置,規則配置增刪改規則,規則分組則是對規則分組的增刪改操作,規則應用則是對不同host配置不同的規則分組。 這裡說明一下,規則分組是按照XSS、SQLi 、灰度等功能分開的,對於host進行不同的配置。

目前,阿里雲有自定義的規則,太單一,遠遠比不上cloudflare的設計,而且cloudflare更貼近互聯網公司的需求,最主要的如何讓自定義功能更有彈性,更大限度的支持規則的彈性。

簡簡單單,就說了個大概, 如果真的對WAF有研究的話,剩餘的就比較輕鬆了,算是拋磚引玉了。


0×04 其它

記得有個作者提到,WAF位置卡位比較好, 現在很多CC和掃描器都是在七層防禦的,WAF封禁某些ip和用戶還是比較靠譜的,另外很多是cdn過來的請求,只能靠x-forward-for取出來的ip進行封禁,當然它可以偽造,就看數據分析的能力,把真實的ip抓出來。

WAF規則p0pr0ck5 提供了一些Modsecurity轉譯的,可以參考它實現自己的規則。另外,WAF的性能也很重要,章亦春大神的很多講座ppt有提到的,可以作為參考。章亦春大神已經創業了,它打造的商業openresty就有WAF的支持。

最後,就先寫這些吧,有問題的可以私信我,後面會引入大數據分析和安全數據挖掘。第一次發文章,歡迎各位大神輕拍。


*本文作者:chengfangang,轉載請註明來自Freebuf.COM


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

這款奇葩的Android勒索軟體竟然讓受害者用語音說出解鎖密碼
WikiLeaks Vault 7檔案下載(包含大量 CIA 工具和文檔)
一張圖看懂IoT發展及安全性現狀
看我如何發現Facebook註冊用戶手機號碼

TAG:FreeBuf |

您可能感興趣

研究機構/新創公司聯手優化AI晶元設計
一種配電SCADA通信安全防護系統的設計
基於移動互聯網+物聯網的孕產高危管理信息系統研究與設計
關於BRD設計
CMF設計軍團
VOLVO汽車技術有限公司設計部
歐洲設計創意考察·AI·汽車·IoT·機器人
IC 設計行業及相關上市公司梳理
HUAWEI Mate RS保時捷設計讓電子設計成就藝術之美!
ADI公司即插即用型天線晶元 幫助航空電子和通信設備設計人員簡化相控陣雷達設計
拳頭公司CG原畫設計師「Zeronis」(英雄聯盟)及其他作品分享
AI+PS創意海報字體設計
基於FPGA的TCP/IP硬體協議棧研究與設計
全球TOP10 IC設計公司排行榜:AMD、NVIDIA漲瘋了
科技先鋒 金融科技NEX Group紐約總部辦公設計欣賞
聯想推USB PD快充移動電源 專為ThinkPad電腦設計
AI-藝術展覽海報設計
最強HUAWEI 手機有行貨保時捷設計HUAWEI MATE RS盛惠
與vivo APEX相似 官方自曝聯想新機設計圖
Arm發布Artisan物理IP,將加速基於台積電22nm ULP/ULL平台的主流移動和物聯網設備SoC設計