如何在 CentOS 8 上使用 FirewallD 設置防火墻?
我是一個 CentOS Enterprise Linux 8 系統管理員。如何在 CentOS8 上使用 FirwallD 設置防火墻?
簡介
一個 Linux 防火墻可用于保護您的工作站或服務器免受不需要的流量干擾。您可以設置規則來阻止或允許流量通過。CentOS 8 帶有一個動態的、可定制的基于主機的防火墻和一個 D-Bus 接口。您可以添加、刪除或更新防火墻的規則,而無需重新啟動防火墻守護程序或服務。firewall-cmd
?充當著?nftables
?的前端。在 CentOS 8 中,nftables
?取代了?iptables
?作為默認的 Linux 網絡包過濾框架。本頁展示了如何為您的 CentOS 8 設置防火墻,和如何在?firewall-cmd
?工具的幫助下進行管理。
FirewallD 的基本概念
firewalld
?簡化了網絡流量管理的概念。當談到 CentOS 8 上的?firewalld
?時,我們有以下兩個主要的概念。
1. 區域
Firewalld 區域(Zone)只不過是預定義的規則集。您可以通過運行以下 ls 命令查看所有區域:

使用?cat
?命令查看?public
?區域:


了解預定義區域
-
block
:所有傳入的網絡連接都被拒絕。只可以從系統內部發起網絡連接。 -
dmz
:經典的非軍事區 (DMZ) 區域,提供對 LAN 的有限訪問,并且只允許指定的傳入端口。 -
drop
:丟棄所有傳入的網絡連接,只允許傳出的網絡連接。 -
external
:對于路由器類型的連接很有用。您還需要 LAN 和 WAN 接口才能使偽裝 NAT?正常工作。 -
home
:適用于您信任其他計算機的 LAN 中的家用計算機,例如筆記本電腦和臺式機。僅允許指定的 TCP/IP 端口。 -
internal
:用于內部網絡,當您非常信任 LAN 上的其他服務器或計算機時適用。 -
public
:您不信任網絡上的任何其他計算機和服務器。您只允許所需的端口和服務。對于托管在您所在地的云服務器或服務器,請始終使用公共區域。 -
trusted
:接受所有網絡連接。我不建議將此區域用于連接到 WAN 的專用服務器或虛擬機。 -
work
:用于您比較信任的同事和其他服務器的工作場所。
運行以下命令以查看 CentOS 8 上的所有區域:

如何找出您的默認區域
可以將網絡接口和源分配給區域。這些區域中的一員可被設置為默認區域。以下命令可以讓您的默認區域運行:

要查看您的網絡接口名稱,請運行?ip
?命令或?nmcli
?命令:

當向 NetworkManager 添加新的接口連接(例如?eth0
?或?ens3
)時,它們將被附加到默認區域。通過運行以下命令進行驗證:


服務
服務不過是本地端口、協議、源端口、目標端口和防火墻幫助模塊的列表。舉些例子:
-
端口:443、25 或 110 -
服務:SSH、HTTP -
協議:ICMP
如何查看與公共(public)區域相關的防火墻規則或服務
運行

或者


上面的命令表明我的默認區域是?public
,并且我允許傳入 SSH 連接(端口 22)、dhcpv6-client
?和 CentOS 8/RHEL 8 上的?cockpit
?服務端口。所有其他流量默認被丟棄。如果我在 CentOS 8 上配置 Apache 或 Nginx,則我需要使用?firewall-cmd
?打開 80/443 端口。假設您不想要?cockpit
?或?dhcpv6-client
?等不必要的服務,您可以通過修改規則來刪除它們。例如,刪除服務?dhcpv6-client
?和?cockpit
:


如何查看當前區域允許的服務

或者

或使用?bash
?的?for
?循環,如下所示:


如何在 CentOS 8 上啟動、停止、重啟 firewalld 服務
到目前為止,您已經了解了?firewalld
?區域、服務以及如何查看默認值。是時候在 CentOS 8 Linux 機器上激活和配置我們的防火墻了。
啟動并啟用?firewalld

停止并禁用?firewalld

檢查?firewalld
?狀態

更改規則時重新加載?firewalld
?配置的命令

獲取?firewalld
?服務的狀態


了解運行時和永久性防火墻規則集
運行時更改?firewalld
?的配置是臨時的。當您重新啟動 CetnOS 8 服務器時,這些配置就消失了。例如,以下命令將臨時為 Nginx/Apache Web 服務器打開 80/443(https)TCP 端口 ?:

當您重新啟動 Linux 機器或重新啟動防火墻服務本身時,上述規則不會保留。
如何將規則添加到永久的規則集中,并重新加載?firewalld
讓我們永久添加規則(HTTPS/443 和 HTTP/80)并重新加載 firewalld:

驗證


Firewalld 的運行時與永久性規則集示例
如何查找 firewalld 支持的服務列表
在您的系統上,語法如下:


Firewalld 規則集示例
讓我們看看默認區域的一些常見的?firewalld
?示例。
如何將服務添加到您的區域
添加 dns 服務(TCP/UDP 53 端口):

如何從您的區域中移除(刪除)服務
刪除 vnc 服務器服務(TCP 端口范圍 5900-5903):

如何允許/打開 TCP/UDP 端口/協議
打開 TCP 端口 # 9009 :
要查看添加的端口,請運行:
如何拒絕/阻止 TCP/UDP 端口/協議
打開 TCP 端口 # 23:

如何編寫端口轉發?firewalld
?規則
在同一臺服務器上將 443 TCP 端口轉發到 8080:

要刪除上述的端口轉發,請運行
如果您需要將流量(端口 443)轉發到托管在 192.168.2.42 的 lxd 服務器/容器的 443 端口,請開啟偽裝:
要刪除上述偽裝規則,請運行
像往常一樣使用以下命令列出規則:
Rich 規則示例
假設您只想允許從 10.8.0.8 IP 地址訪問 SSH 端口 22,請運行:

要驗證新規則,請運行:

在以下示例中,允許 192.168.1.0/24 子網訪問 tcp 端口 11211:

再次驗證它:

輸出示例:

您可以按照如下所示刪除 rich 規則:
結論
您已經了解了 firewalld 的基本概念和 CentOS 8 服務器的一些常見示例。有關更多信息,請參閱的官方(https://firewalld.org/documentation/)firewalld
?文檔。
鏈接:https://www.cyberciti.biz/faq/how-to-set-up-a-firewall-using-firewalld-on-centos-8
(版權歸原作者所有,侵刪)