在网络中设置入侵防御服务


入侵防御服务会监控 Google Cloud 工作负载流量以检测恶意活动,并执行抢占式操作来防范威胁。如需在网络中启用此服务,您必须设置多个 Cloud 新一代防火墙组件。本教程介绍了用于在网络中配置入侵防御服务的端到端工作流。

目标

本教程介绍如何完成以下任务:

  • 创建包含两个子网的 Virtual Private Cloud (VPC) 网络。
  • 在 VPC 网络的第一个子网中创建服务器虚拟机 (VM) 实例,并在该虚拟机上安装 Apache 服务器。
  • 在 VPC 网络的第二个子网中创建客户端虚拟机实例。
  • 创建安全配置文件和安全配置文件组。
  • 创建防火墙端点并将其与 VPC 网络关联。
  • 添加包含以下防火墙规则的全球网络防火墙政策:
    • 用于启用 Identity-Aware Proxy (IAP) 对 VPC 网络中的虚拟机实例的访问权限的防火墙规则。
    • 用于定向所有入站流量以进行第 7 层检查的防火墙规则。
  • 验证流向服务器虚拟机实例的恶意流量是否已被阻止。
  • 清理资源。

下图展示了本教程中部署设置的概要架构。VPC vpc-ips 上的防火墙政策 fw-policy-ips 将入站流量重定向到可用区 asia-southeast1-a 中的防火墙端点。防火墙端点 endpoint-ips 检查流量是否存在任何威胁。如果检测到任何威胁,可以按照安全配置文件 sec-profile-ips 中指定的说明应用防护措施。

自定义 VPC 网络中的入侵防御服务,可识别和防御任何威胁。
自定义 VPC 网络中的入侵防御服务(点击可放大)。

费用

创建防火墙端点会产生相关费用。如需了解价格详情,请参阅 Cloud 新一代防火墙价格

准备工作

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure 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.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. 为您的项目启用 Compute Engine API
  7. 为您的项目启用 Network Security API
  8. 为您的项目启用 Identity-Aware Proxy API
  9. 具有您的组织的 Compute Network Admin (roles/compute.networkAdmin) IAM 角色。
  10. 如果您希望通过命令行进行操作,请安装 Google Cloud CLI。 如需了解该工具的概念性信息和安装信息,请参阅 gcloud CLI 概览

    注意:如果您之前未运行过 gcloud CLI,请先运行 gcloud init 以初始化 gcloud CLI 目录。

创建包含子网的自定义 VPC 网络

在本部分中,您将创建包含两个 IPv4 子网的自定义模式 VPC 网络。

控制台

  1. 在 Google Cloud 控制台中,进入 VPC 网络页面。

    进入 VPC 网络页面

  2. 点击创建 VPC 网络

  3. 对于名称,输入 vpc-ips

  4. 对于说明,输入 VPC network to set up intrusion prevention service

  5. 对于子网创建模式,选择自定义

  6. 新子网部分,为子网指定以下配置参数:

    • 名称subnet-ips-server
    • 区域asia-southeast1
    • IPv4 范围10.0.0.0/24
  7. 点击完成

  8. 点击添加子网并指定以下配置参数:

    • 名称subnet-ips-client
    • 区域us-central1
    • IPv4 范围192.168.10.0/24
  9. 点击完成

  10. 点击创建

gcloud

  1. 如需创建 VPC 网络,请运行以下命令:

    gcloud compute networks create vpc-ips \
      --subnet-mode custom \
      --description "VPC network to set up intrusion prevention service."
    
  2. 为 Cloud Shell 提供授权对话框中,点击授权

  3. 如需创建子网,请运行以下命令:

    gcloud compute networks subnets create  subnet-server-ips \
      --network vpc-ips \
      --region asia-southeast1 \
      --range 10.0.0.0/24
    
  4. 如需创建另一个子网,请运行以下命令:

    gcloud compute networks subnets create subnet-client-ips \
      --network vpc-ips \
      --region us-central1 \
      --range 192.168.10.0/24
    

