設定全域網路防火牆政策,以啟用輸入流量

在具有多個子網路的自訂虛擬私有雲 (VPC) 網路中,系統預設允許輸出流量,但會拒絕輸入流量。如要啟用輸入流量,並允許不同子網路中的 VM 執行個體彼此通訊,您可以在 VPC 網路的 Cloud Next Generation Firewall 中建立全域網路防火牆政策,允許來自子網路特定 IP 位址範圍的輸入流量。

本教學課程說明如何設定全域網路防火牆政策,允許自訂虛擬私有雲網路中的 VM 子網路之間傳輸內部流量。

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

在本節中,您會建立包含兩個 IPv4 子網路的自訂模式虛擬私有雲網路。

主控台

  1. 在 Cloud de Confiance 控制台中,前往「VPC networks」(虛擬私有雲網路) 頁面。

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

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

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

  4. 在「Description」(說明) 中輸入 VPC network for the firewall rules tutorial

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

  6. 在「New subnet」(新子網路) 部分,指定子網路的以下設定參數:

    • Name (名稱):subnet-fw-rules-server
    • Region (區域):us-central1 (Iowa)
    • IPv4 範圍10.0.0.0/24
    • Private Google Access開啟
  7. 按一下 [完成]

  8. 按一下「Add subnet」(新增子網路),然後指定下列設定參數:

    • Name (名稱):subnet-fw-rules-client
    • Region (區域):us-central1 (Iowa)
    • IPv4 範圍192.168.10.0/24
    • Private Google Access開啟
  9. 按一下 [完成]

  10. 點選「建立」

gcloud

  1. 如要建立 VPC 網路,請執行下列指令:

    gcloud compute networks create vpc-fw-rules \
      --subnet-mode=custom \
      --description="VPC network for the firewall rules tutorial"
    
  2. 選擇性步驟:在「授權 Cloud Shell」對話方塊中,按一下「授權」

  3. 如要建立子網路,請執行下列指令:

    gcloud compute networks subnets create subnet-fw-rules-server \
      --network=vpc-fw-rules \
      --region=us-central1 \
      --range=10.0.0.0/24 \
      --enable-private-ip-google-access
    
  4. 如要建立另一個子網路,請執行下列指令:

    gcloud compute networks subnets create subnet-fw-rules-client \
      --network=vpc-fw-rules \
      --region=us-central1 \
      --range=192.168.10.0/24 \
      --enable-private-ip-google-access
    

根據預設,虛擬私有雲網路有兩項隱含 IPv4 規則:

  • 優先順序為最低 (65535) 的 allow egress 規則,目的地為 0.0.0.0/0,可允許任何執行個體傳送流量到任何目的地,但 Cloud de Confiance by S3NS封鎖的流量除外。
  • 優先順序最低 (65535) 的 deny 輸入規則,來源為 0.0.0.0/0,可封鎖傳入執行個體的連線,保護所有執行個體。

詳情請參閱隱含規則

建立用戶端和伺服器 VM

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

建立伺服器 VM

主控台

如要建立伺服器 VM,請按照下列步驟操作:

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

    前往「建立執行個體」

  2. 在「機器設定」窗格中,執行下列操作:

    1. 在「Name」(名稱) 中輸入 vm-fw-rules-server
    2. 在「Region」(區域) 中選取 us-central1 (Iowa)
  3. 點選導覽選單中的「Networking」(網路)

    1. 在「Network interfaces」(網路介面) 區段中,按一下 default,然後指定下列設定參數:
      • 網路vpc-fw-rules
      • 「Subnetwork」(子網路)subnet-fw-rules-server IPv4 (10.0.0.0/24)
      • 「外部 IPv4 位址」:選取「無」
    2. 按一下 [完成]
  4. 點選「建立」

gcloud

如要建立伺服器 VM,請執行下列指令:

gcloud compute instances create vm-fw-rules-server \
    --network=vpc-fw-rules \
    --zone=us-central1-a \
    --subnet=subnet-fw-rules-server \
    --stack-type=IPV4_ONLY \
    --no-address

建立用戶端 VM

主控台

如要建立用戶端 VM,請按照下列步驟操作:

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

    前往「建立執行個體」

  2. 在「機器設定」窗格中,執行下列操作:

    1. 在「Name」(名稱) 中輸入 vm-fw-rules-client
    2. 在「Region」(區域) 中選取 us-central1 (Iowa)
  3. 點選導覽選單中的「Networking」(網路)

    1. 在「Network interfaces」(網路介面) 區段中,按一下 default,然後指定下列設定參數:
      • 網路vpc-fw-rules
      • 「Subnetwork」(子網路)subnet-fw-rules-client IPv4 (192.168.10.0/24)
      • 「外部 IPv4 位址」:選取「無」
    2. 按一下 [完成]
  4. 點選「建立」

gcloud

如要建立用戶端 VM,請執行下列指令:

gcloud compute instances create vm-fw-rules-client \
    --network=vpc-fw-rules \
    --zone=us-central1-a \
    --subnet=subnet-fw-rules-client \
    --stack-type=IPV4_ONLY \
    --no-address

建立 Cloud Router 和 Cloud NAT 閘道

在上一節中,您建立了兩個沒有公開 IPv4 位址的 Linux VM。如要允許這些 VM 存取公用網際網路,請建立 Cloud Router 和 Cloud NAT 閘道。

主控台

  1. 前往 Cloud de Confiance 控制台的「Cloud NAT」頁面。

    前往 Cloud NAT

  2. 按一下「開始使用」或「建立 Cloud NAT 閘道」

  3. 在「Gateway name」(閘道名稱) 輸入 gateway-fw-rules

  4. 在「NAT type」(NAT 類型) 中,選取「Public」(公開)

  5. 在「Select Cloud Router」部分,指定下列設定參數:

    • 網路vpc-fw-rules
    • 區域us-central1
    • Cloud Router建立新路由器
      1. 在「Name」(名稱) 中輸入 router-fw-rules
      2. 點選「建立」
  6. 點選「建立」

gcloud

  1. 如要建立 Cloud Router,請執行下列指令:

    gcloud compute routers create router-fw-rules \
      --network=vpc-fw-rules \
      --region=us-central1
    
  2. 如要建立 Cloud NAT 閘道,請執行下列指令:

    gcloud compute routers nats create gateway-fw-rules \
      --router=router-fw-rules \
      --region=us-central1 \
      --auto-allocate-nat-external-ips \
      --nat-all-subnet-ip-ranges
    

建立全域網路防火牆政策

在本節中,您將建立全域網路防火牆政策,並設定下列項目:

  • 目的地為 0.0.0.0./0 的輸出規則。
  • 記錄功能已啟用。您可以根據防火牆規則記錄,進一步稽核、驗證及分析防火牆規則的成效。

主控台

  1. 在 Cloud de Confiance 控制台中,前往「Firewall policies」(防火牆政策) 頁面。

    前往「防火牆政策」頁面

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

  3. 在「設定政策」部分,於「政策名稱」輸入 fw-policy

  4. 在「部署範圍」部分,選取「全域」,然後點選「繼續」

  5. 如要為政策建立規則,請在「新增規則」部分中,按一下「新增規則」

    1. 在「Priority」(優先順序) 中輸入 65534
    2. 在「Direction of traffic」(流量方向) 中選取「Egress」(輸出)
    3. 針對「記錄」,選取「開啟」
    4. 在「目標」部分中,針對「目標類型」選取「網路中的所有執行個體」
    5. 在「Destination」(目的地) 區段中,在「IP ranges」(IP 範圍) 輸入 0.0.0.0/0
    6. 在「通訊協定和通訊埠」專區中選取「全部允許」
    7. 點選「建立」
  6. 按一下「繼續」

  7. 如要將虛擬私有雲網路與政策建立關聯,請在「將政策與虛擬私有雲網路建立關聯」部分中,按一下「建立關聯」

  8. 勾選 vpc-fw-rules 核取方塊,然後按一下「關聯」

  9. 按一下「繼續」

  10. 點選「建立」

