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