在核心的Web應用之前採用網頁應用防火牆(Web Application Firewall,WAF)是必要的基礎安全需求,在NSX ALB方案中,若購買了需求的Service Core授權,WAF功能可以直接使用。對此,本文將簡單介紹NSX ALB的Web Application Firewall相關功能。
在本文撰寫的此時,台灣已經有多個包含政府、製造、教育、電信的客戶開始在生產環境內使用NSX Advanced Load Balancer(NSX ALB),而且不僅止於標準的負載平衡功能,數個客戶直接把網頁應用防火牆(Web Application Firewall,WAF)開起來用。
這十年來,許多台灣的客戶都意識到在核心的Web應用之前採用WAF是必需的基礎安全需求,不同的應用遞送服務廠商也或多或少有提供WAF功能,只是通常需要額外的授權∕購買成本。
但在NSX ALB方案內,當客戶購買了需求的Service Core授權,WAF功能是可以直接使用的。在本系列中,想和大家簡單介紹NSX ALB的Web Application Firewall相關功能。
但進入正題之前,先很快回顧NSX Advanced Load Balancer方案的優勢。各位若有閱讀過前面數期投稿(2020年7月至12月)的NSX ALB介紹,就會知道NSX ALB方案是:
‧應用遞送方案,提供本地L4/L7負載均衡、Global Load Balancing、網頁應用防火牆等資料中心需求的應用遞送功能。
‧軟體定義架構,控制層及轉發層分離,管理者可透過UI/API或以自動化工具集中進行應用遞送需求配置與編程。
‧轉發層可以是虛機、實體機,部署於企業私有環境或不同公有雲。用戶可隨時依據應用效能需求進行效能擴充(Scale-Out/Scale-Up)以及容量調整。
‧提供完整日誌內容∕健康檢查等供管理者進行統計、分析、應用效能除錯。
NSX ALB相關安全功能
而針對應用的安全防護功能,NSX ALB也並非僅包含Web Application Firewall。若從底層到應用來看NSX ALB方案的整體安全防禦功能,在圖1中,可以看到NSX ALB的相關安全功能包括了下列各項,簡單進行說明:
基於IP/Port的防火牆規則
NSX ALB每個虛擬服務內都可以提供基於IP/Port的標準L4防火牆功能。此外,由於NSX ALB支援Geo-Based IP資料庫,NSX ALB可以基於地區∕國別的IP地址進行網路流允許或阻擋。同時,NSX ALB由20.1版開始也支援IP Reputation資料庫,因此也能夠基於來源∕目的IP的信用名譽等級來選擇需求的防護。
加密SSL/TLS
作為重要的應用遞送方案,NSX ALB當然有支援憑證架構及傳輸加解密。目前版本(20.1)可支援最新的TLS 1.3版。
基於URL的防火牆規則
NSX ALB可以根據URL,也就是網址內的Path或是特定字元進行檢查,進行轉址、重寫或是阻擋。
DDoS防護
NSX ALB提供了包含流量限制及連線數目限制等防護機制,來保護應用受到大量惡意連線攻擊。
應用連線限制
包含系統面的認證與連線方式控制,同時涵蓋了多租戶間的存取控制等
網頁應用防火牆
這當然就是本篇接下來要和大家介紹說明的Web Application Firewall功能,包含了OWASP Top 10威脅防禦、應用層攻擊分析日誌等等。
什麼是Web Application Firewall
接下來會專注在NSX ALB平台內網頁應用防火牆(Web Application Firewall)的相關介紹上。雖然大家應該都很清楚了,但還是簡單討論一下什麼是Web Application Firewall。簡而言之,網頁應用防火牆是針對基於HTTP/S表頭的應用傳輸進行檢查與防禦,與標準防火牆針對IP、Protocol、Port這一層,或是L7防火牆進行不同Application的確認等功能不同。
常見的網頁應用攻擊,會由OWASP(Open Web Application Security Project)社群來提供檢測與建議的防護機制。大家可能聽過Cross-Site-Scripting(XSS)、SQL Injection、Command Injection等等,都是不同的Web攻擊手法。OWASP會定期公布目前最常出現的Web攻擊方式(OWASP Top 10),並且提供針對這些攻擊防禦檢測的手法(OWASP Core-Rule-Set),可以參考下列網址:
‧OWASP Top 10:https://owasp.org/www-project-top-ten/
‧OWASP Core-Rule-Set:https://owasp.org/www-project-modsecurity-core-rule-set/
在網頁中也可以看到,Avi Networks(NSX ALB的原公司)是方案的主要Sponsor之一。
因此,網頁應用防火牆一般會提供下列幾項功能,如圖2所示,來進行重要Web Application的安全防護。
回頭來談NSX ALB內的WAF。說真的,Web Application Firewall不是什麼新產品,進入台灣市場少說也有十幾年了。那企業為何不採用市場上的常見產品,而要改用NSX Advanced Load Balancer(NSX ALB Networks)來做呢?
筆者在與客戶介紹與展示NSX ALB的Web Application Firewall時,一般只專注在兩個特點:很容易使用、分析很完整。然後反正現在買的授權裡面本來就含這個功能了,要不要直接開啟來用看看?
先來看看,很容易使用吧!NSX ALB WAF不需要撰寫複雜的規則,需要的功能在UI上已經做好了,管理者只要考慮這些規則的開、關,以及因應應用環境必須進行的修改就好。NSX ALB內,WAF啟用需要以下三個步驟。
檢查現有∕配置一組WAF Profile
WAF Profile是用於定義用戶認為的正當HTTP行為有哪些,例如HTTP的版本、可以使用的HTTP Method、允許的Content-type與網頁延伸檔名等。還無須動用到Web規則檢查,只要有這裡不符合的狀況,就可以直接進行必要的阻擋。管理者可以採用預設值,或是自己定義一組特定的Profile。舉例來說,企業可能已經定義核心網頁應用必須要採用HTTP 1.1以上的版本,HTTP 1.0要停用。此時,在Profile的Allowed Version中就可以把1.0版移除,如圖3所示。
檢查現有∕配置一組WAF Policy
WAF Policy的配置包含了幾件事:要採用哪個WAF Profile、WAF是只要偵測(Detection)還是在規則符合時要進行阻擋(Enforcement)、是否要啟用正向學習模式(Positive Learning Mode),以及最重要的,是否要調整防護的特徵值(Signatures),也就是前篇所談到的CRS Core-Rule-Set。
舉幾個簡單的說明,如圖4所示,首先管理者可以修改現有的系統Policy,或是建置出一個新的Policy。在介面中,選擇要採用的對應WAF Profile,以及在這個Policy內預設的防護模式。這裡選擇的是,若有WAF攻擊被比對到,NSX ALB應該要進行阻擋。
更重要的是在Signatures部分,管理WAF應該會想要檢視哪些Rule有開啟要進行阻擋,並且依據實際業務狀況進行相對應的調整。點擊Signatures後,首先看到的是CRS Versions,這裡當然建議大家選擇可支援的最新版本,如圖5所示,這是對應到OWASP CRS-2020-3的規則集。
接著就是一條條被定義出來的Core-Rule-Set,管理者如果要調整預設值,可以針對整個群集,例如CRS_942是對應到所有SQL Injection的規則,或者針對單一細項規則,如圖6所示,則是對應942140規則。
在圖6中,大家可以看到,預設NSX ALB WAF已經針對各條CRS規則提供了預設比對方式,我們也不會想去修改,但管理者可以選擇:
‧整條規則要打開,還是關閉(此規則是否要進行比對)。
‧若規則選擇為打開,當這條規則比對符合,對應這個攻擊的WAF行為是只要進行告知(Detection)或是阻擋(Enforcement),或是採用在前面整個Policy內訂立的預設值。
‧還可以設定Exceptions進行更細部的配置,例如這條規則只針對哪些應用。管理者可以藉由網段(Subnet)或是URL Path等來進行需要的配置。
簡而言之,在WAF Policy中,管理者可以對於各條規則在什麼條件下生效,進行細部的規範。更進一步,還能夠配置其他如主動學習的機制,這裡就不贅述。
在Virtual Service中啟用WAF
建立Profile和Policy之後,最後的動作就非常簡單,管理者可以在一個個採用HTTP/S的Virtual Service內選擇是否要將WAF打開。當選擇WAF-Policy時,這個Virtual Service以及後端的應用就被NSX ALB的WAF保護,如圖7所示。
前面的步驟很單純,一般在客戶那邊包含設定內容的解說以及實際啟用WAF包含展示,都在一兩個小時內就可以完成。
但實際上WAF更重要的不僅是開起來,還包含怎麼知道有沒有正確的防護,還有是不是需要就防護的狀況進行後續的調整。因此,繼續討論一件更重要的事情:NSX ALB內提供了那些WAF日誌,讓管理者進行簡易的維運。
對於許多企業來說,建置Web Application Firewall的流程常常是這樣的:基於內外部安全規範因此請廠商來談,編了預算購買,裝起來可以動了。廠商教育訓練完,結束。然後?然後大家就你看我我看你不知道怎麼辦。反正應用看起來還可以動,也可以對稽核說有安裝了……然後就擺在那邊。但這時候,幾個常見的維運問題就可能會冒出來,比如說:
‧要是受WAF保護的應用在開發時有弱點,WAF上線後某些設計上應該是合理的連線受到阻擋,而造成使用上的問題,管理者怎麼知道?
‧要是應用實際上真的有受到外部攻擊,WAF除了阻擋外,是否有稽核紀錄已進行後續的防禦?
因此,接下來用一些實際的畫面展示給大家看NSX ALB Web Application Firewall「分析很完整」的部分。如同之前針對NSX ALB日誌功能的介紹,WAF的日誌本身也是紀錄相當豐富,可以提供管理者非常多資訊的。
直接舉一個WAF方案常見的展示。使用DVWA(Damn Vulnerable Web Application)平台來做Web應用攻擊測試,這裡只進行WAF的偵測(Detection)而不進行阻擋(Enforcement)。一個很簡單的Command Injection攻擊如下:
從圖8中可以發現,在這個網頁內除了輸入IP地址外,還輸入了特殊&&字元,然後在後面亂加指令。此時除了原本的ping動作外,駭客也可以在系統上隨便做事情或看到系統資訊。但因為此時已開啟WAF進行偵測,在Virtual Service的日誌裡,就可以看到上述的行為有被特別標記,如圖9所示。把這個日誌打開。除了標準的Load Balancing相關日誌外,在裡面特別寫到有WAF Match,如圖10所示。
接下來是重點。把這個日誌繼續往下拉,可以看到日誌內有關於WAF的資訊。如圖11所示,先是關於WAF的處理時間,然後下面說明此交易符合WAF內的哪些攻擊規則。發現符合三條規則,可以一條條展開來看細節(圖12~圖13),從圖中可以看到WAF稽核紀錄裡說明了這個交易:
‧撞到了哪一條攻擊比對規則。
‧對應的原因。在紀錄內,包含用戶輸入的不正常參數都已被直接列出。
再舉第二個例子,同樣在DVWA平台內進行SQL Injection測試。如圖14所示的網頁,原本要求輸入用戶ID,就可以回應對應的用戶姓名。但這裡輸入的是' or '1'='1這樣的特殊字元,在疏於防護的狀況下,後端資料庫讀取了這樣的語法,就把所有的用戶全部列出來。接著,就直接檢視對應到這個攻擊的WAF日誌,很明確地列出了符合SQL Injection的特徵攻擊方式,如圖15~16所示。所以重點是:如果各位就是管WAF的那個人,無論目前是在應用前期學習與偵測階段,或是環境已經上線。NSX ALB WAF不僅僅只是幫忙進行防禦,也可以明確地把違反的理由列出。此時,各位與應用團隊就可以進一步討論:
‧為何會被認為發生攻擊?這個攻擊是真正惡意的攻擊,還是應用開發時本身的錯誤?
‧如果是外部惡意的攻擊,那很好,就用WAF擋掉。
‧如果是內部程式的狀況,此時開發團隊可否短期內修正這個問題?
‧如果短期內無法修正,但業務需要正常運作,那WAF這裡是否需要繼續監控這些規則,或是要特定設定一些例外條件,讓業務未修正之前仍然可以作業?
結語
對於NSX Advanced Load Balancer內Web Application Firewall的簡短介紹就先到這裡。若各位已經考量或實際利用NSX ALB來作為重要網頁應用的負載平衡方案,在系統效能允許的狀況下,在同一平台內直接啟用NSX ALB的WAF功能來提供網頁防護是非常簡易且好用的。
<本文作者:饒康立,VMware資深技術顧問,主要負責VMware NSX產品線,持有VCIX-NV、VCAP-DTD、CCIE、CISSP等證照,目前致力於網路虛擬化、軟體定義網路暨分散式安全防護技術方案的介紹與推廣。>