使用全域網路防火牆政策允許輸出流量

瞭解如何限制虛擬機器 (VM) 執行個體的輸出流量,確保網路安全。本快速入門導覽課程說明如何設定全域網路防火牆政策,允許 VM 執行個體將輸出流量傳送至特定 IP 位址,同時封鎖相同虛擬私有雲 (VPC) 網路中所有其他 VM 執行個體的輸出流量。

在本快速入門導覽課程中,您將完成下列工作:

事前準備

  1. 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. 為專案啟用 Compute Engine API。

必要的角色

如要建立自訂模式虛擬私有雲網路、VM 執行個體和全域網路防火牆政策,或查看記錄,請要求管理員授予您專案的必要 Identity and Access Management (IAM) 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

建立含有子網路的自訂模式虛擬私有雲網路

在本節中,您將建立自訂模式的虛擬私有雲網路和 IPv4 子網路,以代管 VM。

  1. 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。

    前往「VPC networks」(虛擬私有雲網路)

  2. 按一下「建立虛擬私有雲網路」。

  3. 在「Name」(名稱) 中輸入 vpc-fw-rules。

  4. 在「說明」中輸入 VPC network for the firewall rules quickstart。

  5. 在「子網路建立模式」部分,選取「自訂」。

  6. 在「New subnet」(新的子網路) 區段中,指定下列項目:

    • Name (名稱):subnet-fw-rules
    • Region (區域):us-central1
    • IPv4 範圍:10.0.0.0/24
    • Private Google Access:開啟

    將Private Google Access設為「開啟」,即可讓這個子網路中的 VM 存取 Google Cloud 服務,無須使用外部 IP 位址。

  7. 依序點選「完成」和「建立」。

根據預設,虛擬私有雲網路包含下列隱含的 IPv4 規則:

  • 允許輸出規則,目的地為 0.0.0.0/0,優先順序為最低 (65535),可允許任何執行個體將流量傳送至任意目的地,但 Google Cloud封鎖的流量除外。
  • 拒絕輸入,來源為 0.0.0.0/0,優先順序為最低 (65535),可封鎖傳入執行個體的連線,保護所有執行個體。

如要進一步瞭解輸入或輸出流量的隱含規則或動作,請參閱「防火牆規則評估程序」。

建立用戶端和伺服器 VM

在本節中,您會在先前建立的虛擬私有雲網路子網路中,建立兩個沒有外部 IP 位址的 Linux VM。

  1. 前往 Google Cloud 控制台的「Create an instance」(建立執行個體) 頁面。

    前往「建立執行個體」

  2. 在「Name」(名稱) 中輸入 vm-fw-rules-server。

  3. 在「Region」(區域) 中選取 us-central1 (Iowa)。

  4. 在「Networking」(網路) 選單的「Network interfaces」(網路介面) 下方,選取:

    • Network (網路):vpc-fw-rules
    • Subnetwork (子網路):subnet-fw-rules IPv4 (10.0.0.0/24)
    • 外部 IPv4 位址:臨時
  5. 依序點選「完成」和「建立」。

  6. 建立 VM 後,請記下 VM 的內部 IP 位址。

  7. 重複上述步驟,建立名為 vm-fw-rules-client 的第二個 VM,使用相同的網路設定,但將「外部 IPv4 位址」設為「無」。

如要在 vm-fw-rules-server 上安裝及執行 nginx 網路伺服器,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體

  2. 點按 vm-fw-rules-server 的「SSH」SSH。

  3. 在「SSH-in-browser」(直接透過瀏覽器進行 SSH 連線) 對話方塊中,按一下「Authorize」(授權),然後等待連線建立。

  4. 如要安裝及執行 nginx 網路伺服器,請執行 sudo apt update && sudo apt install nginx 指令。

建立全域網路防火牆政策

