Linux

Firewalld:在區域中分配廣泛和明確的規則

  • September 1, 2020

我正在嘗試firewalld第一次設置。我想添加兩種類型的規則:

  • 僅允許具有特定來源的特定埠上的流量的規則。
  • 允許來自特定來源的所有流量的規則。

假設我創建了一個名為“myZone”的新區域。我想允許來自 的所有流量10.95.0.0/16,但只允許來自 的 LDAP 相關流量10.96.59.23

所以我將來源添加到“myZone”:

firewall-cmd --permanent --zone=myZone --add-source=10.95.0.0/16
firewall-cmd --permanent --zone=myZone --add-source=10.96.59.23

現在是時候添加我想要允許流量的 LDAP 埠了:

firewall-cmd --zone=myZone --add-port=389/tcp

但是,這究竟會做什麼?我想這適用於“myZone”中的所有來源?我只想限制10.96.59.23LDAP 流量,但允許10.95.0.0/16. 我有一種感覺,我在這裡遺漏了一些基本的東西。

從理論上講,我認為我可以創建兩個區域,比如說“workstationZone”和“ldapZone”。然後我可以將埠 389 分配給“ldapZone”。但是,我似乎無法將多個區域分配給單個介面。

# firewall-cmd --zone workstationZone --add-interface ens32 --permanent
success
# firewall-cmd --zone ldapZone --add-interface ens32 --permanent
success
#firewall-cmd --get-active-zones
workstationZone
 interfaces: ens32
 sources: 10.95.0.0/16
ldapZone
 sources: 10.96.59.23

我希望在上面我的“ens32”界面將被添加到兩個區域。

我看到的另一個選擇是使用“豐富的規則”,但是由於它們難以維護,似乎有很多建議避免使用它們。

再一次,我覺得我錯過了一些完全基本的東西,但即使在閱讀了幾本指南之後,我還是不明白。如果有人可以幫助我直截了當,將不勝感激。

如果源/介面之間允許的流量不同,則應創建新區域。區域定義一組允許的流量,然後將其應用於指定的介面和/或源網路。

例如,您可以有一個允許所有流量的區域(預設情況下已經存在;它被稱為trusted),另一個允許 LDAP 流量的區域,以及另一個允許其他一些服務集的區域。

請注意,一個介面或源只能位於一個區域中,因此您應該將它們中的每一個分配給一個區域,並且該區域允許的流量將應用於該介面或源。這可能意味著您需要創建另一個區域,但這很好。

請記住,在您對規則工作感到滿意之前,您不應該使用。--permanent否則,您可能會因拼寫錯誤而將自己鎖定,並需要啟動到救援環境才能恢復。相反,添加您的規則,一旦您對它們都工作感到滿意,請使用firewall-cmd --runtime-to-permanent保存它們。(如果您因輸入錯誤而將自己鎖定,重新啟動 firewalld 或電腦將恢復您所有未保存的更改。)

另外,節省一些打字時間。區域名稱中的單詞Zone是多餘的。

引用自:https://serverfault.com/questions/1032331