firewall-cmd防火墻概述

使用 FirewallD 構(gòu)建動(dòng)態(tài)防火墻

FirewallD 提供了支持網(wǎng)絡(luò)/防火墻區(qū)域(zone)定義網(wǎng)絡(luò)鏈接以及接口安全等級(jí)的動(dòng)態(tài)防火墻管理工具。它支持 IPv4, IPv6 防火墻設(shè)置以及以太網(wǎng)橋接,并且擁有運(yùn)行時(shí)配置和永久配置選項(xiàng)。它也支持允許服務(wù)或者應(yīng)用程序直接添加防火墻規(guī)則的接口。以前的 system-config-firewall/lokkit 防火墻模型是靜態(tài)的,每次修改都要求防火墻完全重啟。這個(gè)過程包括內(nèi)核 netfilter 防火墻模塊的卸載和新配置所需模塊的裝載等。而模塊的卸載將會(huì)破壞狀態(tài)防火墻和確立的連接。

10余年的秦安網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都營銷網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整秦安建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“秦安網(wǎng)站設(shè)計(jì)”,“秦安網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。


相反,firewall daemon 動(dòng)態(tài)管理防火墻,不需要重啟整個(gè)防火墻便可應(yīng)用更改。因而也就沒有必要重載所有內(nèi)核防火墻模塊了。不過,要使用 firewall daemon 就要求防火墻的所有變更都要通過該守護(hù)進(jìn)程來實(shí)現(xiàn),以確保守護(hù)進(jìn)程中的狀態(tài)和內(nèi)核里的防火墻是一致的。另外,firewall daemon 無法解析由 ip*tables 和 ebtables 命令行工具添加的防火墻規(guī)則。

守護(hù)進(jìn)程通過 D-BUS 提供當(dāng)前激活的防火墻設(shè)置信息,也通過 D-BUS 接受使用 PolicyKit 認(rèn)證方式做的更改。

“守護(hù)進(jìn)程”

應(yīng)用程序、守護(hù)進(jìn)程和用戶可以通過 D-BUS 請(qǐng)求啟用一個(gè)防火墻特性。特性可以是預(yù)定義的防火墻功能,如:服務(wù)、端口和協(xié)議的組合、端口/數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)、偽裝、ICMP 攔截或自定義規(guī)則等。該功能可以啟用確定的一段時(shí)間也可以再次停用。

通過所謂的直接接口,其他的服務(wù)(例如 libvirt )能夠通過 iptables 變?cè)?arguments)和參數(shù)(parameters)增加自己的規(guī)則。

amanda 、ftp 、samba 和 tftp 服務(wù)的 netfilter 防火墻助手也被“守護(hù)進(jìn)程”解決了,只要它們還作為預(yù)定義服務(wù)的一部分。附加助手的裝載不作為當(dāng)前接口的一部分。由于一些助手只有在由模塊控制的所有連接都關(guān)閉后才可裝載。因而,跟蹤連接信息很重要,需要列入考慮范圍。

靜態(tài)防火墻(system-config-firewall/lokkit)

使用 system-config-firewall 和 lokkit 的靜態(tài)防火墻模型實(shí)際上仍然可用并將繼續(xù)提供,但卻不能與“守護(hù)進(jìn)程”同時(shí)使用。用戶或者管理員可以決定使用哪一種方案。

在軟件安裝,初次啟動(dòng)或者是首次聯(lián)網(wǎng)時(shí),將會(huì)出現(xiàn)一個(gè)選擇器。通過它你可以選擇要使用的防火墻方案。其他的解決方案將保持完整,可以通過更換模式啟用。

firewall daemon 獨(dú)立于 system-config-firewall,但二者不能同時(shí)使用。

使用 iptables 和 ip6tables 的靜態(tài)防火墻規(guī)則

如果你想使用自己的 iptables 和 ip6tables 靜態(tài)防火墻規(guī)則, 那么請(qǐng)安裝 iptables-services 并且禁用 firewalld ,啟用 iptables 和ip6tables:

yum installiptables-services
systemctl mask firewalld.service
systemctl disable firewalld
systemctl enableiptables.service
systemctl enableip6tables.service

靜態(tài)防火墻規(guī)則配置文件是 /etc/sysconfig/iptables 以及 /etc/sysconfig/ip6tables .

注: iptables 與 iptables-services 軟件包不提供與服務(wù)配套使用的防火墻規(guī)則. 這些服務(wù)是用來保障兼容性以及供想使用自己防火墻規(guī)則的人使用的. 你可以安裝并使用 system-config-firewall 來創(chuàng)建上述服務(wù)需要的規(guī)則. 為了能使用 system-config-firewall, 你必須停止 firewalld.

為服務(wù)創(chuàng)建規(guī)則并停用 firewalld 后,就可以啟用 iptables 與 ip6tables 服務(wù)了:

systemctl stop firewalld.service
systemctl start iptables.service
systemctl start ip6tables.service

什么是區(qū)域?

網(wǎng)絡(luò)區(qū)域定義了網(wǎng)絡(luò)連接的可信等級(jí)。這是一個(gè)一對(duì)多的關(guān)系,這意味著一次連接可以僅僅是一個(gè)區(qū)域的一部分,而一個(gè)區(qū)域可以用于很多連接。

預(yù)定義的服務(wù)