gcloud

  1. 如要建立防火牆政策,請執行下列指令:

    gcloud compute network-firewall-policies create fw-policy \
        --global
    
  2. 如要建立防火牆規則,允許流量傳輸至所有目的地並啟用記錄,請執行下列指令:

    gcloud compute network-firewall-policies rules create 65534 \
        --firewall-policy=fw-policy \
        --direction=EGRESS \
        --action=ALLOW \
        --dest-ip-ranges=0.0.0.0/0 \
        --layer4-configs=all \
        --global-firewall-policy \
        --enable-logging
    
  3. 如要將防火牆政策與虛擬私有雲網路建立關聯,請執行下列指令:

    gcloud compute network-firewall-policies associations create \
        --firewall-policy=fw-policy \
        --network=vpc-fw-rules \
        --name=pol-association-fw-rules \
        --global-firewall-policy
    

新增 IAP 的防火牆規則

在上一節中,您建立了沒有外部 IP 位址的 Linux VM。在本節中,您將啟用 Identity-Aware Proxy (IAP),允許管理員存取沒有外部 IP 位址的 VM 執行個體。

如要允許 IAP 連線至您的 VM 執行個體,請根據以下條件建立防火牆規則:

  • 套用至所有您希望能透過 IAP 存取的 VM 執行個體。
  • 允許來自 IP 範圍「35.235.240.0/20」的輸入流量。這個範圍包含 IAP 用於 TCP 轉送的所有 IP 位址。

    如果是 IPv6 VM,請使用以下 IP 範圍:2600:2d00:1:7::/64

  • 允許連線至您希望透過 IAP TCP 轉送功能存取的所有通訊埠,例如適用於 SSH 的通訊埠「22」,及適用於 RDP 的通訊埠「3389」。

主控台

如要允許透過遠端桌面協定和安全殼層存取 vpc-fw-rules 網路中的所有 VM 執行個體,請按照下列步驟操作:

  1. 在 Cloud de Confiance 控制台中,前往「Firewall policies」(防火牆政策) 頁面。

    前往「防火牆政策」頁面

  2. 在「網路防火牆政策」部分,按一下 fw-policy

  3. 按一下「建立規則」

  4. 在「Priority」(優先順序) 中輸入 500

  5. 在「Direction of traffic」(流量方向) 中選取 [Ingress] (輸入)

  6. 針對「記錄」,選取「開啟」

  7. 在「目標」部分中,針對「目標類型」選取「網路中的所有執行個體」

  8. 在「來源」部分,於「IP 範圍」中輸入 35.235.240.0/20

  9. 在「Protocols and ports」(通訊協定和通訊埠) 部分,選取「Specified protocols and ports」(指定的通訊協定和通訊埠)

  10. 勾選「TCP」核取方塊,然後在「Ports」(通訊埠) 中輸入 223389 (以半形逗號分隔)。

  11. 點選「建立」

gcloud

如要允許透過 RDP 和 SSH 存取 vpc-fw-rules 網路中的所有 VM 執行個體,請執行下列指令:

gcloud compute network-firewall-policies rules create 500 \
    --firewall-policy=fw-policy \
    --direction=INGRESS \
    --action=ALLOW \
    --src-ip-ranges=35.235.240.0/20 \
    --global-firewall-policy \
    --layer4-configs tcp:22,tcp:3389 \
    --enable-logging

安裝 Apache 伺服器

