2019年9月25日 星期三

開源伺服器虛擬化平台:Proxmox VE (二)



在前一天我們提到了 Proxmox VE 做了虛擬化後的好處,以及備份、複寫功能提升了資訊安全中的可用性能力,今天要介紹的是 Proxmox VE 中對於網路安全極其好用的功能:防火牆。



功能介紹

Proxmox VE 的防火牆是基於知名套件 iptables 與 ebtables 而來,因此是完全相容於它。過去我們都知道 iptables 的設定與指令相當複雜不易上手,Proxmox VE 在 Web 介面上提供了簡單好用的管理功能,即便您沒有 iptables 與 ebtables 的相關使用經驗,都可以很快速的完成上手。

在 Proxmox VE 中提供了完整的防火牆功能,總共分成三個階層,分別對應 Datacenter 資料中心、Node 節點、VM/CT 虛擬機/容器。

這樣的好處是在單一介面上的設定,即可套用至叢集中的所有 VM/CT 上面,而且是單一介面設定。用了它以後,您就可以不需要在每一個 VM/CT 中分別安裝與設定防火牆,而且 VM/CT 中可能是各種不同的作業系統,更加提升了設定的困難與複雜度,對管理者來說掌控度更低。



虛擬機防火牆設定範例






功能設定

要開始使用 Proxmox VE 防火牆,分別有幾道程序需要先行處理。


前置作業

若要啟動 VM/CT 的防火牆設定,需要連資料中心與節點的一併啟動才行:
  • [資料中心] > [防火牆] > [選項],將 [防火牆] 設定為 [是]
  • [資料中心] > [防火牆] > [選項],將 [輸入原則] 設定為 [ACCEPT]
  • [節點] > [防火牆] > [選項],將 [防火牆] 設定為 [是]
  • [節點] > [防火牆] > [選項],將 [輸入原則] 設定為 [ACCEPT]


並且確認該節點的防火牆服務 pve-firewall 是否有在執行中,請至 [節點] > [系統] 查看。



確認防火牆服務執行中



設定方式

接著,來到欲設定防火牆的 VM/CT 上,調整以下設定:

  • [VM/CT] > [硬體],將 [網路裝置] 裡的 [防火牆] 功能勾選
     

啟動網路裝置的防火牆功能



  • [VM/CT] > [防火牆] > [選項],將 [防火牆] 設定為 [是]
  • [VM/CT] > [防火牆] > [選項],將 [輸入原則] 設定為 [ACCEPT]
  • [VM/CT] > [防火牆] 開始新增規則。記得在最後要放一條 [DROP ALL] 的規則


在最後一條策略全部丟棄


把規則都設定完後,在該規則前方的核取方塊予以勾選,即開始生效。






進階運用

除了基本的規則建立以外,還有幾個技巧可以協助您將防火牆做的更好用。


安全群組

一般來說我們將規則制定好後,會對固定一些管理的主機進行特定 Port 開放 (例如對 IT 管理者的電腦),若要至每台都設定如 SSH、RDP 等常用管理埠號與允許 IP,這樣的工作負擔是相當惱人的。

因此,我們利用這個部份,在資料中心層級一次設定,這樣所有 VM/CT 就可以直接選用,大大降低設定的門檻。

  • [資料中心] > [防火牆] > [安全群組],在這裡可以建立與編輯群組,以及其下的規則。


在資料中心內建立安全群組


上圖就是一個實例,將 IT 管理者的電腦建為群組,並統一指派他們具有 SSH、RDP 等連接埠的規則,再到 VM/CT 的防火牆內的規則中,新增這條安全群組,即可一次套用這些預先建好的規則,快速又方便,且集中控管設定避免不同步。




在 VM/CT 規則內新增安全群組




IP 集合

除了一次設好規則之外,我們也可以把要放在一起的主機 IP 預先設成一個集合,在指定規則的來源或目的時就可以快速帶入,若包含的主機 IP 有異動時,也只要修改此處即可,不需要一台一台 VM/CT 的規則去修改,它可以是單一 IP,也可以是網段。



在資料中心建立 IP 集合



巨集定義

對於一些常用的服務,Proxmox VE 有預先提供一批定義好的巨集,只要選擇它就可以一次設好相對應的協定與連接埠號,很是方便。

例如 SMB 協定就包含了許多項目,透過巨集定義功能指派規則就會輕鬆無比。



巨集定義:SMB



設定檔案

如果這些防火牆設定越來越多與複雜之後,就會考慮到備份的問題,而在 Proxmox VE 中這件事卻相當容易。

Proxmox VE 的防火牆設定檔是以檔案形式存放,位置在 /etc/pve/firewall 之內,每一個 VM/CT 的防火牆設定都是一個檔案並以 VM/CT ID 編號,例如 100.fw 就是編號 100 這台機器的防火牆設定檔,容易對照。

檔案的內容以明文存放,格式接近於 iptables 的指令用法,一目了然。



防火牆設定檔內容


因此,您只要將這批檔案複製起來,立即完成防火牆設定的備份。我是另外寫了 Shell Script 並設為排程,讓它自動定期備份至其它主機存放。






結論

採用 Proxmox VE 虛擬化平台所提供的 Host 層防火牆,除效能會比起在客體機裡使用軟體防火牆來的效能更好,也可以將防火牆的權限拉出客體機外,避免客體機內的程式把防火牆機制竄改或關閉導致失去防護能力。

再加上搭配集中管理設定方式,可以容易控管相關的規則以及對象,確保在同樣的邏輯之下做到同樣的管理範圍,讓虛擬機之間的網路連線策略更加安全。

最後提醒,本篇所提到的設定是專門針對 VM/CT 的防火牆策略設定,至於 Proxmox VE Node 節點本身的防火牆也應該要啟用並制訂規則,保護節點自身的安全,Proxmox VE 節點的重要連接埠如下:
  • WebGUI: 8006/TCP (限定管理者連線來源 IP)
  • SSH: 22/TCP (限定叢集中所有節點與管理者連線來源 IP)
  • SPICE: 3128/TCP (若有使用此功能)
  • Corosync: 5404~5405/UDP (叢集溝通使用,廣播,必開)
  • rpcbind: 111/TCP (若有做為 NFS Server)







參考資料