Centos7 firewalld防火牆學習使用記錄

1.firewalld防火牆簡介。

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

2.zone概念。

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

丟棄 drop

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

阻塞 block

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

公開 public

用以可以公開的部分。你認爲網絡中其他的計算機不可信並且可能傷害你的計算機。只允許選中的連接接入。

外部 external

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

隔離區dmz

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

工作 work

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

家庭 home

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

內部 internal

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

受信任的 trusted

允許所有網絡連接。

3.配置管理工具。

firewall-config 圖形界面工具

Screenshot from 2015-07-16 17_30_27

firewall-cmd 命令行工具

Screenshot from 2015-07-16 17_31_08

D-BUS接口

配置文件目錄中創建或者拷貝區域文件

usr/lib/firewalld/zones 被用於默認和備用配置

/etc/firewalld/zones 被用於用戶創建和自定義配置文件

4.命令詳細簡紹。

獲取 firewalld 狀態

firewall-cmd –state

Screenshot from 2015-07-16 17_37_40

重新加載防火牆

firewall-cmd –reload 不改變狀態

Ashampoo_Snap_2015.07.18_19h09m26s_001_

firewall-cmd –complete-reload 改變狀態

Ashampoo_Snap_2015.07.18_19h10m33s_002_

獲取支持的區域列表

firewall-cmd --get-zones

Screenshot from 2015-07-16 17_45_40

獲取所有支持的服

firewall-cmd --get-services

Screenshot from 2015-07-17 09_49_04

獲取所有支持的ICMP類型

firewall-cmd --get-icmptypes

Screenshot from 2015-07-17 09_50_35

列出全部啓用的區域的詳細信息

firewall-cmd --list-all-zones

Ashampoo_Snap_2015.07.18_19h12m56s_003_

輸出區域 <zone> 全部啓用的特性。如果沒有指定區域,將顯示默認區域的信息。

firewall-cmd [--zone=<zone>] --list-all

firewall-cmd --zone=public --list-all

Screenshot from 2015-07-17 09_56_18

獲取默認區域

firewall-cmd –get-default-zone

Screenshot from 2015-07-17 09_59_08

設置默認區域

firewall-cmd --set-default-zone=<zone>

firewall-cmd –set-default-zone=public

Screenshot from 2015-07-17 09_59_08

獲取活動的區域和網絡接口

firewall-cmd –get-active-zones

Screenshot from 2015-07-17 10_01_00

根據接口獲取區域

firewall-cmd --get-zone-of-interface=<interface>

firewall-cmd –get-zone-of-interface=eno1

Screenshot from 2015-07-17 10_03_34

將接口增加到區域

firewall-cmd [--zone=<zone>] --add-interface=<interface>

firewall-cmd --zone=work –add-interface=eno1
Screenshot from 2015-07-17 10_09_42

如果接口不屬於區域,接口將被增加到區域。如果區域被省略了,將使用默認區域。

如果接口已經加入其它區域,將提示error:zone_conflict.

修改接口所屬區域

firewall-cmd [--zone=<zone>] --change-interface=<interface>

firewall-cmd --zone=public –change-interface=eno1

Screenshot from 2015-07-17 10_17_41

從區域中刪除一個接口

firewall-cmd [--zone=<zone>] --remove-interface=<interface>

firewall-cmd --zone=public –remove-interface=eno1

Screenshot from 2015-07-17 10_22_49

查詢區域中是否包含某接口

firewall-cmd [--zone=<zone>] --query-interface=<interface>

firewall-cmd --zone=public –query-interface=eno1

Screenshot from 2015-07-17 10_24_59

查看區域中啓用的服務

firewall-cmd [ --zone=<zone> ] --list-services

firewall-cmd --zone=public –list-services

Screenshot from 2015-07-17 10_40_44

啓用應急模式阻斷所有網絡連接,以防出現緊急狀況

firewall-cmd --panic-on

遭遇***的時候可以用來阻止所有的外部連接。

禁用應急模式

firewall-cmd --panic-off

查詢應急模式

firewall-cmd --query-panic

Screenshot from 2015-07-17 10_43_50

啓用區域中的一種服務

firewall-cmd [--zone=<zone>] --add-service=<service> [--timeout=<seconds>]

如果未指定區域,將使用默認區域。如果設定了超時時間,服務將只啓用特定秒數。如果服務已經啓用,將不會有任何警告信息。

使區域中的 ipp-client 服務生效60秒:

firewall-cmd --zone=public --add-service=ipp-client –timeout=60

Screenshot from 2015-07-17 10_47_46

啓用默認區域中的http服務:

firewall-cmd --add-service=http

Screenshot from 2015-07-17 10_49_11

禁用區域中的某種服務,如果未指定區域,將使用默認區域。

firewall-cmd [--zone=<zone>] --remove-service=<service>

禁止 home 區域中的 http 服務:

firewall-cmd --zone=public --remove-service=http

查詢區域中是否啓用服務

firewall-cmd [--zone=<zone>] --query-service=<service>

firewall-cmd --zone=public --query-service=ssh

Screenshot from 2015-07-17 10_52_29

啓用區域端口和協議組合,端口可以是一個單獨的端口 <port> 或者是一個端口範圍 <port>-<port> 。協議可以是 tcpudp

firewall-cmd [--zone=<zone>] --add-port=<port>[-<port>]/<protocol> [--timeout=<seconds>]

firewall-cmd --zone=public --add-port=8888/tcp –-timeout=3600

firewall-cmd --zone=public –add-port=8888-9999/tcp –-timeout=3600

Screenshot from 2015-07-17 11_06_40

