很多年前,我還是個編程菜鳥,有個朋友找到我,興奮地說網絡游戲太火爆了,做個游戲虛擬商品交易平臺,收取傭金/手續費,肯定賺錢,現在完事具備,就差一個程序員了!
年輕的我一聽自然很激動,那還等啥,趕緊就干吧!
花了幾個月把系統開發出來,那時候云計算還不普及,專門買了服務器,在IDC機房托管,把系統部署上去,然后就美滋滋地等著收錢了。
第二天,我登錄到服務器,想從Apache訪問日志中看看網站的訪問情況,一看就嚇了一跳,日志文件竟然有好幾個G!
我心想剛上線的網站,這么快就火了?
仔細一看,不對,這些日志沒有幾個是正常的,都是在訪問一些奇奇怪怪的東西,類似這樣:
GET/uploads/shell.php?cmd=cat+/etc/passwd
我突然意識到:這是黑客攻擊!
在這方面我經驗很少,立刻懵了,網站才上線一天,黑客就迅速把服務器攻占了?
服務器上是不是已經被黑客留下來后門?
這個服務器還能不能用?
最后痛定思痛,解決方案是:重裝系統。
這件事我印象非常深刻:沒有防火墻的Web應用,在互聯網上幾乎就是裸奔。
現在再做類似的應用,必然要先上一個Web Appliaction Firewall (WAF)。
比如說,國產的開源Web應用防火墻:雷池。
![]()
01
雷池是什么?
雷池WAF是一款開源的、簡單高效的Web應用防火墻,不但能有效防御各類Web攻擊,還能提供訪問頻率限制、人機驗證、動態防護等功能。
它的原理很簡單:以反向代理方式接入,優先于網站服務器接收流量,對流量中的攻擊行為進行檢測和清洗,將清洗過后的流量轉發給網站服務器。
![]()
雷池全球裝機量超40萬臺,日均處理300億次請求,檢出率76.17%,誤報率僅0.22%。
02
安裝便捷,使用簡單
雷池有一些軟硬件的依賴,例如需要Linux操作系統,Docker 20.10.14版本以上,x86_64架構支持ssse3等,很容易滿足,具體詳情可以看官方文檔。
然后就可以一鍵安裝,等幾分鐘就好。
bash -c"$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)"
安裝成功以后,就可以打開瀏覽器訪問雷池控制臺了
https:// :9443/
![]()
03
強悍的防護能力
作為Web應用防火墻,雷池防護Web攻擊自然不在話下,常見的SQL注入攻擊、XSS攻擊、路徑穿越攻擊、代碼注入攻擊等都能輕松應對。
![]()
這些Web攻擊大家應該都很熟悉了,不再展開介紹。雷池的準確率、檢出率都非常高,誤報率,漏報率非常低,性能指標優于全球的一些知名產品:
![]()
這么強悍的能力,一個重要原因就是雷池采用了語義分析算法。
傳統的防火墻使用的是正則表達式匹配的方式,例如它會用這個表達式union[\w\s]*?select去檢查流量數據,如果發現包含 union 和 select 這兩個單詞,就會被認為是SQL 注入攻擊。
但是這種方式,不但可能會誤報,黑客也可以輕松繞過,他可以可以用注釋、空白、換行、分隔符、拼接或編碼把關鍵字“拆開”而不影響執行。
例如只要在在 union 和 select 中間插入了注釋字符:union /**/ select
這樣破壞了關鍵字的特征,傳統防火墻就檢測不出來了。
而雷池的語義分析就不一樣了,它并不是僅僅看字符或正則,而是理解請求意圖和結構。
它內置了多種編程語言的編譯器,對HTTP數據進行解碼后,根據不同的語言(SQL,HTML/JS,命令行)找到不同的語法編譯器,然后判斷該數據是否會構成攻擊。
很明顯,這種方式深入了語義,精確理解了用戶輸入的數據,防護效果肯定有質的提升。
04
Bot防護
Web應用最大的特點就是:代碼(JS+HTML+CSS)會被發到用戶的瀏覽器端執行,一覽無余,一點兒“隱私”都沒有。
這對于爬蟲、漏洞掃描、自動化攻擊等行為提供了“溫床”,針對這一點,雷池提供了動態防護的功能,可以對HTML,JS等代碼進行動態加密,保證每一次訪問時代碼都能以不同的、隨機的形態呈現,這就讓爬蟲和攻擊者難以“理解”網站內容,大大增加了攻擊者的難度。
![]()
比如這個JavaScript:
![]()
被雷池進行動態加密以后變成了這個樣子,很難辨認了。
![]()
除此之外,雷池防火墻還能主動進行“人機驗證”:
![]()
通過檢測客戶端的行為,比如鼠標鍵盤行為是否符合人類習慣,從而判斷它是真人在使用,還是被自動化程序控制。
![]()
如果是真人自然放行,否則就會把它“踢”出去。
05
CC防護
對Web服務器有一類非常“惡心”的攻擊叫做“CC 攻擊”(Challenge Collapsar 攻擊),是一種分布式拒絕攻擊的一種。
攻擊者會控制大量肉雞(被感染的電腦)或代理服務器,偽裝成正常瀏覽器訪問網站,如不斷訪問首頁、搜索頁、接口等。每個請求看起來都合法(有正常的 User-Agent、Referer、Cookie),但數量極其巨大。
最終讓服務器過載,網頁卡死、數據庫阻塞或服務崩潰。
![]()
由于請求看起來都合法,這種攻擊非常難以防御。
針對這種情況,雷池防火墻提供了“頻率限制”的功能,如果某個 IP 在短時間內發起大量 HTTP 請求,就阻斷該 IP 后續的所有訪問,要求它通過人機驗證,確保是真人才行。
![]()
還有不少應用存在高峰流量的情況,比如搶票,熱點事件等,如果不進行限流,服務很容易被海量的請求沖垮,誰也用不了。
當然程序員可以寫代碼,深入到網站內部去實現限流功能,但是很麻煩,使用雷池的“等待室”功能,根本不用對應用做任何改變就可以實現限流。
![]()
這里配置的在線用戶是超過了100人就需要進入等待室等候了,而進入應用的用戶,如果超過3分鐘在網頁上沒有操作,對不起,那就去等候室重新排隊吧。
06
身份認證
第一次看到這個功能可能會覺得奇怪,身份認證不是應用程序自己應該實現的嗎?防火墻為什么要來摻和?
其實,很多舊系統、內網系統的認證是很弱的,甚至是沒有的。
比如你開發了一個MQ的監控工具,部署到了服務器上,就是給內部的小團隊使用,這時候再從頭把身份認證搞起來是很麻煩的。
但是沒有身份認證的Web網站,將會給服務器安全帶來巨大的安全隱患,黑客很容易從這個“城墻缺口”進入。
這時候雷池的“身份認證”就可以上場了:
![]()
只需要在被保護的應用中簡單地設置一下,配置一下用戶賬號,你的應用瞬間就擁有了身份認證的能力,非常方便。
07
總結
回想當年那個網站,如果有雷池這樣的WAF幫我鎮守,肯定不會被黑掉了。
如果你也有Web網站要上線,務必要把安全防護做好,強烈建議考慮下雷池這個非常優秀的開源的WAF,它的語義分析算法(深度解碼HTTP載荷)、Bot防護(人機驗證、動態防護、防重放)、CC防護(頻率限制、等候室)、身份認證等功能,會讓你的網站高枕無憂。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.