背景描述docker
防火牆是具備很好的保護做用。入侵者必須首先穿越防火牆的安全防線,才能接觸目標計算機。在公司裏數據安全是最重要的,要求安所有門進行全公司進行服務器防火牆安全搭建,在原有的基礎上進行安全的防火牆設置,大多數生產環境都建議開啓,這樣纔能有效避免安全隱患等問題;本文文字偏多,可是建議你們仍是花個十多分鐘好好看一下防火牆的原理,這樣便於後期問題排查,最後一小節也會有經常使用命令操做。小程序
1 詳細瞭解防火牆相關配置;安全
2 詳細解讀相關安全配置方法;服務器
3 詳細解讀firewalld防火牆的基礎知識;網絡
4 瞭解firewalld防火牆的配置;app
5 瞭解firewalld防火牆相關命令的使用。框架
防火牆是指設置在不一樣網絡或網絡安全域之間的一系列部件的組合,它能加強機構內部網絡的安全性。它經過訪問控制機制,肯定哪些內部服務容許外部訪問,以及容許哪些外部請求能夠訪問內部服務。它能夠根據網絡傳輸的類型決定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防火牆。運維
(1) netfilter框架
Linux內核包含了一個強大的網絡子系統,名爲netfilter,它能夠爲iptables內核防火牆模塊提供有狀態或無狀態的包過濾服務,如NAT、IP假裝等,也能夠因高級路由或鏈接狀態管理的須要而修改IP頭信息。而firewalld能夠動態管理防火牆,將netfilter的過濾功能集於一身,它也支持容許服務或者應用程序直接添加防火牆規則的接口,netfilter所處的位置如圖1所示:ssh
圖1 netfilter在防火牆中的位置tcp
雖然防火牆模塊構建在Linux內核,而且要對流經IP層的數據包進行處理,但它並無改變IP協議棧的代碼,而是經過netfilter模塊將防火牆的功能引入IP層,從而實現防火牆代碼和IP協議棧代碼的徹底分離。netfilter模塊的結構。如圖2所示:
圖2 netfilter結構框架圖
數據包從左邊進入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所示。
圖3 爲firewalld防火牆堆棧
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 攔截或自定義規則等。該功能能夠啓用肯定的一段時間也能夠再次停用。
網絡區域定義了網絡鏈接的可信等級。這是一個一對多的關係,這意味着一次鏈接能夠僅僅是一個區域的一部分,而一個區域能夠用於不少鏈接。一個IP能夠看做是一個區域、一個網段能夠看做是一個區域,局域網、互聯網均可以看做是一個區域。例如:
預約義的服務:
服務是端口和/或協議入口的組合。
備選內容包括 netfilter 助手模塊以及 IPv四、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把網絡鏈接增長到區域。
CentOS 7中使用firewall-config圖形界面管理的防火牆策略。也可使用firewall-cmd命令行工具進行管理, firewall-cmd 支持所有防火牆特性,對於狀態和查詢模式,命令只返回狀態,沒有其它輸出。另外還能夠直接編輯/etc/firewalld/中的配置文件用來管理firewalld的策略。
使用firewalld能夠經過圖形界面工具 firewall-config 或者命令行客戶端 firewall-cmd 啓用或者關閉防火牆特性。
使用firewall-cmd命令行工具 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 | 丟棄運行時配置,並應用持久配置 |
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)及端口轉發、假裝和速率限制
接口:
增長入口到區域。
來源:綁定來源地址或範圍。
圖5
(4)firewall-config 服務選項卡
預約義了幾十種重要服務,可經過命令firewall-cmd —get-services查詢,服務是端口、協議、模塊和目標地址的集合,該選項卡配置只能在永久配置視圖中修改服務,不能在運行時配置中修改。
服務選項卡底下包含端口和協議、模塊、目標地址三種子選項卡,如圖3-1-6所示。。
端口和協議:
定義須要被全部主機或網絡訪問的額外端口或端口區間。
模塊:
添加網絡過濾輔助模塊。
目標地址:
若是指定了目的地址,服務項目將僅限於目的地址和類型。
圖6
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 而後啓用備用配置。管理員能夠規定哪些用戶可使用用戶交互模式和限制防火牆可用特性。
端口元數據信息(由 Lennart Poettering 提議),擁有一個端口獨立的元數據信息是很好的。應用程序或服務的端口是動態的,於是端口自己並不能描述使用狀況,因此對 /etc/services 的端口和協議靜態分配模型不是個好的解決方案,也沒有反映當前使用狀況。。
元數據信息能夠用來爲防火牆制定簡單的規則。下面是一些例子:
容許外部訪問文件共享應用程序或服務;
容許外部訪問音樂共享應用程序或服務;
容許外部訪問所有共享應用程序或服務;
容許外部訪問 torrent 文件共享應用程序或服務;
容許外部訪問 http 網絡服務。
這裏的元數據信息不僅有特定應用程序,還能夠是一組使用狀況。例如:組「所有共享」或者組「文件共享」能夠對應於所有共享或文件共享程序(如:torrent 文件共享)。這些只是例子,於是,可能並無實際用處。
這裏是在防火牆中獲取元數據信息的兩種可能途徑:
第一種是添加到 netfilter (內核空間)。
好處是每一個人均可以使用它,但也有必定使用限制。
還要考慮用戶或系統空間的具體信息,全部這些都須要在內核層面實現。
第二種是添加到 firewall daemon 中。
這些抽象的規則能夠和具體信息(如:
網絡鏈接可信級。
做爲具體我的/主機要分享的用戶描述.管理員禁止徹底共享的應歸則等)一塊兒使用。
第二種解決方案的好處是不須要爲有新的元數據組和歸入改變(可信級.用戶偏好或管理員規則等等)從新編譯內核。這些抽象規則的添加使得 firewall daemon 更加自由。即便是新的安全級也不須要更新內核便可輕鬆添加。
實際應用中對sysctl 設置常常出現錯誤。
一個例子是,在 rc.sysinit 正運行時,而提供設置的模塊在啓動時沒有裝載或者從新裝載該模塊時會發生問題。
另外一個例子是 net.ipv4.ip_forward ,防火牆設置.libvirt 和用戶/管理員更改都須要它。若是有兩個應用程序或守護進程只在須要時開啓 ip_forwarding ,以後可能其中一個在不知道的狀況下關掉服務,而另外一個正須要它,此時就不得不重啓它。
sysctl daemon 能夠經過對設置使用內部計數來解決上面的問題。此時,當請求者再也不須要時,它就會再次回到以前的設置狀態或者是直接關閉它。
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 能夠在運行時間內,改變設置而不丟失現行鏈接。
(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 //添加操做後別忘了執行重載纔會生效
愛生活,愛運維,歡迎各位一塊兒交流