作者: Colin Jao 饒康立 – VMware資深技術顧問,主要負責VMware NSX產品線,目前致力於網路虛擬化、分散式安全防護技術與新應用遞送方案的介紹與推廣。

前篇我們以實際畫面展示了採用NSX搭配基於Antrea的Kubernetes Cluster內,在NSX UI管理介面內可以查看到K8S叢集的相關資訊,並且可以基於Namespace / Service / Pod Label等,將要管理的Pod納入Antrea群組。本篇內,同樣地我想要以實際的畫面與大家展示,在NSX內如何配置對應的K8S防火牆規則,並且查詢相關的日誌。

在前篇展示內我們建立了一個叫做dvwa-ns的群組,把所有在dvwa-ns namespace內的Pods都加到這個群組內。接下來我們要做的展示如下:

  • 在上述群組內的Pod,可以連往任何地方,但不能連到9.9.9.9這個IP地址
  • 防火牆規則符合時,可以提供日誌記錄

下圖是我要實現上面的這個防火牆政策,在NSX – Security – Policy Management – Distributed Firewall 內輸入的規則:

幾個重點討論如下

1.定義規則前,我們需要建立一個Policy Section,也就是上圖內的TKGM-Cluster。在Section內,必須要特別配置Applied To指明這個段落內的包含的所有規則是要運作在哪個Kubernetes Cluster上。下面的放大圖內可以看到,這個Section內的規則是配置到tkgm-122-tkc03這個叢集內的(其他的Kubernetes Cluster不會接收到此規則)

2.在段落內的第一條規則 (3052號),配置到dvwa-ns這個群組上,目的地往9.9.9.9的網路流都設定要拒絕 (Reject)。因此這是一條對應dvwa-ns這個群組內的Pod上面的egress規則(對外往指定IP地址拒絕)。

3.在段落內的第二條規則 (3051號) 同樣配置到dvwa-ns這個群組上,所有的網路流都設定為允許 (Allow)。因此這是一條對應dvwa-ns這個群組內的Pod上面的預設規則(所有其他Traffic都允許)。

4.在段落內,規則當然是有順序性的,3052號規則在上方會先比對,如果沒有match才會比對到下方的3051號規則

5.在每條規則內最後像是齒輪的圖示點擊時,我們可以設定這條規則是否要啟用日誌,如下圖。

6.這樣規則就設定完成了,應該很直覺。但大家不知道是否有注意到在規則配置上方,與虛機配置時一樣,同樣有ETHERNET – EMERGENCY – INFRASTRUCTURE – ENVIRONMENT – APPLICATION五個Catogories。這五個項次和之前我們虛機微分段的概念一樣,是有順序性的,管理者可以依據不同的需求,在各項次內配置對應的規則,優先權是 Ethernet > Emergency > Infrastructure > Environment > Application。舉例來說,在Kubernetes Cluster內每個Pod與服務間的相互連線,都需要查詢內部的DNS,因此若任何Kubernetes應用要正常運作,DNS連線絕對不能阻擋掉。我們需要在Infrastructure內設定通用規則,所有DNS Traffic都一定要允許通過,如下圖所示:

上面的配置完成後,在NSX介面右上角按Publish,NSX Manager就會把相關規則派送到對應的Kubernetes Cluster內,由Antrea接手進行對應的Antrea Network Policy設定。

接著我們到受上述安全政策規範,用來展示的這個Pod上面。DVWA是一個專門用來做滲透測試與WAF功能展示的示範應用,利用上面的工具,我們嘗試去ping 9.9.9.9,以及另一個168.95.1.1兩個Internet上的IP地址。大家可以看到,往9.9.9.9的連線被拒絕了,但往168.95.1.1的連線可以正常 ping 通:

可見得防火牆規則有依照上面我們的配置生效。其次,在規則內我們有要求要啟用日誌。Antrea預設會將防火牆日誌放在每個Kubernetes Nodes內的/var/log/antrea/networkpolicy/np.log 目錄下,Kubernetes管理者可以用不同的工具將這個log導出,送往集中的日誌管理系統,比如說Log Insight。在我們的展示環境內,使用Fluentbit 套件把log送出,在Log Insight內可以看到下列的日誌。首先我們搜尋往9.9.9.9的相關日誌,可以看到由10.61.2.10往9.9.9.9的ICMP連線被拒絕:

接著搜尋往168.95.1.1的相關日誌,可以看到由10.61.2.10往168.95.1.1的ICMP連線允許通過:

前篇我們有談到NSX可以抓取Kubernetes裡面的相關資訊,當然包含Pod以及對應的IP地址。因此我們可以到Inventory內看這個DVWA pod的相關資訊,很明確地,IP Address是10.61.2.10沒有錯:

這兩篇內我們用實際的畫面讓大家看到採用NSX搭配Antrea時,如何在UI管理介面內進行群組、安全政策的配置,並且能收集日誌。簡單的總結,與傳統的Kubernetes Network Policies比較,採用NSX + Antrea的運作方式,能夠

  • 以方便的圖形化用戶管理介面進行防火牆政策配置
  • 具備企業需求的安全日誌 (log) 功能
  • 如同標準企業等級防火牆,可以明確配置deny規則,也可以依據順序進行防火牆規則比對
  • 目前雖僅有 L4防火牆,L7及IDPS相關功能已經在Antrea的後續Roadmap列表上。

希望能讓大家感受到NSX + Antrea的威力。下一篇,回到技術層面,我們要討論一下Antrea + NSX的運作架構,並繼續討論安裝整合的方法。