使用CentOS/RHEL防火牆

https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html html


4.5.1. 防火牆簡介

動態防火牆後臺程序 firewalld 提供了一個 動態管理的防火牆,用以支持網絡 zones ,以分配對一個網絡及其相關連接和界面必定程度的信任。它具有對 IPv4 和 IPv6 防火牆設置的支持。它支持以太網橋,並有分離運行時間和永久性配置選擇。它還具有一個通向服務或者應用程序以直接增長防火牆規則的接口。網絡

4.5.2. 瞭解防火牆

一個圖像化的配置工具,firewall-config,用於配置 firewalld:它依次用 iptables工具 與執行數據包篩選的內核中的 Netfilter 通訊,app

使用圖像化的 firewall-config 工具,按下 Super 鍵進入活動總覽,點擊 firewall,而後按下 Enterfirewall-config 工具就出現了。您將被提示輸入管理員密碼。ide

firewall-config 工具裏有一個標記爲 Configuration 的下拉菜單,能夠在 運行時間 和 永久 兩種模式之間進行選擇。要注意,若是您選擇了 Permanent ,在左上角會出現一排附加的圖標。由於不能在運行模式下改變一個服務參數,因此這些圖標僅在永久配置模式中出現。工具

由 firewalld 提供的是動態的防火牆服務,而非靜態的。由於配置的改變能夠隨時隨地馬上執行,再也不須要保存或者執行這些改變。現行網絡鏈接的意外中斷不會發生,正如防火牆的全部部分都不須要從新下載。ui

提供命令行客戶端,firewall-cmd,用於進行永久性或非永久性運行時間的改變,正如在 man firewall-cmd(1)所解釋的同樣。永久性改變須要按照 firewalld(1) 手冊頁的解釋來進行。注意, firewall-cmd 命令能夠由 root 用戶運行,也能夠由管理員用戶——換言之, wheel 羣體的成員運行。在後一種狀況裏,命令將經過 polkit 進程來受權。spa

firewalld 的配置儲存在 /usr/lib/firewalld/ 和 /etc/firewalld/ 裏的各類 XML 文件裏,這樣保持了這些文件被編輯、寫入、備份的極大的靈活性,使之可做爲其餘安裝的備份等等。命令行

其餘應用程序可使用 D-bus 和 firewalld 通訊。code

4.5.3. 比較 system-config-firewall 以及 iptables 的 firewalld

firewalld 和 iptables service 之間最本質的不一樣是: xml

  • iptables service 在 /etc/sysconfig/iptables 中儲存配置,而 firewalld 將配置儲存在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各類 XML 文件裏,。要注意,當 firewalld 在Red Hat Enterprise Linux上安裝失敗時, /etc/sysconfig/iptables 文件就不存在。

  • 使用 iptables service,每個單獨更改意味着清除全部舊有的規則和從 /etc/sysconfig/iptables裏讀取全部新的規則,然而使用 firewalld 卻不會再建立任何新的規則;僅僅運行規則中的不一樣之處。所以,firewalld 能夠在運行時間內,改變設置而不丟失現行鏈接。

使用 iptables tool 與內核包過濾對話也是如此。

防火牆堆棧

圖 4.1. 防火牆堆棧

4.5.4. 對網絡區的理解

基於用戶對網絡中設備和交通所給與的信任程度,防火牆能夠用來將網絡分割成不一樣的區域。 NetworkManager 通知 firewalld 一個接口歸屬某個區域。接口所分配的區域能夠由 NetworkManager 改變,也能夠經過能爲您打開相關 NetworkManager 窗口的 firewall-config 工具進行。

/etc/firewalld/的區域設定是一系列能夠被快速執行到網絡接口的預設定。列表並簡要說明以下:

  • drop(丟棄)

  • 任何接收的網絡數據包都被丟棄,沒有任何回覆。僅能有發送出去的網絡鏈接。

  • block(限制)

  • 任何接收的網絡鏈接都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-adm-prohibited信息所拒絕。

  • public(公共)

  • 在公共區域內使用,不能相信網絡內的其餘計算機不會對您的計算機形成危害,只能接收通過選取的鏈接。

  • external(外部)

  • 特別是爲路由器啓用了假裝功能的外部網。您不能信任來自網絡的其餘計算,不能相信它們不會對您的計算機形成危害,只能接收通過選擇的鏈接。

  • dmz(非軍事區)

  • 用於您的非軍事區內的電腦,此區域內可公開訪問,能夠有限地進入您的內部網絡,僅僅接收通過選擇的鏈接。

  • work(工做)

  • 用於工做區。您能夠基本相信網絡內的其餘電腦不會危害您的電腦。僅僅接收通過選擇的鏈接。

  • home(家庭)

  • 用於家庭網絡。您能夠基本信任網絡內的其餘計算機不會危害您的計算機。僅僅接收通過選擇的鏈接。

  • internal(內部)

  • 用於內部網絡。您能夠基本上信任網絡內的其餘計算機不會威脅您的計算機。僅僅接受通過選擇的鏈接。

  • trusted(信任)

  • 可接受全部的網絡鏈接。