在本節中,您會建立全域網路防火牆政策,並與先前建立的虛擬私有雲網路建立關聯。

  1. 前往 Google Cloud 控制台的「Firewall policies」(防火牆政策) 頁面。

    前往「Firewall policies」(防火牆政策)

  2. 按一下「建立防火牆政策」。

  3. 在「Policy name」(政策名稱) 中輸入 fw-policy。

  4. 在「部署範圍」部分,選取「全域」。

  5. 按一下「繼續」,略過規則部分。您會在快速入門導覽課程的下一節中新增防火牆規則。

  6. 在「將政策與網路建立關聯」部分中,按一下「建立關聯」。

  7. 選取 vpc-fw-rules 核取方塊,然後按一下「建立關聯」,將虛擬私有雲網路與政策建立關聯。

  8. 依序點選「繼續」和「建立」。

新增防火牆規則

在本節中,您會將防火牆規則新增至先前建立的全域網路防火牆政策。

  1. 前往 Google Cloud 控制台的「Firewall policies」(防火牆政策) 頁面。

    前往「Firewall policies」(防火牆政策)

  2. 按一下防火牆政策名稱,在政策的「防火牆規則」分頁中,按一下「建立防火牆規則」。

  3. 新增輸入規則,允許 TCP 流量進入通訊埠 22。這項規則可讓 Identity-Aware Proxy (IAP) 存取虛擬私有雲網路中的 VM 執行個體。IAP 服務會使用中央授權層,協助您存取用戶端和伺服器 VM。詳情請參閱 Identity-Aware Proxy 總覽。

    • 在「Priority」(優先順序) 中輸入 100。
    • 在「目標類型」部分,選取「執行個體」。
    • 在「目標」中,選取「套用至所有項目」。
    • 「流量方向」請選取「輸入」。
    • 「相符時執行的動作」請選取「允許」。
    • 在「記錄」部分選取「已啟用」。

      注意:啟用記錄功能可能會產生大量記錄檔,導致費用增加。

    • 在「來源網路情境」中選取「所有網路情境」。

    • 在「來源」部分,針對「IP 類型」選取「IPv4」。在「IP ranges」(IP 範圍) 中,輸入 35.235.240.0/20。

    • 在「Protocols and ports」(通訊協定和通訊埠) 中選取「Specified protocols and ports」(指定的通訊協定和通訊埠),然後選取「TCP」。在「Ports」(通訊埠) 部分,輸入 22。

    • 在「違規處置」部分,選取「已啟用」。

  4. 點選「建立」。

  5. 新增輸入規則,允許來自用戶端 VM 的輸入流量傳送至伺服器 VM:

    • 在「Priority」(優先順序) 中輸入 200。
    • 在「目標類型」部分,選取「執行個體」。
    • 在「目標」中,選取「套用至所有項目」。
    • 「流量方向」請選取「輸入」。
    • 「相符時執行的動作」請選取「允許」。
    • 在「記錄」部分選取「已啟用」。

      注意:啟用記錄功能可能會產生大量記錄檔,導致費用增加。

    • 在「來源網路環境」中,選取「特定網路環境」,然後選取「VPC 內部」。

    • 在「來源」部分,針對「IP 類型」選取「IPv4」。在「IP 範圍」中,指定用戶端 VM 的內部 IP 位址。例如:10.0.0.2/32。

    • 在「目的地」部分,將「IP 類型」選取為「IPv4」。在「IP 範圍」中,指定伺服器 VM 的內部 IP 位址。例如:10.0.0.1/32。

    • 在「Protocols and ports」(通訊協定和通訊埠) 中選取「Specified protocols and ports」(指定的通訊協定和通訊埠),然後選取「TCP」。在「Ports」(通訊埠) 部分,輸入 80。

    • 在「違規處置」部分,選取「已啟用」。

  6. 點選「建立」。

  7. 為提升安全性,您可以限制所有輸出流量,並建立定義明確的輸出規則,只允許已識別的流量。

    1. 新增輸出規則,將用戶端 VM (朝向伺服器 VM) 的輸出流量委派給防火牆規則評估順序中的下一個規則,也就是允許所有輸出流量的隱含 IPv4 動作。
      • 在「Priority」(優先順序) 中輸入 300。
      • 在「目標類型」部分,選取「執行個體」。
      • 在「目標」中,選取「套用至所有項目」。
      • 在「Direction of traffic」(流量方向) 中選取「Egress」(輸出)。
      • 在「Action on match」(相符時執行的動作) 中選取「Go to next」(前往下一個)。
      • 在「目標網路情境」部分,選取「特定網路情境」,然後選取「非網際網路」。
      • 在「目的地」部分,將「IP 類型」選取為「IPv4」。在「IP 範圍」中,指定伺服器 VM 的內部 IP 位址。例如:10.0.0.1/32。
      • 在「來源」部分,針對「IP 類型」選取「IPv4」。在「IP 範圍」中,指定用戶端 VM 的內部 IP 位址。例如:10.0.0.2/32。
      • 在「Protocols and ports」(通訊協定和通訊埠) 中選取「Specified protocols and ports」(指定的通訊協定和通訊埠),然後選取「TCP」。在「Ports」(通訊埠) 部分,輸入 80。
      • 在「違規處置」部分,選取「已啟用」。
    2. 點選「建立」。
    3. 新增輸出規則,拒絕所有 VM 的輸出流量:

      • 在「Priority」(優先順序) 中輸入 400。
      • 在「目標類型」部分,選取「執行個體」。
      • 在「目標」中,選取「套用至所有項目」。
      • 在「Direction of traffic」(流量方向) 中選取「Egress」(輸出)。
      • 在「Action on match」(相符時執行的動作) 中選取「Deny」(拒絕)。
      • 在「記錄」部分選取「已啟用」。

        注意:啟用記錄功能可能會產生大量記錄檔,導致費用增加。

      • 在「Destination network context」(目的地網路情境) 中,選取「All network contexts」(所有網路情境)。

      • 在「目的地」部分,將「IP 類型」選取為「IPv4」。在「IP ranges」(IP 範圍) 中,輸入 0.0.0.0/0。

      • 在「Protocols and ports」(通訊協定和通訊埠) 中選取「Allow all」(全部允許)。

      • 在「違規處置」部分,選取「已啟用」。

    4. 點選「建立」。

