如何在 CentOS 8 上配置和管理防火牆
防火牆是一種用於監視和過濾傳入和傳出網路流量的工具。它透過定義一組安全規則來工作,這些安全規則確定是允許還是阻止特定流量。正確配置的防火牆是整個系統安全的最重要方面之一。
CentOS 8 附帶了一個名為 的防火牆守護程式。它是符合 D-Bus 介面的完整解決方案,可讓您動態管理系統的防火牆。
在本教程中,我們將討論如何在 CentOS 8 上配置和管理防火牆。我們還將說明基本的 FirewallD 概念。
先決條件
要配置防火牆服務,您必須以 root 使用者或 身份登入。
基本防火牆概念
Firewalld 使用區域和服務的概念。根據您將要配置的區域和服務,您可以控制允許或阻止與系統之間的流量。
可以使用
firewall-cmd
命令列實用程式配置和管理 Firewalld 。
在 CentOS 8 中, nftables 替代了 iptables,作為 firewalld 守護程式的預設防火牆後端。
防火牆區域
區域是預定義的規則集,用於指定計算機連線到的網路的信任級別。您可以將網路介面和源分配給區域。
以下是 FirewallD 提供的區域,根據區域的信任級別從不信任到信任:
- drop: 刪除所有傳入連線,而無任何通知。僅允許傳出連線。
-
block:拒絕所有傳入連線,並帶有一條
icmp-host-prohibited
訊息IPv4
和一條icmp6-adm-prohibited
關於 IPv6n 的訊息。僅允許傳出連線。 - public:用於不受信任的公共區域。您不信任網路上的其他計算機,但是可以允許選擇的傳入連線。
- external:用於在系統充當閘道器或路由器時啟用 NAT 偽裝的外部網路。僅允許選擇的傳入連線。
- internal:當系統充當閘道器或路由器時,用於內部網路。網路上的其他系統通常是受信任的。僅允許選擇的傳入連線。
- dmz:用於非軍事區中訪問網路其餘部分的計算機。僅允許選擇的傳入連線。
- work:用於工作機。網路上的其他計算機通常是受信任的。僅允許選擇的傳入連線。
- home:用於家用機器。網路上的其他計算機通常是受信任的。僅允許選擇的傳入連線。
- Trusted:接受所有網路連線。信任網路中的所有計算機。
防火牆服務
防火牆服務是預定義的規則,適用於區域,並定義必要的設定以允許特定服務的傳入流量。該服務使您可以輕鬆地在一個步驟中執行多個任務。
例如,服務可以包含有關開啟埠,轉發流量等的定義。
防火牆執行時和永久設定
Firewalld 使用兩個單獨的配置集,即執行時配置和永久配置。
執行時配置是實際的執行配置,並且不會在重新啟動後持續存在。當 firewalld 守護程式啟動時,它將載入永久配置,該配置將成為執行時配置。
預設情況下,使用
firewall-cmd
實用程式對 Firewalld 配置進行更改時,更改將應用於執行時配置。要使更改永久生效,請在命令後附加
--permanent
選項。
要在兩個配置集中應用更改,可以使用以下兩種方法之一:
-
更改執行時配置並將其永久化:
sudo firewall-cmd <options> sudo firewall-cmd --runtime-to-permanent
-
更改永久配置並重新載入 firewald 守護程式:
sudo firewall-cmd --permanent <options> sudo firewall-cmd --reload
啟用防火牆
在 CentOS 8 上,預設情況下已安裝並啟用 firewalld 。如果由於某種原因未在系統上安裝它,則可以透過鍵入以下內容來安裝並啟動守護程式:
sudo dnf install firewalld sudo systemctl enable firewalld --now
您可以使用以下方法檢查防火牆服務的狀態:
sudo firewall-cmd --state
如果啟用了防火牆,則命令應列印
running
。否則,您將看到
not running
。
防火牆區域
預設的區域設定為
public
,並且所有網路介面都分配給該區域,當然您可以根據自己的需要修改預設區域。
預設區域是用於所有未明確分配給另一個區域的區域。
您可以透過鍵入以下內容檢視預設區域:
sudo firewall-cmd --get-default-zone
public
要獲取所有可用區域的列表,請輸入:
sudo firewall-cmd --get-zones
block dmz drop external home internal public trusted work
要檢視活動區域和分配給它們的網路介面,請執行以下操作:
sudo firewall-cmd --get-active-zones
以下輸出顯示介面
eth0
和
eth1
已分配給
public
區域:
public interfaces: eth0 eth1
您可以使用以下命令列印區域配置設定:
sudo firewall-cmd --zone=public --list-all
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
從上面的輸出中,我們可以看到公共區域處於活動狀態並使用預設的 target ?️(
REJECT
)。輸出還顯示該區域由
eth0
和
eth1
介面使用,並允許 DHCP 客戶端和 SSH 通訊。
如果要檢查所有可用區域的配置,請輸入:
sudo firewall-cmd --list-all-zones
該命令將顯示包含所有可用區域設定的巨大列表。
更改區域目標
target
為未指定的傳入流量定義區域的預設行為。它可以設定為下列選項之一:
default
,
ACCEPT
,
REJECT
,和
DROP
。
要設定區域的目標,請使用
--zone
選項指定區域,並使用選項指定目標
--set-target
。
例如,要將
public
區域的目標更改為
DROP
您將執行:
sudo firewall-cmd --zone=public --set-target=DROP
將介面分配給其他區域
您可以為不同區域建立特定的規則集,併為其分配不同的介面。當您在計算機上有多個介面時,這特別有用。
要將介面分配給其他區域,請使用
--zone
選項指定區域,並使用選項指定介面
--change-interface
。
例如,以下命令將
eth1
介面分配給
work
區域:
sudo firewall-cmd --zone=work --change-interface=eth1
透過鍵入以下內容來驗證更改:
sudo firewall-cmd --get-active-zones
work interfaces: eth1 public interfaces: eth0
更改預設區域
要更改預設區域,請使用
--set-default-zone
選項,後跟要設為預設區域的名稱。
例如,要將預設區域更改為
home
您將執行以下命令:
sudo firewall-cmd --set-default-zone=home
使用以下命令驗證更改:
sudo firewall-cmd --get-default-zone
home
防火牆服務
使用防火牆,您可以基於稱為服務的預定義規則允許特定埠和/或源的流量。
要獲取所有預設可用服務的列表,請輸入:
sudo firewall-cmd --get-services
透過開啟
/usr/lib/firewalld/services
目錄中的相關 .xml 檔案,可以找到有關每個服務的更多資訊。例如, HTTP 服務的定義如下:
/usr/lib/firewalld/services/http.xml
<?xml version="1.0" encoding="utf-8"?> <service> <short>WWW (HTTP)</short> <description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description> <port protocol="tcp" port="80"/> </service>
要僅對當前會話(執行時配置)允許公共區域中的介面允許傳入的 HTTP 通訊(埠 80) ,請輸入:
sudo firewall-cmd --zone=public --add-service=http
如果要修改預設區域,則可以省略該
--zone
標誌。
要驗證是否已成功新增服務,請使用
--list-services
標誌:
sudo firewall-cmd --zone=public --list-services
ssh dhcpv6-client http
如果要在重新啟動後將埠 80 保持開啟狀態,則需要再次鍵入相同的命令,但這一次帶有
--permanent
標誌:
sudo firewall-cmd --permanent --zone=public --add-service=http
使用
--list-services
和
--permanent
標記一起驗證您的更改:
sudo firewall-cmd --permanent --zone=public --list-services
ssh dhcpv6-client http
刪除服務的語法與新增服務時的語法相同。只需使用
--remove-service
標誌:
sudo firewall-cmd --zone=public --remove-service=http --permanent
上面的命令從公共區域永久配置中刪除
http
服務。
建立一個新的 FirewallD 服務
如前所述,預設服務儲存在
/usr/lib/firewalld/services
目錄中。建立新服務的最簡單方法是將現有服務檔案複製到
/etc/firewalld/services
目錄(該目錄是使用者建立的服務的位置)並修改檔案設定。
例如,要為 Plex Media Server 建立服務定義,可以使用 SSH 服務檔案:
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml
開啟新建立的
plexmediaserver.xml
檔案,然後在
<short>
和
<description>
標記中更改服務的簡稱和描述。您需要更改的最重要標籤是
port
標籤,該標籤定義了要開啟的埠號和協議。
在下面的示例中,我們開啟 UDP 埠
1900
和 TCP 埠
32400
。
編輯檔案:
/etc/firewalld/services/plexmediaserver.xml
<?xml version="1.0" encoding="utf-8"?> <service version="1.0"> <short>plexmediaserver</short> <description>Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere.</description> <port protocol="udp" port="1900"/> <port protocol="tcp" port="32400"/> </service>
儲存檔案並重新載入 FirewallD 服務:
sudo firewall-cmd --reload
現在,您可以
plexmediaserver
像其他任何服務一樣在您的區域中使用該服務。
開啟埠和來源 IP
Firewalld 還允許您快速啟用來自受信任 IP 地址或特定埠上的所有流量,而無需建立服務定義。
來源 IP
要允許來自特定 IP 地址(或範圍)的所有傳入流量,請使用
--zone
選項指定區域,並使用
--add-source
選項指定源 IP。
例如,要允許來自
public
區域的 192.168.1.10 的所有傳入流量,請執行:
sudo firewall-cmd --zone=public --add-source=192.168.1.10
使新規則持久化:
sudo firewall-cmd --runtime-to-permanent
使用以下命令驗證更改:
sudo firewall-cmd --zone=public --list-sources
192.168.1.10
刪除源 IP 的語法與新增源 IP 的語法相同,只需使用
--remove-source
選項:
sudo firewall-cmd --zone=public --remove-source=192.168.1.10
開啟源埠
要允許給定埠上的所有傳入流量,請使用
--zone
選項指定區域,並使用
--add-port
選項指定埠和協議。
例如,要為當前會話在公共區域中開啟
8080
埠,請執行:
sudo firewall-cmd --zone=public --add-port=8080/tcp
該協議可以是
tcp
,
udp
,
sctp
,或
dccp
。
驗證更改:
sudo firewall-cmd --zone=public --list-ports
8080
如果重啟後還要埠保持開啟狀態,請透過使用
--permanent
標誌執行相同的命令或執行以下命令,將規則新增到永久設定中:
sudo firewall-cmd --runtime-to-permanent
刪除埠的語法與新增埠時的語法相同,只是使用
--remove-port
選項。
sudo firewall-cmd --zone=public --remove-port=8080/tcp
轉發埠
要將流量從一個埠轉發到另一個埠,請首先使用
--add-masquerade
選項啟用對所需區域的偽裝。例如,要啟用
external
區域的偽裝,請鍵入:
sudo firewall-cmd --zone=external --add-masquerade
將流量從一個埠轉發到相同 IP 地址上的另一個埠
在以下示例中,我們將流量從埠轉發
80
到
8080
同一伺服器上的埠:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080
將流量轉發到另一個 IP 地址
在下面的例子中,我們從一個埠轉發流量
80
到埠
80
與伺服器 IP 地址
10.10.10.2
:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2
將流量轉發到另一臺伺服器的其他埠上
在下面的例子中,我們從一個
80
埠轉發流量到 IP 地址為
10.10.10.2
伺服器 的埠
8080
:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2
要使轉發規則持久化,請使用:
sudo firewall-cmd --runtime-to-permanent
結論
您已經瞭解瞭如何在 CentOS 8 系統上配置和管理防火牆服務。請確保允許系統正常執行所必需的所有傳入連線,同時限制所有不必要的連線。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25469263/viewspace-2724581/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Centos6防火牆基本配置CentOS防火牆
- 如何在 CentOS 8/RHEL 8 上安裝和配置 Nagios CoreCentOSiOS
- CentOS 7 以上防火牆簡單配置CentOS防火牆
- CentOS8檢視防火牆狀態,開啟/關閉防火牆CentOS防火牆
- CentOS8關於防火牆的命令CentOS防火牆
- 如何在 Centos 8 / RHEL 8 上安裝和配置 VNC 伺服器CentOSVNC伺服器
- 防火牆在RAC上的配置防火牆
- CentOS 7.0防火牆CentOS防火牆
- CentOS 防火牆操作CentOS防火牆
- Centos 7 systemctl和防火牆firewalld命令CentOS防火牆
- 防火牆配置防火牆
- CentOS防火牆設定CentOS防火牆
- CentOS 7 防火牆操作CentOS防火牆
- 如何在 Linux 系統中配置 firewalld 防火牆策略Linux防火牆
- Centos7.2 上防火牆的狀態檢視和關閉CentOS防火牆
- 如何在 CentOS 8 上安裝和配置 Postfix 郵件伺服器CentOS伺服器
- CentOS7下Firewall防火牆配置用法詳解CentOS防火牆
- Linux配置防火牆Linux防火牆
- centos7關閉防火牆命令 centos7永久防火牆關閉CentOS防火牆
- 如何在 CentOS 8/RHEL 8 上安裝和使用 CockpitCentOSKPI
- 如何在 Alpine Linux 上啟用或禁用防火牆?Linux防火牆
- CentOS7 防火牆命令CentOS防火牆
- CentOS 7關閉防火牆CentOS防火牆
- CentOS 7 防火牆設定CentOS防火牆
- centos6和7的防火牆開關CentOS防火牆
- CentOS7檢視和關閉防火牆CentOS防火牆
- Linux 防火牆配置使用Linux防火牆
- 如何在 CentOS 8 和 RHEL 8 系統上安裝和使用 AnsibleCentOS
- CentOS 中 iptables 和 firewall 防火牆的相關命令CentOS防火牆
- CentOS 7 開放防火牆埠CentOS防火牆
- CentOS 防火牆配置與REJECT導致沒有生效問題CentOS防火牆
- Centos7預設防火牆之firewalld講解及配置CentOS防火牆
- REHL8.1上配置路由的nftables防火牆策略路由防火牆
- Linux 防火牆配置(iptables和firewalld)詳細教程。Linux防火牆
- 雲伺服器埠和防火牆埠配置伺服器防火牆
- centos 7 centos 8配置ssh遠端管理CentOS
- 在Ubuntu上配置SSH訪問並關閉防火牆Ubuntu防火牆
- 防火牆入侵於檢測——————3、思科 PIX 防火牆和 ASA 防火牆產品線防火牆