Proxmox VE 防火牆介紹


Proxmox VE 防火牆提供了一種簡單的方法來保護您的 IT 基礎設施。您可以為集群內的所有主機設置防火牆規則,或為虛擬機和容器定義規則。防火牆宏、安全組、IP 集和別名等功能有助於簡化該任務。

雖然所有配置都存儲在集群文件系統上,但基於iptables的防火牆服務運行在每個集群節點上,從而在虛擬機之間提供完全隔離。該系統的分布式特性還提供比中央防火牆解決方案高得多的帶寬。

防火牆完全支持 IPv4 和 IPv6。IPv6 支持是完全透明的,默認情況下我們會過濾兩種協議的流量。因此無需為 IPv6 維護一組不同的規則。

區域

Proxmox VE 防火牆將網絡分組為以下邏輯區域:

  • 主機

進出集群節點的流量。

  • 虛擬機

來自或到達特定虛擬機的流量。

對於每個區域,您可以為傳入和傳出流量定義防火牆規則。

配置文件

集群范圍設置

集群范圍的防火牆配置存儲在:/etc/pve/firewall/cluster.fw

GUI設置界面如下:

默認情況下防火牆是完全禁用的。如果啟用防火牆,默認情況下會阻止所有主機的流量。只有來自本地網絡的 WebGUI(8006) 和 ssh(22) 例外。

如果要從遠程管理 Proxmox VE 主機,則需要創建規則以允許從這些遠程 IP 到 Web GUI(端口 8006)的流量。您可能還想允許 ssh(端口 22),也可能是 SPICE(端口 3128)。

在啟用防火牆之前,請打開與您的 Proxmox VE 主機之一的 SSH 連接。這樣,如果出現問題,您仍然可以訪問主機。

為了簡化該任務,您可以改為創建一個名為“management”的 IPSet,並在其中添加所有遠程 IP。這將創建從遠程訪問 GUI 所需的所有防火牆規則。設置示例如下:


配置文件相關內容如下:

[OPTIONS]

enable: 1

[ALIASES]

management 10.0.0.0/24

[IPSET management]

management

[RULES]

GROUP management
IN ACCEPT -source +management -p tcp -dport 80 -log nolog
IN DROP -log nolog

[group management]

IN ACCEPT -source +management -p tcp -dport 3128 -log nolog
IN ACCEPT -source +management -p tcp -dport 22 -log nolog
IN ACCEPT -source +management -p tcp -dport 8006 -log nolog

[group webserver]

IN ACCEPT -p tcp -dport 443 -log nolog
IN ACCEPT -p tcp -dport 80 -log nolog

主機范圍設置

主機范圍的防火牆配置存儲在:/etc/pve/nodes/ /host.fw

GUI設置界面如下:

虛擬機范圍設置

虛擬機范圍的防火牆配置存儲在:/etc/pve/firewall/ .fw

GUI設置界面如下:

每個虛擬網絡設備都有自己的防火牆啟用標志。因此,您可以有選擇地為每個接口啟用防火牆。除了常規防火牆啟用選項之外,這也是必需的。

虛擬機防火牆默認是禁用的。啟用后,默認的輸入策略是 DROP,默認的輸出策略是 ACCEPT,不記錄任何日志。

下面是一個GUI設置示例:

配置文件相關內容如下:

[OPTIONS]

log_level_in: nolog
enable: 1
log_level_out: nolog

[RULES]

IN ACCEPT -p tcp -dport 22 -log nolog
IN ACCEPT -p tcp -dport 80 -log nolog

防火牆規則

防火牆規則由方向(IN或OUT)和操作(ACCEPT、DENY、REJECT)組成。您還可以指定宏名稱。宏包含預定義的規則和選項集。規則可以通過添加前綴“|”來禁用。

示例

[RULES]
IN SSH(ACCEPT) -i net0
IN SSH(ACCEPT) -i net0 # a comment
IN SSH(ACCEPT) -i net0 -source 192.168.2.192 # only allow SSH from 192.168.2.192
IN SSH(ACCEPT) -i net0 -source 10.0.0.1-10.0.0.10 # accept SSH for IP range
IN SSH(ACCEPT) -i net0 -source 10.0.0.1,10.0.0.2,10.0.0.3 #accept ssh for IP list
IN SSH(ACCEPT) -i net0 -source +mynetgroup # accept ssh for ipset mynetgroup
IN SSH(ACCEPT) -i net0 -source myserveralias #accept ssh for alias myserveralias

