2021-05-12 14:32:11
CentOS 7防火牆服務FirewallD指南
防火牆是一種位於內部網路與外部網路之間的網路安全系統。一項資訊保安的防護系統,依照特定的規則,允許或是限制傳輸的資料通過。防火牆通常工作在網路層,也即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
相關文章