1. 程式人生 > >CentOS7下Firewall防火牆配置用法詳解

CentOS7下Firewall防火牆配置用法詳解

FirewallD 提供了支援網路/防火牆區域(zone)定義網路連結以及介面安全等級的動態防火牆管理工具。它支援 IPv4, IPv6 防火牆設定以及乙太網橋接,並且擁有執行時配置和永久配置選項。它也支援允許服務或者應用程式直接新增防火牆規則的介面。 以前的 system-config-firewall/lokkit 防火牆模型是靜態的,每次修改都要求防火牆完全重啟。這個過程包括核心 netfilter 防火牆模組的解除安裝和新配置所需模組的裝載等。而模組的解除安裝將會破壞狀態防火牆和確立的連線。 相反,firewall daemon 動態管理防火牆,不需要重啟整個防火牆便可應用更改。因而也就沒有必要過載所有核心防火牆模組了。不過,要使用 firewall daemon 就要求防火牆的所有變更都要通過該守護程序來實現,以確保守護程序中的狀態和核心裡的防火牆是一致的。另外,firewall daemon 無法解析由 ip*tables 和 ebtables 命令列工具新增的防火牆規則。 守護程序通過 D-BUS 提供當前啟用的防火牆設定資訊,也通過 D-BUS 接受使用 PolicyKit 認證方式做的更改。

“守護程序”

應用程式、守護程序和使用者可以通過 D-BUS 請求啟用一個防火牆特性。特性可以是預定義的防火牆功能,如:服務、埠和協議的組合、埠/資料報轉發、偽裝、ICMP 攔截或自定義規則等。該功能可以啟用確定的一段時間也可以再次停用。

通過所謂的直接介面,其他的服務(例如 libvirt )能夠通過 iptables 變元(arguments)和引數(parameters)增加自己的規則。 amanda 、ftp 、samba 和 tftp 服務的 netfilter 防火牆助手也被“守護程序”解決了,只要它們還作為預定義服務的一部分。附加助手的裝載不作為當前介面的一部分。由於一些助手只有在由模組控制的所有連線都關閉後才可裝載。因而,跟蹤連線資訊很重要,需要列入考慮範圍。

靜態防火牆(system-config-firewall/lokkit)

使用 system-config-firewall 和 lokkit 的靜態防火牆模型實際上仍然可用並將繼續提供,但卻不能與“守護程序”同時使用。使用者或者管理員可以決定使用哪一種方案。

在軟體安裝,初次啟動或者是首次聯網時,將會出現一個選擇器。通過它你可以選擇要使用的防火牆方案。其他的解決方案將保持完整,可以通過更換模式啟用。 firewall daemon 獨立於 system-config-firewall,但二者不能同時使用。

使用iptables和ip6tables的靜態防火牆規則

如果你想使用自己的 iptables 和 ip6tables 靜態防火牆規則, 那麼請安裝 iptables-services 並且禁用 firewalld ,啟用 iptables 和ip6tables:

yum install iptables-services
systemctl mask firewalld.service
systemctl enable iptables.service
systemctl enable ip6tables.service
靜態防火牆規則配置檔案是 /etc/sysconfig/iptables 以及 /etc/sysconfig/ip6tables . 注: iptables 與 iptables-services 軟體包不提供與服務配套使用的防火牆規則. 這些服務是用來保障相容性以及供想使用自己防火牆規則的人使用的. 你可以安裝並使用 system-config-firewall 來建立上述服務需要的規則. 為了能使用 system-config-firewall, 你必須停止 firewalld. 為服務建立規則並停用 firewalld 後,就可以啟用 iptables 與 ip6tables 服務了:
systemctl stop firewalld.service
systemctl start iptables.service
systemctl start ip6tables.service

什麼是區域?

網路區域定義了網路連線的可信等級。這是一個一對多的關係,這意味著一次連線可以僅僅是一個區域的一部分,而一個區域可以用於很多連線。

