Linux防火牆firewalld安全設置
- 2019 年 11 月 22 日
- 筆記
背景描述
防火牆是具有很好的保護作用。入侵者必須首先穿越防火牆的安全防線,才能接觸目標電腦。在公司里數據安全是最重要的,要求安全部門進行全公司進行伺服器防火牆安全搭建,在原有的基礎上進行安全的防火牆設置,大多數生產環境都建議開啟,這樣才能有效避免安全隱患等問題;本文文字偏多,但是建議大家還是花個十多分鐘好好看一下防火牆的原理,這樣便於後期問題排查,最後一小節也會有常用命令操作。
1.Linux防火牆概述
防火牆是指設置在不同網路或網路安全域之間的一系列部件的組合,它能增強機構內部網路的安全性。它通過訪問控制機制,確定哪些內部服務允許外部訪問,以及允許哪些外部請求可以訪問內部服務。它可以根據網路傳輸的類型決定IP包是否可以傳進或傳出內部網。 防火牆通過審查經過的每一個數據包,判斷它是否有相匹配的過濾規則,根據規則的先後順序進行一一比較,直到滿足其中的一條規則為止,然後依據控制機製做出相應的動作。如果都不滿足,則將數據包丟棄,從而保護網路的安全。 Linux系統的防火牆功能是由內核實現的。在2.4 版及以後的內核中,包過濾機制是netfilter.CentOS 6管理工具是iptables,CentOS 7管理工具是firewalld ,firewalld 是Linux新一代的防火牆工具,它提供了支援網路/防火牆區域 (zone) 定義網路鏈接以及介面安全等級的動態防火牆管理。 Netfilter,位於Linux內核中的包過濾防火牆功能體系,稱為Linux防火牆「內核態」。firewall-cmd,位於/bin/firewall-cmd,是用來管理防火牆的命令工具,為防火牆體系提供過濾規則/策略,決定如何過濾或處理到達防火牆主機的數據包,稱為Linux防火牆的「用戶態」。習慣上,上述2種稱呼都可以代表Linux防火牆。
2.Linux防火牆框架
(1) netfilter框架 Linux內核包含了一個強大的網路子系統,名為netfilter,它可以為iptables內核防火牆模組提供有狀態或無狀態的包過濾服務,如NAT、IP偽裝等,也可以因高級路由或連接狀態管理的需要而修改IP頭資訊。而firewalld可以動態管理防火牆,將netfilter的過濾功能集於一身,它也支援允許服務或者應用程式直接添加防火牆規則的介面,netfilter所處的位置如圖1所示:

雖然防火牆模組構建在Linux內核,並且要對流經IP層的數據包進行處理,但它並沒有改變IP協議棧的程式碼,而是通過netfilter模組將防火牆的功能引入IP層,從而實現防火牆程式碼和IP協議棧程式碼的完全分離。netfilter模組的結構。如圖2所示:

數據包從左邊進入IP協議棧,進行IP校驗以後,數據包被PREROUTING處理,然後就進入路由模組,由其決定該數據包是轉發出去還是送給本機。若該數據包是送給本機的,則通過INPUT處理後傳遞給本機的上層協議;若該數據包應該被轉發,則它將FORWARD處理,然後還要經POSTROUTING處理後才能傳輸到網路。本機進程產生的數據包要先經過OUTPUT處理後,再進行路由選擇處理,然後經過POSTROUTING處理後再發送到網路。 iptables服務在/etc/sysconfig/iptables中儲存配置,而firewalld將配置儲存在 /usr/lib/firewalld/和/etc/firewalld/中的各種XML文件里,使用iptables的時候每一個單獨更改意味著清除所有舊有的規則和從/etc/sysconfig/iptables里讀取所有新的規則,使用firewalld 卻不會再創建任何新的規則,僅僅運行規則中的不同。因此firewalld可以在運行時改變設置而不丟失現行配置。 Firewalld動態管理防火牆,不需要重啟整個防火牆便可應用更改。因而也就沒有必要重載所有內核防火牆模組。不過,要使用firewalld就要求防火牆的所有變更都要通過firewalld守護進程來實現,以確保守護進程中的狀態和內核里的防火牆是一致的。另外,firewalld無法解析由iptables和iptables命令行工具添加的防火牆規則。Firewalld防火牆堆棧示意圖,如圖3所示。

