全部產品
Search
文件中心

Elastic Compute Service:管理 Linux 執行個體的系統防火牆

更新時間:Sep 09, 2025

在雲端服務器上,不正確的防火牆配置是導致服務無法訪問或執行個體遠端連線失敗的常見原因。本文旨在提供一套安全、標準化的操作流程,指導如何管理 Linux 執行個體的作業系統防火牆,例如檢查狀態、安全地啟用防火牆、開放特定服務連接埠,以及在排查問題時臨時禁用防火牆。

工作原理

所有進出ECS執行個體的網路流量均先經安全性群組過濾,再由作業系統防火牆處理。在同時滿足安全性群組和系統防火牆的允許存取策略後,才能到達目標應用。

  • 安全性群組(雲網路層)

    • 作用: 安全性群組在ECS的使用中扮演了雲上虛擬防火牆的角色,用於控制執行個體的出入方向流量。它在作業系統之外,是訪問執行個體的第一道關卡。

    • 邏輯: 無論執行個體內部防火牆如何配置,如果安全性群組未允許存取某個連接埠(如 SSH 的 22 連接埠),所有來自外部的訪問請求都會在該層被直接拒絕。

  • 作業系統防火牆(執行個體層)

    • 作用: 運行在 Linux 作業系統內部的防火牆軟體,預設關閉,如 firewalldufw。它負責對通過了安全性群組的流量進行進一步的精細化控制。

    • 邏輯: 流量必須先通過安全性群組,才能到達作業系統防火牆。兩者是“與”關係,必須同時允許,流量才能最終到達部署的應用程式。

操作指南

查看防火牆狀態

在進行任何修改前,首先確認防火牆的當前運行狀態。

Alibaba Cloud Linux / CentOS / Red Hat

執行以下命令查看 firewalld 服務的狀態。

sudo firewall-cmd --state
  • not running:表示防火牆已關閉。

  • running:表示防火牆處於啟用狀態。

  • 若提示 command not found,說明 firewalld 未安裝。可執行 sudo yum install firewalld -ysudo dnf install firewalld -y 進行安裝。

Ubuntu / Debian

執行以下命令查看 ufw 服務的狀態。

sudo ufw status
  • Status: active:表示防火牆處於啟用狀態。

  • Status: inactive:表示防火牆已關閉。

  • 在 Debian 系統上,若提示 command not found,說明 ufw 未安裝。推薦執行 sudo apt update && sudo apt install ufw -y 進行安裝,以獲得更安全、便捷的管理體驗。

啟用防火牆

重要

切勿在未配置允許規則前直接啟用防火牆,會導致串連被切斷,造成執行個體“失聯”。請遵循“先允許存取,後啟用”的原則。

Alibaba Cloud Linux / CentOS / Red Hat

  1. 將 SSH 服務永久性地添加到允許清單中,確保遠端管理通道不會中斷。

    sudo firewall-cmd --permanent --add-service=ssh
  2. 重新載入防火牆規則,使上一步的配置生效。

    sudo firewall-cmd --reload
  3. 啟動防火牆服務。

    sudo systemctl start firewalld
  4. (可選): 將防火牆設定為開機自啟動,確保重啟後防護依然有效。

    sudo systemctl enable firewalld

Ubuntu / Debian

  1. 添加規則以允許所有 SSH 串連。

    sudo ufw allow ssh
  2. 啟用防火牆。ufw 在啟用時會自動載入已有的 allow 規則,並預設設定為開機自啟動。

    sudo ufw enable

    執行此命令時,系統會提示操作可能中斷現有串連,輸入 y 確認即可。由於已提前允許存取 SSH,串連不會中斷。

開放指定連接埠或服務

Alibaba Cloud Linux / CentOS / Red Hat

  1. 開放指定連接埠或者服務:

    • 按服務名開放(推薦):

      # 永久開放 HTTP 和 HTTPS 服務
      sudo firewall-cmd --permanent --add-service=http
      sudo firewall-cmd --permanent --add-service=https
    • 按連接埠號碼開放:

      # 永久開放 8080/TCP 通訊埠
      sudo firewall-cmd --permanent --add-port=8080/tcp
  2. 使新規則生效: 添加或刪除規則後,必須重新載入防火牆。

    sudo firewall-cmd --reload
  3. 驗證規則是否生效:

    該命令可查看當前即時區域下的所有規則,包括服務、連接埠、協議等。

    sudo firewall-cmd --list-all

Ubuntu / Debian

使用ufw添加防火牆規則後即時生效,並自動持久化。

  1. 開放指定連接埠或者服務:

    • 按服務名開放(推薦):

      # 開放 HTTP 和 HTTPS 服務
      sudo ufw allow http
      sudo ufw allow https
    • 按連接埠號碼開放:

      # 開放 3306/TCP 通訊埠
      sudo ufw allow 3306/tcp
  2. 驗證規則是否已生效:

    執行以下命令查看已啟用的規則,包括允許和拒絕的服務、連接埠及其狀態(active/inactive)。

    sudo ufw status

關閉防火牆

在診斷網路連接問題時,可以臨時關閉防火牆以判斷是否為其執行個體內部的阻斷策略所致。

重要

不建議在生產環境關閉防火牆,在測試完成或問題定位後應重新啟用防火牆。

CentOS / Red Hat / Alibaba Cloud Linux

sudo systemctl stop firewalld

Ubuntu / Debian

sudo ufw disable

應用於生產環境

  • 最佳實務

    • 最小許可權原則: 僅開放業務所必需的連接埠。對於資料庫等核心服務,應僅對授信的內網 IP 開放,避免暴露於公網。

    • 備用通道: 在進行重大的防火牆規則變更前,建議先遠端連線到執行個體,已建立串連的會話即使在防火牆規則變更之後依舊保持,可以通過此備用通道修複問題。

  • 風險防範

    • 日誌與監控: 定期審計防火牆日誌,以發現異常訪問。

      • firewalld: 日誌通常由 journald 管理,使用 sudo journalctl -u firewalld 查看。

      • ufw: 日誌通常位於 /var/log/ufw.log

常見問題

  • 關閉了執行個體內的防火牆,為什麼服務還是無法訪問?

    原因通常在於忽略了雲環境下的第一層防護。請按以下順序排查:

    1. 檢查安全性群組: 這是首要排查點。登入ECS控制台-安全性群組,檢查執行個體所屬的安全性群組,確認入方向規則已允許存取公網 IP 位址和連接埠。

    2. 檢查服務監聽狀態: 在執行個體內部執行 ss -tunlp | grep <連接埠號碼>netstat -tunlp | grep <連接埠號碼>,確認應用程式是否已成功啟動並在預期的 IP 位址(如 0.0.0.0)和連接埠上監聽。

    3. 檢查網路 ACL: 如果執行個體已關聯網路ACL,請檢查其規則是否允許相關流量通過。

  • 執行 firewall-cmdufw 命令時提示 command not found 怎麼辦?

    這表示對應的防火牆管理工具未安裝。

    • 在 CentOS/Red Hat/Alibaba Cloud Linux 上,執行 sudo yum install firewalld -ysudo dnf install firewalld -y

    • 在 Ubuntu/Debian 上,執行 sudo apt update && sudo apt install ufw -y