預定義的服務

服務是埠和/或協議入口的組合。備選內容包括 netfilter 助手模組以及 IPv4、IPv6地址。

埠和協議

定義了 tcp 或 udp 埠,埠可以是一個埠或者埠範圍。

ICMP阻塞

可以選擇 Internet 控制報文協議的報文。這些報文可以是資訊請求亦可是對資訊請求或錯誤條件建立的響應。

偽裝
私有網路地址可以被對映到公開的IP地址。這是一次正規的地址轉換。

埠轉發

埠可以對映到另一個埠以及/或者其他主機。

哪個區域可用?

由firewalld 提供的區域按照從不信任到信任的順序排序。

丟棄

任何流入網路的包都被丟棄,不作出任何響應。只允許流出的網路連線。

阻塞

任何進入的網路連線都被拒絕,並返回 IPv4 的 icmp-host-prohibited 報文或者 IPv6 的 icmp6-adm-prohibited 報文。只允許由該系統初始化的網路連線。

公開

用以可以公開的部分。你認為網路中其他的計算機不可信並且可能傷害你的計算機。只允許選中的連線接入。(You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.)

外部

用在路由器等啟用偽裝的外部網路。你認為網路中其他的計算機不可信並且可能傷害你的計算機。只允許選中的連線接入。

隔離區(dmz)

用以允許隔離區(dmz)中的電腦有限地被外界網路訪問。只接受被選中的連線。

工作

用在工作網路。你信任網路中的大多數計算機不會影響你的計算機。只接受被選中的連線。

家庭

用在家庭網路。你信任網路中的大多數計算機不會影響你的計算機。只接受被選中的連線。

內部

用在內部網路。你信任網路中的大多數計算機不會影響你的計算機。只接受被選中的連線。

受信任的

允許所有網路連線。

我應該選用哪個區域?

例如,公共的 WIFI 連線應該主要為不受信任的,家庭的有線網路應該是相當可信任的。根據與你使用的網路最符合的區域進行選擇。

如何配置或者增加區域?

你可以使用任何一種 firewalld 配置工具來配置或者增加區域,以及修改配置。工具有例如 firewall-config 這樣的圖形介面工具, firewall-cmd 這樣的命令列工具,以及D-BUS介面。或者你也可以在配置檔案目錄中建立或者拷貝區域檔案。 @[email protected]/lib/firewalld/zones 被用於預設和備用配置,/etc/firewalld/zones 被用於使用者建立和自定義配置檔案。

如何為網路連線設定或者修改區域

區域設定以 ZONE= 選項 儲存在網路連線的ifcfg檔案中。如果這個選項缺失或者為空,firewalld 將使用配置的預設區域。

如果這個連線受到 NetworkManager 控制,你也可以使用 nm-connection-editor 來修改區域。

由NetworkManager控制的網路連線

防火牆不能夠通過 NetworkManager 顯示的名稱來配置網路連線,只能配置網路介面。因此在網路連線之前 NetworkManager 將配置檔案所述連線對應的網路介面告訴 firewalld 。如果在配置檔案中沒有配置區域,介面將配置到 firewalld 的預設區域。如果網路連線使用了不止一個介面,所有的介面都會應用到 fiwewalld。介面名稱的改變也將由 NetworkManager 控制並應用到firewalld。

為了簡化,自此,網路連線將被用作與區域的關係。 如果一個介面斷開了,NetworkManager也將告訴firewalld從區域中刪除該介面。 當firewalld由systemd或者init指令碼啟動或者重啟後,firewalld將通知NetworkManager把網路連線增加到區域。

由指令碼控制的網路

對於由網路指令碼控制的連線有一條限制:沒有守護程序通知 firewalld 將連線增加到區域。這項工作僅在 ifcfg-post 指令碼進行。因此,此後對網路連線的重新命名將不能被應用到firewalld。同樣,在連線活動時重啟 firewalld 將導致與其失去關聯。現在有意修復此情況。最簡單的是將全部未配置連線加入預設區域。

區域定義了本區域中防火牆的特性:

使用firewalld

你可以通過圖形介面工具 firewall-config 或者命令列客戶端 firewall-cmd 啟用或者關閉防火牆特性。

使用firewall-cmd

命令列工具 firewall-cmd 支援全部防火牆特性。對於狀態和查詢模式,命令只返回狀態,沒有其他輸出。

一般應用

獲取 firewalld 狀態

firewall-cmd --state
此舉返回 firewalld 的狀態,沒有任何輸出。可以使用以下方式獲得狀態輸出:
firewall-cmd --state && echo "Running" || echo "Not running"
在 Fedora 19 中, 狀態輸出比此前直觀:
# rpm -qf $( which firewall-cmd )
firewalld-0.3.3-2.fc19.noarch# firewall-cmd --state
not running
在不改變狀態的條件下重新載入防火牆:
firewall-cmd --reload
如果你使用–complete-reload,狀態資訊將會丟失。這個選項應當僅用於處理防火牆問題時,例如,狀態資訊和防火牆規則都正常,但是不能建立任何連線的情況。 獲取支援的區域列表
firewall-cmd --get-zones
這條命令輸出用空格分隔的列表。 獲取所有支援的服務
firewall-cmd --get-services
這條命令輸出用空格分隔的列表。 獲取所有支援的ICMP型別
firewall-cmd --get-icmptypes
這條命令輸出用空格分隔的列表。 列出全部啟用的區域的特性
firewall-cmd --list-all-zones
輸出格式是:
<zone>
  interfaces: <interface1> ..
  services: <service1> ..
  ports: <port1> ..
  forward-ports: <forward port1> ..
  icmp-blocks: <icmp type1> ....
輸出區域 <zone> 全部啟用的特性。如果生略區域,將顯示預設區域的資訊。
firewall-cmd [--zone=<zone>] --list-all
獲取預設區域的網路設定
firewall-cmd --get-default-zone
設定預設區域
firewall-cmd --set-default-zone=<zone>
流入預設區域中配置的介面的新訪問請求將被置入新的預設區域。當前活動的連線將不受影響。 獲取活動的區域
firewall-cmd --get-active-zones
這條命令將用以下格式輸出每個區域所含介面:
<zone1>: <interface1> <interface2> ..<zone2>: <interface3> ..
根據介面獲取區域
firewall-cmd --get-zone-of-interface=<interface>
這條命令將輸出介面所屬的區域名稱。 將介面增加到區域
firewall-cmd [--zone=<zone>] --add-interface=<interface>
如果介面不屬於區域,介面將被增加到區域。如果區域被省略了,將使用預設區域。介面在重新載入後將重新應用。 修改介面所屬區域
firewall-cmd [--zone=<zone>] --change-interface=<interface>
這個選項與 –add-interface 選項相似,但是當介面已經存在於另一個區域的時候,該介面將被新增到新的區域。 從區域中刪除一個介面
firewall-cmd [--zone=<zone>] --remove-interface=<interface>
查詢區域中是否包含某介面
firewall-cmd [--zone=<zone>] --query-interface=<interface>
返回介面是否存在於該區域。沒有輸出。 列舉區域中啟用的服務
firewall-cmd [ --zone=<zone> ] --list-services
啟用應急模式阻斷所有網路連線,以防出現緊急狀況
firewall-cmd --panic-on
禁用應急模式
firewall-cmd --panic-off
 程式碼如下 複製程式碼
應急模式在 0.3.0 版本中發生了變化
在 0.3.0 之前的 FirewallD版本中, panic 選項是 –enable-panic 與 –disable-panic.
查詢應急模式
firewall-cmd --query-panic
此命令返回應急模式的狀態,沒有輸出。可以使用以下方式獲得狀態輸出:
firewall-cmd --query-panic && echo "On" || echo "Off"