2.Firewall防火牆管理
FirewallD 提供了支援網路/防火牆區域(zone)定義網路鏈接以及介面安全等級的動態防火牆管理工具。firewalld通過將網路劃分成不同的區域(通常情況下稱為 zones),制定出不同區域之間的訪問控制策略來控制不同區域間傳送的數據流。它支援 IPv4, IPv6 防火牆設置以及乙太網橋接,並且擁有運行時配置和永久配置選項。它也支援允許服務或者應用程式直接添加防火牆規則的介面。以前的 system-config-firewall/lokkit 防火牆模型是靜態的,每次修改都要求防火牆完全重啟。這個過程包括內核 netfilter 防火牆模組的卸載和新配置所需模組的裝載等。而模組的卸載將會破壞狀態防火牆和確立的連接。 相反,firewall daemon 動態管理防火牆,不需要重啟防火牆便可應用更改。因而也就沒有必要重載所有內核防火牆模組了。不過,要使用 firewall daemon 就要求防火牆的所有變更都要通過該守護進程來實現,以確保守護進程中的狀態和內核里的防火牆是一致的。另外,firewall daemon 無法解析由 ip*tables 和 ebtables 命令行工具添加的防火牆規則。守護進程通過 D-BUS 提供當前激活的防火牆設置資訊,也通過 D-BUS 接受使用 PolicyKit 認證方式做的更改。應用程式、守護進程和用戶可以通過D-BUS請求啟用一個防火牆特性。特性可以是預定義的防火牆功能,如:服務、埠和協議的組合、埠/數據報轉發、偽裝、ICMP 攔截或自定義規則等。該功能可以啟用確定的一段時間也可以再次停用。
3.firewalld區域管理
網路區域定義了網路連接的可信等級。這是一個一對多的關係,這意味著一次連接可以僅僅是一個區域的一部分,而一個區域可以用於很多連接。一個IP可以看作是一個區域、一個網段可以看作是一個區域,區域網、互聯網都可以看作是一個區域。例如:
- 預定義的服務: 服務是埠和/或協議入口的組合。 備選內容包括 netfilter 助手模組以及 IPv4、Pv6地址。
- 埠和協議: 定義了 tcp 或 udp 埠,埠可以是一個埠或者埠範圍。
- ICMP阻塞: 可以選擇 Internet 控制報文協議的報文。 這些報文可以是資訊請求亦可是對資訊請求或錯誤條件創建的響應。
- 偽裝: 私有網路地址可以被映射到公開的IP地址。 這是一次正規的地址轉換。
- 埠轉發: 埠可以映射到另一個埠以及/或者其它主機。 現網應用中,假設互聯網是不可信任的區域,而內部網路是高度信任的區域。 為避免安全策略中禁止的一些通訊,它在信任度不同的區域有各自基本的控制任務。 典型的區域包括互聯網(一個沒有信任的區域)和一個內部網路(一個高信任的區域)。 最終目標是在不同信任力度的區域,通過安全政策的運行和連通性模型之間,根據最少特權原則提供連通性。 例如: 公共 WIFI 網路連接應該不信任,而家庭有線網路連接就應該完全信任。 網路安全模型可以在安裝、初次啟動和首次建立網路連接時選擇初始化。 該模型描述了主機所聯的整個網路環境的可信級別,並定義了新連接的處理方式。 在 /etc/firewalld/ 的區域設定中,定義了一系列可以被快速執行到網路介面的預設定。 firewalld 提供的區域按照從不信任到信任的順序排序。 有以下幾種不同的初始化區域:
- drop(丟棄): 任何接收的網路數據包都被丟棄,沒有任何回復。 僅能有發送出去的網路連接。
- block(限制): 任何接收的網路連接,都被 IPv4 的 icmp-host-prohibited 資訊和 IPv6 的 icmp6-adm-prohibited 資訊所拒絕。
- public(公共): 該區域是系統默認區域,在公共區域內使用,不能相信網路內的其它電腦不會對您的電腦造成危害,只能接收經過選取的連接。
- external(外部): 特別是為路由器啟用了偽裝功能的外部網。 您不能信任來自網路的其它計算,不能相信它們不會對您的電腦造成危害,只能接收經過選擇的連接。
- dmz(非軍事區): 用於您的非軍事區內的電腦,此區域內可公開訪問,可以有限地進入您的內部網路,僅僅接收經過選擇的連接。
- work(工作): 用於工作區。 您可以基本相信網路內的其它電腦不會危害您的電腦。 僅僅接收經過選擇的連接。
- home(家庭): 用於家庭網路。 您可以基本信任網路內的其它電腦不會危害您的電腦。 僅僅接收經過選擇的連接。
- internal(內部): 用於內部網路。 您可以基本上信任網路內的其它電腦不會威脅您的電腦。 僅僅接受經過選擇的連接。
- trusted(信任): 可接受所有的網路連接。
配置或者增加區域:可以使用任何一種 firewalld 配置工具來配置或者增加區域,以及修改配置。工具有例如 firewall-config 這樣的圖形介面工具, firewall-cmd 這樣的命令行工具,以及D-BUS介面。或者也可以在配置文件目錄中創建或者拷貝區域文件。@PREFIX@/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把網路連接增加到區域。
4.Linux防火牆的基本配置與管理
CentOS 7中使用firewall-config圖形介面管理的防火牆策略。也可以使用firewall-cmd命令行工具進行管理, firewall-cmd 支援全部防火牆特性,對於狀態和查詢模式,命令只返回狀態,沒有其它輸出。另外還可以直接編輯/etc/firewalld/中的配置文件用來管理firewalld的策略。
- 使用firewalld可以通過圖形介面工具 firewall-config 或者命令行客戶端 firewall-cmd 啟用或者關閉防火牆特性。
- 使用firewall-cmd命令行工具 firewall-cmd 支援全部防火牆特性。 對於狀態和查詢模式,命令只返回狀態,沒有其它輸出。
4.1 firewall-cmd命令行工具
firewall-cmd支援防火牆的所有特性,管理員可以用它來改變系統或用戶策略,通過 firewall-cmd用戶可以配置防火牆允許通過的服務、埠、偽裝、埠轉發、和ICMP過濾器和調整 zone(區域)設置等功能。 firewall-cmd工具支援兩種策略管理方式,運行時和永久設置,需要分別設置兩者:
- 處理運行時區域,運行時模式下對區域進行的修改不是永久有效的,但是即時生效,重新載入或者重啟系統後修改將失效。
- 處理永久區域,永久選項不直接影響運行時的狀態,這些選項僅在重載或者重啟系統時可用。
- 防火牆啟動與關閉
- 啟動防火牆: systemctl start firewalld
- 查詢防火牆狀態: systemctl status firewalld
- 開機啟動防火牆: systemctl enable firewalld
- 停止防火牆: systemctl stop firewalld
- 開機關閉防火牆: systemctl disable firewalld
防火牆管理命令格式: firewall-cmd [Options…] firewall-cmd支援上百參數,下表為常用Options說明,如表所示:
firewall-cmd命令 |
說明 |
---|---|
—get-default-zone |
查詢當前默認區域 |
—set-default-zone= |
設置默認區域,會更改運行時和永久配置 |
—get-zones |
列出所有可用區域 |
—get-active-zones |
列出正在使用的所有區域(具有關聯的介面或源)機器介面和源資訊 |
—add-source=[—zone=] |
將來自IP地址或網路/子網掩碼的所有流量路由到指定區域。 |
—remove-source=[—zone=] |
從指定區域中刪除用於路由來自IP地址或網路/子網掩碼的所有流量的規則 |
—add-interface=[—zone=] |
將來自的所有流量路由到指定區域 |
—change-interface=[—zone=] |
將介面與而非其當前區域關聯 |
—list-all [—zone=] |
列出的所有已配置介面、源、服務和埠 |
—list-all-zones |
檢索所有區域的所有資訊(介面、源、埠、服務等) |
—add-service=[—zone=] |
允許到的流量 |
—add-port=[—zone=] |
允許到埠的流量 |
—remove-service=[—zone=] |
從區域允許列表中刪除 |
—remove-port=[—zone=] |
從區域允許列表中刪除埠 |
—reload |
丟棄運行時配置,並應用持久配置 |
4.2 firewall-config圖形工具
firewall-config支援防火牆的所有特性,管理員可以用它來改變系統或用戶策略,通過 firewall-config 用戶可以配置防火牆允許通過的服務、埠、偽裝、埠轉發、和ICMP過濾器和調整 zone(區域)設置等功能以使防火牆設置更加的自由、安全和強健。 firewall-config工作介面。如圖4所示。