服務(wù)是端口和/或協(xié)議入口的組合。備選內(nèi)容包括 netfilter 助手模塊以及 IPv4、IPv6地址。

端口和協(xié)議

定義了 tcp 或 udp 端口,端口可以是一個(gè)端口或者端口范圍。

ICMP 阻塞

可以選擇 Internet 控制報(bào)文協(xié)議的報(bào)文。這些報(bào)文可以是信息請(qǐng)求亦可是對(duì)信息請(qǐng)求或錯(cuò)誤條件創(chuàng)建的響應(yīng)。

偽裝

私有網(wǎng)絡(luò)地址可以被映射到公開的IP地址。這是一次正規(guī)的地址轉(zhuǎn)換。

端口轉(zhuǎn)發(fā)

端口可以映射到另一個(gè)端口以及/或者其他主機(jī)。

哪個(gè)區(qū)域可用?

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

丟棄

任何流入網(wǎng)絡(luò)的包都被丟棄,不作出任何響應(yīng)。只允許流出的網(wǎng)絡(luò)連接。

阻塞

任何進(jìn)入的網(wǎng)絡(luò)連接都被拒絕,并返回 IPv4 的 icmp-host-prohibited 報(bào)文或者 IPv6 的 icmp6-adm-prohibited 報(bào)文。只允許由該系統(tǒng)初始化的網(wǎng)絡(luò)連接。

公開

用以可以公開的部分。你認(rèn)為網(wǎng)絡(luò)中其他的計(jì)算機(jī)不可信并且可能傷害你的計(jì)算機(jī)。只允許選中的連接接入。

外部

用在路由器等啟用偽裝的外部網(wǎng)絡(luò)。你認(rèn)為網(wǎng)絡(luò)中其他的計(jì)算機(jī)不可信并且可能傷害你的計(jì)算機(jī)。只允許選中的連接接入。

隔離區(qū)(dmz)

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

工作

用在工作網(wǎng)絡(luò)。你信任網(wǎng)絡(luò)中的大多數(shù)計(jì)算機(jī)不會(huì)影響你的計(jì)算機(jī)。只接受被選中的連接。

家庭

用在家庭網(wǎng)絡(luò)。你信任網(wǎng)絡(luò)中的大多數(shù)計(jì)算機(jī)不會(huì)影響你的計(jì)算機(jī)。只接受被選中的連接。

內(nèi)部

用在內(nèi)部網(wǎng)絡(luò)。你信任網(wǎng)絡(luò)中的大多數(shù)計(jì)算機(jī)不會(huì)影響你的計(jì)算機(jī)。只接受被選中的連接。

受信任的

允許所有網(wǎng)絡(luò)連接。

我應(yīng)該選用哪個(gè)區(qū)域?

例如,公共的 WIFI 連接應(yīng)該主要為不受信任的,家庭的有線網(wǎng)絡(luò)應(yīng)該是相當(dāng)可信任的。根據(jù)與你使用的網(wǎng)絡(luò)最符合的區(qū)域進(jìn)行選擇。

如何配置或者增加區(qū)域?

你可以使用任何一種 firewalld 配置工具來配置或者增加區(qū)域,以及修改配置。工具有例如 firewall-config 這樣的圖形界面工具, firewall-cmd 這樣的命令行工具,以及D-BUS接口?;蛘吣阋部梢栽谂渲梦募夸浿袆?chuàng)建或者拷貝區(qū)域文件。 @PREFIX@/lib/firewalld/zones 被用于默認(rèn)和備用配置,/etc/firewalld/zones 被用于用戶創(chuàng)建和自定義配置文件。

如何為網(wǎng)絡(luò)連接設(shè)置或者修改區(qū)域

區(qū)域設(shè)置以 ZONE= 選項(xiàng) 存儲(chǔ)在網(wǎng)絡(luò)連接的ifcfg文件中。如果這個(gè)選項(xiàng)缺失或者為空,firewalld 將使用配置的默認(rèn)區(qū)域。

如果這個(gè)連接受到 NetworkManager 控制,你也可以使用 nm-connection-editor 來修改區(qū)域。

由 NetworkManager 控制的網(wǎng)絡(luò)連接

防火墻不能夠通過 NetworkManager 顯示的名稱來配置網(wǎng)絡(luò)連接,只能配置網(wǎng)絡(luò)接口。因此在網(wǎng)絡(luò)連接之前 NetworkManager 將配置文件所述連接對(duì)應(yīng)的網(wǎng)絡(luò)接口告訴 firewalld 。如果在配置文件中沒有配置區(qū)域,接口將配置到 firewalld 的默認(rèn)區(qū)域。如果網(wǎng)絡(luò)連接使用了不止一個(gè)接口,所有的接口都會(huì)應(yīng)用到 fiwewalld。接口名稱的改變也將由 NetworkManager 控制并應(yīng)用到firewalld。

為了簡(jiǎn)化,自此,網(wǎng)絡(luò)連接將被用作與區(qū)域的關(guān)系。

如果一個(gè)接口斷開了, NetworkManager 也將告訴 firewalld 從區(qū)域中刪除該接口。

當(dāng) firewalld 由 systemd 或者 init 腳本啟動(dòng)或者重啟后,firewalld 將通知 NetworkManager 把網(wǎng)絡(luò)連接增加到區(qū)域。