如果沒有填寫區域是當前默認區域,沒有設置時間,永久生效。

禁用端口和協議組合

firewall-cmd [--zone=<zone>] --remove-port=<port>[-<port>]/<protocol>

firewall-cmd --zone=public –remove-port=8888/tcp

firewall-cmd --zone=public –remove-port=8888-9999/tcp

Screenshot from 2015-07-17 11_10_38

查詢區域中是否啓用了端口和協議組合

firewall-cmd [--zone=<zone>] --query-port=<port>[-<port>]/<protocol>

firewall-cmd --zone=public --query-port=80/tcp

firewall-cmd --zone=public –query-port=80-10000/tcp

Screenshot from 2015-07-17 11_15_55

啓用區域中的 IP 僞裝功能

firewall-cmd [--zone=<zone>] --add-masquerade

firewall-cmd --zone=public –add-masquerade

禁用區域中的 IP 僞裝

firewall-cmd [--zone=<zone>] --remove-masquerade

firewall-cmd --zone=public –remove-masquerade

查詢區域的僞裝狀態

firewall-cmd [--zone=<zone>] --query-masquerade

firewall-cmd --zone=public --query-masquerade

Screenshot from 2015-07-17 11_22_16

啓用區域的 ICMP 阻塞功能

firewall-cmd [--zone=<zone>] --add-icmp-block=<icmptype>

firewall-cmd --zone=public –add-icmp-block=echo-reply

啓用後我們經常用的ping/tracert命令不能使用

查詢區域的 ICMP 阻塞功能

firewall-cmd [--zone=<zone>] --query-icmp-block=<icmptype>

firewall-cmd --zone=public –query-icmp-block=echo-reply

禁止區域的 ICMP 阻塞功能

firewall-cmd [--zone=<zone>] --remove-icmp-block=<icmptype>

firewall-cmd --zone=public –remove-icmp-block=echo-reply

Screenshot from 2015-07-17 11_38_32

在區域中啓用端口轉發或映射

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> 。協議可以爲 tcpudp 。目標端口可以是端口號 <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> }

firewall-cmd --zone=home --add-forward-port=port=22:proto=tcp:toaddr=127.0.0.2

獲取永久選項所支持的服務

firewall-cmd --permanent --get-services

Screenshot from 2015-07-17 13_20_51

獲取永久選項所支持的ICMP類型列表

firewall-cmd --permanent --get-icmptypes

Screenshot from 2015-07-17 13_23_05

獲取支持的永久區域

firewall-cmd --permanent --get-zones

Screenshot from 2015-07-17 13_23_58

永久啓用區域中的服務

firewall-cmd --permanent [--zone=<zone>] --add-service=<service>

firewall-cmd --permanent --zone=public --add-service=http

查詢區域中的服務是否永久啓用

firewall-cmd --permanent [--zone=<zone>] --query-service=<service>

firewall-cmd --permanent --zone=public –query-service=http

禁用區域中的一種永久服務

firewall-cmd --permanent [--zone=<zone>] --remove-service=<service>

firewall-cmd --permanent --zone=public –remove-service=http

Screenshot from 2015-07-17 13_28_29

永久啓用區域中的一個端口-協議組合

firewall-cmd --permanent [--zone=<zone>] --add-port=<port>[-<port>]/<protocol>

firewall-cmd --permanent --zone=public --add-port=80/tcp

Screenshot from 2015-07-17 15_12_33

查詢區域中的端口-協議組合是否永久啓用

firewall-cmd --permanent [--zone=<zone>] --query-port=<port>[-<port>]/<protocol>

firewall-cmd --permanent --zone=public --query-port=80/tcp

Screenshot from 2015-07-17 15_13_57

永久禁用區域中的一個端口-協議組合

firewall-cmd --permanent [--zone=<zone>] --remove-port=<port>[-<port>]/<protocol>

firewall-cmd --permanent --zone=public –remove-port=80/tcp

Screenshot from 2015-07-17 15_15_14

永久啓用區域中的僞裝

firewall-cmd --permanent [--zone=<zone>] --add-masquerade

firewall-cmd --permanent --zone=public –add-masquerade

永久禁用區域中的僞裝

firewall-cmd --permanent [--zone=<zone>] --remove-masquerade

firewall-cmd --permanent --zone=public --remove-masquerade

查詢區域中的僞裝的永久狀態

firewall-cmd --permanent [--zone=<zone>] --query-masquerade

firewall-cmd --permanent --zone=public --query-masquerade

永久啓用區域中的ICMP阻塞

firewall-cmd --permanent [--zone=<zone>] --add-icmp-block=<icmptype>

firewall-cmd --permanent --zone=public –add-icmp-block=echo-reply

永久禁用區域中的ICMP阻塞

firewall-cmd --permanent [--zone=<zone>] --remove-icmp-block=<icmptype>

firewall-cmd --permanent --zone=public –remove-icmp-block=echo-reply

查詢區域中的ICMP永久狀態

firewall-cmd --permanent [--zone=<zone>] --query-icmp-block=<icmptype>

firewall-cmd --permanent --zone=public –query-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> }

永久禁止區域的端口轉發或者端口映射

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> }

直接選項主要用於使服務和應用程序能夠增加規則。 規則不會被保存,在重新加載或者重啓之後必須再次提交。

將命令傳遞給防火牆。參數 <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>

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> 中.

firewall-cmd --direct --query-rule { ipv4 | ipv6 | eb } <table> <chain> <args>

獲取表 <table> 中所有增加到鏈 <chain> 的規則,並用換行分隔。

firewall-cmd --direct --get-rules { ipv4 | ipv6 | eb } <table> <chain>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章