WAF(Web 應(yīng)用程序防火墻)是應(yīng)用程序和互聯(lián)網(wǎng)流量之間的第一道防線,它監(jiān)視和過(guò)濾 Internet 流量以阻止不良流量和惡意請(qǐng)求,WAF 是確保 Web 服務(wù)的可用性和完整性的重要安全解決方案。
它通過(guò)充當(dāng)保護(hù) Web 應(yīng)用程序服務(wù)器免受惡意客戶端攻擊的中介來(lái)充當(dāng)反向代理。
本文將由火傘云小編為您簡(jiǎn)要解答它的工作原理
WAF 用于阻止惡意攻擊的 8 種方法
1、IP 圍欄
這是最簡(jiǎn)單的保護(hù)方法,如果您知道惡意請(qǐng)求來(lái)自特定 IP 地址,可以直接使用 WAF 黑名單來(lái)拒絕它們,它依賴于一組靜態(tài)信息。
例如:
火傘云WAF使用 HoneyPot Project 和 spamhaus DB 等信譽(yù)數(shù)據(jù)庫(kù)來(lái)識(shí)別某些 IP 并隨后阻止來(lái)自這些 IP 的請(qǐng)求。
2、地理圍欄和地理封鎖
地理圍欄是 WAF 用來(lái)在特定地理區(qū)域周?chē)鷦?chuàng)建虛擬周界或邊界的一種技術(shù)。當(dāng)用戶的 IP 地址位于預(yù)定義邊界內(nèi)時(shí),WAF 可以允許或限制對(duì)某些內(nèi)容或功能的訪問(wèn)。