创建虚拟机实例

在本部分中,您将创建服务器和客户端虚拟机实例。

创建服务器虚拟机实例

在本部分中,您将在子网 subnet-server-ips 中创建一个虚拟机实例,并在该实例上安装 Apache 服务器。

控制台

  1. 在 Google Cloud 控制台中,转到创建实例页面。

    转到“创建实例”

  2. 对于名称,输入 vm-server-ips

  3. 对于区域,请选择 asia-southeast1 (Singapore)

  4. 对于可用区,请选择 asia-southeast1-a

  5. 启动磁盘部分中,选择更改,然后在操作系统字段中选择 Debian

  6. 点击选择

  7. 展开高级选项,然后展开网络

  8. 网络接口部分中,指定以下配置参数:

    • 网络vpc-ips
    • 子网subnet-server-ips IPv4 (10.0.0.0/24)
  9. 点击完成

  10. 展开管理部分。

  11. 自动化部分中,添加以下启动脚本:

      #! /bin/bash
      apt update
      apt -y install apache2
      cat <<EOF > /var/www/html/index.html
      <html><body><p>Hello world.</p></body></html>
      EOF
    
  12. 点击创建

  13. 记下服务器虚拟机创建后的外部 IP 地址。

gcloud

如需创建服务器虚拟机,请运行以下命令:

gcloud compute instances create vm-server-ips \
    --network vpc-ips \
    --zone asia-southeast1-a \
    --subnet subnet-server-ips \
    --stack-type IPV4_ONLY \
    --image-project debian-cloud \
    --image-family debian-11 \
    --metadata=startup-script='#! /bin/bash
     apt update
     apt -y install apache2
     cat <<EOF > /var/www/html/index.html
     <html><body><p>Hello World.</p></body></html>
     EOF'

在返回的状态中记下虚拟机的外部 IP 地址。

创建客户端虚拟机实例

在本部分中,您将在子网 subnet-client-ips 中创建一个虚拟机实例。

控制台

  1. 在 Google Cloud 控制台中,转到创建实例页面。

    转到“创建实例”

  2. 对于名称,输入 vm-client-ips

  3. 对于区域,请选择 us-central1

  4. 对于可用区,请选择 us-central1-a

  5. 展开高级选项,然后展开网络

  6. 网络接口部分中,指定以下配置参数:

    • 网络vpc-ips
    • 子网subnet-client-ips IPv4 (192.168.10.0/24)
  7. 点击完成

  8. 点击创建

gcloud

如需创建客户端虚拟机,请运行以下命令:

gcloud compute instances create vm-client-ips \
    --network vpc-ips \
    --zone us-central1-a \
    --subnet subnet-client-ips \
    --stack-type IPV4_ONLY

创建安全配置文件

在本部分中,您将在组织中创建 threat-prevention 类型的安全配置文件。如需查看创建安全配置文件所需的权限,请参阅执行此任务所需的权限

控制台

  1. 在 Google Cloud 控制台中,进入安全配置文件页面。

    进入“安全配置文件”

  2. 在项目选择器菜单中,选择您的组织。

  3. 选择安全配置文件标签页。

  4. 点击 Create profile(创建配置文件)。

  5. 对于名称,输入 sec-profile-ips

  6. 对于说明,输入 Security profile to set up intrusion prevention service

  7. 点击继续

  8. 点击创建

gcloud

如需创建安全配置文件,请运行以下命令:

gcloud network-security security-profiles \
    threat-prevention \
    create sec-profile-ips \
    --organization ORGANIZATION_ID \
    --location global \
    --project PROJECT_ID \
    --description "Security profile to set up intrusion prevention service."

请替换以下内容:

  • ORGANIZATION_ID:在其中创建安全配置文件的组织。
  • PROJECT_ID:用于安全配置文件的配额和访问权限限制的项目 ID。

