首頁 > 軟體

如何在RHEL/CentOS 7以及Fedora中設定FirewallD

2020-06-16 18:08:51

我們都清楚Net-filter是Linux的一種防火牆機制。而Firewalld是一個在網路區域(networks zones)的支援下動態管理防火牆的守護行程。早期的RHEL版本和CentOS 6使用iptables這個守護行程進行封包過濾。而在RHEL/CentOS 7和Fedora 21中,iptables介面將被firewalld取代。

由於iptables可能會在未來的版本中消失,所以建議從現在起就使用Firewalld來代替iptables。話雖如此,現行版本仍然支援iptables,而且還可以用YUM命令來安裝。不過可以肯定的是,在同一個系統中不能同時執行Firewalld和iptables,否則可能引發衝突。

在iptables中需要設定INPUT、OUTPUT和FORWARD CHAINS。而在Firewalld中新引入了區域(Zones)這個概念。預設情況下,firewalld中就有一些有效的區域(zones),這也是本文將要討論的內容。

基礎區域如同公共區域(public zone)和私有區域(private zone)。為了讓作業在這些區域中執行,需要為網路介面新增特定區域(specified zone)支援,好讓我們往firewalld中新增服務。

預設情況下就有很多生效的服務。firewalld最好的特性之一就是,它本身就提供了一些預定義的服務,而我們可以以這些預定義的服務為模版,複製之以新增我們自己的服務。

Firewalld還能很好地相容IPv4、IPv6和乙太網橋接。在Firewalld中,我們可以有獨立的執行時間和永久性的設定。接下來讓我們看看如何在區域(zones)中作業、建立我們的服務以及更好的利用firewalld這個防火牆機制吧。

測試環境如下:

Operating System  : CentOS Linux release 7.0.1406 (Core)

IP Address: 192.168.0.55

Host-name: server1.tecmintlocal.com

步驟1:安裝Firewalld元件

1.Firewalld元件在RHEL/CentOS 7和Fedora 21預設已經安裝了。如果沒有可以使用如下YUM命令進行安裝。

# yum install firewalld -y

2.安裝完畢,檢視一下iptables是否正在執行。如果是,你需要用以下命令來stop和mask(不再使用)iptables。

# systemctl status iptables

# systemctl stop iptables

# systemctl mask iptables

步驟2:Firewalld元件的討論

3.在進行firewalld設定之前,我想來討論一下區域(zones)這個概念。預設情況就有一些有效的區域。我們需要網路介面分配區域。區域規定了區域是網路介面信任或者不信任網路連線的標準。區域(zone)包含服務和埠。接下來讓我們討論Firewalld中那些有用的區域(zones)。

  • 丟棄區域(Drop Zone):如果使用丟棄區域,任何進入的封包將被丟棄。這個類似與我們之前使用iptables -j drop。使用丟棄規則意味著將不存在響應,只有流出的網路連線有效。
  • 阻塞區域(Block Zone):阻塞區域會拒絕進入的網路連線,返回icmp-host-prohibited,只有伺服器已經建立的連線會被通過。
  • 公共區域(Public Zone):只接受那些被選中的連線,而這些通過在公共區域中定義相關規則實現。伺服器可以通過特定的埠資料,而其它的連線將被丟棄。
  • 外部區域(External Zone):這個區域相當於路由器的啟用偽裝(masquerading)選項。只有指定的連線會被接受,而其它的連線將被丟棄或者不被接受。
  • 隔離區域(DMZ Zone):如果想要只允許給部分服務能被外部存取,可以在DMZ區域中定義。它也擁有只通過被選中連線的特性。
  • 工作區域(Work Zone):在這個區域,我們只能定義內部網路。比如私有網路通訊才被允許。
  • 家庭區域(Home Zone):這個區域專門用於家庭環境。我們可以利用這個區域來信任網路上其它主機不會侵害你的主機。它同樣只允許被選中的連線。
  • 內部區域(Internal Zone):這個區域和工作區域(Work Zone)類似,只有通過被選中的連線。
  • 信任區域(Trusted Zone):信任區域允許所有網路通訊通過。

現在你對區域有個很好的認識了,讓我們使用以下的命令來找出有用的區域、預設區域以及列出所有的區域吧。

# firewall-cmd --get-zones

# firewall-cmd --get-default-zone

# firewall-cmd --list-all-zones

注意:以上命令的輸出不僅僅只有單頁,因為它將會列出每種區域如block、dmz、drop、external、home、internal、public、trusted以及work。如果區域還有其它詳細規則(rich-rules)、啟用的服務或者埠,這些區域資訊也會分別被羅列出來。

翻譯:sogreen 想了解作者請存取linux公社

Linux公社原創翻譯頻道http://www.linuxidc.com/topicnews.aspx?tid=15

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


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