|IN SSH(ACCEPT) -i net0 # disabled rule

IN  DROP # drop all incoming packages
OUT ACCEPT # accept all outgoing packages

安全組

安全組是在集群級別定義的規則集合,可以在所有 VM 的規則中使用。例如,您可以定義一個名為“webserver”的組,其中包含打開http和https端口的規則。

[group webserver]

IN ACCEPT -p tcp -dport 443 -log nolog
IN ACCEPT -p tcp -dport 80 -log nolog

IP 別名

IP 別名允許您將網絡的 IP 地址與名稱相關聯。然后您可以使用這些名稱:

  • 內部 IP 集定義
  • 在防火牆規則的源和目標屬性中

IP Set

IP 集可用於定義網絡和主機組。您可以在防火牆規則的源和目標 屬性中使用“+name”來引用它們。

服務和命令

防火牆在每個節點上運行兩個服務守護進程:

  • pvefw-logger:NFLOG 守護進程(ulogd 替換)。
  • pve-firewall:更新 iptables 規則

還有一個名為pve-firewall的 CLI 命令,可用於啟動和停止防火牆服務:

# pve-firewall start
# pve-firewall stop

要獲取狀態使用:

# pve-firewall status

上述命令讀取並編譯所有防火牆規則,因此如果您的防火牆配置包含任何錯誤,您將看到警告。

如果要查看生成的 iptables 規則,可以使用:

# iptables-save

默認防火牆規則

以下流量由默認防火牆配置過濾:

數據中心傳入/傳出 DROP/REJECT

如果防火牆的輸入或輸出策略設置為 DROP 或 REJECT,集群中的所有 Proxmox VE 主機仍然允許以下流量:

  • 環回接口上的流量

  • 已經建立的連接

  • 使用 IGMP 協議的流量

  • 從管理主機到端口 8006 的 TCP 流量,以允許訪問 Web 界面

  • 從管理主機到端口范圍 5900 到 5999 的 TCP 流量允許 VNC Web 控制台的流量

  • 從管理主機到端口 3128 的 TCP 流量,用於連接到 SPICE 代理

  • 從管理主機到端口 22 的 TCP 流量以允許 ssh 訪問

  • 用於 corosync 的集群網絡中到端口 5404 和 5405 的 UDP 流量

  • 集群網絡中的 UDP 多播流量

  • ICMP 流量類型 3(目標不可達)、4(擁塞控制)或 11(超時)

以下流量被丟棄,但即使啟用日志記錄也不會記錄:

  • 連接狀態無效的 TCP 連接

  • 與 corosync 無關的廣播、多播和任播流量,即不通過端口 5404 或 5405

  • 到端口 43 的 TCP 流量

  • UDP 流量到端口 135 和 445

  • UDP 流量到端口范圍 137 到 139

  • UDP 流量從源端口 137 到端口范圍 1024 到 65535

  • UDP 流量到端口 1900

  • TCP 流量到端口 135、139 和 445

  • 來自源端口 53 的 UDP 流量

其余的流量分別被丟棄或拒絕,並被記錄下來。這可能會因防火牆→選項中啟用的其他選項而異 ,例如 NDP、SMURFS 和 TCP 標志過濾。

請檢查輸出:

# iptables-save

system 命令以查看系統上活動的防火牆鏈和規則。此輸出也包含在系統報告中,可通過 Web GUI 中節點的訂閱選項卡或通過pvereport命令行工具訪問。

VM 傳入/傳出 DROP/REJECT

這會丟棄或拒絕所有到 VM 的流量,但 DHCP、NDP、路由器廣告、MAC 和 IP 過濾的一些例外情況取決於設置的配置。丟棄/拒絕數據包的相同規則是從數據中心繼承的,而主機接受的傳入/傳出流量的例外情況並不適用。

同樣,您可以使用iptables-save(見上文) 來檢查所有應用的規則和鏈。

Proxmox VE 使用的端口

  • Web 界面:8006(TCP、HTTP/1.1 over TLS)

  • VNC Web 控制台:5900-5999(TCP、WebSocket)

  • SPICE 代理:3128 (TCP)

  • sshd(用於集群操作):22 (TCP)

  • rpcbind: 111 (UDP)

  • 發送郵件:25(TCP,傳出)

  • corosync 集群流量:5404、5405 UDP

  • 實時遷移(VM 內存和本地磁盤數據):60000-60050 (TCP)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM