Cloudflare Web Application Firewall (WAF) 每天封鎖 570 多億次網路威脅,相當於每秒封鎖 65 萬個 HTTP 請求。用來篩選這些流量的原始程式碼是由 Cloudflare 現任技術長編寫的。WAF 迄今已獲無數好評,包括在 2020 年度 Gartner Magic Quadrant WAF 評測中獲得「執行能力」最高分

由於我們非常重視在程式碼不再便於維護、效能下降或無法擴展時替換程式碼,我們經常重寫 Cloudflare 堆疊的關鍵部份。這樣做很有必要,因為我們的極速發展使得過去的解決方案逐漸失去效用。一段時間以來,我們努力將 John 編寫的原始 LuaJIT 程式碼替換為用 Rust 編寫的新程式碼,並對使用者介面進行改進。

我們很高興推出全新的 Cloudflare Web Application Firewall。

自即日起,Cloudflare 上 10% 的新建帳戶在開通 Pro 或以上方案時即可使用全新 WAF。這個比例將於四月份增加到 100%,然後啟動現有客戶的遷移工作。Enterprise 客戶可以聯繫其客戶團隊來提前遷移。

有何變化

Web Application Firewall (WAF) 是 Cloudflare 平台的核心組成部份。作為組合中最常用的一款產品,我們從大規模執行中得到了許多意見反應和經驗教訓,在這次重大反覆項目中給我們提供了指引。新版 WAF 提供:

  • 更佳的規則瀏覽和設定 - 一鍵輕鬆部署但不失強大功能的工具:進階篩選、大量編輯、規則標記等。打開所有 Wordpress 規則、將所有 Cloudflare 託管規則設為 LOG 或找出哪些規則未在運作,如今都易如反掌。
  • 全新比對引擎 - 用 Rust 語言編寫,支援 wirefilter 語法,這也是自訂防火牆規則所用的語法。這個引擎讓我們能夠更快部署託管規則,並且可以對更多流量部署 WAF,進而擴展到下一個級別。與此同時,效能和安全性也得以改善。
  • 更新的規則集 - 新版 WAF 隨附更新的規則集,將規則狀態與操作分離,提供更佳的控制。Cloudflare OWASP 核心規則集也基於 OWASP 核心規則集最新版本(截至撰寫時為 v3.3)進行了改進,與目前版本相比,增加了 Paranoia Level 並改善了誤判率。
  • 全域設定 - 在您的整個帳戶部署相同的設定。以規則集的形式對規則進行分組,並使用原生版本控制和復原能力。

新版 WAF 有很多讓我們感到興奮的特徵,以上只是一小部份,每一條都值得另文詳述,這裡先介紹一些亮點。

更好的規則瀏覽與設定

Cloudflare 託管規則集(包括 Cloudflare Specials1 群組)是 WAF 的重要組成部份之一。其中包括數百條 Cloudflare 提供和維護的規則。預設設定旨在實現極低誤判率,同時為所有 Web 應用程式提供極佳的安全基線。不過,為獲得最佳的安全狀態,您應該啟用盡可能多的規則。也就是說,有時候必須深入研究並根據基礎應用程式來自訂規則集行為。

對於新版 WAF,我們希望能借助預設設定來一鍵啟用託管規則集,同時為感興趣的使用者提供更佳的設定體驗。

The new WAF UI. One click to turn on the Cloudflare Managed Ruleset and the Cloudflare OWASP ModSecurity Core Ruleset.

新版 WAF 使用者介面。一鍵開啟 Cloudflare 託管規則集和 Cloudflare OWASP ModSecurity 核心規則集。

目前,若要啟用 Cloudflare 託管規則集,您需要開啟全域 WAF 開關並設定任何感興趣的規則群組。頁面上會直接顯示包括 WordPress、Joomla、PHP 等在内的 10 個規則群組,並附有切換開/關。在這個使用者介面中,您要分別檢查具體的規則,否則無法輕鬆篩選或設定各個規則群組中的規則。

The current (old) Managed Ruleset WAF UI. Clicking on a group displays a list of rules in each group.

目前(舊版)託管規則集 WAF 使用者介面。點選一個分組可顯示這個群組中規則的清單。

儘管使用者介面使用簡單,但無法快速執行常見的任務。例如,顯示所有關閉的規則,或者顯示所有緩解 XSS 攻擊的規則。現在,所有規則都顯示在一個表格中,而按照規則狀態、動作和標記進行篩選只要按一下即可達成。規則標記也代替了分組,一條規則可有一個或多個標記,大大提高了系統的靈活性。標記將用於:

  • 標識某條規則是否適用於特定軟體元件
  • 標識攻擊向量(例如 XSS、SQLi、RCE)
  • 標識特定於 CVE 的規則

最後,除了單規則內聯控制項外,我們還允許大量編輯控制項,藉此更快地根據特定使用案例來調整設定。

The new WAF ruleset browser. Bulk options, tags and filtering components in one place.

新版 WAF 規則集瀏覽器。大量選項、標記和篩選元件彙集於一處。‌‌

我們預計可用規則數量將增加,並且為了讓更多使用者採用自訂設定,我們新增了一個部署設定變更時的檢閲螢幕。在這個螢幕中,您可以輕鬆查看相對預設值的任何變化,並可選擇復原。