圖4 firewall-config工作介面分成三個部分:上面是主菜單,中間是配置選項卡,包括區域、服務設置選項卡,底部是狀態欄,狀態欄從左到右依次是連接狀態、默認區域、鎖定狀態、應急模式。 在左下方角落尋找「已連接」字元,這標誌著 firewall-config工具已經連接到用戶區後台程式 firewalld。 (1).firewall-config 主菜單 firewall-config 主菜單包括四個選項:文件,選項,查看,幫助。其中選項子菜單是最主要的,它包括幾個部分:
- 重載防火牆: 重載防火牆規則。 例如所有現在運行的配置規則如果沒有在永久配置中操作,那麼系統重載後會丟失。
- 更改連接區域: 更改網路連接的默認區域。
- 改變默認區域: 更改網路連接的所屬區域和介面。
- 應急模式: 應急模式意味著丟棄所有的數據包。
- 鎖定: 鎖定可以對防火牆配置進行加鎖,只允許白名單上的應用程式進行改動。 鎖定特性為 firewalld 增加了鎖定本地應用或者服務配置的簡單配置方式。 它是一種輕量級的應用程式策略。
(2)firewall-config配置選項卡 firewall-config 配置選項卡包括:運行時和永久。
- 運行時: 運行時配置為當前使用的配置規則。 運行時配置並非永久有效,在重新載入時可以被恢復,而系統或者服務重啟、停止時,這些選項將會丟失。
- 永久: 永久配置規則在系統或者服務重啟的時候使用。 永久配置存儲在配置文件中,每次機器重啟或者服務重啟、重新載入時將自動恢復。
(3)firewall-config區域選項卡 區域選項卡是一個主要設置介面,firewalld 提供了10種預定義的區域,區域配置選項和通用配置資訊可以在 firewall.zone(5) 的手冊里查到, 區域選項卡有八個子選項卡,分別是服務、埠、偽裝、埠轉發、ICMP過濾器、富規則、介面、來源,如圖3-1-5所示。
- 服務: 定義區域中哪些服務是可信的。
- 埠: 定義區域中允許訪問的主機或網路訪問的附加埠或埠範圍。
- 偽裝: NAT偽裝,是否啟用IP轉發,是地址轉發的一種,僅支援IPv4。
- 埠轉發: NAT轉發,將指向單個埠的流量將轉發到相同電腦上的不同埠,或者轉發到不同電腦上的埠
- ICMP過濾器: 設置可通過的ICMP數據包類型。
- 富規則: 是一種表達性語言,可表達firewalld基本語法中未涵蓋的自定義防火牆規則,可用於表達基本的允許/拒絕規則,可用於配置記錄(面向syslog和auditd)及埠轉發、偽裝和速率限制
- 介面: 增加入口到區域。
- 來源:綁定來源地址或範圍。

(4)firewall-config 服務選項卡 預定義了幾十種重要服務,可通過命令firewall-cmd —get-services查詢,服務是埠、協議、模組和目標地址的集合,該選項卡配置只能在永久配置視圖中修改服務,不能在運行時配置中修改。 服務選項卡底下包含埠和協議、模組、目標地址三種子選項卡,如圖3-1-6所示。。
埠和協議:
定義需要被所有主機或網路訪問的額外埠或埠區間。
模組:
添加網路過濾輔助模組。
目標地址:
如果指定了目的地址,服務項目將僅限於目的地址和類型。

5 當前的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下的對應文件將被重命名為 .old 然後啟用備用配置。
6.用戶策略支援
管理員可以規定哪些用戶可以使用用戶交互模式和限制防火牆可用特性。 埠元數據資訊(由 Lennart Poettering 提議),擁有一個埠獨立的元數據資訊是很好的。應用程式或服務的埠是動態的,因而埠本身並不能描述使用情況,所以對 /etc/services 的埠和協議靜態分配模型不是個好的解決方案,也沒有反映當前使用情況。。 元數據資訊可以用來為防火牆制定簡單的規則。下面是一些例子:
- 允許外部訪問文件共享應用程式或服務;
- 允許外部訪問音樂共享應用程式或服務;
- 允許外部訪問全部共享應用程式或服務;
- 允許外部訪問 torrent 文件共享應用程式或服務;
- 允許外部訪問 http 網路服務。
這裡的元數據資訊不只有特定應用程式,還可以是一組使用情況。例如:組「全部共享」或者組「文件共享」可以對應於全部共享或文件共享程式(如:torrent 文件共享)。這些只是例子,因而,可能並沒有實際用處。 這裡是在防火牆中獲取元數據資訊的兩種可能途徑:
- 第一種是添加到 netfilter (內核空間)。 好處是每個人都可以使用它,但也有一定使用限制。 還要考慮用戶或系統空間的具體資訊,所有這些都需要在內核層面實現。
- 第二種是添加到 firewall daemon 中。 這些抽象的規則可以和具體資訊(如: 網路連接可信級。 作為具體個人/主機要分享的用戶描述.管理員禁止完全共享的應歸則等)一起使用。
第二種解決方案的好處是不需要為有新的元數據組和納入改變(可信級.用戶偏好或管理員規則等等)重新編譯內核。這些抽象規則的添加使得 firewall daemon 更加自由。即使是新的安全級也不需要更新內核即可輕鬆添加。
7.sysctld的錯誤設置
實際應用中對sysctl 設置經常出現錯誤。 一個例子是,在 rc.sysinit 正運行時,而提供設置的模組在啟動時沒有裝載或者重新裝載該模組時會發生問題。 另一個例子是 net.ipv4.ip_forward ,防火牆設置.libvirt 和用戶/管理員更改都需要它。如果有兩個應用程式或守護進程只在需要時開啟 ip_forwarding ,之後可能其中一個在不知道的情況下關掉服務,而另一個正需要它,此時就不得不重啟它。 sysctl daemon 可以通過對設置使用內部計數來解決上面的問題。此時,當請求者不再需要時,它就會再次回到之前的設置狀態或者是直接關閉它。
8 iptables 的與firewalld區別
firewalld 和 iptables service 之間最本質區別是:
- iptables service 在 /etc/sysconfig/iptables 中儲存配置,而 firewalld 將配置儲存在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各種 XML 文件里,要注意,當 firewalld 在Linux上安裝失敗時, /etc/sysconfig/iptables 文件就不存在。
- 使用 iptables service,每一個單獨更改意味著清除所有舊有的規則和從 /etc/sysconfig/iptables里讀取所有新的規則,然而使用 firewalld 卻不會再創建任何新的規則;僅僅運行規則中的不同之處。 因此,firewalld 可以在運行時間內,改變設置而不丟失現行連接。
9 常用命令
(1) firewalld的基本使用
啟動:systemctl start firewalld 關閉:systemctl stop firewalld 查看狀態:systemctl status firewalld 開機禁用 :systemctl disable firewalld 開機啟用 :systemctl enable firewalld
(2) systemctl是CentOS7的服務管理工具中主要的工具,它融合之前service和chkconfig的功能於一體。
啟動一個服務:systemctl start firewalld.service 關閉一個服務:systemctl stop firewalld.service 重啟一個服務:systemctl restart firewalld.service 顯示一個服務的狀態:systemctl status firewalld.service 在開機時啟用一個服務:systemctl enable firewalld.service 在開機時禁用一個服務:systemctl disable firewalld.service 查看服務是否開機啟動:systemctl is-enabled firewalld.service 查看已啟動的服務列表:systemctl list-unit-files|grep enabled 查看啟動失敗的服務列表:systemctl —failed
(3) 配置firewalld-cmd
#《實例一》防火牆查詢 firewall-cmd --version //查看版本 firewall-cmd --help // 查看幫助 firewall-cmd --state // 顯示狀態 firewall-cmd --get-services //獲取支援服務列表(firewalld內置服務支援) firewall-cmd --zone=public --list-ports //查看所有打開的埠 firewall-cmd --list-forward-ports //查看轉發的埠 fierewall-cmd –reload //重新載入防火牆策略 firewall-cmd --get-active-zones //查看區域資訊 firewall-cmd --list-all-zones //列出全部啟用的區域的特性 firewall-cmd --list-services //顯示防火牆當前服務 firewall-cmd --get-zone-of-interface=eth0 //查看指定介面所屬區域 firewall-cmd --panic-on //拒絕所有包 firewall-cmd --panic-offfir //取消拒絕狀態 firewall-cmd --query-panic //查看是否拒絕 # 《實例二》 運行時區域策略設置示例(註:以下示例不加zone的為默認區域public) firewall-cmd --add-service=ssh //允許 ssh 服務通過 firewall-cmd --remove-service=ssh //禁止 ssh 服務通過 firewall-cmd --add-service=samba --timeout=600 //臨時允許 samba 服務通過 600 秒 firewall-cmd --add-service=http --zone=work //允許http服務通過work區域 firewall-cmd --zone=work --add-service=http //從work區域打開http服務 firewall-cmd --zone=internal --add-port=443/tcp //打開 443/tcp 埠在內部區域(internal) firewall-cmd --zone=internal --remove-port=443/tcp //關閉443/tcp 埠在內部區域(internal) firewall-cmd --add-interface=eth0 //打開網卡eth0 firewall-cmd --remove-interface=eth0 //關閉網卡eth0 #《 實例三》 永久區域策略設置示例(註:以下示例不加zone的為默認區域public;永久設置均需重新載入防火牆策略或重啟系統) firewall-cmd --permanent --add-service=ftp //永久允許 ftp 服務通過 firewall-cmd --permanent --remove-service=ftp //永久禁止 ftp 服務通過 firewall-cmd --permanent --add-service=http --zone=external //永久允許http服務通過external區域 firewall-cmd --permanent --add-service=http --zone=external //永久允許http服務通過external區域 firewall-cmd --permanent --zone=internal --add-port=111/tcp //打開 111/tcp 埠在內部區域(internal) firewall-cmd --permanent --zone=internal --remove-port=111/tcp //關閉 111/tcp 埠在內部區域(internal) firewall-cmd --permanent --add-interface=eth0 //永久打開網卡eth0 firewall-cmd --permanent --remove-interface=eth0 //永久關閉網卡eth0 firewall-cmd --permanent --zone=public --add-port=8080-8083/tcp //添加多個埠 firewall-cmd --permanent --zone=public --remove-port=81/tcp //刪除某個埠 firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.1.51" accept" //刪除某個IP firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.0/16" accept" // firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="9200" accept" //針對某個ip段訪問 firewall-cmd --reload //添加操作後別忘了執行重載才會生效