创建安全配置文件组

在本部分中,您将创建一个安全配置文件组,以包含您在上一部分中创建的安全配置文件。如需查看创建安全配置文件组所需的权限,请参阅执行此任务所需的权限

控制台

  1. 在 Google Cloud 控制台中,进入安全配置文件页面。

    进入“安全配置文件”

  2. 在项目选择器菜单中,选择您的组织。

  3. 选择安全配置文件组标签页。

  4. 点击创建配置文件组

  5. 对于名称,输入 sec-profile-group-ips

  6. 对于说明,输入 Security profile group to set up intrusion prevention service

  7. 威胁防护配置文件列表中,选择 sec-profile-ips

  8. 点击创建

gcloud

如需创建安全配置文件组,请运行以下命令:

gcloud network-security security-profile-groups \
    create sec-profile-group-ips \
    --organization ORGANIZATION_ID \
    --location global \
    --project PROJECT_ID \
    --threat-prevention-profile  \
    organizations/ORGANIZATION_ID/locations/global/securityProfiles/sec-profile-ips \
    --description "Security profile group to set up intrusion prevention service."

请替换以下内容:

  • ORGANIZATION_ID:在其中创建安全配置文件组的组织。
  • PROJECT_ID:用于安全配置文件组配额和访问权限限制的项目 ID。

创建防火墙端点

在本部分中,您将在特定可用区中创建防火墙端点。如需查看创建防火墙端点所需的权限,请参阅执行此任务所需的权限

注意:创建防火墙端点时,防火墙端点的状态设置为 Creating。防火墙端点准备就绪后,状态会更改为 Active

控制台

  1. 在 Google Cloud 控制台中,进入防火墙端点页面。

    进入“防火墙端点”

  2. 在项目选择器菜单中,选择您的组织。

  3. 点击创建

  4. 区域列表中,选择 asia-southeast1 (Singapore)

  5. 可用区列表中,选择 asia-southeast1-a

  6. 对于名称,输入 endpoint-ips

  7. 点击创建

gcloud

如需创建防火墙端点,请运行以下命令:

gcloud network-security firewall-endpoints \
    create endpoint-ips \
    --organization ORGANIZATION_ID \
    --zone asia-southeast1-a \
    --billing-project PROJECT_ID

请替换以下内容:

  • ORGANIZATION_ID:在其中创建防火墙端点的组织。
  • PROJECT_ID:用于防火墙端点结算的项目 ID。

创建防火墙端点关联

在本部分中,您会将防火墙端点与您在上一步中创建的 VPC 网络关联。

控制台

  1. 在 Google Cloud 控制台中,进入 VPC 网络页面。

    进入 VPC 网络页面

  2. 点击 vpc-ips 网络以显示其 VPC 网络详情页面。

  3. 选择防火墙端点标签页。

  4. 点击添加端点关联

  5. 区域列表中,选择 asia-southeast1

  6. 可用区列表中,选择 asia-southeast1-a

  7. 防火墙端点列表中,选择 endpoint-ips

  8. 点击创建

gcloud

如需创建防火墙端点关联,请运行以下命令:

gcloud network-security firewall-endpoint-associations \
    create endpoint-association-ips \
    --endpoint  organizations/ORGANIZATION_ID/locations/asia-southeast1-a/firewallEndpoints/endpoint-ips \
    --network vpc-ips \
    --zone asia-southeast1-a \
    --project PROJECT_ID

请替换以下内容:

  • ORGANIZATION_ID:在其中创建防火墙端点的组织。
  • PROJECT_ID:在其中创建关联的项目的 ID。

创建全球网络防火墙政策

在本部分中,您将创建一个包含以下两条防火墙规则的全球网络防火墙政策:

  1. 优先级为 100 的入站流量防火墙规则,允许流向端口 338922 的 TCP 流量。此规则可启用对 VPC 网络中的虚拟机实例的 IAP 访问权限。
  2. 优先级为 200 的入站流量防火墙规则,用于对特定可用区中的服务器虚拟机的传入流量执行第 7 层检查。

控制台

  1. 在 Google Cloud 控制台中,转到防火墙页面。

    转到“防火墙政策”

  2. 在项目选择器列表中,选择您的组织内的项目。

  3. 点击创建防火墙政策

  4. 对于名称,输入 fw-policy-ips

  5. 部署范围字段中,选择全球

  6. 点击继续,然后点击添加规则

  7. Priority(优先级)字段中,输入 100

  8. 日志列表中,选择开启

  9. 对于流量方向,选择入站

  10. 对于对匹配项执行的操作,选择允许

  11. 来源过滤条件中,选择 IPv4,然后在 IP 范围字段中输入 35.235.240.0/20

  12. 协议和端口部分中,选择指定的协议和端口

  13. 选择 TCP,然后在端口字段中,输入 22,3389

  14. 点击创建

  15. 点击添加规则

  16. Priority(优先级)字段中,输入 200

  17. 日志列表中,选择开启

  18. 对于流量方向,选择入站

  19. 对匹配项执行的操作字段中,选择转到 L7 检查

  20. 安全配置文件组列表中,选择 sec-profile-group-ips

  21. 目标过滤条件中,选择 IPv4,然后在IP 范围字段中,输入您在创建服务器虚拟机实例部分中创建的服务器虚拟机的外部 IP 地址。

  22. 点击创建

  23. 点击继续

  24. 点击将政策与 VPC 网络关联

  25. 选择 vpc-ips 网络。

  26. 点击关联

  27. 点击创建

gcloud

  1. 如需创建全球网络防火墙政策,请运行以下命令:

    gcloud compute network-firewall-policies \
      create fw-policy-ips \
      --global \
      --project PROJECT_ID
    

    请替换以下内容:

    • PROJECT_ID:在其中创建全球网络防火墙政策的项目的 ID。
  2. 如需添加防火墙规则以启用 IAP 访问权限,请运行以下命令:

    gcloud compute network-firewall-policies rules create 100 \
      --firewall-policy fw-policy-ips \
      --direction INGRESS \
      --action ALLOW \
      --src-ip-ranges 35.235.240.0/20 \
      --layer4-configs tcp:22, tcp:3389 \
      --global-firewall-policy \
      --enable-logging
    
  3. 如需添加防火墙规则以启用第 7 层检查进行威胁防护和检测,请运行以下命令:

    gcloud compute network-firewall-policies rules create 200 \
      --direction INGRESS \
      --firewall-policy fw-policy-ips \
      --action apply_security_profile_group \
      --dest-ip-ranges SERVER_VM_IP \
      --layer4-configs tcp:0-65535 \
      --global-firewall-policy \
      --security-profile-group \
      //networksecurity.googleapis.com/organizations/ORGANIZATION_ID \
      /locations/global/securityProfileGroups/sec-profile-group-ips \
      --enable-logging
    

    请替换以下内容:

    • SERVER_VM_IP:您在创建服务器虚拟机实例部分中创建的服务器虚拟机的外部 IP 地址。

    • ORGANIZATION_ID:在其中创建安全配置文件组的组织。

  4. 如需将防火墙政策与 VPC 网络关联,请运行以下命令:

    gcloud compute network-firewall-policies associations create \
     --firewall-policy fw-policy-ips \
     --network vpc-ips \
     --name fw-pol-association-ips \
     --global-firewall-policy \
     --project PROJECT_ID
    

    请替换以下内容:

    • PROJECT_ID:在其中创建 VPC 关联的项目的 ID。

测试设置

在本部分中,您将通过生成端点会拦截的流量来测试设置,并应用全球网络防火墙政策以执行第 7 层检查。