由腳本控制的網(wǎng)絡(luò)

對(duì)于由網(wǎng)絡(luò)腳本控制的連接有一條限制:沒有守護(hù)進(jìn)程通知 firewalld 將連接增加到區(qū)域。這項(xiàng)工作僅在 ifcfg-post 腳本進(jìn)行。因此,此后對(duì)網(wǎng)絡(luò)連接的重命名將不能被應(yīng)用到firewalld。同樣,在連接活動(dòng)時(shí)重啟 firewalld 將導(dǎo)致與其失去關(guān)聯(lián)?,F(xiàn)在有意修復(fù)此情況。最簡(jiǎn)單的是將全部未配置連接加入默認(rèn)區(qū)域。

區(qū)域定義了本區(qū)域中防火墻的特性:

使用 firewalld

你可以通過圖形界面工具 firewall-config 或者命令行客戶端 firewall-cmd 啟用或者關(guān)閉防火墻特性。

使用 firewall-cmd

命令行工具 firewall-cmd 支持全部防火墻特性。對(duì)于狀態(tài)和查詢模式,命令只返回狀態(tài),沒有其他輸出。

一般應(yīng)用
  • 獲取 firewalld 狀態(tài)

firewall-cmd --state

此舉返回 firewalld 的狀態(tài),沒有任何輸出??梢允褂靡韵路绞将@得狀態(tài)輸出:

firewall-cmd --state && echo"Running"|| echo"Not running"

在 Fedora 19 中, 狀態(tài)輸出比此前直觀:

# rpm -qf $( which firewall-cmd )
firewalld-0.3.3-2.fc19.noarch
# firewall-cmd --state
not running
  • 在不改變狀態(tài)的條件下重新加載防火墻:

firewall-cmd --reload

如果你使用 --complete-reload ,狀態(tài)信息將會(huì)丟失。這個(gè)選項(xiàng)應(yīng)當(dāng)僅用于處理防火墻問題時(shí),例如,狀態(tài)信息和防火墻規(guī)則都正常,但是不能建立任何連接的情況。

  • 獲取支持的區(qū)域列表

firewall-cmd --get-zones

這條命令輸出用空格分隔的列表。

  • 獲取所有支持的服務(wù)

firewall-cmd --get-services

這條命令輸出用空格分隔的列表。

  • 獲取所有支持的ICMP類型

firewall-cmd --get-icmptypes

這條命令輸出用空格分隔的列表。

  • 列出全部啟用的區(qū)域的特性

firewall-cmd --list-all-zones

輸出格式是:

   interfaces:  ..   services:  ..   ports:  ..   forward-ports:  ..   icmp-blocks:  ..      ..
  • 輸出區(qū)域 全部啟用的特性。如果生略區(qū)域,將顯示默認(rèn)區(qū)域的信息。

firewall-cmd [--zone=] --list-all
  • 獲取默認(rèn)區(qū)域的網(wǎng)絡(luò)設(shè)置

firewall-cmd --get-default-zone
  • 設(shè)置默認(rèn)區(qū)域

firewall-cmd --set-default-zone=

流入默認(rèn)區(qū)域中配置的接口的新訪問請(qǐng)求將被置入新的默認(rèn)區(qū)域。當(dāng)前活動(dòng)的連接將不受影響。

  • 獲取活動(dòng)的區(qū)域

firewall-cmd --get-active-zones

這條命令將用以下格式輸出每個(gè)區(qū)域所含接口:

:  .. :  ..
  • 根據(jù)接口獲取區(qū)域

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

這條命令將輸出接口所屬的區(qū)域名稱。

  • 將接口增加到區(qū)域

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

如果接口不屬于區(qū)域,接口將被增加到區(qū)域。如果區(qū)域被省略了,將使用默認(rèn)區(qū)域。接口在重新加載后將重新應(yīng)用。

  • 修改接口所屬區(qū)域

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

這個(gè)選項(xiàng)與 --add-interface 選項(xiàng)相似,但是當(dāng)接口已經(jīng)存在于另一個(gè)區(qū)域的時(shí)候,該接口將被添加到新的區(qū)域。

  • 從區(qū)域中刪除一個(gè)接口

firewall-cmd [--zone=] --remove-interface=
  • 查詢區(qū)域中是否包含某接口

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

返回接口是否存在于該區(qū)域。沒有輸出。

  • 列舉區(qū)域中啟用的服務(wù)

firewall-cmd [ --zone= ] --list-services
  • 啟用應(yīng)急模式阻斷所有網(wǎng)絡(luò)連接,以防出現(xiàn)緊急狀況

firewall-cmd --panic-on
  • 禁用應(yīng)急模式

firewall-cmd --panic-off

firewall-cmd防火墻概述

應(yīng)急模式在 0.3.0 版本中發(fā)生了變化
在 0.3.0 之前的 FirewallD版本中, panic 選項(xiàng)是 --enable-panic 與 --disable-panic.

  • 查詢應(yīng)急模式

firewall-cmd --query-panic

此命令返回應(yīng)急模式的狀態(tài),沒有輸出??梢允褂靡韵路绞将@得狀態(tài)輸出:

firewall-cmd --query-panic && echo"On"|| echo"Off"
處理運(yùn)行時(shí)區(qū)域

