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