處理執行時區域

執行時模式下對區域進行的修改不是永久有效的。重新載入或者重啟後修改將失效。

啟用區域中的一種服務
firewall-cmd [--zone=<zone>] --add-service=<service> [--timeout=<seconds>]
此舉啟用區域中的一種服務。如果未指定區域,將使用預設區域。如果設定了超時時間,服務將只啟用特定秒數。如果服務已經活躍,將不會有任何警告資訊。 例: 使區域中的ipp-client服務生效60秒:
firewall-cmd --zone=home --add-service=ipp-client --timeout=60
例: 啟用預設區域中的http服務:
firewall-cmd --add-service=http
禁用區域中的某種服務
firewall-cmd [--zone=<zone>] --remove-service=<service>
此舉禁用區域中的某種服務。如果未指定區域,將使用預設區域。 例: 禁止home區域中的http服務:
firewall-cmd --zone=home --remove-service=http
區域種的服務將被禁用。如果服務沒有啟用,將不會有任何警告資訊。 查詢區域中是否啟用了特定服務
firewall-cmd [--zone=<zone>] --query-service=<service>
如果服務啟用,將返回1,否則返回0。沒有輸出資訊。 啟用區域埠和協議組合
firewall-cmd [--zone=<zone>] --add-port=<port>[-<port>]/<protocol> [--timeout=<seconds>]
此舉將啟用埠和協議的組合。埠可以是一個單獨的埠 <port> 或者是一個埠範圍 <port>-<port> 。協議可以是 tcp 或 udp。 禁用埠和協議組合
firewall-cmd [--zone=<zone>] --remove-port=<port>[-<port>]/<protocol>
查詢區域中是否啟用了埠和協議組合
firewall-cmd [--zone=<zone>] --query-port=<port>[-<port>]/<protocol>
如果啟用,此命令將有返回值。沒有輸出資訊。 啟用區域中的IP偽裝功能
firewall-cmd [--zone=<zone>] --add-masquerade
此舉啟用區域的偽裝功能。私有網路的地址將被隱藏並對映到一個公有IP。這是地址轉換的一種形式,常用於路由。由於核心的限制,偽裝功能僅可用於IPv4。 禁用區域中的IP偽裝
firewall-cmd [--zone=<zone>] --remove-masquerade
查詢區域的偽裝狀態
firewall-cmd [--zone=<zone>] --query-masquerade
如果啟用,此命令將有返回值。沒有輸出資訊。 啟用區域的ICMP阻塞功能
firewall-cmd [--zone=<zone>] --add-icmp-block=<icmptype>
此舉將啟用選中的Internet控制報文協議(ICMP)報文進行阻塞。ICMP報文可以是請求資訊或者建立的應答報文,以及錯誤應答。 禁止區域的ICMP阻塞功能
firewall-cmd [--zone=<zone>] --remove-icmp-block=<icmptype>
查詢區域的ICMP阻塞功能
firewall-cmd [--zone=<zone>] --query-icmp-block=<icmptype>
如果啟用,此命令將有返回值。沒有輸出資訊。 例: 阻塞區域的響應應答報文:
firewall-cmd --zone=public --add-icmp-block=echo-reply
在區域中啟用埠轉發或對映
firewall-cmd [--zone=<zone>] --add-forward-port=port=<port>[-<port>]:proto=<protocol> { :toport=<port>[-<port>] | :toaddr=<address> | :toport=<port>[-<port>]:toaddr=<address> }
埠可以對映到另一臺主機的同一埠,也可以是同一主機或另一主機的不同埠。埠號可以是一個單獨的埠 <port> 或者是埠範圍 <port>-<port> 。協議可以為 tcp 或udp 。目標埠可以是埠號 <port> 或者是埠範圍 <port>-<port> 。目標地址可以是 IPv4 地址。受核心限制,埠轉發功能僅可用於IPv4。 禁止區域的埠轉發或者埠對映
firewall-cmd [--zone=<zone>] --remove-forward-port=port=<port>[-<port>]:proto=<protocol> { :toport=<port>[-<port>] | :toaddr=<address> | :toport=<port>[-<port>]:toaddr=<address> }
查詢區域的埠轉發或者埠對映
firewall-cmd [--zone=<zone>] --query-forward-port=port=<port>[-<port>]:proto=<protocol> { :toport=<port>[-<port>] | :toaddr=<address> | :toport=<port>[-<port>]:toaddr=<address> }
如果啟用,此命令將有返回值。沒有輸出資訊。 例: 將區域home的ssh轉發到127.0.0.2
firewall-cmd --zone=home --add-forward-port=port=22:proto=tcp:toaddr=127.0.0.2