運(yùn)行時(shí)模式下對(duì)區(qū)域進(jìn)行的修改不是永久有效的。重新加載或者重啟后修改將失效。

  • 啟用區(qū)域中的一種服務(wù)

firewall-cmd [--zone=] --add-service= [--timeout=]

此舉啟用區(qū)域中的一種服務(wù)。如果未指定區(qū)域,將使用默認(rèn)區(qū)域。如果設(shè)定了超時(shí)時(shí)間,服務(wù)將只啟用特定秒數(shù)。如果服務(wù)已經(jīng)活躍,將不會(huì)有任何警告信息。

  • 例: 使區(qū)域中的 ipp-client 服務(wù)生效60秒:

firewall-cmd --zone=home --add-service=ipp-client --timeout=60
  • 例: 啟用默認(rèn)區(qū)域中的http服務(wù):

firewall-cmd --add-service=http
  • 禁用區(qū)域中的某種服務(wù)

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

此舉禁用區(qū)域中的某種服務(wù)。如果未指定區(qū)域,將使用默認(rèn)區(qū)域。

  • 例: 禁止 home 區(qū)域中的 http 服務(wù):

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

區(qū)域種的服務(wù)將被禁用。如果服務(wù)沒有啟用,將不會(huì)有任何警告信息。

  • 查詢區(qū)域中是否啟用了特定服務(wù)

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

如果服務(wù)啟用,將返回1,否則返回0。沒有輸出信息。

  • 啟用區(qū)域端口和協(xié)議組合

firewall-cmd [--zone=] --add-port=[-]/ [--timeout=]

此舉將啟用端口和協(xié)議的組合。端口可以是一個(gè)單獨(dú)的端口 或者是一個(gè)端口范圍 - 。協(xié)議可以是 tcp 或udp。

  • 禁用端口和協(xié)議組合

firewall-cmd [--zone=] --remove-port=[-]/
  • 查詢區(qū)域中是否啟用了端口和協(xié)議組合

firewall-cmd [--zone=] --query-port=[-]/

如果啟用,此命令將有返回值。沒有輸出信息。

  • 啟用區(qū)域中的 IP 偽裝功能

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

此舉啟用區(qū)域的偽裝功能。私有網(wǎng)絡(luò)的地址將被隱藏并映射到一個(gè)公有IP。這是地址轉(zhuǎn)換的一種形式,常用于路由。由于內(nèi)核的限制,偽裝功能僅可用于IPv4。

  • 禁用區(qū)域中的 IP 偽裝

firewall-cmd [--zone=] --remove-masquerade
  • 查詢區(qū)域的偽裝狀態(tài)

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

如果啟用,此命令將有返回值。沒有輸出信息。

  • 啟用區(qū)域的 ICMP 阻塞功能

firewall-cmd [--zone=] --add-icmp-block=

此舉將啟用選中的 Internet 控制報(bào)文協(xié)議 (ICMP) 報(bào)文進(jìn)行阻塞。 ICMP 報(bào)文可以是請(qǐng)求信息或者創(chuàng)建的應(yīng)答報(bào)文,以及錯(cuò)誤應(yīng)答。

  • 禁止區(qū)域的 ICMP 阻塞功能

firewall-cmd [--zone=] --remove-icmp-block=
  • 查詢區(qū)域的 ICMP 阻塞功能

firewall-cmd [--zone=] --query-icmp-block=

如果啟用,此命令將有返回值。沒有輸出信息。

  • 例: 阻塞區(qū)域的響應(yīng)應(yīng)答報(bào)文:

firewall-cmd --zone=public --add-icmp-block=echo-reply
  • 在區(qū)域中啟用端口轉(zhuǎn)發(fā)或映射

firewall-cmd [--zone=] --add-forward-port=port=[-]:proto= { :toport=[-] | :toaddr=| :toport=[-]:toaddr=}

端口可以映射到另一臺(tái)主機(jī)的同一端口,也可以是同一主機(jī)或另一主機(jī)的不同端口。端口號(hào)可以是一個(gè)單獨(dú)的端口 或者是端口范圍 - 。協(xié)議可以為 tcp 或udp 。目標(biāo)端口可以是端口號(hào) 或者是端口范圍 - 。目標(biāo)地址可以是 IPv4 地址。受內(nèi)核限制,端口轉(zhuǎn)發(fā)功能僅可用于IPv4。

  • 禁止區(qū)域的端口轉(zhuǎn)發(fā)或者端口映射

firewall-cmd [--zone=] --remove-forward-port=port=[-]:proto= { :toport=[-] | :toaddr=| :toport=[-]:toaddr=}
  • 查詢區(qū)域的端口轉(zhuǎn)發(fā)或者端口映射

firewall-cmd [--zone=] --query-forward-port=port=[-]:proto= { :toport=[-] | :toaddr=| :toport=[-]:toaddr=}

如果啟用,此命令將有返回值。沒有輸出信息。

  • 例: 將區(qū)域 home 的 ssh 轉(zhuǎn)發(fā)到 127.0.0.2

firewall-cmd --zone=home --add-forward-port=port=22:proto=tcp:toaddr=127.0.0.2
處理永久區(qū)域