測試防火牆政策

在本節中,您將測試全域網路防火牆政策。

如要確認 vm-fw-rules-client 能將流量傳送至 vm-fw-rules-server,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體

  2. 點按 vm-fw-rules-client 的「SSH」SSH。

  3. 在「SSH-in-browser」(直接透過瀏覽器進行 SSH 連線) 對話方塊中,按一下「Authorize」(授權),然後等待連線建立。

  4. 如要確認連線是否成功,請執行下列指令:

    curl <IP_vm-fw-rules-server> -m 2

    將 IP_vm-fw-rules-server 替換為 vm-fw-rules-server VM 的內部 IP 位址。

如要確認虛擬私有雲網路中任何 VM 的輸出流量都遭到封鎖,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體

  2. 點按 vm-fw-rules-server 的「SSH」SSH。

  3. 在「SSH-in-browser」(直接透過瀏覽器進行 SSH 連線) 對話方塊中,按一下「Authorize」(授權),然後等待連線建立。

  4. 如要確認連線逾時,請執行下列指令:

    curl <IP_vm-fw-rules-client> -m 2

    將 IP_vm-fw-rules-client 替換為 vm-fw-rules-client VM 的內部 IP 位址。

清除所用資源

如要避免系統向您的 Google Cloud 帳戶收取本快速入門所用資源的費用,請刪除含有相關資源的專案,或者保留專案但刪除個別資源。

在本節中,您將刪除在本快速入門導覽課程中建立的資源。

刪除防火牆政策

  1. 前往 Google Cloud 控制台的「Firewall policies」(防火牆政策) 頁面。

    前往「Firewall policies」(防火牆政策)

  2. 在「Network firewall policies」(網路防火牆政策) 區段中,選取 fw-policy 名稱。

  3. 按一下「關聯項目」分頁標籤,然後移除與 vpc-fw-rules 的關聯。

  4. 找到 fw-policy 標題,然後按一下旁邊的「刪除」,即可刪除防火牆政策。

刪除 VM

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體

  2. 勾選 vm-fw-rules-client 和 vm-fw-rules-server VM 的核取方塊。

  3. 點選「刪除」。

刪除虛擬私有雲網路和子網路

  1. 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。

    前往「VPC networks」(虛擬私有雲網路)

  2. 在「Name」(名稱) 欄中,按一下 vpc-fw-rules。

  3. 按一下「刪除虛擬私有雲網路」。刪除 VPC 時,系統也會一併刪除子網路。

後續步驟