控制台

  1. 在 Google Cloud 控制台中,转到虚拟机实例页面。

    转到虚拟机实例

  2. vm-server-ips 虚拟机的外部 IP 列中,复制虚拟机的外部 IP 地址。

  3. vm-client-ips 虚拟机实例的连接列中,点击 SSH

  4. SSH-in-browser 对话框中,点击授权并等待连接建立。

  5. 如需验证非威胁请求是否未被阻止,请运行以下命令:

    curl EXTERNAL_IP -m 2
    

    EXTERNAL_IP 替换为 vm-server-ips 虚拟机的外部 IP。

    预期响应消息如下所示:

    <!doctype html><html><body><h1>Hello World!</h1></body></html>

  6. 如需验证恶意请求是否已被阻止,请运行以下命令。此命令会发送访问密码文件的请求,但这项操作会被禁止。

    curl -m 2 EXTERNAL_IP:80/cgi-bin/../../../../bin/cat%20/etc/passwd/
    

    EXTERNAL_IP 替换为 vm-server-ips 虚拟机的外部 IP。

    预计会收到 Connection timed out 消息,因为防火墙端点会检测到请求中的威胁并阻止数据包。

  7. 关闭 SSH-in-browser 对话框。

gcloud

  1. 如需连接到 vm-client-ips 虚拟机,请运行以下命令:

    gcloud compute ssh vm-client-ips \
       --zone=us-central1-a \
       --tunnel-through-iap
    

    出现提示时,按 Y 键进行确认,然后按 Enter 键。

  2. 如需验证非威胁请求是否未被阻止,请运行以下命令:

    curl EXTERNAL_IP -m 2
    

    EXTERNAL_IP 替换为 vm-server-ips 虚拟机的外部 IP。

    预期响应消息如下所示:

    <!doctype html><html><body><h1>Hello World!</h1></body></html>

  3. 如需验证恶意请求是否已被阻止,请运行以下命令:

    curl -m 2 EXTERNAL_IP:80/cgi-bin/../../../../bin/cat%20/etc/passwd/
    

    EXTERNAL_IP 替换为 vm-server-ips 虚拟机的外部 IP。

    预计会收到 Connection timed out 消息,因为防火墙端点会检测到请求中的威胁并阻止数据包。

  4. 若要关闭 SSH-in-browser,请输入 exit

查看威胁日志

  1. 在 Google Cloud 控制台中,进入威胁页面。

    转至“威胁”

  2. 如有必要,请选择您的 Google Cloud 项目。

  3. 威胁部分中,您可以查看在 vpc-ips 网络上检测到的威胁的日志条目。

清理

为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。

在本部分中,您将删除在本教程中创建的资源。

删除防火墙端点关联

控制台

  1. 在 Google Cloud 控制台中,进入 VPC 网络页面。

    进入 VPC 网络页面

  2. 点击 vpc-ips 网络以显示其 VPC 网络详情页面。

  3. 选择防火墙端点标签页。该标签页会显示已配置的防火墙端点关联的列表。

  4. 选中 endpoint-ips 旁边的复选框,然后点击删除

  5. 再次点击删除进行确认。

gcloud

如需删除防火墙端点关联,请运行以下命令:

gcloud network-security firewall-endpoint-association 
delete endpoint-ips
--zone asia-southeast1-a

删除防火墙端点

控制台

  1. 在 Google Cloud 控制台中,进入防火墙端点页面。

    进入“防火墙端点”

  2. 选择 endpoint-ips,然后点击删除

  3. 再次点击删除进行确认。

gcloud

如需删除防火墙端点,请运行以下命令:

gcloud network-security firewall-endpoints delete endpoint-ips \
    --organization ORGANIZATION_ID \
    --zone asia-southeast1-a

请替换以下内容:

  • ORGANIZATION_ID:在其中创建端点的组织。

删除全球网络防火墙端点政策