永久選項(xiàng)不直接影響運(yùn)行時(shí)的狀態(tài)。這些選項(xiàng)僅在重載或者重啟服務(wù)時(shí)可用。為了使用運(yùn)行時(shí)和永久設(shè)置,需要分別設(shè)置兩者。選項(xiàng) --permanent 需要是永久設(shè)置的第一個(gè)參數(shù)。

  • 獲取永久選項(xiàng)所支持的服務(wù)

firewall-cmd --permanent --get-services
  • 獲取永久選項(xiàng)所支持的ICMP類型列表

firewall-cmd --permanent --get-icmptypes
  • 獲取支持的永久區(qū)域

firewall-cmd --permanent --get-zones
  • 啟用區(qū)域中的服務(wù)

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

此舉將永久啟用區(qū)域中的服務(wù)。如果未指定區(qū)域,將使用默認(rèn)區(qū)域。

  • 禁用區(qū)域中的一種服務(wù)

firewall-cmd --permanent [--zone=] --remove-service=
  • 查詢區(qū)域中的服務(wù)是否啟用

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

如果服務(wù)啟用,此命令將有返回值。此命令沒有輸出信息。

  • 例: 永久啟用 home 區(qū)域中的 ipp-client 服務(wù)

firewall-cmd --permanent --zone=home --add-service=ipp-client
  • 永久啟用區(qū)域中的一個(gè)端口-協(xié)議組合

firewall-cmd --permanent [--zone=] --add-port=[-]/
  • 永久禁用區(qū)域中的一個(gè)端口-協(xié)議組合

firewall-cmd --permanent [--zone=] --remove-port=[-]/
  • 查詢區(qū)域中的端口-協(xié)議組合是否永久啟用

firewall-cmd --permanent [--zone=] --query-port=[-]/

如果服務(wù)啟用,此命令將有返回值。此命令沒有輸出信息。

  • 例: 永久啟用 home 區(qū)域中的 https (tcp 443) 端口

firewall-cmd --permanent --zone=home --add-port=443/tcp
  • 永久啟用區(qū)域中的偽裝

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

此舉啟用區(qū)域的偽裝功能。私有網(wǎng)絡(luò)的地址將被隱藏并映射到一個(gè)公有IP。這是地址轉(zhuǎn)換的一種形式,常用于路由。由于內(nèi)核的限制,偽裝功能僅可用于IPv4。

  • 永久禁用區(qū)域中的偽裝

firewall-cmd --permanent [--zone=] --remove-masquerade
  • 查詢區(qū)域中的偽裝的永久狀態(tài)

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

如果服務(wù)啟用,此命令將有返回值。此命令沒有輸出信息。

  • 永久啟用區(qū)域中的ICMP阻塞

firewall-cmd --permanent [--zone=] --add-icmp-block=

此舉將啟用選中的 Internet 控制報(bào)文協(xié)議 (ICMP) 報(bào)文進(jìn)行阻塞。 ICMP 報(bào)文可以是請(qǐng)求信息或者創(chuàng)建的應(yīng)答報(bào)文或錯(cuò)誤應(yīng)答報(bào)文。

  • 永久禁用區(qū)域中的ICMP阻塞

firewall-cmd --permanent [--zone=] --remove-icmp-block=
  • 查詢區(qū)域中的ICMP永久狀態(tài)

firewall-cmd --permanent [--zone=] --query-icmp-block=

如果服務(wù)啟用,此命令將有返回值。此命令沒有輸出信息。

  • 例: 阻塞公共區(qū)域中的響應(yīng)應(yīng)答報(bào)文:

firewall-cmd --permanent --zone=public --add-icmp-block=echo-reply
  • 在區(qū)域中永久啟用端口轉(zhuǎn)發(fā)或映射

firewall-cmd --permanent [--zone=] --add-forward-port=port=[-]:proto= { :toport=[-] | :toaddr=| :toport=[-]:toaddr=}

端口可以映射到另一臺(tái)主機(jī)的同一端口,也可以是同一主機(jī)或另一主機(jī)的不同端口。端口號(hào)可以是一個(gè)單獨(dú)的端口 或者是端口范圍 - 。協(xié)議可以為 tcp 或udp 。目標(biāo)端口可以是端口號(hào) 或者是端口范圍 - 。目標(biāo)地址可以是 IPv4 地址。受內(nèi)核限制,端口轉(zhuǎn)發(fā)功能僅可用于IPv4。

  • 永久禁止區(qū)域的端口轉(zhuǎn)發(fā)或者端口映射

firewall-cmd --permanent [--zone=] --remove-forward-port=port=[-]:proto= { :toport=[-] | :toaddr=| :toport=[-]:toaddr=}
  • 查詢區(qū)域的端口轉(zhuǎn)發(fā)或者端口映射狀態(tài)

firewall-cmd --permanent [--zone=] --query-forward-port=port=[-]:proto= { :toport=[-] | :toaddr=| :toport=[-]:toaddr=}

如果服務(wù)啟用,此命令將有返回值。此命令沒有輸出信息。

  • 例: 將 home 區(qū)域的 ssh 服務(wù)轉(zhuǎn)發(fā)到 127.0.0.2

firewall-cmd --permanent --zone=home --add-forward-port=port=22:proto=tcp:toaddr=127.0.0.2
直接選項(xiàng)