處理永久區域

永久選項不直接影響執行時的狀態。這些選項僅在過載或者重啟服務時可用。為了使用執行時和永久設定,需要分別設定兩者。 選項 –permanent 需要是永久設定的第一個引數。

獲取永久選項所支援的服務
firewall-cmd --permanent --get-services
獲取永久選項所支援的ICMP型別列表
firewall-cmd --permanent --get-icmptypes
獲取支援的永久區域
firewall-cmd --permanent --get-zones
啟用區域中的服務
firewall-cmd --permanent [--zone=<zone>] --add-service=<service>
此舉將永久啟用區域中的服務。如果未指定區域,將使用預設區域。 禁用區域中的一種服務
firewall-cmd --permanent [--zone=<zone>] --remove-service=<service>
查詢區域中的服務是否啟用
firewall-cmd --permanent [--zone=<zone>] --query-service=<service>
如果服務啟用,此命令將有返回值。此命令沒有輸出資訊。 例: 永久啟用 home 區域中的 ipp-client 服務
firewall-cmd --permanent --zone=home --add-service=ipp-client
永久啟用區域中的一個埠-協議組合
firewall-cmd --permanent [--zone=<zone>] --add-port=<port>[-<port>]/<protocol>
永久禁用區域中的一個埠-協議組合
firewall-cmd --permanent [--zone=<zone>] --remove-port=<port>[-<port>]/<protocol>
查詢區域中的埠-協議組合是否永久啟用
firewall-cmd --permanent [--zone=<zone>] --query-port=<port>[-<port>]/<protocol>
如果服務啟用,此命令將有返回值。此命令沒有輸出資訊。 例: 永久啟用 home 區域中的 https (tcp 443) 埠
firewall-cmd --permanent --zone=home --add-port=443/tcp
永久啟用區域中的偽裝
firewall-cmd --permanent [--zone=<zone>] --add-masquerade
此舉啟用區域的偽裝功能。私有網路的地址將被隱藏並對映到一個公有IP。這是地址轉換的一種形式,常用於路由。由於核心的限制,偽裝功能僅可用於IPv4。 永久禁用區域中的偽裝
firewall-cmd --permanent [--zone=<zone>] --remove-masquerade
查詢區域中的偽裝的永久狀態
firewall-cmd --permanent [--zone=<zone>] --query-masquerade
如果服務啟用,此命令將有返回值。此命令沒有輸出資訊。 永久啟用區域中的ICMP阻塞
firewall-cmd --permanent [--zone=<zone>] --add-icmp-block=<icmptype>
此舉將啟用選中的 Internet 控制報文協議 (ICMP) 報文進行阻塞。 ICMP 報文可以是請求資訊或者建立的應答報文或錯誤應答報文。 永久禁用區域中的ICMP阻塞
firewall-cmd --permanent [--zone=<zone>] --remove-icmp-block=<icmptype>
查詢區域中的ICMP永久狀態
firewall-cmd --permanent [--zone=<zone>] --query-icmp-block=<icmptype>
如果服務啟用,此命令將有返回值。此命令沒有輸出資訊。 例: 阻塞公共區域中的響應應答報文:
firewall-cmd --permanent --zone=public --add-icmp-block=echo-reply
在區域中永久啟用埠轉發或對映
firewall-cmd --permanent [--zone=<zone>] --add-forward-port=port=<port>[-<port>]:proto=<protocol> { :toport=<port>[-<port>] | :toaddr=<address> | :toport=<port>[-<port>]:toaddr=<address> }
埠可以對映到另一臺主機的同一埠,也可以是同一主機或另一主機的不同埠。埠號可以是一個單獨的埠 <port> 或者是埠範圍 <port>-<port> 。協議可以為 tcp 或udp 。目標埠可以是埠號 <port> 或者是埠範圍 <port>-<port> 。目標地址可以是 IPv4 地址。受核心限制,埠轉發功能僅可用於IPv4。 永久禁止區域的埠轉發或者埠對映
firewall-cmd --permanent [--zone=<zone>] --remove-forward-port=port=<port>[-<port>]:proto=<protocol> { :toport=<port>[-<port>] | :toaddr=<address> | :toport=<port>[-<port>]:toaddr=<address> }
查詢區域的埠轉發或者埠對映狀態
firewall-cmd --permanent [--zone=<zone>] --query-forward-port=port=<port>[-<port>]:proto=<protocol> { :toport=<port>[-<port>] | :toaddr=<address> | :toport=<port>[-<port>]:toaddr=<address> }
如果服務啟用,此命令將有返回值。此命令沒有輸出資訊。 例: 將 home 區域的 ssh 服務轉發到 127.0.0.2
firewall-cmd --permanent --zone=home --add-forward-port=port=22:proto=tcp:toaddr=127.0.0.2

