您現在的位置是:首頁 > 籃球
CentOS 78 預裝的新型防火牆firewalld配置詳解,你會用嗎
- 由 Linux學習教程 發表于 籃球
- 2021-12-31
如何設定防火牆埠
請關注本頭條號,每天堅持更新原創乾貨技術文章。
如需學習影片,請在微信搜尋公眾號
“智傳網優”
直接開始自助
影片學習
1. 前言
本文將會詳細介紹CentOS 7 firewalld的來由、功能、常用命令、常用的案例及使用方法。希望能幫助讀者全面瞭解firewalld,並能正確配置和使用它。
centos7 firewalld
2. firewalld與iptables的關係
在RHEL7裡有幾種防火牆共存:firewalld、iptables、ebtables,預設是使用firewalld來管理netfilter子系統,不過底層呼叫的命令仍然是iptables等。firewalld跟iptables比起來,不好的地方是每個服務都需要去設定才能放行,因為預設是拒絕。而iptables裡預設是每個服務是允許,需要拒絕的才去限制。
firewalld與iptables的關係
firewalld跟iptables比起來至少有兩大好處:
1、firewalld可以動態修改單條規則,而不需要像iptables那樣,在修改了規則後必須得全部重新整理才可以生效;
2、firewalld在使用上要比iptables人性化很多,即使不明白“五張表五條鏈”而且對TCP/IP協議也不理解也可以實現大部分功能。
firewalld自身並不具備防火牆的功能,而是和iptables一樣需要透過核心的netfilter來實現,也就是說firewalld和 iptables一樣,他們的作用都是用於維護規則,而真正使用規則幹活的是核心的netfilter,只不過firewalld和iptables的結構以及使用方法不一樣罷了。
一個重要的概念:區域管理
firewalld將網絡卡對應到不同的區域(zone),zone 預設共有9個,block dmz drop external home internal public trusted work。
不同的區域之間的差異是其對待資料包的預設行為不同,根據區域名字我們可以很直觀的知道該區域的特徵,在CentOS7系統中,預設區域被設定為public。
在最新版本的fedora(fedora21)當中隨著 server 版和 workstation 版的分化則添加了兩個不同的自定義 zone FedoraServer 和 FedoraWorkstation 分別對應兩個版本。
透過將網路劃分成不同的區域,制定出不同區域之間的訪問控制策略來控制不同程式區域間傳送的資料流。例如,網際網路是不可信任的區域,而內部網路是高度信任的區域。網路安全模型可以在安裝,初次啟動和首次建立網路連線時選擇初始化。該模型描述了主機所連線的整個網路環境的可信級別,並定義了新連線的處理方式。有如下幾種不同的初始化區域:
阻塞區域(block):任何傳入的網路資料包都將被阻止。
工作區域(work):相信網路上的其他計算機,不會損害你的計算機。
家庭區域(home):相信網路上的其他計算機,不會損害你的計算機。
公共區域(public):不相信網路上的任何計算機,只有選擇接受傳入的網路連線。
隔離區域(DMZ):隔離區域也稱為非軍事區域,內外網路之間增加的一層網路,起到緩衝作用。對於隔離區域,只有選擇接受傳入的網路連線。
信任區域(trusted):所有的網路連線都可以接受。
丟棄區域(drop):任何傳入的網路連線都被拒絕。
內部區域(internal):信任網路上的其他計算機,不會損害你的計算機。只有選擇接受傳入的網路連線。
外部區域(external):不相信網路上的其他計算機,不會損害你的計算機。只有選擇接受傳入的網路連線。
注:FirewallD的預設區域是public。
firewalld預設提供了九個zone配置檔案:block。xml、dmz。xml、drop。xml、external。xml、 home。xml、internal。xml、public。xml、trusted。xml、work。xml,他們都儲存在“/usr/lib/firewalld/zones/”目錄下。
預設情況下,在/etc/firewalld/zones下面只有一個public。xml。如果給另外一個zone做一些改動,並永久儲存,那麼會自動生成對應的配置檔案,比如,給work zone增加一個埠:
firewall-cmd ——permanent ——zone=work ——add-port=1000/tcp
此時就會生成一個work。xml的配置檔案
檢視XX區域的永久配置檔案:
[root@zcwyou ~]# cat /etc/firewalld/zones/XX。xml
注意:防火牆配置檔案也可以手動修改,修改後記得reload防火牆
配置方法
firewalld的配置方法主要有三種:firewall-config、firewall-cmd和直接編輯xml檔案,其中 firewall-config是圖形化工具,firewall-cmd是命令列工具,而對於linux來說大家應該更習慣使用命令列方式的操作,所以 firewall-config我們就不給大家介紹了。
firewalld預設配置檔案有兩個:
/usr/lib/firewalld/ (系統配置,儘量不要修改)
/etc/firewalld/ (使用者配置地址)
3. 什麼是服務?
在 /usr/lib/firewalld/services/ 目錄中,還儲存了另外一類配置檔案,每個檔案對應一項具體的網路服務,如 ssh 服務等。
與之對應的配置檔案中記錄了各項服務所使用的 tcp/udp 埠,在最新版本的 firewalld 中預設已經定義了 70+ 種服務供我們使用。
當預設提供的服務不夠用或者需要自定義某項服務的埠時,我們需要將 service 配置檔案放置在 /etc/firewalld/services/ 目錄中。
service 配置的好處顯而易見:
第一,透過服務名字來管理規則更加人性化,
第二,透過服務來組織埠分組的模式更加高效,如果一個服務使用了若干個網路埠,則服務的配置檔案就相當於提供了到這些埠的規則管理的批次操作快捷方式。
假如你伺服器的ftp不使用預設埠,預設ftp的埠21改為1121,但想透過服務的方式操作防火牆,程式碼如下:
複製模版到/etc,以便修改和呼叫
[root@zcwyou ~]# cp /usr/lib/firewalld/services/ftp。xml /etc/firewalld/services/
修改模版配置
[root@zcwyou ~]# vim /etc/firewalld/services/ftp。xml
把21改為1121
[root@zcwyou ~]# vim /etc/firewalld/zones/public。xml
public為預設zone,所以要編輯這個,增加一行,以下內容
重新載入防火牆配置
[root@zcwyou ~]# firewall-cmd ——reload
4. 安裝、啟用、關閉firewalld
4.1 安裝firewalld
[root@zcwyou ~]# yum install firewalld firewall-config
4.2 啟動服務
[root@zcwyou ~]# systemctl start firewalld
4.3 開機自動啟動服務
[root@zcwyou ~]# systemctl enable firewalld
4.4 檢視狀態
[root@zcwyou ~]# systemctl status firewalld[root@zcwyou ~]# firewall-cmd ——state
4.5 關閉服務
[root@zcwyou ~]# systemctl stop firewalld
4.6 取消開機啟動
[root@zcwyou ~]# systemctl disable firewalld
4.7 棄用FirewallD防火牆,改用iptables
你也可以關閉目前還不熟悉的FirewallD防火牆,而使用iptables,但不建議:
[root@zcwyou ~]# yum install iptables-services[root@zcwyou ~]# systemctl start iptables[root@zcwyou ~]# systemctl enable iptables
4.8 檢視版本
[root@zcwyou ~]# firewall-cmd ——version
4.9 檢視幫助
[root@zcwyou ~]# firewall-cmd ——help
4.10 顯示狀態
[root@zcwyou ~]# firewall-cmd ——state
4.11 檢視活動區域資訊
[root@zcwyou ~]# firewall-cmd ——get-active-zones
4.12 檢視XX介面所屬區域
[root@zcwyou ~]# firewall-cmd ——get-zone-of-interface=XX
4.13 拒絕所有包
[root@zcwyou ~]# firewall-cmd ——panic-on
4.14 取消拒絕狀態
[root@zcwyou ~]# firewall-cmd ——panic-off
4.15 檢視是否拒絕
[root@zcwyou ~]# firewall-cmd ——query-panic
4.16 檢視firewalld是否開啟
[root@zcwyou ~]# systemctl is-enabled firewalld
4.17 重啟載入防火牆
以 root 身份輸入以下命令,重新載入防火牆,並不中斷使用者連線,即不丟失狀態資訊:
[root@zcwyou ~]# firewall-cmd ——reload
4.18 完全重啟防火牆
以 root 身份輸入以下命令,重新載入防火牆並中斷使用者連線,即丟棄狀態資訊:
[root@zcwyou ~]# firewall-cmd ——complete-reload
注意:通常在防火牆出現嚴重問題時,這個命令才會被使用。比如,防火牆規則是正確的,但卻出現狀態資訊問題和無法建立連線。
firewall-cmd ——reload與firewall-cmd ——complete-reload兩者的區別就是第一個無需斷開連線,就是firewalld特性之一動態新增規則,第二個需要斷開連線,類似重啟服務
4.19 顯示預設區域
[root@zcwyou ~]# firewall-cmd ——get-default-zone
4.20 新增介面到區域
將介面新增到XX區域,如果不指定區域,則新增到預設區域
[root@zcwyou ~]# firewall-cmd ——zone=XX ——add-interface=eth0
永久生效再加上——permanent 然後reload防火牆
4.21 設定預設區域,立即生效無需重啟
[root@zcwyou ~]# firewall-cmd ——set-default-zone=XX
4.22 檢視XX區域開啟的埠
[root@zcwyou ~]# firewall-cmd ——zone=XX ——list-ports
4.23 檢視XX區域載入的服務
[root@zcwyou ~]# firewall-cmd ——zone=XX ——list-services
4.24 臨時加一個埠到XX區域
[root@zcwyou ~]# firewall-cmd ——zone=XX ——add-port=8080/tcp
若要永久生效方法加引數——permanent
4.25 開啟一個服務,類似於將埠視覺化,服務需要在配置檔案中新增,/etc/firewalld 目錄下有services資料夾,檢視其它的xml檔案以及參考前面說方法
[root@zcwyou ~]# firewall-cmd ——zone=work ——add-service=smtp
4.26 移除服務
[root@zcwyou ~]# firewall-cmd ——zone=work ——remove-service=smtp
4.27 顯示支援的區域列表
[root@zcwyou ~]# firewall-cmd ——get-zones
4.28 列出全部區域啟用的特性
[root@zcwyou ~]# firewall-cmd ——list-all-zones
4.29 顯示XX區域詳情
[root@zcwyou ~]# firewall-cmd ——zone=XX ——list-all
4.30 檢視當前活躍區域
[root@zcwyou ~]# firewall-cmd ——get-active-zones
4.31 設定XX介面所屬區域
[root@zcwyou ~]# firewall-cmd ——get-zone-of-interface=XX
4.32 查詢YY區域中是否包含XX介面
[root@zcwyou ~]# firewall-cmd ——zone=YY ——query-interface=XX
4.33 刪除指定XX網絡卡所在的zone(以YY為例)
[root@zcwyou ~]# firewall-cmd ——zone=YY ——remove-interface=XX
4.34 臨時修改XX介面為YY區域
[root@zcwyou ~]# firewall-cmd ——zone=YY ——change-interface=XX
永久修改加引數——permanent
4.35 控制埠 / 服務
可以透過兩種方式控制埠的開放,一種是指定埠號另一種是指定服務名。雖然開放 http 服務就是開放了 80 埠,但是還是不能透過埠號來關閉,也就是說透過指定服務名開放的就要透過指定服務名關閉;透過指定埠號開放的就要透過指定埠號關閉。還有一個要注意的就是指定埠的時候一定要指定是什麼協議,tcp 還是 udp。
富規則
[root@zcwyou ~]# firewall-cmd ——permanent ——add-rich-rule=“rule family=”ipv4“ source address=”192。168。142。166“ port protocol=”tcp“ port=”5432“ accept”[root@zcwyou ~]# systemctl restart firewalld。service
5. firewalld服務管理
firewalld服務管理
5.1 顯示支援的服務
[root@zcwyou ~]# firewall-cmd ——get-services
5.2 臨時允許Samba服務透過600秒
[root@zcwyou ~]# firewall-cmd ——add-service=samba ——timeout=600
5.3 顯示預設區域開啟的服務,如果要查某區域,加引數--zone=XX
[root@zcwyou ~]# firewall-cmd ——list-services
5.4 新增HTTP服務到內部區域(internal),並儲存到配置檔案
[root@zcwyou ~]# firewall-cmd ——permanent ——zone=internal ——add-service=http
在不改變狀態的條件下重新載入防火牆
[root@zcwyou ~]# firewall-cmd ——reload
5.5 開放mysql服務
[root@zcwyou ~]# firewall-cmd ——add-service=mysql
5.6 阻止mysql服務
[root@zcwyou ~]# firewall-cmd ——remove-service=mysql
5.7 埠管理
臨時開啟443/TCP埠,立即生效
[root@zcwyou ~]# firewall-cmd ——add-port=443/tcp
5.8 永久開啟3690/TCP埠
[root@zcwyou ~]# firewall-cmd ——permanent ——add-port=3690/tcp
5.9 永久開啟埠需要reload一下,如果用了reload臨時開啟的埠就失效了
[root@zcwyou ~]# firewall-cmd ——reload
5.10 檢視防火牆所有區域的設定,包括新增的埠和服務
[root@zcwyou ~]# firewall-cmd ——list-all
5.11 開放透過tcp訪問3306
[root@zcwyou ~]# firewall-cmd ——add-port=3306/tcp
5.12 阻止tcp80
[root@zcwyou ~]# firewall-cmd ——remove-port=80/tcp
5.13 開放透過udp訪問233
[root@zcwyou ~]# firewall-cmd ——add-port=233/udp
5.14 檢視開放的埠
[root@zcwyou ~]# firewall-cmd ——list-ports
假設自定義的ssh埠號為12222,使用下面的命令來新增新埠的防火牆規則
[root@zcwyou ~]# firewall-cmd ——add-port=12222/tcp ——permanent
使用——permanent引數可以將更改儲存到配置檔案。
5.15 重啟防火牆
永久開啟埠需要reload一下,如果用了reload臨時開啟的埠就失效了
[root@zcwyou ~]# firewall-cmd ——reload
5.16 新增埠範圍
還可以新增一個埠範圍
[root@zcwyou ~]# firewall-cmd ——add-port=2000-4000/tcp
5.17 針對指定zone XX新增埠
[root@zcwyou ~]# firewall-cmd ——permanent ——zone=XX ——add-port=443/tcp
6. 管理區域中的物件
管理區域中的物件
6.1 獲取永久支援的區域
[root@zcwyou ~]# firewall-cmd ——permanent ——get-zones
6.2 啟用區域中的服務
firewall-cmd ——permanent [——zone=] ——add-service=
此舉將永久啟用區域中的服務。如果未指定區域,將使用預設區域。
臨時開放mysql服務,立即生效
[root@zcwyou ~]# firewall-cmd ——add-service=mysql
public區域,新增httpd服務,並儲存,但不會立即生效,需要reload防火牆
[root@zcwyou ~]# firewall-cmd ——permanent ——zone=public ——add-service=httpd
public區域,禁用httpd服務,並儲存,但不會立即生效,需要reload防火牆
[root@zcwyou ~]# firewall-cmd ——permanent ——zone=public ——remove-service=httpd
7. 埠轉發
埠轉發可以將指定地址訪問指定的埠時,將流量轉發至指定地址的指定埠。轉發的目的如果不指定ip的話就預設為本機,如果指定了ip卻沒指定埠,則預設使用來源埠。
典型的做法:
NAT內網埠對映
SSH隧道轉發資料
如果配置好埠轉發之後不能用,可以檢查下面兩個問題:
比如我將 80 埠轉發至 8080 埠,首先檢查本地的 80 埠和目標的 8080 埠是否開放監聽了
其次檢查是否允許偽裝 IP,沒允許的話要開啟偽裝 IP
將80埠的流量轉發至8080
[root@zcwyou ~]# firewall-cmd ——add-forward-port=port=80:proto=tcp:toport=8080
將80埠的流量轉發至192。168。0。1
[root@zcwyou ~]# firewall-cmd ——add-forward-port=proto=80:proto=tcp:toaddr=192。168。1。0。1
將80埠的流量轉發至192。168。0。1的8080埠
[root@zcwyou ~]# firewall-cmd ——add-forward-port=proto=80:proto=tcp:toaddr=192。168。0。1:toport=8080
當我們想把某個埠隱藏起來的時候,就可以在防火牆上阻止那個埠訪問,然後再開一個不規則的埠,之後配置防火牆的埠轉發,將流量轉發過去。
埠轉發還可以做流量分發,一個防火牆拖著好多臺執行著不同服務的機器,然後用防火牆將不同埠的流量轉發至不同機器。
禁止區域的埠轉發或者埠對映
firewall-cmd [——zone=] ——remove-forward-port=port=[-]:proto= { :toport=[-] | :toaddr=
| :toport=[-]:toaddr=
}查詢區域的埠轉發或者埠對映
firewall-cmd [——zone=] ——query-forward-port=port=[-]:proto= { :toport=[-] | :toaddr=
| :toport=[-]:toaddr=
}在區域中永久啟用埠轉發或對映
firewall-cmd ——permanent [——zone=] ——add-forward-port=port=[-]:proto= { :toport=[-] | :toaddr=
| :toport=[-]:toaddr=
}埠可以對映到另一臺主機的同一埠,也可以是同一主機或另一主機的不同埠。埠號可以是一個單獨的埠 或者是埠範圍 - 。協議可以為 tcp 或udp 。目標埠可以是埠號 或者是埠範圍 -。目標地址可以是 IPv4 地址。受核心限制,埠轉發功能僅可用於IPv4。
永久禁止區域的埠轉發或者埠對映
firewall-cmd ——permanent [——zone=] ——remove-forward-port=port=[-]:proto= { :toport=[-] | :toaddr=
| :toport=[-]:toaddr=
}查詢區域的埠轉發或者埠對映狀態
firewall-cmd ——permanent [——zone=] ——query-forward-port=port=[-]:proto= { :toport=[-] | :toaddr=
| :toport=[-]:toaddr=
}如果服務啟用,此命令將有返回值。此命令沒有輸出資訊。
例: 將 home 區域的 ssh 服務轉發到 127。0。0。2
[root@zcwyou ~]# firewall-cmd ——permanent ——zone=home ——add-forward-port=port=22:proto=tcp:toaddr=127。0。0。2
8. 偽裝 IP
檢查是否允許偽裝IP
[root@zcwyou ~]# firewall-cmd ——query-masquerade
允許防火牆偽裝IP
[root@zcwyou ~]# firewall-cmd ——add-masquerade
禁止防火牆偽裝IP
[root@zcwyou ~]# firewall-cmd ——remove-masquerade
永久啟用區域中的偽裝
firewall-cmd ——permanent [——zone=] ——add-masquerade
此舉啟用區域的偽裝功能。私有網路的地址將被隱藏並對映到一個公有IP。這是地址轉換的一種形式,常用於路由。由於核心的限制,偽裝功能僅可用於IPv4。
臨時禁用區域中的 IP 偽裝
firewall-cmd [——zone=] ——remove-masquerade
永久禁用區域中的偽裝
firewall-cmd ——permanent [——zone=] ——remove-masquerade
查詢區域中的偽裝的永久狀態
firewall-cmd ——permanent [——zone=] ——query-masquerade
如果服務啟用,此命令將有返回值。此命令沒有輸出資訊。
查詢區域的偽裝狀態
firewall-cmd [——zone=] ——query-masquerade
如果啟用,此命令將有返回值。沒有輸出資訊。
9. ICMP控制
獲取永久選項所支援的ICMP型別列表
[root@zcwyou ~]# firewall-cmd ——permanent ——get-icmptypes
獲取所有支援的ICMP型別
[root@zcwyou ~]# firewall-cmd ——get-icmptypes
永久啟用區域中的ICMP阻塞,需要reload防火牆,
firewall-cmd ——permanent [——zone=] ——add-icmp-block=
此舉將啟用選中的 Internet 控制報文協議 (ICMP) 報文進行阻塞。 ICMP 報文可以是請求資訊或者建立的應答報文或錯誤應答報文。
永久禁用區域中的ICMP阻塞,需要reload防火牆,
firewall-cmd ——permanent [——zone=] ——remove-icmp-block=
查詢區域中的ICMP永久狀態
firewall-cmd ——permanent [——zone=] ——query-icmp-block=
如果服務啟用,此命令將有返回值。此命令沒有輸出資訊。
例: 阻塞公共區域中的響應應答報文:
[root@zcwyou ~]# firewall-cmd ——permanent ——zone=public ——add-icmp-block=echo-reply
立即啟用區域的 ICMP 阻塞功能
firewall-cmd [——zone=] ——add-icmp-block=
此舉將啟用選中的 Internet 控制報文協議 (ICMP) 報文進行阻塞。 ICMP 報文可以是請求資訊或者建立的應答報文,以及錯誤應答。
立即禁止區域的 ICMP 阻塞功能
firewall-cmd [——zone=] ——remove-icmp-block=
查詢區域的 ICMP 阻塞功能
firewall-cmd [——zone=] ——query-icmp-block=
如果啟用,此命令將有返回值。沒有輸出資訊。
例: 阻塞區域的響應應答報文:
[root@zcwyou ~]# firewall-cmd ——zone=public ——add-icmp-block=echo-reply
10. 透過配置檔案來使用Firewalld的方法
系統本身已經內建了一些常用服務的防火牆規則,存放在/usr/lib/firewalld/services/
注意!!!!!請勿編輯/usr/lib/firewalld/services/ ,只有 /etc/firewalld/services 的檔案可以被編輯。
以下例子均以系統自帶的public zone 為例子。
當然firewalld也可以使用圖形介面管理:
firewalld使用圖形介面管理
10.1 案例1: 如果想開放80埠供外網訪問http服務,操作如下
Step1:將 http。xml複製到/etc/firewalld/services/下面,以服務形式管理防火牆,
這個cp命令其實是可以省略的,系統會優先去讀取 /etc/firewalld 裡面的檔案,讀取完畢後,會去/usr/lib/firewalld/services/ 再次讀取,為了方便修改和管理,強烈建議複製到/etc/firewalld
[root@zcwyou ~]# cp /usr/lib/firewalld/services/http。xml /etc/firewalld/services/
修改/etc/firewalld/zones/public。xml,加入http服務
vi /etc/firewalld/zones/public。xml
Public For use in public areas。 You do not trust the other computers on networks to not harm your computer。 Only selected incoming connections are accepted。 # 加入這行,要匹配 /etc/firewalld/services/資料夾下的檔名
以 root 身份輸入以下命令,重新載入防火牆,並不中斷使用者連線,即不丟失狀態資訊:
[root@zcwyou ~]# firewall-cmd ——reload
或者以 root 身份輸入以下資訊,重新載入防火牆並中斷使用者連線,即丟棄狀態資訊:
[root@zcwyou ~]# firewall-cmd ——complete-reload
注意:通常在防火牆出現嚴重問題時,這個命令才會被使用。比如,防火牆規則是正確的,但卻出現狀態資訊問題和無法建立連線。
10.2 案例2: SSH為非預設埠,要求能正常訪問
[root@zcwyou ~]# cp /usr/lib/firewalld/services/ssh。xml /etc/firewalld/services/[root@zcwyou ~]# vi /etc/firewalld/services/ssh。xml
把預設22修改為目前的SSH埠號
[root@zcwyou ~]# firewall-cmd ——reload
10.3 案例3:修改區域配置檔案只允許特定主機192.168.23.1連線SSH
[root@zcwyou ~]# cp /usr/lib/firewalld/services/ssh。xml /etc/firewalld/services/[root@zcwyou ~]# vi /etc/firewalld/zones/public。xml
確保配置檔案有以下內容
配置結束
重啟防火牆後生效
[root@zcwyou ~]# firewall-cmd ——reload
11. firewalld直接模式
對於最高階的使用,或對於 iptables 專家,FirewallD 提供了一個Direct介面,允許你給它傳遞原始 iptables 命令。 直接介面規則不是持久的,除非使用 ——permanent。
直接選項主要用於使服務和應用程式能夠增加規則。 規則不會被儲存,在重新載入或者重啟之後必須再次提交。傳遞的引數 與 iptables, ip6tables 以及 ebtables 一致。
選項 –direct 需要是直接選項的第一個引數。
將命令傳遞給防火牆。引數 可以是 iptables, ip6tables 以及 ebtables 命令列引數。
firewall-cmd ——direct ——passthrough { ipv4 | ipv6 | eb }
為表
增加一個新鏈 。
firewall-cmd ——direct ——add-chain { ipv4 | ipv6 | eb }從表
中刪除鏈 。
firewall-cmd ——direct ——remove-chain { ipv4 | ipv6 | eb }查詢 鏈是否存在與表
。 如果是,返回0,否則返回1。
firewall-cmd ——direct ——query-chain { ipv4 | ipv6 | eb }
如果啟用,此命令將有返回值。此命令沒有輸出資訊。獲取用空格分隔的表
中鏈的列表。
firewall-cmd ——direct ——get-chains { ipv4 | ipv6 | eb }為表
增加一條引數為 的鏈 ,優先順序設定為 。
firewall-cmd ——direct ——add-rule { ipv4 | ipv6 | eb }從表
中刪除帶引數 的鏈 。
firewall-cmd ——direct ——remove-rule { ipv4 | ipv6 | eb }查詢 帶引數 的鏈 是否存在表
中。 如果是,返回0,否則返回1。
firewall-cmd ——direct ——query-rule { ipv4 | ipv6 | eb }
如果啟用,此命令將有返回值。此命令沒有輸出資訊。獲取表
中所有增加到鏈 的規則,並用換行分隔。
firewall-cmd ——direct ——get-rules { ipv4 | ipv6 | eb }以iptables的命令允許埠號,重啟生效
[root@zcwyou ~]# firewall-cmd ——direct -add-rule ipv4 filter INPUT 0 -p tcp ——dport 9000 -j ACCEPT[root@zcwyou ~]# firewall-cmd ——reload
新增富規則:
[root@zcwyou ~]# firewall-cmd ——add-rich-rule=‘rule family=“ipv4” source address=“192。168。122。0” accept’
允許192。168。122。0/24主機所有連線。
[root@zcwyou ~]# firewall-cmd ——add-rich-rule=‘rule service name=ftp limit value=2/m accept’
每分鐘允許2個新連線訪問ftp服務。
[root@zcwyou ~]# firewall-cmd ——add-rich-rule=‘rule service name=ftp log limit value=“1/m” audit accept’
同意新的 IP v4 和 IP v6 連線 FT P ,並使用稽核每分鐘登入一次。
[root@zcwyou ~]# firewall-cmd ——add-rich-rule=‘rule family=“ipv4” source address=“192。168。122。0/24”service name=ssh log prefix=“ssh” level=“notice” limit value=“3/m” accept’
允許來自192。168。122。0/24地址的新 IPv4連線連線TFTP服務,並且每分鐘記錄一次。
[root@zcwyou ~]# firewall-cmd ——permanent ——add-rich-rule=‘rule protocol value=icmp drop’
丟棄所有icmp包
[root@zcwyou ~]# firewall-cmd ——add-rich-rule=‘rule family=ipv4 source address=192。168。122。0/24 reject’ ——timeout=10
當使用source和destination指定地址時,必須有family引數指定ipv4或ipv6。如果指定超時,
規則將在指定的秒數內被啟用,並在之後被自動移除。
[root@zcwyou ~]# firewall-cmd ——add-rich-rule=‘rule family=ipv6 source address=“2001:db8::/64” servicename=“dns” audit limit value=“1/h” reject’ ——timeout=300
拒絕所有來自2001:db8::/64子網的主機訪問dns服務,並且每小時只稽核記錄1次日誌。
[root@zcwyou ~]# firewall-cmd ——permanent ——add-rich-rule=‘rule family=ipv4 sourceaddress=192。168。122。0/24 service name=ftp accept’
允許192。168。122。0/24網段中的主機訪問ftp服務
[root@zcwyou ~]# firewall-cmd ——add-rich-rule=‘rule family=“ipv6” source address=“1:2:3:4:6::” forward-portto-addr=“1::2:3:4:7” to-port=“4012” protocol=“tcp” port=“4011”’
轉發來自ipv6地址1:2:3:4:6::TCP埠4011,到1:2:3:4:7的TCP埠4012
允許來自主機 192。168。0。14 的所有 IPv4 流量。
[root@zcwyou ~]# firewall-cmd ——zone=public ——add-rich-rule ‘rule family=“ipv4” source address=192。168。0。14 accept’
拒絕來自主機 192。168。1。10 到 22 埠的 IPv4 的 TCP 流量。
[root@zcwyou ~]# firewall-cmd ——zone=public ——add-rich-rule ‘rule family=“ipv4” source address=“192。168。1。10” port port=22 protocol=tcp reject’
檢視富規則
[root@zcwyou ~]# firewall-cmd ——list-rich-rules
12. 總結
CentOS 7是第一代整合firewalld的CentOS系統,firewalld是一個功能豐富、先進的防火牆配置工具。熟悉掌握使用它將能大大提升系統和伺服器的安全。
本文已同步至部落格站,尊重原創,轉載時請在正文中附帶以下連結:
https://www。linuxrumen。com/rmxx/644。html
點選瞭解更多,快速檢視更多的技術文章列表。