直接選項(xiàng)主要用于使服務(wù)和應(yīng)用程序能夠增加規(guī)則。規(guī)則不會(huì)被保存,在重新加載或者重啟之后必須再次提交。傳遞的參數(shù) 與 iptables, ip6tables 以及 ebtables 一致。

選項(xiàng) --direct 需要是直接選項(xiàng)的第一個(gè)參數(shù)。

  • 將命令傳遞給防火墻。參數(shù) 可以是 iptables, ip6tables 以及 ebtables 命令行參數(shù)。

firewall-cmd --direct --passthrough { ipv4 | ipv6 | eb } 
  • 為表

    增加一個(gè)新鏈 。

firewall-cmd --direct --add-chain { ipv4 | ipv6 | eb } 
  • 從表

    中刪除鏈 。

firewall-cmd --direct --remove-chain { ipv4 | ipv6 | eb } 
  • 查詢 鏈?zhǔn)欠翊嬖谂c表

    . 如果是,返回0,否則返回1.

firewall-cmd --direct --query-chain { ipv4 | ipv6 | eb } 

如果啟用,此命令將有返回值。此命令沒有輸出信息。

  • 獲取用空格分隔的表

    中鏈的列表。

firewall-cmd --direct --get-chains { ipv4 | ipv6 | eb } 
  • 為表

    增加一條參數(shù)為 的鏈 ,優(yōu)先級(jí)設(shè)定為 。

firewall-cmd --direct --add-rule { ipv4 | ipv6 | eb } 
  • 從表

    中刪除帶參數(shù) 的鏈 。

firewall-cmd --direct --remove-rule { ipv4 | ipv6 | eb } 
  • 查詢 帶參數(shù) 的鏈 是否存在表

    中. 如果是,返回0,否則返回1.

firewall-cmd --direct --query-rule { ipv4 | ipv6 | eb } 

如果啟用,此命令將有返回值。此命令沒有輸出信息。

  • 獲取表

    中所有增加到鏈 的規(guī)則,并用換行分隔。

firewall-cmd --direct --get-rules { ipv4 | ipv6 | eb } 

當(dāng)前的 firewalld 特性

D-BUS 接口

D-BUS 接口提供防火墻狀態(tài)的信息,使防火墻的啟用、停用或查詢?cè)O(shè)置成為可能。

區(qū)域

網(wǎng)絡(luò)或者防火墻區(qū)域定義了連接的可信程度。firewalld 提供了幾種預(yù)定義的區(qū)域。區(qū)域配置選項(xiàng)和通用配置信息可以在firewall.zone(5)的手冊(cè)里查到。

服務(wù)

服務(wù)可以是一系列本讀端口、目的以及附加信息,也可以是服務(wù)啟動(dòng)時(shí)自動(dòng)增加的防火墻助手模塊。預(yù)定義服務(wù)的使用使啟用和禁用對(duì)服務(wù)的訪問變得更加簡(jiǎn)單。服務(wù)配置選項(xiàng)和通用文件信息在 firewalld.service(5) 手冊(cè)里有描述。

ICMP 類型

Internet 控制報(bào)文協(xié)議 (ICMP) 被用以交換報(bào)文和互聯(lián)網(wǎng)協(xié)議 (IP) 的錯(cuò)誤報(bào)文。在 firewalld 中可以使用 ICMP 類型來限制報(bào)文交換。 ICMP 類型配置選項(xiàng)和通用文件信息可以參閱 firewalld.icmptype(5) 手冊(cè)。

直接接口

直接接口主要用于服務(wù)或者應(yīng)用程序增加特定的防火墻規(guī)則。這些規(guī)則并非永久有效,并且在收到 firewalld 通過 D-Bus 傳遞的啟動(dòng)、重啟、重載信號(hào)后需要重新應(yīng)用。

運(yùn)行時(shí)配置

運(yùn)行時(shí)配置并非永久有效,在重新加載時(shí)可以被恢復(fù),而系統(tǒng)或者服務(wù)重啟、停止時(shí),這些選項(xiàng)將會(huì)丟失。

永久配置

永久配置存儲(chǔ)在配置文件種,每次機(jī)器重啟或者服務(wù)重啟、重新加載時(shí)將自動(dòng)恢復(fù)。

托盤小程序

托盤小程序 firewall-applet 為用戶顯示防火墻狀態(tài)和存在的問題。它也可以用來配置用戶允許修改的設(shè)置。

圖形化配置工具

firewall daemon 主要的配置工具是 firewall-config 。它支持防火墻的所有特性(除了由服務(wù)/應(yīng)用程序增加規(guī)則使用的直接接口)。管理員也可以用它來改變系統(tǒng)或用戶策略。

命令行客戶端

firewall-cmd 是命令行下提供大部分圖形工具配置特性的工具。

對(duì)于 ebtables 的支持

要滿足 libvirt daemon 的全部需求,在內(nèi)核 netfilter 級(jí)上防止 ip*tables 和 ebtables 間訪問問題,ebtables 支持是需要的。由于這些命令是訪問相同結(jié)構(gòu)的,因而不能同時(shí)使用。

/usr/lib/firewalld 中的默認(rèn)/備用配置

該目錄包含了由 firewalld 提供的默認(rèn)以及備用的 ICMP 類型、服務(wù)、區(qū)域配置。由 firewalld 軟件包提供的這些文件不能被修改,即使修改也會(huì)隨著 firewalld 軟件包的更新被重置。其他的 ICMP 類型、服務(wù)、區(qū)域配置可以通過軟件包或者創(chuàng)建文件的方式提供。