直接選項

直接選項主要用於使服務和應用程式能夠增加規則。 規則不會被儲存,在重新載入或者重啟之後必須再次提交。傳遞的引數 <args> 與 iptables, ip6tables 以及 ebtables 一致。

選項–direct需要是直接選項的第一個引數。 將命令傳遞給防火牆。引數 <args> 可以是 iptables, ip6tables 以及 ebtables 命令列引數。
firewall-cmd --direct --passthrough { ipv4 | ipv6 | eb } <args>
為表 <table> 增加一個新鏈 <chain> 。
firewall-cmd --direct --add-chain { ipv4 | ipv6 | eb } <table> <chain>
從表 <table> 中刪除鏈 <chain> 。
firewall-cmd --direct --remove-chain { ipv4 | ipv6 | eb } <table> <chain>
查詢 <chain> 鏈是否存在與表 <table>. 如果是,返回0,否則返回1.
firewall-cmd --direct --query-chain { ipv4 | ipv6 | eb } <table> <chain>
如果啟用,此命令將有返回值。此命令沒有輸出資訊。 獲取用空格分隔的表 <table> 中鏈的列表。
firewall-cmd --direct --get-chains { ipv4 | ipv6 | eb } <table>
為表 <table> 增加一條引數為 <args> 的鏈 <chain> ,優先順序設定為 <priority>。
firewall-cmd --direct --add-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>
從表 <table> 中刪除帶引數 <args> 的鏈 <chain>。
firewall-cmd --direct --remove-rule { ipv4 | ipv6 | eb } <table> <chain> <args>
查詢帶引數 <args> 的鏈 <chain> 是否存在表 <table> 中. 如果是,返回0,否則返回1.
firewall-cmd --direct --query-rule { ipv4 | ipv6 | eb } <table> <chain> <args>
如果啟用,此命令將有返回值。此命令沒有輸出資訊。 獲取表 <table> 中所有增加到鏈 <chain> 的規則,並用換行分隔。
firewall-cmd --direct --get-rules { ipv4 | ipv6 | eb } <table> <chain>

當前的firewalld特性 

D-BUS介面

D-BUS 介面提供防火牆狀態的資訊,使防火牆的啟用、停用或查詢設定成為可能。

區域