Ruleset deployment review screen. From here you can review any custom configuration overrides from defaults.

規則集部署檢閱螢幕。在此,可以檢閱自訂設定相對於預設值的修改。

全新比對引擎

目前負責執行託管規則集的 Cloudflare WAF 是以 LuaJIT 編寫,並作為一個 NGINX 模組部署。規則語法採用 ModSecurity 所實現語法的一個超集合,增加了特定於 Cloudflare 實作的功能。

我們希望透過遷移到新引擎來實現以下目的:

  • 更安全、更有利和更高效能的環境,與 Cloudflare 採用的其他技術保持一致
  • 更出色的篩選和比對能力,提升部署靈活性並簡化異常處理
  • 統一的產品功能集,採用 wirefilter 語法作為託管規則集的基礎

最後一點對我們和使用者而言都特別重要,因為這種語法已經在我們的自訂防火牆規則中使用,後者甚至使用同樣的基礎 Rust 程式庫來執行篩選器。

新引擎在 Rust 中實施,此篇部落格貼文已多次提到我們對這種語言的熱愛。我們也在努力確保新的實施不僅增強安全性,也能提高速度,相關細節將在後續部落格貼文中詳細介紹。

更新的 Cloudflare 規則集

Cloudflare 規則集已更新並移植到新版 WAF。值得注意的是,規則集現在使用 wirefilter 語法,而且規則狀態也與規則動作分離,讓您能夠分別設定這兩者。

Cloudflare OWASP 核心規則集也獲得了獨立於引擎的一次重大更新。目前的 Cloudflare WAF 實施官方 OWASP ModSecurity 核心規則集的 2.x 版。在新版 WAF 中,Cloudflare OWASP 核心規則集直接基於GitHub 存放庫上提供的最新 3.3 版。

與現有系統相比,新版 Cloudflare OWASP 核心規則集以及新增的引擎功能將帶來一些改進:

  • 誤判更少,應用程式通用規則更爲強大
  • 敏感度分數的掌控力度更大,清晰顯示每條規則對分數的貢獻度以及被觸發請求的總分數是多少
  • 增加了 Paranoia Level - 可基於誤判風險輕鬆包含或排除規則群組
  • 規則標記,藉此使用基於應用程式的相關規則來進行部署
The Cloudflare OWASP Core Ruleset

Cloudflare OWASP 核心規則集‌‌

The Cloudflare OWASP Core Ruleset review screen

Cloudflare OWASP 核心規則集檢閲螢幕‌‌

為了協助將最新版本的 OWASP ModSecurity 核心規則集轉換為 Cloudflare 實施,我們的團隊還建構了一個 ModSecurity 至 wirefilter 語法轉換器。這樣一來,我們能夠在上游發佈任何改進後不久,輕鬆地部署和更新規則集,確保客戶始終獲得最新的版本。我們也計畫日後開放原始碼並將轉換器部署到使用者介面中,以方便客戶從基於 ModSecurity 的 WAF 遷移到 Cloudflare。

全域設定

從一開始,Cloudflare 一直在基於區域的模型上操作 Cloudflare WAF。這種方式非常適用於簡單的使用案例,即客戶保護少量應用程式,或者在單個區域中保護非常多樣化的應用程式。

更為複雜或統一的跨區域部署通常藉由 API 或自動化工具來實現,例如我們的 Cloudflare Terraform Provider

有了新版 WAF,可以對單一帳戶下的任意流量進行篩檢並部署規則集。例如:

  • 在我的所有區域部署 Cloudflare 託管規則集。
  • 對路徑中不包含 /api/* 的所有流量部署 Cloudflare OWASP 核心規則集。
  • 對來自我的 IP 的流量,停用我帳戶中的所有託管規則集。

這實現了一個強大的功能,只需按幾下滑鼠就能完成整個帳戶的 WAF 設定。

Three rulesets deployed on arbitrary applications on the account.

對帳戶下任意應用程式部署 3 個規則集。‌‌

為實現這一點,規則集(一組規則)成為頭等概念,並具備原生版本控制,在使用者介面中直接提供復原和差異功能。我們計畫在未來幾個月內開始公佈這些功能。

基於帳戶的設定最初僅向 Enterprise 客戶開放,這些客戶現在就能聯繫客戶團隊來申請提前使用。自訂防火牆規則本身會在不久後遷移到新引擎,讓客戶也能自行建立自訂防火牆規則集,並按需部署到任何流量篩選。

新平台提供新功能

WAF 還有許多奧妙等待我們去發掘。我們的團隊已在奮力完善基於新版 WAF 打造的一套新功能,包括對引擎本身的改進、更出色的分析功能,以及對可採取行動之事件的可見度。實際上,整個引擎設計為 Cloudflare 許多基於規則型產品的基礎,最終目標是將整個 Cloudflare 設定呈現為一套規則。

與此同時,我們期待您的意見反應,也希望再接再厲,在創新之路上繼續前行。

.......

1Cloudflare Specials 是 Cloudflare 安全團隊根據對 Cloudflare 平台背後數百萬個 Web 應用程式的觀察和保護而編寫的規則。