/etc/firewalld 中的系統(tǒng)配置設(shè)置

存儲(chǔ)在此的系統(tǒng)或者用戶配置文件可以是系統(tǒng)管理員通過配置接口定制的,也可以是手動(dòng)定制的。這些文件將重載默認(rèn)配置文件。

為了手動(dòng)修改預(yù)定義的 icmp 類型,區(qū)域或者服務(wù),從默認(rèn)配置目錄將配置拷貝到相應(yīng)的系統(tǒng)配置目錄,然后根據(jù)需求進(jìn)行修改。

如果你加載了有默認(rèn)和備用配置的區(qū)域,在 /etc/firewalld 下的對(duì)應(yīng)文件將被重命名為 .old 然后啟用備用配置。

正在開發(fā)的特性

富語言

富語言特性提供了一種不需要了解iptables語法的通過高級(jí)語言配置復(fù)雜 IPv4 和 IPv6 防火墻規(guī)則的機(jī)制。

Fedora 19 提供了帶有 D-Bus 和命令行支持的富語言特性第2個(gè)里程碑版本。第3個(gè)里程碑版本也將提供對(duì)于圖形界面 firewall-config 的支持。

鎖定

鎖定特性為 firewalld 增加了鎖定本地應(yīng)用或者服務(wù)配置的簡(jiǎn)單配置方式。它是一種輕量級(jí)的應(yīng)用程序策略。

Fedora 19 提供了鎖定特性的第二個(gè)里程碑版本,帶有 D-Bus 和命令行支持。第3個(gè)里程碑版本也將提供圖形界面 firewall-config 下的支持。

永久直接規(guī)則

這項(xiàng)特性處于早期狀態(tài)。它將能夠提供保存直接規(guī)則和直接鏈的功能。通過規(guī)則不屬于該特性。

從 ip*tables 和 ebtables 服務(wù)遷移

這項(xiàng)特性處于早期狀態(tài)。它將盡可能提供由iptables,ip6tables 和 ebtables 服務(wù)配置轉(zhuǎn)換為永久直接規(guī)則的腳本。此特性在由firewalld提供的直接鏈集成方面可能存在局限性。

此特性將需要大量復(fù)雜防火墻配置的遷移測(cè)試。

計(jì)劃和提議功能

防火墻抽象模型

在 ip*tables 和 ebtables 防火墻規(guī)則之上添加抽象層使添加規(guī)則更簡(jiǎn)單和直觀。要抽象層功能強(qiáng)大,但同時(shí)又不能復(fù)雜,并不是一項(xiàng)簡(jiǎn)單的任務(wù)。為此,不得不開發(fā)一種防火墻語言。使防火墻規(guī)則擁有固定的位置,可以查詢端口的訪問狀態(tài)、訪問策略等普通信息和一些其他可能的防火墻特性。

對(duì)于 conntrack 的支持

要終止禁用特性已確立的連接需要 conntrack 。不過,一些情況下終止連接可能是不好的,如:為建立有限時(shí)間內(nèi)的連續(xù)性外部連接而啟用的防火墻服務(wù)。

用戶交互模型

這是防火墻中用戶或者管理員可以啟用的一種特殊模式。應(yīng)用程序所有要更改防火墻的請(qǐng)求將定向給用戶知曉,以便確認(rèn)和否認(rèn)。為一個(gè)連接的授權(quán)設(shè)置一個(gè)時(shí)間限制并限制其所連主機(jī)、網(wǎng)絡(luò)或連接是可行的。配置可以保存以便將來不需通知便可應(yīng)用相同行為。該模式的另一個(gè)特性是管理和應(yīng)用程序發(fā)起的請(qǐng)求具有相同功能的預(yù)選服務(wù)和端口的外部鏈接嘗試。服務(wù)和端口的限制也會(huì)限制發(fā)送給用戶的請(qǐng)求數(shù)量。

用戶策略支持

管理員可以規(guī)定哪些用戶可以使用用戶交互模式和限制防火墻可用特性。

端口元數(shù)據(jù)信息(由 Lennart Poettering 提議)

擁有一個(gè)端口獨(dú)立的元數(shù)據(jù)信息是很好的。當(dāng)前對(duì) /etc/services 的端口和協(xié)議靜態(tài)分配模型不是個(gè)好的解決方案,也沒有反映當(dāng)前使用情況。應(yīng)用程序或服務(wù)的端口是動(dòng)態(tài)的,因而端口本身并不能描述使用情況。

元數(shù)據(jù)信息可以用來為防火墻制定簡(jiǎn)單的規(guī)則。下面是一些例子:

 允許外部訪問文件共享應(yīng)用程序或服務(wù)
允許外部訪問音樂共享應(yīng)用程序或服務(wù)
允許外部訪問全部共享應(yīng)用程序或服務(wù)
允許外部訪問 torrent 文件共享應(yīng)用程序或服務(wù)
允許外部訪問 http 網(wǎng)絡(luò)服務(wù)

這里的元數(shù)據(jù)信息不只有特定應(yīng)用程序,還可以是一組使用情況。例如:組“全部共享”或者組“文件共享”可以對(duì)應(yīng)于全部共享或文件共享程序(如:torrent 文件共享)。這些只是例子,因而,可能并沒有實(shí)際用處。

