
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.23
僅限制 LDAP 流量,但允許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”介面將被添加到這兩個區域。
我看到的另一個選擇是使用“豐富規則”,但是似乎有很多建議避免使用它們,因為它們難以維護。
再說一次,我覺得我錯過了一些完全基本的東西,但即使在閱讀了幾本指南之後,我還是沒有明白。如果有人可以幫我糾正,我將不勝感激。
答案1
如果來源/介面之間允許的流量不同,您應該建立新區域。區域定義一組允許的流量,然後將其應用於指定的介面和/或來源網路。
例如,您可以有一個允許所有流量的區域(預設已經有;它稱為trusted
),另一個允許 LDAP 流量的區域,以及另一個允許某些其他服務集的區域。
請注意,介面或來源只能位於一個區域中,因此您應該將它們每個分配到一個區域,並且該區域允許的流量將套用於該介面或來源。這可能意味著您需要建立另一個區域,但這完全沒問題。
記得你不應該使用--permanent
直到您對規則的工作感到滿意為止。否則,您可能會因拼寫錯誤而將自己鎖在門外,並需要啟動到救援環境才能恢復。相反,添加您的規則,一旦您對它們都起作用感到滿意,請使用firewall-cmd --runtime-to-permanent
保存它們。 (如果您因拼字錯誤而將自己鎖在門外,重新啟動firewalld或電腦將恢復所有未儲存的變更。)
另外,還可以省下一些打字時間。Zone
區域名稱中的單字是多餘的。