控制台

  1. 在 Google Cloud 控制台中,转到防火墙页面。

    转到“防火墙政策”

  2. 在项目选择器菜单中,选择包含该政策的项目。

  3. 点击 fw-policy-ips

  4. 点击关联标签页。

  5. 选择所有关联。

  6. 点击 Remove Associations(移除关联)。

  7. 移除所有关联后,点击删除

gcloud

  1. 如需移除防火墙政策与 VPC 网络之间的关联,请运行以下命令:

    gcloud compute network-firewall-policies associations delete \
      --name fw-pol-association-ips \
      --firewall-policy fw-policy-ips \
      --global-firewall-policy
    
  2. 删除防火墙政策。

    gcloud compute network-firewall-policies delete fw-policy-ips --global
    

    出现提示时,按 Y 键进行确认,然后按 Enter 键。

删除安全配置文件组

控制台

  1. 在 Google Cloud 控制台中,进入安全配置文件页面。

    进入“安全配置文件”

  2. 选择安全配置文件组标签页。

  3. 选择 sec-profile-group-ips,然后点击删除

  4. 再次点击删除进行确认。

gcloud

如需删除安全配置文件组,请运行以下命令:

gcloud network-security security-profile-groups \
    delete sec-profile-group-ips \
    --organization ORGANIZATION_ID \
    --location global

请替换以下内容:

  • ORGANIZATION_ID:在其中创建安全配置文件组的组织。

删除安全配置文件

控制台

  1. 在 Google Cloud 控制台中,进入安全配置文件页面。

    进入“安全配置文件”

  2. 选择安全配置文件标签页。该标签页会显示已配置的安全配置文件的列表。

  3. 选择 sec-profile-ips,然后点击删除

  4. 再次点击删除进行确认。

gcloud

如需删除安全配置文件,请运行以下命令:

gcloud network-security security-profiles threat-prevention \
    delete sec-profile-ips \
    --organization ORGANIZATION_ID \
    --location global

请替换以下内容:

  • ORGANIZATION_ID:创建安全配置文件的组织。

删除虚拟机

控制台

  1. 在 Google Cloud 控制台中,转到虚拟机实例页面。

    转到虚拟机实例

  2. 选中 vm-client-ipsvm-server-ips 虚拟机对应的复选框。

  3. 点击删除

  4. 删除 2 个实例?对话框中,点击删除

gcloud

  1. 如需删除 vm-client-ips 虚拟机,请运行以下命令:

    gcloud compute instances delete vm-client-ips \
      --zone us-central1-a
    

    出现提示时,按 Y 键进行确认,然后按 Enter 键。

  2. 如需删除 vm-server-ips 虚拟机,请运行以下命令:

    gcloud compute instances delete vm-server-ips \
      --zone asia-southeast1-a
    

    出现提示时,按 Y 键进行确认,然后按 Enter 键。

删除 VPC 网络及其子网

控制台

  1. 在 Google Cloud 控制台中,进入 VPC 网络页面。

    转到虚拟机实例

  2. 名称列中,点击 vpc-ips

  3. 点击删除 VPC 网络

  4. 删除网络对话框中,点击删除

删除 VPC 时,其子网也会被删除。

gcloud

  1. 如需删除 vpc-ips VPC 网络的子网 subnet-ips-client,请运行以下命令:

    gcloud compute networks subnets delete subnet-ips-client \
        --region us-central1
    

    出现提示时,按 Y 键进行确认,然后按 Enter 键。

  2. 如需删除 vpc-ips VPC 网络的子网 subnet-ips-server,请运行以下命令:

    gcloud compute networks subnets delete subnet-ips-server \
        --region=asia-southeast1
    

    出现提示时,按 Y 键进行确认,然后按 Enter 键。

  3. 如需删除 vpc-ips VPC 网络,请运行以下命令:

    gcloud compute networks delete vpc-ips
    

后续步骤