歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 使用 FirewallD 構建動態防火牆

使用 FirewallD 構建動態防火牆

日期:2017/2/28 14:25:10   编辑:Linux教程

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

相反,firewall daemon 動態管理防火牆,不需要重啟整個防火牆便可應用更改。因而也就沒有必要重載所有內核防火牆模塊了。不過,要使用 firewall daemon 就要求防火牆的所有變更都要通過該守護進程來實現,以確保守護進程中的狀態和內核裡的防火牆是一致的。另外,firewall daemon 無法解析由 ip*tables 和 ebtables 命令行工具添加的防火牆規則。

守護進程通過 D-BUS 提供當前激活的防火牆設置信息,也通過 D-BUS 接受使用 PolicyKit 認證方式做的更改。

“守護進程”

應用程序、守護進程和用戶可以通過 D-BUS 請求啟用一個防火牆特性。特性可以是預定義的防火牆功能,如:服務、端口和協議的組合、端口/數據報轉發、偽裝、ICMP 攔截或自定義規則等。該功能可以啟用確定的一段時間也可以再次停用。

通過所謂的直接接口,其他的服務(例如 libvirt )能夠通過 iptables 變元(arguments)和參數(parameters)增加自己的規則。

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

靜態防火牆(system-config-firewall/lokkit)

使用 system-config-firewall 和 lokkit 的靜態防火牆模型實際上仍然可用並將繼續提供,但卻不能與“守護進程”同時使用。用戶或者管理員可以決定使用哪一種方案。

在軟件安裝,初次啟動或者是首次聯網時,將會出現一個選擇器。通過它你可以選擇要使用的防火牆方案。其他的解決方案將保持完整,可以通過更換模式啟用。

firewall daemon 獨立於 system-config-firewall,但二者不能同時使用。

使用 iptables 和 ip6tables 的靜態防火牆規則

如果你想使用自己的 iptables 和 ip6tables 靜態防火牆規則, 那麼請安裝 iptables-services 並且禁用 firewalld ,啟用 iptables 和ip6tables:

  1. yum install iptables-services
  2. systemctl mask firewalld.service
  3. systemctl enable iptables.service
  4. systemctl enable ip6tables.service

靜態防火牆規則配置文件是 /etc/sysconfig/iptables 以及 /etc/sysconfig/ip6tables .

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

為服務創建規則並停用 firewalld 後,就可以啟用 iptables 與 ip6tables 服務了:

  1. systemctl stop firewalld.service
  2. systemctl start iptables.service
  3. systemctl start ip6tables.service

什麼是區域?

網絡區域定義了網絡連接的可信等級。這是一個一對多的關系,這意味著一次連接可以僅僅是一個區域的一部分,而一個區域可以用於很多連接。

預定義的服務

服務是端口和/或協議入口的組合。備選內容包括 netfilter 助手模塊以及 IPv4、IPv6地址。

端口和協議

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

ICMP 阻塞

可以選擇 Internet 控制報文協議的報文。這些報文可以是信息請求亦可是對信息請求或錯誤條件創建的響應。

偽裝

私有網絡地址可以被映射到公開的IP地址。這是一次正規的地址轉換。

端口轉發

端口可以映射到另一個端口以及/或者其他主機。

哪個區域可用?

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

丟棄(drop)

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

阻塞(block)

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

公開(public)

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

外部(external)

用在路由器等啟用偽裝的外部網絡。該網絡中其他的計算機對你來說不可信並且可能傷害你的計算機。只允許選中的連接接入。

隔離區(dmz)

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

工作(work)

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

家庭(home)

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

內部(internal)

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

受信任的(trusted)

允許所有網絡連接。

我應該選用哪個區域?

例如,公共的 WIFI 連接應該主要為不受信任的,家庭的有線網絡應該是相當可信任的。根據與你使用的網絡最符合的區域進行選擇。

如何配置或者增加區域?

你可以使用任何一種 firewalld 配置工具來配置或者增加區域,以及修改配置。工具有例如 firewall-config 這樣的圖形界面工具, firewall-cmd 這樣的命令行工具,以及D-BUS接口。或者你也可以在配置文件目錄中創建或者拷貝區域文件。 @PREFIX@/lib/firewalld/zones 被用於默認和備用配置,/etc/firewalld/zones 被用於用戶創建和自定義配置文件。

如何為網絡連接設置或者修改區域

區域設置以 ZONE= 選項 存儲在網絡連接的ifcfg文件中。如果這個選項缺失或者為空,firewalld 將使用配置的默認區域。

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

由 NetworkManager 控制的網絡連接

防火牆不能夠通過 NetworkManager 顯示的名稱來配置網絡連接,只能配置網絡接口。因此在網絡連接之前 NetworkManager 將配置文件所述連接對應的網絡接口告訴 firewalld 。如果在配置文件中沒有配置區域,接口將配置到 firewalld 的默認區域。如果網絡連接使用了不止一個接口,所有的接口都會應用到 fiwewalld。接口名稱的改變也將由 NetworkManager 控制並應用到firewalld。

為了簡化,自此,網絡連接將被用作與區域的關系。

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

當 firewalld 由 systemd 或者 init 腳本啟動或者重啟後,firewalld 將通知 NetworkManager 把網絡連接增加到區域。

由腳本控制的網絡

對於由網絡腳本控制的連接有一條限制:沒有守護進程通知 firewalld 將連接增加到區域。這項工作僅在 ifcfg-post 腳本進行。因此,此後對網絡連接的重命名將不能被應用到firewalld。同樣,在連接活動時重啟 firewalld 將導致與其失去關聯。現在有意修復此情況。最簡單的是將全部未配置連接加入默認區域。

區域定義了本區域中防火牆的特性。

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-12/110357p2.htm

Copyright © Linux教程網 All Rights Reserved