首頁 > 軟體

CentOS 7防火牆服務FirewallD指南

2020-06-16 17:29:42

防火牆是一種位於內部網路與外部網路之間的網路安全系統。一項資訊保安的防護系統,依照特定的規則,允許或是限制傳輸的資料通過。防火牆通常工作在網路層,也即IPv4或IPv6的IP包上。

是否允許包通過防火牆,取決於防火牆設定的規則。這些規則既可以是內建的,也可以是使用者自定義的。每一個包要進出防火牆,均需要滿足防火牆設定的規則。

每一條規則均有一個目標動作,具有相同動作的規則可以分組在一起。對於Linux系統,最常用的防火牆有:FirewallD或iptables。Linux的發行版種類極多,但是公認的仍然是這兩種。

1、什麼是FirewallD

FirewallD即Dynamic Firewall Manager of Linux systems,Linux系統的動態防火牆管理器。FirewallD是一個服務,用於設定網路連線,從而哪些內外部網路的封包可以允許穿過網路或阻止穿過網路。

FirewallD允許兩種型別的設定:永久型別和執行時型別。執行時型別的設定在防火牆被重新啟動後會丟失相應的規則設定;而永久型別的設定即使遇到系統重新啟動,也會保留生效。

對應於上面兩種型別的設定,FirewallD相應的有兩個目錄:針對執行時型別設定的目錄/usr/lib/firewall;以及針對永久型別設定的目錄/etc/firewall.在RHEL/CentOS 7或Fedora 18的預設服務可以看到。

防火牆棧的整體圖如下:

2、什麼是iptables

iptables是另一種服務,它可以決定是否允許、刪除或返回IP封包。iptables服務管理IPv4封包,而ip6tables則管理IPv6封包。此服務管理了一堆規則表,其中每個表分別用於維護不同的目的,比如過濾表(filter table)為防火牆規則,NAT表供新連線查詢使用,mangle表用於封包的轉換等。

更進一步,每個表還具有規則鏈,規則鏈可以是內建的或是使用者自定義的,它表示適用於一個封包的規則集合,從而決定封包應該執行哪些目標動作,比如允許ALLOWED、阻塞BLOCKED或返回RETURNED。iptables服務在RHEL/CentOS 6/5、Fedora、ArchLinux、Ubuntu等Linux發行版中是系統預設的服務。

3、FirewallD服務的基本操作

對於CentOS/RHEL 7或Fedora 18以上版本的系統,要管理FirewallD服務,使用如下命令。

啟動FirewallD服務

# systemctl firewalld start

停止FirewallD服務

# systemctl firewalld stop

檢查FirewallD服務的狀態

# systemctl status firewalld

檢查FirewallD服務的狀態

# firewall-cmd --state

可能會返回running,表示正在執行。

還可以禁用FirewallD服務,關閉那些規則。

禁用FirewallD服務

# systemctl disable firewalld

啟用FirewallD服務

# systemctl enable firewalld

遮蔽FirewallD服務

# systemctl mask firewalld

還可以通過建立一個firewall.service到/dev/null的符號連線來遮蔽防火牆服務。

反遮蔽FirewallD服務

# systemctl unmask firewalld

這是反遮蔽FirewallD服務,它會移除遮蔽FirewallD服務時建立的符號連結,故能重新啟用服務。

檢查是否已安裝防火牆

# yum install firewalld firewall-config

4、iptables服務的基本操作

在RHEL/CentOS 6/5/4系統和Fedora 12-18系統中,iptables是預設的防火牆,如果服務不存在,可以這樣安裝:

# yum install iptables-services

然後就可以對iptables服務進行啟動、停止、重新啟動等操作了。

啟動iptables服務

# systemctl start iptables

# service iptables start

停止iptables服務

# systemctl stop iptables

# service iptables stop

禁用iptables服務

# systemctl disable iptables

# service iptables save
# service iptables stop

啟用iptables服務

# systemctl enable iptables

# service iptables start

檢查iptables服務的狀態

# systemctl status iptables

# service iptables status

在Ubuntu及其它Linux發行版中,ufw是用於管理iptables防火牆服務的工具。ufw提供了一個簡易的介面讓使用者可以很方便的處理iptables防火牆服務。

啟用ufw iptables防火牆服務

$ sudo ufw enable

禁用ufw iptables防火牆服務

$ sudo ufw disable

檢查ufw iptables防火牆服務的狀態

$ sudo ufw status 

但是,如果想列出iptables包含的所有規則鏈列表,應使用如下命令:

$ iptables -L -n -v

5、理解網路區

在CentOS/RHEL 7系統中,基於使用者對網路中裝置和通訊所給與的信任程度,防火牆可用於將網路劃分成不同的區域,區域型別如下:

  • drop(丟棄)
    任何接收的網路封包都被丟棄,沒有任何回復。僅能有傳送出去的網路連線。
  • block(限制)
    任何接收的網路連線都被 IPv4 的 icmp-host-prohibited 資訊和 IPv6 的 icmp6-adm-prohibited 資訊所拒絕。
  • public(公共)
    在公共區域內使用,不能相信網路內的其他計算機不會對您的計算機造成危害,只能接收經過選取的連線。
  • external(外部)
    特別是為路由器啟用了偽裝功能的外部網。您不能信任來自網路的其他計算機,不能相信它們不會對您的計算機造成危害,只能接收經過選擇的連線。
  • dmz(非軍事區)
    用於您的非軍事區內的電腦,此區域內可公開存取,可以有限地進入您的內部網路,僅僅接收經過選擇的連線。
  • work(工作)
    用於工作區。您可以基本相信網路內的其他電腦不會危害您的電腦。僅僅接收經過選擇的連線。
  • home(家庭)
    用於家庭網路。您可以基本信任網路內的其他計算機不會危害您的計算機。僅僅接收經過選擇的連線。
  • internal(內部)
    用於內部網路。您可以基本上信任網路內的其他計算機不會威脅您的計算機。僅僅接受經過選擇的連線。
  • trusted(信任)
    可接受所有的網路連線。

對於區域的修改,可使用網路管理器NetworkManager搞定。

5、理解直接介面

FirewallD包含了一個名為直接介面(direct interface)的概念,意思是可以直接通過iptables、ip6tables和ebtables的規則。直接介面適用於應用程式,不適用於使用者。如果不熟悉iptables,那麼使用直接介面是很危險的,因為可能會導致防火牆被入侵。

FirewallD保持對所增加規則項的追蹤,所以能質詢FirewallD,發現由使用直接埠模式的程式造成的更改。要使用直接埠,增加–direct選項到firewall-cmd命令來使用。

6、改用iptables服務

在CentOS/RHEL 7系統中,要用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

7、啟動圖形化防火牆設定工具

用命令列啟動圖形化防火牆設定工具,則以root使用者身份輸入以下命令:

# firewall-config

可以看到如下介面:

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-10/136431.htm


IT145.com E-mail:sddin#qq.com