火傘云WAF利用 MaxMind DB 等Geo IP 數(shù)據(jù)庫(kù)來(lái)允許或拒絕請(qǐng)求。
您還可以使用 WAF 創(chuàng)建地理阻止規(guī)則集,這是一種限制性更強(qiáng)的技術(shù),可以完全阻止來(lái)自特定區(qū)域的訪問(wèn)。
例如:
如果您的電子商務(wù)網(wǎng)站僅面向美國(guó)客戶,您可以使用此功能限制來(lái)自其他地區(qū)的訪問(wèn)。
3、要求檢驗(yàn)
檢驗(yàn)是 WAF 對(duì)請(qǐng)求和響應(yīng)施加完全控制的策略的組成部分。通過(guò)檢驗(yàn)請(qǐng)求的內(nèi)容,WAF 可以將它們與已知的好/壞字符串和值進(jìn)行匹配,以區(qū)分合法和惡意請(qǐng)求。
WAF使用多個(gè)過(guò)濾層分析流量,可以檢測(cè)零日攻擊、客戶端攻擊、機(jī)器人攻擊(例如 DDoS 攻擊)、病毒文件和Web應(yīng)用程序漏洞。
最先進(jìn)的WAF可以解碼和分析 HTTPS 流量、XML、JSON 和其他廣泛使用的數(shù)據(jù)傳輸格式。
常見(jiàn)的檢驗(yàn)有以下兩種:
標(biāo)頭檢驗(yàn)
通過(guò)檢查標(biāo)頭,WAF 可以檢測(cè)到可能指示惡意活動(dòng)的特定模式或異常,例如格式錯(cuò)誤的用戶代理或可疑的 cookie 值。
HTTP 請(qǐng)求的標(biāo)頭包含基本信息,例如用戶代理、內(nèi)容類(lèi)型、cookie 和使用的 HTTP 方法(例如 GET、POST)。
每個(gè)都包含文本字符串,并具有廣泛的潛在組合。
因此,WAF 會(huì)單獨(dú)檢查每個(gè)請(qǐng)求標(biāo)頭以識(shí)別潛在的惡意值,而不是依賴于預(yù)定義的白名單。
例如:
GET /login HTTP/1.1Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36
Referer: http://evil.com
Cookie: PHPSESSID=abcdef1234567890; username=admin; password=admin123
在此示例中,請(qǐng)求包含指向惡意網(wǎng)站 (http://evil.com) 的 Referer 標(biāo)頭。Web 服務(wù)器使用 Referer 標(biāo)頭來(lái)跟蹤請(qǐng)求的來(lái)源。
通過(guò)包含惡意的 Referer 標(biāo)頭,攻擊者可以嘗試欺騙 Web 服務(wù)器,使其相信請(qǐng)求來(lái)自受信任的來(lái)源。
攻擊者還包含一個(gè) Cookie 標(biāo)頭,其中包含會(huì)話 ID (PHPSESSID=abcdef1234567890) 以及管理員帳戶的用戶名和密碼(用戶名=admin;密碼=admin123)。
通過(guò)在 Cookie 標(biāo)頭中包含這些值,攻擊者可以嘗試獲得對(duì) Web 應(yīng)用程序的未授權(quán)訪問(wèn)。
通過(guò)檢查這些標(biāo)頭,WAF 可以檢測(cè)到惡意 Referer 標(biāo)頭和 Cookie 標(biāo)頭的可疑內(nèi)容。此外,它會(huì)阻止請(qǐng)求并阻止攻擊成功。
WAF 還分析瀏覽器發(fā)送的用戶代理字符串以獲取其他指標(biāo),例如異常的瀏覽器設(shè)置和流量自動(dòng)化的跡象。
請(qǐng)求驗(yàn)證
WAF 進(jìn)一步檢查請(qǐng)求正文、查詢參數(shù)和請(qǐng)求的其他元素,以識(shí)別和阻止對(duì) Web 應(yīng)用程序的潛在威脅。
WAF 檢驗(yàn)有效負(fù)載中的每個(gè)數(shù)據(jù)字節(jié),以確定可能指示針對(duì)漏洞的攻擊嘗試的特定字母數(shù)字字符組合。
例如:
假設(shè) Web 應(yīng)用程序具有搜索功能,允許用戶通過(guò)在搜索框中輸入關(guān)鍵字來(lái)搜索產(chǎn)品。
攻擊者可以通過(guò)提交包含 SQL 注入負(fù)載的特制輸入來(lái)利用此功能。
例如:‘a(chǎn)pple’ OR 1=1;– – 然后將作為以下 SQL 查詢執(zhí)行:
SELECT * FROM products WHERE name = 'apple' OR 1=1;--此查詢旨在繞過(guò)身份驗(yàn)證機(jī)制并從數(shù)據(jù)庫(kù)中檢索所有產(chǎn)品。
添加 OR 1=1 部分以使查詢始終返回 true,最后的 — 用于注釋掉查詢的其余部分并防止任何錯(cuò)誤。
如果 WAF 僅依賴預(yù)定義的白名單,它可能無(wú)法檢測(cè)到此攻擊,因?yàn)椴樵儼行дZ(yǔ)法。
但是,通過(guò)單獨(dú)檢查每個(gè)請(qǐng)求并分析查詢的內(nèi)容,Web 應(yīng)用程序防火墻可以檢測(cè) SQL 注入負(fù)載并阻止請(qǐng)求。
WAF 還會(huì)分析查詢并查找 SQL 注入攻擊中常用的關(guān)鍵字,
例如 OR、UNION、SELECT 和 DROP。如果檢測(cè)到這些關(guān)鍵字中的任何一個(gè),WAF 可以阻止請(qǐng)求并阻止攻擊得逞。
WAF 的威脅檢測(cè)能力超越了 SQL 注入,涵蓋了其他頻繁發(fā)生的高風(fēng)險(xiǎn)威脅,如 XSS 和 XXE。
4、響應(yīng)檢查
WAF 監(jiān)視和分析離開(kāi) Web 應(yīng)用程序的流量,以識(shí)別和阻止任何潛在的惡意或未經(jīng)授權(quán)的活動(dòng)。
它驗(yàn)證數(shù)據(jù)包的內(nèi)容以確保內(nèi)容類(lèi)型與請(qǐng)求資源的預(yù)期內(nèi)容類(lèi)型相匹配。
例如
如果客戶端請(qǐng)求圖像文件,WAF 可以驗(yàn)證響應(yīng)是圖像文件,而不是可執(zhí)行文件或惡意內(nèi)容。
WAF 可以驗(yàn)證 Web 應(yīng)用程序返回的響應(yīng)代碼是否有效且符合預(yù)期。
例如
如果 Web 應(yīng)用程序?yàn)閼?yīng)該存在的資源返回 404 錯(cuò)誤代碼(未找到頁(yè)面),則 WAF 可以識(shí)別這種潛在的攻擊。
Web 應(yīng)用程序防火墻能夠通過(guò)屏蔽或阻止包含敏感信息(如信用卡號(hào)或任何其他自定義數(shù)據(jù))的響應(yīng)來(lái)防止數(shù)據(jù)泄漏。
例如:
一名員工試圖將包含敏感數(shù)據(jù)的文件上傳到外部文件共享網(wǎng)站。WAF 檢測(cè)數(shù)據(jù)傳輸嘗試并檢查文件是否包含不應(yīng)與外部共享的任何敏感信息。WAF 掃描文件以查找與組織的數(shù)據(jù)分類(lèi)策略相匹配的模式或關(guān)鍵字。
如果文件包含敏感信息,WAF 會(huì)阻止上傳并向安全團(tuán)隊(duì)發(fā)送警報(bào)。然后,安全團(tuán)隊(duì)可以調(diào)查事件并采取適當(dāng)?shù)男袆?dòng),例如撤銷(xiāo)員工的訪問(wèn)權(quán)限或展開(kāi)進(jìn)一步調(diào)查。
5、安全規(guī)則
收到請(qǐng)求后,WAF 會(huì)分析其有效負(fù)載并將其與其規(guī)則或簽名進(jìn)行比較。
WAF 通常有兩種類(lèi)型的安全規(guī)則:預(yù)定義和自定義。
a、預(yù)定義規(guī)則
供應(yīng)商預(yù)先配置預(yù)定義規(guī)則,旨在防止常見(jiàn)攻擊,例如 SQL 注入、跨站點(diǎn)腳本 (XSS) 和其他已知漏洞。這些規(guī)則通常會(huì)定期更新以應(yīng)對(duì)新出現(xiàn)的威脅。
火傘云WAF檢查每個(gè)應(yīng)用程序區(qū)域并通過(guò)考慮 OWASP 前 10 大應(yīng)用程序和 API 漏洞以及已預(yù)編程到 WAF 中的其他攻擊向量來(lái)確定適用的威脅。
預(yù)定義的規(guī)則集包括防止:
SQL注入
XSS 攻擊
本地和遠(yuǎn)程文件包含
尺寸限制
命令注入
未知的錯(cuò)誤輸入
惡意文件擴(kuò)展名(例如 .php、.exe)
目錄遍歷字符(例如,“..”)
命令注入負(fù)載
Java 反序列化負(fù)載
主機(jī)標(biāo)頭中的本地主機(jī)
PROPFIND HTTP 方法
Shell 元字符(例如 |、>、<、)
任意代碼執(zhí)行負(fù)載
LDAP 注入負(fù)載
XPath 注入負(fù)載
XML 外部實(shí)體 (XXE) 負(fù)載
以下是用于阻止 XSS 攻擊的 WAF 預(yù)定義規(guī)則示例:
SecRule ARGS "@rx [\s\S]*?" \
"id:1,\
phase:2,\
block,\
log,\
msg:'XSS Attack Detected',\
tag:'OWASP Top 10',\
severity:'CRITICAL'"
此規(guī)則檢查請(qǐng)求參數(shù) (ARGS) 中是否存在 標(biāo)記,該標(biāo)記常用于 XSS 攻擊。如果規(guī)則匹配,它會(huì)觸發(fā)一個(gè)動(dòng)作來(lái)阻止請(qǐng)求(block),記錄事件(log),并向服務(wù)器操作員(msg)發(fā)送消息。
該規(guī)則還包含一個(gè)標(biāo)記,表明它解決了 OWASP 十大漏洞之一,并將嚴(yán)重性級(jí)別設(shè)置為嚴(yán)重。
b、自定義規(guī)則
網(wǎng)站或應(yīng)用程序所有者創(chuàng)建自定義規(guī)則來(lái)解決其環(huán)境特有的特定安全問(wèn)題。這些規(guī)則可以定制以滿足應(yīng)用程序的特定需求,并且可以提供超出預(yù)定義規(guī)則的額外保護(hù)層。
托管服務(wù)團(tuán)隊(duì)在零日漏洞報(bào)告后的 24 小時(shí)內(nèi)虛擬修補(bǔ)在 Spring Framework 中檢測(cè)到的遠(yuǎn)程代碼執(zhí)行 (RCE) 漏洞。
c、自動(dòng)規(guī)則生成
隨著 WAF 繼續(xù)分析流量并識(shí)別新出現(xiàn)威脅的模式,它可以自動(dòng)生成策略來(lái)抵御這些威脅。這有助于減少手動(dòng)創(chuàng)建策略所涉及的時(shí)間和精力,同時(shí)防止可能尚未建立簽名或規(guī)則的新的和不斷發(fā)展的威脅。
例如:
一種新的攻擊涉及向應(yīng)用程序發(fā)送特制的 SQL 查詢以繞過(guò)身份驗(yàn)證并獲得對(duì)敏感數(shù)據(jù)的訪問(wèn)權(quán)限。WAF 可以分析流量并識(shí)別攻擊中使用的特定 SQL 語(yǔ)法。然后,WAF 可以生成策略來(lái)阻止此特定語(yǔ)法并防止攻擊得逞。
生成安全策略后,WAF 應(yīng)用該策略來(lái)保護(hù)應(yīng)用程序。這是需要安全專(zhuān)家支持的地方。支持團(tuán)隊(duì)可以手動(dòng)微調(diào)安全策略以減少誤報(bào)和漏報(bào)。
6、異常評(píng)分
如果規(guī)則匹配,WAF 會(huì)為請(qǐng)求中的每個(gè)偏差應(yīng)用一個(gè)分?jǐn)?shù),作為其威脅檢測(cè)和響應(yīng)整體方法的一部分,這被稱(chēng)為“基于風(fēng)險(xiǎn)的方法”。
異常評(píng)分系統(tǒng)背后的想法是,并非請(qǐng)求中的所有偏差或異常都同樣重要或表示攻擊。通過(guò)為每個(gè)變化或異常分配一個(gè)分?jǐn)?shù),WAF 可以確定請(qǐng)求的總體風(fēng)險(xiǎn)級(jí)別,并決定是阻止還是允許它。
WAF使用多種因素來(lái)分配分?jǐn)?shù),包括偏差的嚴(yán)重性和類(lèi)型、請(qǐng)求的上下文以及發(fā)出請(qǐng)求的用戶的行為。
例如:
像拼寫(xiě)錯(cuò)誤的 URL 這樣的簡(jiǎn)單偏差可能只會(huì)得到低分
更嚴(yán)重的偏差,如嘗試注入 SQL 代碼,可能會(huì)獲得更高的分?jǐn)?shù)。
WAF 還可以使用分?jǐn)?shù)來(lái)觸發(fā)不同的操作,
例如:
阻止得分高的請(qǐng)求
允許低分
對(duì)平均分?jǐn)?shù)的請(qǐng)求進(jìn)行額外驗(yàn)證
7、DDoS 速率限制
DDoS 速率限制限制特定 IP 地址在給定時(shí)間范圍內(nèi)可以發(fā)送到服務(wù)器的請(qǐng)求數(shù)量。速率限制通常是根據(jù)一個(gè)預(yù)定的閾值來(lái)設(shè)置的,該閾值被認(rèn)為對(duì)正常流量是安全的,任何超過(guò)此限制的請(qǐng)求都會(huì)被阻止。
通過(guò)實(shí)施 DDoS 速率限制,WAF 可以有效地防止攻擊者用大量請(qǐng)求淹沒(méi)服務(wù)器。這有助于確保合法用戶仍然能夠訪問(wèn)服務(wù)器,并且業(yè)務(wù)運(yùn)營(yíng)可以不間斷地繼續(xù)進(jìn)行。
例如:
假設(shè)一家企業(yè)的網(wǎng)站通常每分鐘收到大約 1,000 個(gè)請(qǐng)求。為防止 DDoS 攻擊,企業(yè)為任何給定的 IP 地址設(shè)置了每分鐘 2,000 個(gè)請(qǐng)求的 DDoS 速率限制。這意味著如果一個(gè) IP 地址每分鐘向服務(wù)器發(fā)送超過(guò) 2,000 個(gè)請(qǐng)求,WAF 將阻止這些請(qǐng)求。
現(xiàn)在,假設(shè)攻擊者對(duì)企業(yè)網(wǎng)站發(fā)起 DDoS 攻擊,使用僵尸網(wǎng)絡(luò)向服務(wù)器發(fā)送大量請(qǐng)求。即使攻擊者控制著數(shù)以千計(jì)的受感染設(shè)備,WAF 也會(huì)阻止任何超過(guò)每分鐘 2,000 個(gè)請(qǐng)求閾值的 IP 地址。這有效地限制了 DDoS 攻擊的影響,使網(wǎng)站能夠繼續(xù)為合法用戶正常運(yùn)行。
靜態(tài)速率限制機(jī)制的主要缺陷是它依賴于固定的流量閾值。因此,在達(dá)到閾值之前可能無(wú)法檢測(cè)到攻擊,從而導(dǎo)致攻擊檢測(cè)緩慢或不充分。
8、機(jī)器人緩解
WAF 可以分析瀏覽器發(fā)送的cookie,并將它們檢查到已知機(jī)器人 cookie 的數(shù)據(jù)庫(kù),例如 Udger、Checktor 和 Whatisyourbrowser DB。
為檢測(cè)機(jī)器人,火傘云WAF使用 JavaScript 挑戰(zhàn)來(lái)區(qū)分傳統(tǒng)網(wǎng)絡(luò)瀏覽器和機(jī)器人。
機(jī)器人控制組件包括但不限于:
驗(yàn)證碼挑戰(zhàn)
速率限制
機(jī)器人偽裝者
網(wǎng)頁(yè)抓取保護(hù)
機(jī)器人智能(指紋、IP、行為模式)
WAF 采用基于行為的分析來(lái)檢測(cè)自動(dòng)流量。這可能包括分析請(qǐng)求的速度和頻率、訪問(wèn)頁(yè)面的順序,以及有助于區(qū)分機(jī)器人和人類(lèi)行為的其他因素。
Bot 保護(hù)包括以下目標(biāo):
檢測(cè)來(lái)自人類(lèi)的機(jī)器人
識(shí)別好機(jī)器人與壞機(jī)器人
允許好的機(jī)器人并阻止壞的機(jī)器人
檢測(cè)僵尸程序的來(lái)源并阻止 IP 地址
分析機(jī)器人行為和速率限制潛在機(jī)器人
通過(guò)集成這些方法,WAF 可以成功區(qū)分人類(lèi)流量和機(jī)器人流量,識(shí)別惡意流量,并提供針對(duì) DDoS 和機(jī)器人攻擊的有效防御。
評(píng)論