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 圖形界面工具
firewall-cmd 命令行工具
D-BUS接口
配置文件目錄中創建或者拷貝區域文件
usr/lib/firewalld/zones 被用於默認和備用配置
/etc/firewalld/zones 被用於用戶創建和自定義配置文件
4.命令詳細簡紹。
獲取 firewalld 狀態
firewall-cmd –state
重新加載防火牆
firewall-cmd –reload 不改變狀態
firewall-cmd –complete-reload 改變狀態
獲取支持的區域列表
firewall-cmd --get-zones
獲取所有支持的服
firewall-cmd --get-services
獲取所有支持的ICMP類型
firewall-cmd --get-icmptypes
列出全部啓用的區域的詳細信息
firewall-cmd --list-all-zones
輸出區域 <zone> 全部啓用的特性。如果沒有指定區域,將顯示默認區域的信息。
firewall-cmd [--zone=<zone>] --list-all
firewall-cmd --zone=public --list-all
獲取默認區域
firewall-cmd –get-default-zone
設置默認區域
firewall-cmd --set-default-zone=<zone>
firewall-cmd –set-default-zone=public
獲取活動的區域和網絡接口
firewall-cmd –get-active-zones
根據接口獲取區域
firewall-cmd --get-zone-of-interface=<interface>
firewall-cmd –get-zone-of-interface=eno1
將接口增加到區域
firewall-cmd [--zone=<zone>] --add-interface=<interface>
firewall-cmd --zone=work –add-interface=eno1
如果接口不屬於區域,接口將被增加到區域。如果區域被省略了,將使用默認區域。
如果接口已經加入其它區域,將提示error:zone_conflict.
修改接口所屬區域
firewall-cmd [--zone=<zone>] --change-interface=<interface>
firewall-cmd --zone=public –change-interface=eno1
從區域中刪除一個接口
firewall-cmd [--zone=<zone>] --remove-interface=<interface>
firewall-cmd --zone=public –remove-interface=eno1
查詢區域中是否包含某接口
firewall-cmd [--zone=<zone>] --query-interface=<interface>
firewall-cmd --zone=public –query-interface=eno1
查看區域中啓用的服務
firewall-cmd [ --zone=<zone> ] --list-services
firewall-cmd --zone=public –list-services
啓用應急模式阻斷所有網絡連接,以防出現緊急狀況
firewall-cmd --panic-on
遭遇***的時候可以用來阻止所有的外部連接。
禁用應急模式
firewall-cmd --panic-off
查詢應急模式
firewall-cmd --query-panic
啓用區域中的一種服務
firewall-cmd [--zone=<zone>] --add-service=<service> [--timeout=<seconds>]
如果未指定區域,將使用默認區域。如果設定了超時時間,服務將只啓用特定秒數。如果服務已經啓用,將不會有任何警告信息。
使區域中的 ipp-client 服務生效60秒:
firewall-cmd --zone=public --add-service=ipp-client –timeout=60
啓用默認區域中的http服務:
firewall-cmd --add-service=http
禁用區域中的某種服務,如果未指定區域,將使用默認區域。
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
啓用區域端口和協議組合,端口可以是一個單獨的端口 <port> 或者是一個端口範圍 <port>-<port> 。協議可以是 tcp 或 udp。
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
如果沒有填寫區域是當前默認區域,沒有設置時間,永久生效。
禁用端口和協議組合
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
查詢區域中是否啓用了端口和協議組合
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
啓用區域中的 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
啓用區域的 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
在區域中啓用端口轉發或映射
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> }
firewall-cmd --zone=home --add-forward-port=port=22:proto=tcp:toaddr=127.0.0.2
獲取永久選項所支持的服務
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=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
永久啓用區域中的一個端口-協議組合
firewall-cmd --permanent [--zone=<zone>] --add-port=<port>[-<port>]/<protocol>
firewall-cmd --permanent --zone=public --add-port=80/tcp
查詢區域中的端口-協議組合是否永久啓用
firewall-cmd --permanent [--zone=<zone>] --query-port=<port>[-<port>]/<protocol>
firewall-cmd --permanent --zone=public --query-port=80/tcp
永久禁用區域中的一個端口-協議組合
firewall-cmd --permanent [--zone=<zone>] --remove-port=<port>[-<port>]/<protocol>
firewall-cmd --permanent --zone=public –remove-port=80/tcp
永久啓用區域中的僞裝
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>