指定其中一個區域爲默認區域是可行的。當接口鏈接加入了 NetworkManager,它們就被分配爲默認區域。安裝時,firewalld 裏的默認區域被設定爲公共區域。

4.5.5. 選擇一個網絡區域

網絡區域名已經選定爲不加說明,便可明瞭,並容許用戶快速地作出合理決定。可是,應對默認配置的設定進行檢查,並且根據您的須要和風險評估,沒必要要的服務將不能使用。

4.5.6. 對預先定義的服務的理解

一項服務能夠是本地和目的地端口的列表,若是服務被容許的話,也能夠是一系列自動加載的防火牆輔助模塊。預先定義的服務的使用,讓客戶更容易被容許或者被禁止進入服務。與對開放端口或者值域,或者端口大相徑庭,使用預先定義服務,或者客戶限定服務,或許可以讓管理更容易。 firewalld.service(5)中的手冊頁描述了服務配置的選擇和通用文件信息。服務經過單個的 XML 配置文件來指定,這些配置文件則按如下格式命名:service-name.xml

用圖形化 firewall-config 工具查看服務列表,按下 Super 鍵進入開始菜單,輸入 firewall 而後按下 Enterfirewall-config 工具就出現了。您將被提示輸入管理員密碼。如今,在 Services 標籤下,您能夠查看服務列表了。

要使用命令行列出默認的預先定義服務,以 root 身份執行如下命令: 

~]# ls /usr/lib/firewalld/services/

請勿編輯/usr/lib/firewalld/services/ ,只有 /etc/firewalld/services/ 的文件能夠被編輯。

要列出系統或者用戶建立的系統,以 root 身份執行如下命令: 

~]# ls /etc/firewalld/services/

使用圖形化 firewall-config 工具和經過編輯 /etc/firewalld/services/ 中的 XML 文件,服務能夠被增長和刪除。若是服務沒有被用戶增長或者改變,那麼 /etc/firewalld/services/ 中不會發現相應的 XML 文件。若是您但願增長或者改變服務, /usr/lib/firewalld/services/ 文件能夠做爲模板使用。以 root 身份執行如下命令: 

~]# cp /usr/lib/firewalld/services/[service].xml /etc/firewalld/services/[service].xml

而後您能夠編輯最近建立的文件。firewalld 優先使用 /etc/firewalld/services/ 裏的文件,若是一份文件被刪除且服務被從新加載後,會切換到 /usr/lib/firewalld/services/

4.5.7. 理解直接接口

firewalld 有一個被稱爲 direct interface(直接接口),它能夠直接經過 iptablesip6tables 和 ebtables 的規則。它適用於應用程序,而不是用戶。若是您不太熟悉 iptables,那麼使用直接接口是很危險的,由於您可能無心中致使防火牆被***。firewalld 保持對所增長項目的追蹤,因此它還能質詢 firewalld 和發現由使用直接端口模式的程序形成的更改。直接端口由增長 --direct 選項到 firewall-cmd 命令來使用。

直接端口模式適用於服務或者程序,以便在運行時間內增長特定的防火牆規則。這些規則不是永久性的,它們須要在每次經過 D-BU S從 firewalld 接到啓動、從新啓動和從新加載信息後運用。

4.5.8. 檢查是否已安裝防火牆

在 Red Hat Enterprise Linux 7 中,默認安裝 firewalld 和圖形化用戶接口配置工具 firewall-config。做爲 root 用戶運行下列命令能夠檢查: 

~]# yum install firewalld firewall-config

4.5.9. 禁用防火牆

要禁用 firewalld,則做爲 root 用戶運行下列命令: 

~]# systemctl disable firewalld# systemctl stop firewalld

4.5.10. 使用 iptables 服務

要用 iptables 和 ip6tables 服務代替 firewalld,則以 root 身份運行如下命令,先禁用 firewalld: 

~]# systemctl disable firewalld# systemctl stop firewalld

而後安裝 iptables-services 程序包,以 root 身份輸入如下命令: 

~]# yum install iptables-services

iptables-services 程序包包含了 iptables 服務和 ip6tables 服務。

而後,以 root 身份運行 iptables 和 ip6tables 命令: 

  # systemctl start iptables
  # systemctl start ip6tables
  # systemctl enable iptables
  # systemctl enable ip6tables

4.5.11. 啓動防火牆

要啓動 firewalld,則以 root 用戶身份輸入如下命令: 

~]# systemctl start firewalld

4.5.12. 檢查防火牆是否運行

若是 firewalld 在運行,輸入如下命令檢查: 

~]$ systemctl status firewalldfirewalld.service - firewalld - dynamic firewall daemon
	  Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
	  Active: active (running) since Sat 2013-04-06 22:56:59 CEST; 2 days ago
	Main PID: 688 (firewalld)
	  CGroup: name=systemd:/system/firewalld.service

另外,檢查 firewall-cmd 是否能夠經過輸入如下命令來鏈接後臺程序: 

~]$ firewall-cmd --state running
相關文章
相關標籤/搜索