本教學課程說明如何設定全域網路防火牆政策,允許自訂虛擬私有雲網路中的 VM 子網路之間傳輸內部流量。
建立含子網路的自訂虛擬私有雲網路
在本節中,您會建立包含兩個 IPv4 子網路的自訂模式虛擬私有雲網路。
主控台
在 Cloud de Confiance 控制台中,前往「VPC networks」(虛擬私有雲網路) 頁面。
按一下「建立虛擬私有雲網路」。
在「Name」(名稱) 中輸入
vpc-fw-rules
。在「Description」(說明) 中輸入
VPC network for the firewall rules tutorial
。在「子網路建立模式」部分,選取「自訂」。
在「New subnet」(新子網路) 部分,指定子網路的以下設定參數:
- Name (名稱):
subnet-fw-rules-server
- Region (區域):
us-central1 (Iowa)
- IPv4 範圍:
10.0.0.0/24
- Private Google Access:開啟
- Name (名稱):
按一下 [完成]。
按一下「Add subnet」(新增子網路),然後指定下列設定參數:
- Name (名稱):
subnet-fw-rules-client
- Region (區域):
us-central1 (Iowa)
- IPv4 範圍:
192.168.10.0/24
- Private Google Access:開啟
- Name (名稱):
按一下 [完成]。
點選「建立」。
gcloud
如要建立 VPC 網路,請執行下列指令:
gcloud compute networks create vpc-fw-rules \ --subnet-mode=custom \ --description="VPC network for the firewall rules tutorial"
選擇性步驟:在「授權 Cloud Shell」對話方塊中,按一下「授權」。
如要建立子網路,請執行下列指令:
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
如要建立另一個子網路,請執行下列指令:
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,請按照下列步驟操作:
前往 Cloud de Confiance 控制台的「Create an instance」(建立執行個體) 頁面。
在「機器設定」窗格中,執行下列操作:
- 在「Name」(名稱) 中輸入
vm-fw-rules-server
。 - 在「Region」(區域) 中選取
us-central1 (Iowa)
。
- 在「Name」(名稱) 中輸入
點選導覽選單中的「Networking」(網路)。
- 在「Network interfaces」(網路介面) 區段中,按一下
default
,然後指定下列設定參數:- 網路:
vpc-fw-rules
- 「Subnetwork」(子網路):
subnet-fw-rules-server IPv4 (10.0.0.0/24)
- 「外部 IPv4 位址」:選取「無」
- 網路:
- 按一下 [完成]。
- 在「Network interfaces」(網路介面) 區段中,按一下
點選「建立」。
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,請按照下列步驟操作:
前往 Cloud de Confiance 控制台的「Create an instance」(建立執行個體) 頁面。
在「機器設定」窗格中,執行下列操作:
- 在「Name」(名稱) 中輸入
vm-fw-rules-client
。 - 在「Region」(區域) 中選取
us-central1 (Iowa)
。
- 在「Name」(名稱) 中輸入
點選導覽選單中的「Networking」(網路)。
- 在「Network interfaces」(網路介面) 區段中,按一下
default
,然後指定下列設定參數:- 網路:
vpc-fw-rules
- 「Subnetwork」(子網路):
subnet-fw-rules-client IPv4 (192.168.10.0/24)
- 「外部 IPv4 位址」:選取「無」
- 網路:
- 按一下 [完成]。
- 在「Network interfaces」(網路介面) 區段中,按一下
點選「建立」。
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 閘道。
主控台
前往 Cloud de Confiance 控制台的「Cloud NAT」頁面。
按一下「開始使用」或「建立 Cloud NAT 閘道」。
在「Gateway name」(閘道名稱) 輸入
gateway-fw-rules
。在「NAT type」(NAT 類型) 中,選取「Public」(公開)。
在「Select Cloud Router」部分,指定下列設定參數:
- 網路:
vpc-fw-rules
- 區域:
us-central1
- Cloud Router:建立新路由器。
- 在「Name」(名稱) 中輸入
router-fw-rules
。 - 點選「建立」。
- 在「Name」(名稱) 中輸入
- 網路:
點選「建立」。
gcloud
如要建立 Cloud Router,請執行下列指令:
gcloud compute routers create router-fw-rules \ --network=vpc-fw-rules \ --region=us-central1
如要建立 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
的輸出規則。 記錄功能已啟用。您可以根據防火牆規則記錄,進一步稽核、驗證及分析防火牆規則的成效。
主控台
在 Cloud de Confiance 控制台中,前往「Firewall policies」(防火牆政策) 頁面。
按一下「建立防火牆政策」。
在「設定政策」部分,於「政策名稱」輸入
fw-policy
。在「部署範圍」部分,選取「全域」,然後點選「繼續」。
如要為政策建立規則,請在「新增規則」部分中,按一下「新增規則」。
- 在「Priority」(優先順序) 中輸入
65534
。 - 在「Direction of traffic」(流量方向) 中選取「Egress」(輸出)。
- 針對「記錄」,選取「開啟」。
- 在「目標」部分中,針對「目標類型」選取「網路中的所有執行個體」。
- 在「Destination」(目的地) 區段中,在「IP ranges」(IP 範圍) 輸入
0.0.0.0/0
。 - 在「通訊協定和通訊埠」專區中選取「全部允許」。
- 點選「建立」。
- 在「Priority」(優先順序) 中輸入
按一下「繼續」。
如要將虛擬私有雲網路與政策建立關聯,請在「將政策與虛擬私有雲網路建立關聯」部分中,按一下「建立關聯」。
勾選
vpc-fw-rules
核取方塊,然後按一下「關聯」。按一下「繼續」。
點選「建立」。
gcloud
如要建立防火牆政策,請執行下列指令:
gcloud compute network-firewall-policies create fw-policy \ --global
如要建立防火牆規則,允許流量傳輸至所有目的地並啟用記錄,請執行下列指令:
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
如要將防火牆政策與虛擬私有雲網路建立關聯,請執行下列指令:
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 執行個體,請按照下列步驟操作:
在 Cloud de Confiance 控制台中,前往「Firewall policies」(防火牆政策) 頁面。
在「網路防火牆政策」部分,按一下
fw-policy
。按一下「建立規則」。
在「Priority」(優先順序) 中輸入
500
。在「Direction of traffic」(流量方向) 中選取 [Ingress] (輸入)。
針對「記錄」,選取「開啟」。
在「目標」部分中,針對「目標類型」選取「網路中的所有執行個體」。
在「來源」部分,於「IP 範圍」中輸入
35.235.240.0/20
。在「Protocols and ports」(通訊協定和通訊埠) 部分,選取「Specified protocols and ports」(指定的通訊協定和通訊埠)。
勾選「TCP」核取方塊,然後在「Ports」(通訊埠) 中輸入
22
和3389
(以半形逗號分隔)。點選「建立」。
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 伺服器。
前往 Cloud de Confiance 控制台的「VM instances」(VM 執行個體) 頁面。
在
vm-fw-rules-server
VM 的「連線」欄中,按一下「SSH」。在「SSH-in-browser」(直接透過瀏覽器進行 SSH 連線) 對話方塊中,按一下「Authorize」(授權),然後等待連線建立。
如要安裝
apache2
套件,請在命令提示字元中執行下列指令:sudo apt update && sudo apt -y install apache2
安裝 Apache 之後,作業系統會自動啟動 Apache 伺服器。
如要確認 Apache 是否正在執行,請執行下列指令:
sudo systemctl status apache2 --no-pager
如要覆寫 Apache 網路伺服器預設網頁,請執行下列指令:
echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' | sudo tee /var/www/html/index.html
關閉「SSH-in-browser」(透過瀏覽器進行 SSH 連線) 對話方塊。
測試連線
在伺服器 VM 上安裝 Apache 伺服器後,請使用伺服器 VM 的內部 IP 位址,從用戶端 VM 連線至伺服器 VM。
前往 Cloud de Confiance 控制台的「VM instances」(VM 執行個體) 頁面。
從
vm-fw-rules-server
VM 的「Internal IP」(內部 IP) 欄,複製 VM 的內部 IP 位址。在
vm-fw-rules-client
VM 的「連線」欄中,按一下「SSH」。在「SSH-in-browser」(直接透過瀏覽器進行 SSH 連線) 對話方塊中,按一下「Authorize」(授權),然後等待連線建立。
如要驗證連線,請執行下列指令:
curl INTERNAL_IP -m 2
將
INTERNAL_IP
替換為vm-fw-rules-server
VM 的 IP 位址。這是預期中的
Connection timed out
訊息,因為每個 VM 都會建立隱含的輸入防火牆規則,拒絕所有流量。如要允許流量,請在防火牆政策中新增輸入規則。關閉「SSH-in-browser」(透過瀏覽器進行 SSH 連線) 對話方塊。
更新全域網路防火牆政策,允許內部流量
在本節中,您將更新全域網路防火牆政策,允許來自用戶端 VM 子網路的內部流量。
主控台
在 Cloud de Confiance 控制台中,前往「Firewall policies」(防火牆政策) 頁面。
在「網路防火牆政策」部分,按一下
fw-policy
。按一下「建立規則」。
在「Priority」(優先順序) 中輸入
501
。在「Direction of traffic」(流量方向) 中選取 [Ingress] (輸入)。
針對「記錄」,選取「開啟」。
在「目標」部分中,針對「目標類型」選取「網路中的所有執行個體」。
在「來源」部分,於「IP 範圍」中輸入
192.168.10.0/24
。請注意,IP 範圍
192.168.10.0/24
會指派給 subnet-fw-rules-client。在「目的地」部分,選取「IP 類型」的「IPv4」。在「IP ranges」(IP 範圍) 中,指定
10.0.0.0/24
。請注意,IP 範圍
10.0.0.0/24
已指派給 subnet-fw-rules-server。點選「建立」。
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。
前往 Cloud de Confiance 控制台的「VM instances」(VM 執行個體) 頁面。
從
vm-fw-rules-server
VM 的「Internal IP」(內部 IP) 欄,複製 VM 的內部 IP 位址。在
vm-fw-rules-client
VM 的「連線」欄中,按一下「SSH」。在「SSH-in-browser」(直接透過瀏覽器進行 SSH 連線) 對話方塊中,按一下「Authorize」(授權),然後等待連線建立。
如要驗證連線,請執行下列指令:
curl INTERNAL_IP -m 2
將
INTERNAL_IP
替換為vm-fw-rules-server
VM 的 IP 位址。預期訊息為
<!doctype html><html><body><h1>Hello World!</h1></body></html>
。關閉「SSH-in-browser」(透過瀏覽器進行 SSH 連線) 對話方塊。
如要查看防火牆記錄,請參閱「查看記錄」。