網路或者防火牆區域定義了連線的可信程度。firewalld 提供了幾種預定義的區域。區域配置選項和通用配置資訊可以在firewall.zone(5)的手冊裡查到。

服務

服務可以是一系列本讀埠、目的以及附加資訊,也可以是服務啟動時自動增加的防火牆助手模組。預定義服務的使用使啟用和禁用對服務的訪問變得更加簡單。服務配置選項和通用檔案資訊在 firewalld.service(5) 手冊裡有描述。

ICMP型別

Internet控制報文協議 (ICMP) 被用以交換報文和網際網路協議 (IP) 的錯誤報文。在 firewalld 中可以使用 ICMP 型別來限制報文交換。 ICMP 型別配置選項和通用檔案資訊可以參閱 firewalld.icmptype(5) 手冊。

直接介面

直接介面主要用於服務或者應用程式增加特定的防火牆規則。這些規則並非永久有效,並且在收到 firewalld 通過 D-Bus 傳遞的啟動、重啟、過載訊號後需要重新應用。

執行時配置

執行時配置並非永久有效,在重新載入時可以被恢復,而系統或者服務重啟、停止時,這些選項將會丟失。

永久配置

永久配置儲存在配置檔案種,每次機器重啟或者服務重啟、重新載入時將自動恢復。

托盤小程式

托盤小程式 firewall-applet 為使用者顯示防火牆狀態和存在的問題。它也可以用來配置使用者允許修改的設定。

圖形化配置工具

firewall daemon 主要的配置工具是 firewall-config 。它支援防火牆的所有特性(除了由服務/應用程式增加規則使用的直接介面)。 管理員也可以用它來改變系統或使用者策略。

命令列客戶端

firewall-cmd是命令列下提供大部分圖形工具配置特性的工具。

對於ebtables的支援

要滿足libvirt daemon的全部需求,在核心 netfilter 級上防止 ip*tables 和 ebtables 間訪問問題,ebtables 支援是需要的。由於這些命令是訪問相同結構的,因而不能同時使用。

/usr/lib/firewalld中的預設/備用配置

該目錄包含了由 firewalld 提供的預設以及備用的 ICMP 型別、服務、區域配置。由 firewalld 軟體包提供的這些檔案不能被修改,即使修改也會隨著 firewalld 軟體包的更新被重置。 其他的 ICMP 型別、服務、區域配置可以通過軟體包或者建立檔案的方式提供。

/etc/firewalld中的系統配置設定
儲存在此的系統或者使用者配置檔案可以是系統管理員通過配置介面定製的,也可以是手動定製的。這些檔案將過載預設配置檔案。 為了手動修改預定義的 icmp 型別,區域或者服務,從預設配置目錄將配置拷貝到相應的系統配置目錄,然後根據需求進行修改。 如果你載入了有預設和備用配置的區域,在 /etc/firewalld下的對應檔案將被重新命名為 <file>.old 然後啟用備用配置。

正在開發的特性 

富語言

富語言特性提供了一種不需要了解iptables語法的通過高階語言配置複雜 IPv4 和 IPv6 防火牆規則的機制。

Fedora 19 提供了帶有 D-Bus 和命令列支援的富語言特性第2個里程碑版本。第3個里程碑版本也將提供對於圖形介面 firewall-config 的支援。 對於此特性的更多資訊,請參閱: firewalld Rich Language

鎖定

鎖定特性為 firewalld 增加了鎖定本地應用或者服務配置的簡單配置方式。它是一種輕量級的應用程式策略。

Fedora 19 提供了鎖定特性的第二個里程碑版本,帶有 D-Bus 和命令列支援。第3個里程碑版本也將提供圖形介面 firewall-config 下的支援。 更多資訊請參閱: firewalld Lockdown

永久直接規則

這項特性處於早期狀態。它將能夠提供儲存直接規則和直接鏈的功能。通過規則不屬於該特性。更多關於直接規則的資訊請參閱Direct options。

從ip*tables和ebta