歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> CentOS 7防火牆服務FirewallD指南

CentOS 7防火牆服務FirewallD指南

日期:2017/2/28 13:47:46   编辑:Linux教程

防火牆是一種位於內部網絡與外部網絡之間的網絡安全系統。一項信息安全的防護系統,依照特定的規則,允許或是限制傳輸的數據通過。防火牆通常工作在網絡層,也即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

可以看到如下界面:

Copyright © Linux教程網 All Rights Reserved