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

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

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

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

控制台

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

    进入 VPC 网络页面

  2. 点击创建 VPC 网络

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

  4. 对于说明,输入 VPC network to set up intrusion detection and 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 detection and prevention service."
    
  2. 为 Cloud Shell 提供授权对话框中,点击授权

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

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

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

创建 Cloud Router 路由器和 Cloud NAT 网关

在下一部分中创建没有公共 IPv4 地址的客户端和服务器 Linux 虚拟机实例之前,您必须创建 Cloud Router 路由器和 Cloud NAT 网关,以便这些虚拟机能够访问公共互联网。

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud NAT 页面。

    进入 Cloud NAT

  2. 点击开始使用创建 Cloud NAT 网关

  3. 对于网关名称,输入 gateway-ips

  4. NAT 类型列表中,选择公共

  5. 选择 Cloud Router 路由器部分中,指定以下配置参数:

    • 网络vpc-ips
    • 区域asia-southeast1
    • Cloud Router 路由器创建新路由器
      1. 对于名称,输入 router-ips
      2. 点击创建
  6. 点击创建

gcloud

  1. 要创建 Cloud Router 路由器,请运行以下命令:

    gcloud compute routers create router-ips \
      --network=vpc-ips \
      --region=asia-southeast1
    
  2. 如需创建 Cloud NAT 网关,请运行以下命令:

    gcloud compute routers nats create gateway-ips \
      --router=router-ips \
      --region=asia-southeast1 \
      --auto-allocate-nat-external-ips \
      --nat-all-subnet-ip-ranges
    

创建虚拟机实例

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

创建服务器虚拟机实例

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

控制台

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

    转到“创建实例”

  2. 机器配置窗格中,执行以下操作:

    1. 对于名称,输入 vm-server-ips
    2. 对于区域,请选择 asia-southeast1 (Singapore)
    3. 对于可用区,请选择 asia-southeast1-a
  3. 在导航菜单中,点击操作系统和存储空间

    操作系统和存储空间部分,验证映像是否为 Debian GNU/Linux 12 (bookworm)。如果不是,请点击更改,然后将操作系统字段设置为 Debian,将版本字段设置为 Debian GNU/Linux 12 (bookworm)

  4. 在导航菜单中,点击网络

    1. 网络接口部分中,点击 default 并指定以下配置参数:
      • 网络vpc-ips
      • 子网subnet-ips-server IPv4 (10.0.0.0/24)
      • 外部 IPv4 地址
    2. 点击完成
  5. 在导航菜单中,点击高级,然后在启动脚本字段中输入以下脚本:

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

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

gcloud

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

gcloud compute instances create vm-server-ips \
    --network vpc-ips \
    --zone asia-southeast1-a \
    --subnet subnet-ips-server \
    --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-ips-client 中创建一个虚拟机实例。

控制台

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

    转到“创建实例”

  2. 机器配置窗格中,执行以下操作:

    1. 对于名称,输入 vm-client-ips
    2. 对于区域,请选择 us-central1 (Iowa)
    3. 对于可用区,请选择 us-central1-a
  3. 在导航菜单中,点击网络

    1. 网络接口部分中,点击 default 并指定以下配置参数:
      • 网络vpc-ips
      • 子网subnet-ips-client IPv4 (192.168.10.0/24)
    2. 点击完成
  4. 点击创建

gcloud

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

gcloud compute instances create vm-client-ips \
    --network vpc-ips \
    --zone us-central1-a \
    --subnet subnet-ips-client \
    --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 detection and 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 detection and 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 detection and 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 detection and 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