在本節中,您會在伺服器 VM 上安裝 Apache 伺服器。

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

    前往 VM 執行個體

  2. vm-fw-rules-server VM 的「連線」欄中,按一下「SSH」

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

  4. 如要安裝 apache2 套件,請在命令提示字元中執行下列指令:

    sudo apt update && sudo apt -y install apache2
    

    安裝 Apache 之後,作業系統會自動啟動 Apache 伺服器。

  5. 如要確認 Apache 是否正在執行,請執行下列指令:

    sudo systemctl status apache2 --no-pager
    
  6. 如要覆寫 Apache 網路伺服器預設網頁,請執行下列指令:

    echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' | sudo tee /var/www/html/index.html
    
  7. 關閉「SSH-in-browser」(透過瀏覽器進行 SSH 連線) 對話方塊。

測試連線

在伺服器 VM 上安裝 Apache 伺服器後,請使用伺服器 VM 的內部 IP 位址,從用戶端 VM 連線至伺服器 VM。

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

    前往 VM 執行個體

  2. vm-fw-rules-server VM 的「Internal IP」(內部 IP) 欄,複製 VM 的內部 IP 位址。

  3. vm-fw-rules-client VM 的「連線」欄中,按一下「SSH」

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

  5. 如要驗證連線,請執行下列指令:

    curl INTERNAL_IP -m 2
    

    INTERNAL_IP 替換為 vm-fw-rules-server VM 的 IP 位址。

    這是預期中的 Connection timed out 訊息,因為每個 VM 都會建立隱含的輸入防火牆規則,拒絕所有流量。如要允許流量,請在防火牆政策中新增輸入規則。

  6. 關閉「SSH-in-browser」(透過瀏覽器進行 SSH 連線) 對話方塊。

更新全域網路防火牆政策,允許內部流量

在本節中,您將更新全域網路防火牆政策,允許來自用戶端 VM 子網路的內部流量。

主控台

  1. 在 Cloud de Confiance 控制台中,前往「Firewall policies」(防火牆政策) 頁面。

    前往「防火牆政策」頁面

  2. 在「網路防火牆政策」部分,按一下 fw-policy

  3. 按一下「建立規則」

  4. 在「Priority」(優先順序) 中輸入 501

  5. 在「Direction of traffic」(流量方向) 中選取 [Ingress] (輸入)

  6. 針對「記錄」,選取「開啟」

  7. 在「目標」部分中,針對「目標類型」選取「網路中的所有執行個體」

  8. 在「來源」部分,於「IP 範圍」中輸入 192.168.10.0/24

    請注意,IP 範圍 192.168.10.0/24 會指派給 subnet-fw-rules-client

  9. 在「目的地」部分,選取「IP 類型」的「IPv4」。在「IP ranges」(IP 範圍) 中,指定 10.0.0.0/24

    請注意,IP 範圍 10.0.0.0/24 已指派給 subnet-fw-rules-server

  10. 點選「建立」

gcloud

如要更新防火牆政策,請執行下列指令:

gcloud compute network-firewall-policies rules create 501 \
    --firewall-policy=fw-policy \
    --direction=INGRESS \
    --action=ALLOW \
    --src-ip-ranges=192.168.10.0/24 \
    --dest-ip-ranges=10.0.0.0/24 \
    --layer4-configs=all \
    --global-firewall-policy \
    --enable-logging

測試連線

建立防火牆政策後,請使用伺服器 VM 的內部 IP 位址,從用戶端 VM 連線至伺服器 VM。

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

    前往 VM 執行個體

  2. vm-fw-rules-server VM 的「Internal IP」(內部 IP) 欄,複製 VM 的內部 IP 位址。

  3. vm-fw-rules-client VM 的「連線」欄中,按一下「SSH」

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

  5. 如要驗證連線,請執行下列指令:

    curl INTERNAL_IP -m 2
    

    INTERNAL_IP 替換為 vm-fw-rules-server VM 的 IP 位址。

    預期訊息為 <!doctype html><html><body><h1>Hello World!</h1></body></html>

  6. 關閉「SSH-in-browser」(透過瀏覽器進行 SSH 連線) 對話方塊。

如要查看防火牆記錄,請參閱「查看記錄」。