這里是在防火墻中獲取元數(shù)據(jù)信息的兩種可能途徑:

第一種是添加到 netfilter (內(nèi)核空間)。好處是每個(gè)人都可以使用它,但也有一定使用限制。還要考慮用戶或系統(tǒng)空間的具體信息,所有這些都需要在內(nèi)核層面實(shí)現(xiàn)。

第二種是添加到 firewall daemon 中。這些抽象的規(guī)則可以和具體信息(如:網(wǎng)絡(luò)連接可信級(jí)、作為具體個(gè)人/主機(jī)要分享的用戶描述、管理員禁止完全共享的應(yīng)歸則等)一起使用。

第二種解決方案的好處是不需要為有新的元數(shù)據(jù)組和納入改變(可信級(jí)、用戶偏好或管理員規(guī)則等等)重新編譯內(nèi)核。這些抽象規(guī)則的添加使得 firewall daemon 更加自由。即使是新的安全級(jí)也不需要更新內(nèi)核即可輕松添加。

sysctld

現(xiàn)在仍有 sysctl 設(shè)置沒有正確應(yīng)用。一個(gè)例子是,在 rc.sysinit 正運(yùn)行時(shí),而提供設(shè)置的模塊在啟動(dòng)時(shí)沒有裝載或者重新裝載該模塊時(shí)會(huì)發(fā)生問題。

另一個(gè)例子是 net.ipv4.ip_forward ,防火墻設(shè)置、libvirt 和用戶/管理員更改都需要它。如果有兩個(gè)應(yīng)用程序或守護(hù)進(jìn)程只在需要時(shí)開啟 ip_forwarding ,之后可能其中一個(gè)在不知道的情況下關(guān)掉服務(wù),而另一個(gè)正需要它,此時(shí)就不得不重啟它。

sysctl daemon 可以通過對(duì)設(shè)置使用內(nèi)部計(jì)數(shù)來解決上面的問題。此時(shí),當(dāng)之前請(qǐng)求者不再需要時(shí),它就會(huì)再次回到之前的設(shè)置狀態(tài)或者是直接關(guān)閉它。

防火墻規(guī)則

netfilter 防火墻總是容易受到規(guī)則順序的影響,因?yàn)橐粭l規(guī)則在鏈中沒有固定的位置。在一條規(guī)則之前添加或者刪除規(guī)則都會(huì)改變此規(guī)則的位置。在靜態(tài)防火墻模型中,改變防火墻就是重建一個(gè)干凈和完善的防火墻設(shè)置,且受限于 system-config-firewall / lokkit 直接支持的功能。也沒有整合其他應(yīng)用程序創(chuàng)建防火墻規(guī)則,且如果自定義規(guī)則文件功能沒在使用 s-c-fw / lokkit 就不知道它們。默認(rèn)鏈通常也沒有安全的方式添加或刪除規(guī)則而不影響其他規(guī)則。

動(dòng)態(tài)防火墻有附加的防火墻功能鏈。這些特殊的鏈按照已定義的順序進(jìn)行調(diào)用,因而向鏈中添加規(guī)則將不會(huì)干擾先前調(diào)用的拒絕和丟棄規(guī)則。從而利于創(chuàng)建更為合理完善的防火墻配置。

下面是一些由守護(hù)進(jìn)程創(chuàng)建的規(guī)則,過濾列表中啟用了在公共區(qū)域?qū)?ssh , mDNS 和 ipp-client 的支持:

 *filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:FORWARD_ZONES - [0:0]
:FORWARD_direct - [0:0]
:INPUT_ZONES - [0:0]
:INPUT_direct - [0:0]
:IN_ZONE_public - [0:0]
:IN_ZONE_public_allow - [0:0]
:IN_ZONE_public_deny - [0:0]
:OUTPUT_direct - [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j INPUT_direct
-A INPUT -j INPUT_ZONES
-A INPUT -p icmp -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i lo -j ACCEPT
-A FORWARD -j FORWARD_direct
-A FORWARD -j FORWARD_ZONES
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -j OUTPUT_direct
-A IN_ZONE_public -j IN_ZONE_public_deny
-A IN_ZONE_public -j IN_ZONE_public_allow
-A IN_ZONE_public_allow -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
-A IN_ZONE_public_allow -d 224.0.0.251/32 -p udp -m udp --dport 5353 -m conntrack --ctstate NEW -j ACCEPT
-A IN_ZONE_public_allow -p udp -m udp --dport 631 -m conntrack --ctstate NEW -j ACCEPT

使用 deny/allow 模型來構(gòu)建一個(gè)清晰行為(最好沒有沖突規(guī)則)。例如: ICMP 塊將進(jìn)入 IN_ZONE_public_deny 鏈(如果為公共區(qū)域設(shè)置了的話),并將在 IN_ZONE_public_allow 鏈之前處理。

該模型使得在不干擾其他塊的情況下向一個(gè)具體塊添加或刪除規(guī)則而變得更加容易。

新聞名稱:firewall-cmd防火墻概述
本文網(wǎng)址:http://muchs.cn/article46/ghiphg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化品牌網(wǎng)站建設(shè)、建站公司動(dòng)態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)