Firewalld

Firewalld:除了IP,如何丟棄所有內容?

  • December 9, 2019

我想了解來自 Iptables 的 FirewallD。

我的區域是drop沒有任何服務的預設區域。

drop (active)
 target: DROP
 icmp-block-inversion: no
 interfaces: enp9s0u2u1u2c2
 sources:
 services: 
 ports: 
 protocols: 
 masquerade: no
 forward-ports: 
 source-ports: 
 icmp-blocks: 
 rich rules: 

向該區域添加源 ip 有什麼意義?

  1. 我添加了所有本地 IPfirewall-cmd --add-source=192.168.0.0/16
  2. 即使來自此源 IP 之一,它仍然會丟棄所有數據包。
  • 向此區域添加服務將允許任何人訪問此服務,無論我設置什麼源 IP。
  • 如何限制服務並只允許服務使用單個 IP(或範圍)?

與 iptables 相比,firewalld 的行為根本不是很清楚。有很多假設和未知的預設行為。

  1. 我添加了所有本地 IP firewall-cmd –add-source=192.168.0.0/16
  2. 即使來自此源 IP 之一,它仍然會丟棄所有數據包。

來自FirewallD 文件

將源綁定到區域意味著此區域設置將用於限制來自此源的流量。

因此,您告訴 FirewallD,該drop區域現在將專門適用於來自 192.168.0.0/16 的流量,而不適用於其他任何地方。我不確定來自該 IP 範圍之外的任何流量會發生什麼。(像這樣修改預設drop區域可能不是一個好主意。)

將服務添加到區域通常意味著對於配置到該區域的任何介面,對於任何源 IP 地址,始終允許指定的服務。如果一個區域沒有啟用服務,它將禁止所有流量。我沒有嘗試將源 IP 地址添加到區域,所以我不知道正常行為如何與之互動。

為了實現你想要的,你可能應該創建一個新區域,並為你想要的服務添加一個豐富的規則:

firewall-cmd --permanent --new-zone="allow-limited-<service>"
firewall-cmd --permanent --zone="allow-limited-<service>" --add-rich-rule="rule source address=192.168.0.0/16 service name=<service> accept" 

現在,如果您為該區域分配一個網路介面allow-limited-<service>,它將只允許<service>來自 192.168.0.0/16 的服務(可能包括一個或多個 TCP 和/或 UDP 埠),並阻止其他一切。

區域實際上是一組預定義的防火牆規則,您可以輕鬆地將其應用於任何特定的網路介面。一個網路介面一次只能分配給一個區域。

FirewallD 邏輯似乎是為企業/ISP/主機提供商使用量身定制的,其中可能有單獨的 VLAN 介面,如果企業從與以前的範圍完全不同的範圍內獲得新的 IP 塊,IP 地址分配可能會發生巨大變化。在這樣的環境中,您可以根據用途將防火牆規則綁定到(VLAN 或物理)介面,而不是 IP 地址。

引用自:https://unix.stackexchange.com/questions/556246