首頁 > 軟體

RHEL7下firewalls-cmd命令引數詳解

2020-06-16 17:40:02

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

使用firewall-cmd

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

一般應用

獲取 firewalld 狀態:

firewall-cmd --state

在不改變狀態的條件下重新載入防火牆:

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> 全部啟用的特性。

省略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

查詢應急模式:

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 (tcp443) 埠

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>

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-06/132148.htm


IT145.com E-mail:sddin#qq.com