在 AWS 上部署 Threat Defense Virtual Auto Scale 解决方案

本文档介绍如何在 AWS 上部署 threat defense virtual Auto Scale 解决方案。

关于 AWS 上的 Threat Defense Virtual Auto Scale 解决方案

部署在公共云环境(例如 AWS)中的 threat defense virtual 实例支持偶尔遇到网络流量高峰和低谷的应用。流量高峰可能会导致部署的 Threat Defense Virtual 实例数量不足以检查网络流量。流量下降可能导致 Threat Defense Virtual 实例空闲,从而导致不必要的运营成本。

Auto Scale 解决方案可帮助组织在出现流量高峰时自动按比例增加 Threat Defense Virtual 实例的数量,并在流量停滞期间按比例缩小实例数量。这样可以有效地处理网络资源并降低运营成本。

AWS 中的 threat defense virtual Auto Scale 是完整的无服务器实现(此功能的自动化不涉及辅助虚拟机),它可以将自动扩展功能加入到 AWS 环境中的 threat defense virtual 实例。

从版本 6.4 开始,在管理中心管理的 threat defense virtual 上支持基于网络负载均衡器 (NLB) 的自动扩展解决方案。从版本 7.2 开始,还支持基于网关负载均衡器 (GWLB) 的自动扩展解决方案。

Cisco 提供 CloudFormation 模板和脚本,用于使用多个 AWS 服务部署 threat defense virtual 防火墙的自动扩展组,包括 Lambda、自动扩展组、弹性负载均衡 (ELB)、Amazon S3 存储桶、SNS 和 CloudWatch。

threat defense virtual Auto Scale 解决方案是基于 CloudFormation 模板的部署,可提供:

  • 管理中心 中完全自动化的 threat defense virtual实例注册和取消注册。

  • 自动应用到外向扩展 threat defense virtual实例的 NAT 策略、访问控制策略和路由。

  • 对负载均衡器和多可用性区域的支持。

  • 仅适用于 管理中心;不支持 设备管理器

Auto Scale 增强功能(版本 6.7)

  • 自定义指标发布方 ― 新的 lambda 函数每 2 分钟轮询一次 管理中心 以获取 Auto Scale 组中所有 threat defense virtual 实例的内存消耗情况,然后将值发布到 CloudWatch 指标;有关说明,请参阅。

  • 提供了基于内存消耗的新扩展策略。

  • 用于连接 管理中心Threat Defense Virtual专用 SSH 和安全隧道 IP 连接。

  • 管理中心 配置验证。

  • 支持在 ELB 上打开更多侦听端口。

  • 修改为单堆栈部署。所有 lambda 函数和 AWS 资源都从单堆栈进行部署,以便简化部署。

使用 NLB 的 Auto Scale 解决方案

由于 AWS 负载均衡器只允许入站发起的连接,因此只允许外部生成的流量通过 Cisco Threat Defense Virtual 防火墙传入内部。

面向互联网的负载均衡器可以是网络负载均衡器或应用程序负载均衡器。在两种情况下,所有 AWS 要求和条件均适用。如下图拓扑示例所示,虚线右侧通过 Threat Defense Virtual 模板进行部署。左侧由用户定义。



应用程序发起的出站流量将不会经过 Threat Defense Virtual。


基于端口的流量分叉是可能的。这可以通过 NAT 规则实现;请参阅在管理中心中创建主机对象添加设备组配置和部署 NAT 策略创建基本访问控制策略创建基本访问控制策略。例如,面向互联网的 LB DNS、端口:80 上的流量可以路由到应用程序 1;端口:88 流量可路由到应用程序 2。

拓扑示例

图 1. 使用 NLB 的 Threat Defense Virtual Auto Scale 解决方案

使用 NLB 部署 Auto Scale 解决方案的端到端流程

以下流程图说明了在 Amazon Web 服务 (AWS) 上使用 NLB 部署 threat defense virtual 自动扩展解决方案的工作流程。

工作空间

步骤

本地主机

从 GitHub 下载所需的文件

Amazon CloudFormation 控制台

使用 NLB 的 Auto Scale 解决方案 - 在 Amazon CloudFormation 控制台上自定义和部署 NLB 基础设施模板

管理中心

在管理中心配置网络基础设施

本地主机

更新 configuration.json 文件

本地主机

使用 AWS CLI 配置基础设施组件

本地主机

创建目标文件夹

本地主机

将文件上传到 Amazon S3 存储桶

Amazon CloudFormation 控制台

支持 NLB 的 Auto Scale 解决方案 - 部署支持 NLB 的 Auto Scale 解决方案

Amazon EC2 控制台

编辑 Auto Scale 组

Amazon VPC 控制台

为 VPC 配置路由

使用网关负载均衡器的 Auto Scale 解决方案

AWS 网关负载均衡器 (GWLB) 允许入站和出站连接。因此,允许内部和外部生成的流量通过 Threat Defense Virtual 防火墙。

GWLB 终端会将流量发送到 GWLB,然后发送到 Threat Defense Virtual 进行检测。在两种情况下,所有 AWS 要求和条件均适用。如使用案例图中所示,虚线右侧是通过 Threat Defense Virtual 模板部署的 Threat Defense Virtual GWLB Autoscale 解决方案。左侧完全由用户定义。

拓扑示例

图 2. 使用 GWLB 的 Threat Defense Virtual Auto Scale 解决方案

使用 GWLB 部署 Auto Scale 解决方案的端到端流程

以下流程图说明了在 Amazon Web 服务 (AWS) 上使用 GWLB 部署 threat defense virtual 自动扩展解决方案的工作流程。

工作空间

步骤

本地主机

从 GitHub 下载所需的文件

Amazon CloudFormation 控制台

使用 GWLB 的 Auto Scale 解决方案 - 在 Amazon CloudFormation 控制台上自定义和部署 GWLB 基础设施模板

管理中心

在管理中心配置网络基础设施

本地主机

更新 configuration.json 文件

本地主机

使用 AWS CLI 配置基础设施组件

本地主机

创建目标文件夹

本地主机

将文件上传到 Amazon S3 存储桶

Amazon CloudFormation 控制台

支持 GWLB 的 Auto Scale 解决方案 - 部署支持 GWLB 的 Auto Scale 解决方案

Amazon EC2 控制台

编辑 Auto Scale 组

Amazon VPC 控制台

带有 GWLB 的 Auto Scale 解决方案 - 创建 GWLB 终端

Amazon VPC 控制台

为 VPC 配置路由

Threat Defense Virtual和 AWS 的准则和限制

许可

  • 支持使用 Cisco 智能许可证帐户的 BYOL(自带许可证)。

  • PAYG(即付即用)许可,一种基于使用的计费模式,允许客户在不购买 Cisco 智能许可的情况下运行 threat defense virtual。对于已注册的 PAYG threat defense virtual 设备,将启用所有许可的功能(恶意软件/威胁/URL 过滤/VPN 等)。许可的功能无法从 管理中心 编辑或修改。(版本 6.5+)


    Note


    设备管理器 模式下部署的 threat defense virtual 设备上不支持 PAYG 许可。


有关许可 threat defense virtual 设备时的准则,请参阅《防火墙管理中心管理指南》中的“许可证”一章。

Threat Defense Virtual 智能许可的性能级别

Threat Defense Virtual 版本 7.0.0 发布开始,threat defense virtual 支持性能级许可,该级别许可可基于部署要求提供不同的吞吐量级别和 VPN 连接限制。

Table 1. 基于授权的 Threat Defense Virtual 许可功能限制

性能层

设备规格(核心/RAM)

速率限制

RA VPN 会话限制

FTDv5

4 核/8 GB

100 Mbps

50

FTDv10

4 核/8 GB

1 Gbps

250

FTDv20

4 核/8 GB

3 Gbps

250

FTDv30

8 核/16 GB

5 Gbps

250

FTDv50

12 核/24 GB

10 Gbps

750

FTDv100

16 核/34 GB

16 Gbps

10,000

最佳实践

前提条件

  • 一个 AWS 账户。您可以在 http://aws.amazon.com/ 创建一个。

  • 需要 SSH 客户端(例如,Windows 上的 PuTTY 或 macOS 上的终端)才能访问 Threat Defense Virtual 控制台。

  • 思科智能账户。您可以在 Cisco 软件中心 https://software.cisco.com/ 创建一个。

  • 用于下载配置文件和模板的 GitHub 帐户。

  • Threat Defense Virtual 接口要求:

    • 管理接口 (2) - 一个用于连接 Threat Defense Virtual 和管理中心,第二个用于诊断;无法用于直通流量。

    • 您可以选择为管理中心管理配置数据接口,而非管理接口。管理接口是数据接口管理的前提条件,因此您仍需要在初始设置中对其进行配置。请注意,在高可用性部署中,不支持从数据接口进行管理中心访问。有关为管理中心访问配置数据接口的详细信息,请参阅 FTD 命令参考中的配置网络管理数据接口命令。

    • 流量接口 (2) - 用于将 Threat Defense Virtual 连接到内部主机和公共网络。

  • 通信路径 - 用于访问 threat defense virtual 的公共/弹性 IP。

设置具有 GWLB 或 NLB 的 Auto Scale 解决方案所需的组件

以下组件构成了 Auto Scale 解决方案。

CloudFormation 模板

CloudFormation 模板用于部署在 AWS 中设置 Auto Scale 解决方案所需的资源。该模板包括以下各项:

  • Auto Scale 组、负载均衡器、安全组和其他各种组件。

  • 模板需要用户输入来自定义部署。



    模板在验证用户输入方面有限制,因此,用户应负责在部署期间验证输入。


Lambda 函数

Auto Scale 解决方案是在 Python 中开发的一组 Lambda 函数,可以通过生命周期钩子、SNS、CloudWatch 事件/警报事件触发。基本功能包括:

  • 向实例添加/删除 Diag、Gig0/0 和 Gig 0/1 接口。

  • 向负载均衡器的目标组注册 Gig0/1 接口。

  • 管理中心 注册新的 threat defense virtual

  • 通过 管理中心 配置并部署新的 threat defense virtual

  • 管理中心 取消注册(删除)内向扩展的 threat defense virtual

  • 管理中心 发布内存指标。

Lambda 函数以 Python 包的形式交付给客户。

生命周期钩子

  • 生命周期钩子用于获取关于实例的生命周期更改通知。

  • 在启动实例时,生命周期钩子用于触发 Lambda 函数,可将接口添加到 threat defense virtual 实例,并将外部接口 IP 注册到目标组。

  • 在终止实例时,生命周期钩子用于触发 Lambda 函数,以便从目标组取消注册 threat defense virtual 实例。

Simple Notification Service (SNS)

  • 来自 AWS 的 Simple Notification Service (SNS) 用于生成事件。

  • 受限于 AWS 中的无服务器 Lambda 函数没有适合的编排器,因此该解决方案使用 SNS 作为一种函数链,以便基于事件来编排 Lambda 函数。

VPC

您应根据应用程序要求创建 VPC。预计 VPC 具有一个互联网网关,而且至少有一个通过到互联网的路由连接的子网。有关安全组、子网等的要求,请参阅相应的部分。

安全组

在提供的 Auto Scale 组模板中允许所有连接。只需以下连接即可使 Auto Scale 解决方案发挥作用。

端口

使用方式

子网

8305

管理中心到 Threat Defense Virtual 安全隧道的连接

管理子网

运行状况探测端口(默认:8080)

面向互联网的负载均衡器运行状况探测器

外部、内部子网

应用程序端口

应用程序数据流量

外部、内部子网

管理中心实例的安全组或 ACL

需要这些信息才能在 lambda 函数和管理中心之间建立 HTTPS 连接。由于 lambda 函数将保存在以 NAT 网关作为默认路由的 lambda 子网中,因此应允许管理中心从 NAT 网关 IP 地址进行 HTTPS 入站连接。

子网

可以根据需要创建符合应用程序要求的子网。Threat Defense Virtual 需要 3 个子网才能运行。



如果需要多个可用性区域支持,则每个区域都需要子网,因为子网是 AWS 云中的区域属性。


外部子网

外部子网应该具有能够通过“0.0.0.0/0”连接互联网网关的默认路由。这将包含 Threat Defense Virtual 的外部接口,而面向互联网的 NLB 将位于此子网中。

内部子网

这可能与具有或没有 NAT/互联网网关的应用程序子网类似。请注意,对于 Threat Defense Virtual 运行状况探测,应该可以通过端口 80 到达 AWS 元数据服务器 (169.254.169.254)。



在此 Auto Scale 解决方案中,负载均衡器运行状况探测器会通过 inside/ Gig0/0 接口重定向到 AWS 元数据服务器。但是,您可以使用自己的应用为从负载均衡器发送到 Threat Defense Virtual 的运行状况探测连接进行更改。在这种情况下,您需要将 AWS 元数据服务器对象替换为应用 IP 地址,以提供运行状况探测响应。


管理子网

此子网包括 Threat Defense Virtual 管理接口。如果在此子网上使用管理中心,则为 Threat Defense Virtual 分配弹性 IP 地址 (EIP) 是可选的。诊断接口也位于此子网上。

Lambda 子网

AWS Lambda 函数需要使用 NAT 网关作为默认网关的两个子网。这使得 Lambda 函数将专用于 VPC。Lambda 子网不需要像其他子网一样的带宽。

应用程序子网

Auto Scale 解决方案对该子网没有限制,但如果应用程序需要 VPC 以外的出站连接,则应在该子网上配置相应的路由。这是因为出站发起的流量不会穿过负载均衡器。有关详细信息,请参阅《AWS 弹性负载均衡用户指南》。

无服务器组件

S3 桶

Amazon Simple Storage Service (Amazon S3) 是一项可提供行业领先可扩展性、数据可用性、安全性和性能的对象存储服务。您可以将所有必需的文件放在 S3 存储桶中。

部署模板时,将引用 S3 存储桶中的 zip 文件创建 Lambda 函数。因此,S3 存储桶应该能够供用户帐户访问。

GitHub 上的 CloudFormation 模板

为支持的 Auto Scale 解决方案提供了两组模板 - 一组用于使用网络负载均衡器 (NLB) 来设置 Auto Scale 解决方案,另一组用于使用网关负载均衡器 (GWLB) 来设置 Auto Scale 解决方案。

使用网络负载均衡器的 Auto Scale 解决方案

GitHub 上提供了以下模板

表 2. 模板参数列表

参数

允许的值/类型

说明

PodNumber

字符串允许的模式:'^\d{1,3}$'

这是 pod 号。这将作为 Auto Scale 组名称 (threat defense virtual-Group-Name) 的后缀。例如,如果此值为“1”,则组名称将为 threat defense virtual-Group-Name-1

它应至少为 1 个数字,但不超过 3 个数字。默认值:1。

AutoscaleGrpNamePrefix

字符串

这是 Auto Scale 组名称前缀。pod 号将作为后缀添加。

最大:18 个字符

示例:Cisco-threat defense virtual-1。

NotifyEmailID

字符串

Auto Scale 事件将被发送到此电子邮件地址。您需要接受订用电子邮件请求。

示例:admin@company.com。

VpcId

字符串

需要部署设备的 VPC ID。它应根据 AWS 要求配置。

类型:AWS::EC2::VPC::Id

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

LambdaSubnets

列表

将部署 Lambda 函数的子网。

类型:List<AWS::EC2::Subnet::Id>

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

LambdaSG

列表

Lambda 函数的安全组。

类型:List<AWS::EC2::SecurityGroup::Id>

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

S3BktName

字符串

文件的 S3 存储桶名称。应根据 AWS 要求在您的帐户中配置此项。

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

LoadBalancerType

字符串

面向互联网的负载均衡器类型,可以是“application”或“network”。

示例:application

LoadBalancerSG

字符串

负载均衡器的安全组。如果是网络负载均衡器,则不会使用它。但您应提供一个安全组 ID。

类型:List<AWS::EC2::SecurityGroup::Id>

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

LoadBalancerPort

整数

负载均衡器端口。此端口将在 LB 上以 HTTP/HTTPS 或 TCP/TLS 作为协议,并根据所选的负载均衡器类型打开。

确保端口是有效的 TCP 端口,它将用于创建负载均衡器侦听程序。

默认值:80

SSL证书

字符串

用于安全端口连接的 SSL 证书 ARN。如果未指定,则在负载均衡器上开启的端口将为 TCP/HTTP。如果已指定,则在负载均衡器上开启的端口将为 TLS/HTTPS。

TgHealthPort

整数

此端口供目标组用于运行状况探测。在 Threat Defense Virtual 上到达此端口的运行状况探测将被路由到 AWS 元数据服务器,并且不应用于流量。它应该是有效的 TCP 端口。

如果您希望应用本身回复运行状况探测,则可以为 Threat Defense Virtual 相应地更改 NAT 规则。在这种情况下,如果应用不响应,Threat Defense Virtual 将被标记为运行状况不正常,并会由于实例运行状况不佳警报而被删除。

示例:8080

AssignPublicIP

布尔值

如果选择“true”,则将分配公共 IP。如果是 BYOL 类型的 Threat Defense Virtual,则需要它才能连接到 https://tools.cisco.com。

示例:TRUE

InstanceType

字符串

Amazon Machine Image (AMI) 支持不同的实例类型,这些实例类型将决定实例的大小和所需的内存量。

只应使用支持 Threat Defense Virtual 的 AMI 实例类型。

示例:c4.2xlarge

LicenseType

字符串

Threat Defense Virtual 许可证类型,可以是 BYOL 或 PAYG。确保相关的 AMI ID 具有相同的许可类型。

示例:BYOL

AmiId

字符串

Threat Defense Virtual AMI ID(有效的 Cisco Threat Defense Virtual AMI ID)。

类型:AWS::EC2::Image::Id

请根据地区和所需的映像版本选择正确的 AMI ID。Auto Scale 功能支持版本 6.4+、BYOL/PAYG 映像。在两种情况下,您都应在 AWS Marketplace 中接受许可证。

如果是 BYOL,请使用诸如“BASE”、“MALWARE”、“THREAT”、“URLFilter”等功能更新 Configuration JSON 中的“licenseCaps”键值。

NoOfAZs

整数

Threat Defense Virtual 应跨越的可用性区域数,介于 1 到 3 之间。如果是 ALB 部署,根据 AWS 的要求,最小值为 2。

示例:2

ListOfAzs

逗号分隔的字符串

按顺序列出的逗号分隔区域列表。

 

它们的列出顺序十分重要。应按相同的顺序给出子网列表。

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

示例:us-east-1a, us-east-1b, us-east-1c

MgmtInterfaceSG

字符串

Threat Defense Virtual 管理接口的安全组。

类型:List<AWS::EC2::SecurityGroup::Id>

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

InsideInterfaceSG

字符串

Threat Defense Virtual 内部接口的安全组。

类型:AWS::EC2::SecurityGroup::Id

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

OutsideInterfaceSG

字符串

Threat Defense Virtual 外部接口的安全组。

类型:AWS::EC2::SecurityGroup::Id

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

示例:sg-0c190a824b22d52bb

MgmtSubnetId

逗号分隔列表

逗号分隔的管理子网 ID 列表。此列表应与相应的可用性区域顺序相同。

类型:List<AWS::EC2::SecurityGroup::Id>

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

InsideSubnetId

逗号分隔列表

逗号分隔的内部 /Gig0/0 子网 ID 列表。此列表应与相应的可用性区域顺序相同。

类型:List<AWS::EC2::SecurityGroup::Id>

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

OutsideSubnetId

逗号分隔列表

逗号分隔的外部 /Gig0/1 子网 ID 列表。此列表应与相应的可用性区域顺序相同。

类型:List<AWS::EC2::SecurityGroup::Id>

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

KmsArn

字符串

现有 KMS(用于静态加密的 AWS KMS 密钥)的 ARN。如果指定,管理中心和 Threat Defense Virtual 密码应加密。密码加密应仅使用指定的 ARN 进行。

生成加密密码示例:“aws kms encrypt --key-id <KMS ARN> --纯文本 <密码>” 请按照所示使用生成的密码。

示例:arn:aws:kms:us-east-1:[AWS Account]:key/7d586a25-5875-43b1-bb68-a452e2f6468e

ngfwPassword

字符串

所有 Threat Defense Virtual 实例都提供一个默认密码,该密码在启动模板(Autoscale 组)的 Userdata 字段中输入。

一旦 Threat Defense Virtual 可访问,此输入会将密码更改为新提供的密码。

如果未使用 KMS ARN,请使用纯文本密码。如果使用 KMS ARN,则应使用加密的密码。

示例:Cisco123789! 或 AQIAgcQFAGtz/hvaxMtJvY/x/rfHnI3lPpSXU

fmcServer

数字字符串

用于管理 Threat Defense Virtual 的 IP 地址,Lambda 函数和 Threat Defense Virtual 管理接口均可访问该地址。

示例:10.10.17.21

fmcOperationsUsername

字符串

在管理 Threat Defense Virtual 时创建的网络管理员或更高权限用户。请参阅《Cisco Secure Firewall Management Center 设备配置指南》中有关创建用户和角色的信息。

示例:apiuser-1

fmcOperationsPassword

字符串

如果未提及 KMS ARN,请使用纯文本密码。如果已提及,则应使用加密的密码。

示例:Cisco123@ 或 AQICAHgcQAtz/hvaxMtJvY/x/rnKI3clFPpSXUHQRnCAajB

fmcDeviceGrpName

字符串

管理中心设备组名称。

示例:AWS-Cisco-NGFW-VMs-1

fmc 性能许可证层

字符串

Management Center Virtual 上注册 threat defense virtual 设备时使用的性能层许可证。

允许的值:FTDv/FTDv5/FTDv10/FTDv20/FTDv30/FTDv50/FTDv100

fmcPublishMetrics

布尔值

如果设置为“TRUE”,则将创建一个 Lambda 函数,该函数每 2 分钟运行一次,将获取所提供的设备组中已注册 Threat Defense Virtual 传感器的内存消耗情况。

允许的值:TRUE、FALSE

示例:TRUE

fmcMetricsUsername

字符串

用于向 AWS CloudWatch 进行指标发布的唯一管理中心用户名。请参阅《Cisco Secure Firewall Management Center 设备配置指南》中有关创建用户和角色的信息。

如果将“fmcPublishMetrics”设置为“FALSE”,则无需提供此输入。

示例:publisher-1

fmcMetricsPassword

字符串

用于向 AWS CloudWatch 进行指标发布的管理中心密码。如果未提及 KMS ARN,请使用纯文本密码。如果已提及,则应使用加密的密码。

如果将“fmcPublishMetrics”设置为“FALSE”,则无需提供此输入。

示例:Cisco123789!

CpuThresholds

逗号分隔的整数

下限 CPU 阈值和上限 CPU 阈值。最小值为 0,最大值为 99。

默认值:10、70

请注意,下限阈值应小于上限阈值。

示例:30、70

MemoryThresholds

逗号分隔的整数

下限 MEM 阈值和上限 MEM 阈值。最小值为 0,最大值为 99。

默认值:40、70

请注意,下限阈值应小于上限阈值。如果“fmcPublishMetrics”参数为“FALSE”,则它不起作用。

示例:40、50

实例元数据服务版本

布尔值

要为 Threat Defense Virtual 实例启用的实例元数据数据服务 (IMDS) 版本。

  • V1 和 V2(令牌可选):启用 IMDSv1 或 IMDSv2 或 IMDSv1 和 IMDSv2 API 调用的组合。

  • 仅 V2(需要令牌):仅启用 IMDSv2 模式。

 

Threat Defense Virtual 版本 7.6 及更高版本仅支持 IMDSv2 服务。

如果要为 7.6 以前的版本启用 IMDSv2 服务,则必须选择 IMDSv1 和 IMDSv2 V1 和 V2(可选令牌)参数组合。

 

如果您使用的是自定义模板(非思科提供),请注意,您必须在模板的 MetadataOptions 下包含 HttpEndpoint: enabledHttpTokens: required 属性,然后才能启用 IMDSv2 必需模式。

使用网关负载均衡器的 Auto Scale 解决方案

GitHub 上提供了以下模板:

表 3. 模板参数列表

参数

允许的值/类型

说明

DeploymentType 字符串

帮助处理从 threat defense virtual 到 GWLB 或互联网流量的部署类型。

  • 单臂:此部署类型启用 threat defense virtual 以在检测后将流量返回到 AWS GWLB(掉头)。默认情况下,如果未指定,则代理类型设置为单臂。

  • 双臂:此部署类型使 threat defense virtual 能够执行网络地址转换 (NAT),然后将出站流量从其外部接口通过 NAT 网关转发到互联网。

PodNumber

字符串

允许的模式:'^\d{1,3}$'

这是 pod 号。这将作为 Auto Scale 组名称 (threat defense virtual-Group-Name) 的后缀。例如,如果此值为“1”,则组名称将为 threat defense virtual-Group-Name-1。

它应至少为 1 个数字,但不超过 3 个数字。默认值:1

AutoscaleGrpNamePrefix

字符串

这是 Auto Scale 组名称前缀。pod 号将作为后缀添加。

最大:18 个字符

示例:Cisco-threat defense virtual-1

NotifyEmailID

字符串

Auto Scale 事件将被发送到此电子邮件地址。您需要接受订用电子邮件请求。

示例:admin@company.com

VpcId

字符串

需要部署设备的 VPC ID。它应根据 AWS 要求配置。

类型:AWS::EC2::VPC::Id

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

LambdaSubnets

列表

将部署 Lambda 函数的子网。

类型:List<AWS::EC2::Subnet::Id>

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

LambdaSG

列表

Lambda 函数的安全组。

类型:List<AWS::EC2::SecurityGroup::Id>

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

S3BktName

字符串

文件的 S3 存储桶名称。应根据 AWS 要求在您的帐户中配置此项。

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

LoadBalancerType

字符串

面向互联网的负载均衡器类型,可以是“application”或“network”。

示例:application

LoadBalancerSG

字符串

负载均衡器的安全组。如果是网络负载均衡器,则不会使用它。但您应提供一个安全组 ID。

类型:List<AWS::EC2::SecurityGroup::Id>

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

LoadBalancerPort

整数

负载均衡器端口。此端口将在 LB 上以 HTTP/HTTPS 或 TCP/TLS 作为协议,并根据所选的负载均衡器类型打开。

确保端口是有效的 TCP 端口,它将用于创建负载均衡器侦听程序。

默认值:80

SSL证书

字符串

用于安全端口连接的 SSL 证书 ARN。如果未指定,则在负载均衡器上开启的端口将为 TCP/HTTP。如果已指定,则在负载均衡器上开启的端口将为 TLS/HTTPS。

TgHealthPort

整数

此端口供目标组用于运行状况探测。在 threat defense virtual 上到达此端口的运行状况探测将被路由到 AWS 元数据服务器,并且不应用于流量。它应该是有效的 TCP 端口。

如果您希望应用本身回复运行状况探测,则可以为 threat defense virtual 相应地更改 NAT 规则。在这种情况下,如果应用不响应,threat defense virtual 将被标记为运行状况不正常,并会由于实例运行状况不佳警报而被删除。

示例:8080

AssignPublicIP

布尔值

如果选择“true”,则将分配公共 IP。如果是 BYOL 类型 threat defense virtual,则需要它才能连接到 https://tools.cisco.com。

示例:TRUE

InstanceType

字符串

Amazon Machine Image (AMI) 支持不同的实例类型,这些实例类型将决定实例的大小和所需的内存量。

只应使用支持 threat defense virtual 的 AMI 实例类型。

示例:c4.2xlarge

LicenseType

字符串

threat defense virtual 许可证类型,可以是 BYOL 或 PAYG。确保相关的 AMI ID 具有相同的许可类型。

示例:BYOL

AmiId

字符串

threat defense virtual AMI ID(有效的思科 threat defense virtual AMI ID)。

类型:AWS::EC2::Image::Id

请根据地区和所需的映像版本选择正确的 AMI ID。Auto Scale 功能支持版本 6.4+、BYOL/PAYG 映像。在两种情况下,您都应在 AWS Marketplace 中接受许可证。

如果是 BYOL,请使用诸如“BASE”、“MALWARE”、“THREAT”、“URLFilter”等功能更新 Configuration JSON 中的“licenseCaps”键值。

NoOfAZs

整数

threat defense virtual 应跨越的可用性区域数,介于 1 到 3 之间。如果是 ALB 部署,根据 AWS 的要求,最小值为 2。

示例:2

ListOfAzs

逗号分隔的字符串

按顺序列出的逗号分隔区域列表。

 

它们的列出顺序十分重要。应按相同的顺序给出子网列表。

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

示例:us-east-1a, us-east-1b, us-east-1c

MgmtInterfaceSG

字符串

threat defense virtual 管理接口的安全组。

类型:List<AWS::EC2::SecurityGroup::Id>

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

InsideInterfaceSG

字符串

threat defense virtual 内部接口的安全组。

类型:AWS::EC2::SecurityGroup::Id

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

OutsideInterfaceSG

字符串

threat defense virtual 外部接口的安全组。

类型:AWS::EC2::SecurityGroup::Id

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

示例:sg-0c190a824b22d52bb

MgmtSubnetId

逗号分隔列表

逗号分隔的管理子网 ID 列表。此列表应与相应的可用性区域顺序相同。

类型:List<AWS::EC2::SecurityGroup::Id>

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

InsideSubnetId

逗号分隔列表

逗号分隔的内部 /Gig0/0 子网 ID 列表。此列表应与相应的可用性区域顺序相同。

类型:List<AWS::EC2::SecurityGroup::Id>

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

OutsideSubnetId

逗号分隔列表

逗号分隔的外部 /Gig0/1 子网 ID 列表。此列表应与相应的可用性区域顺序相同。

类型:List<AWS::EC2::SecurityGroup::Id>

如果使用“infrastructure.yaml”文件来部署基础架构,堆栈的输出部分将具有此值。请使用该值。

KmsArn

字符串

现有 KMS(用于静态加密的 AWS KMS 密钥)的 ARN。如已指定,管理中心threat defense virtual 密码应加密。密码加密应仅使用指定的 ARN 进行。

生成加密密码示例:“aws kms encrypt --key-id <KMS ARN> --纯文本 <密码>” 请按照所示使用生成的密码。

示例:arn:aws:kms:us-east-1:[AWS Account]:key/7d586a25-5875-43b1-bb68-a452e2f6468e

ngfwPassword

字符串

所有 threat defense virtual 实例都提供一个默认密码,该密码在启动模板(Autoscale 组)的 Userdata 字段中输入。

一旦 threat defense virtual 可访问,此输入会将密码更改为新提供的密码。

如果未使用 KMS ARN,请使用纯文本密码。如果使用 KMS ARN,则应使用加密的密码。

示例:Cisco123789! 或 AQIAgcQFAGtz/hvaxMtJvY/x/rfHnI3lPpSXU

fmcServer

数字字符串

用于管理 管理中心 的 IP 地址,Lambda 函数和 threat defense virtual 管理接口均可访问该地址。

示例:10.10.17.21

fmcOperationsUsername

字符串

在管理 管理中心 时创建的网络管理员或更高权限用户。请参阅《Cisco Secure Firewall Management Center 设备配置指南》中有关创建用户和角色的信息。

示例:apiuser-1

fmcOperationsPassword

字符串

如果未提及 KMS ARN,请使用纯文本密码。如果已提及,则应使用加密的密码。

示例:Cisco123@ 或 AQICAHgcQAtz/hvaxMtJvY/x/rnKI3clFPpSXUHQRnCAajB

fmcDeviceGrpName

字符串

管理中心 设备组名称。

示例:AWS-Cisco-NGFW-VMs-1

fmc 性能许可证层

字符串

Management Center Virtual 上注册 threat defense virtual 设备时使用的性能层许可证。

允许的值:FTDv/FTDv20/FTDv30/FTDv50/FTDv100

 

FTDv5 和 FTDv10 性能级别许可证不支持与 AWS 网关负载均衡器配合使用。

fmcPublishMetrics

布尔值

如果设置为“TRUE”,则将创建一个 Lambda 函数,该函数每 2 分钟运行一次,将获取所提供的设备组中已注册 threat defense virtual 传感器的内存消耗情况。

允许的值:TRUE、FALSE

示例:TRUE

fmcMetricsUsername

字符串

用于向 AWS CloudWatch 进行指标发布的唯一 管理中心 用户名。请参阅《Cisco Secure Firewall Management Center 设备配置指南》中有关创建用户和角色的信息。

如果将“fmcPublishMetrics”设置为“FALSE”,则无需提供此输入。

示例:publisher-1

fmcMetricsPassword

字符串

用于向 AWS CloudWatch 进行指标发布的 管理中心 密码。如果未提及 KMS ARN,请使用纯文本密码。如果已提及,则应使用加密的密码。

如果将“fmcPublishMetrics”设置为“FALSE”,则无需提供此输入。

示例:Cisco123789!

CpuThresholds

逗号分隔的整数

下限 CPU 阈值和上限 CPU 阈值。最小值为 0,最大值为 99。

默认值:10、70

请注意,下限阈值应小于上限阈值。

示例:30、70

MemoryThresholds

逗号分隔的整数

下限 MEM 阈值和上限 MEM 阈值。最小值为 0,最大值为 99。

默认值:40、70

请注意,下限阈值应小于上限阈值。如果“fmcPublishMetrics”参数为“FALSE”,则它不起作用。

示例:40、50

实例元数据服务版本

布尔值

要为 Threat Defense Virtual 实例启用的实例元数据数据服务 (IMDS) 版本:

  • V1 和 V2(令牌可选):启用 IMDSv1、IMDSv2 或 IMDSv1 和 IMDSv2 API 调用的组合。

  • 仅 V2(需要令牌):仅启用 IMDSv2 模式。

 

Threat Defense Virtual 7.6 及更高版本仅支持 IMDSv2。

如果要为 7.6 以前的版本启用 IMDSv2 服务,则必须选择 IMDSv1 和 IMDSv2 V1 和 V2(可选令牌)参数组合。

 

如果您使用的是自定义模板(非思科提供),请注意,您必须在模板的 MetadataOptions 下包含 HttpEndpoint: enabledHttpTokens: required 属性,然后才能启用 IMDSv2 必需模式。

将所需文件和 CFT 从 GitHub 下载到本地主机

GitHub 下载 lambda-python-files 文件夹。此文件夹包含以下文件:

  • 用于创建 Lambda 层的 Python (.py) 文件。

  • 一个 configuration.json 文件,用于根据需要添加静态路由和自定义任何网络参数。

GitHub 下载以下 CloudFormation 模板:

  • 使用 NLB 的 Auto Scale 解决方案的模板 -

    • Infrastructure.yaml - 用于自定义 AWS 环境中的组件。

    • deploy_ngfw_autoscale.yaml - 用于部署使用 NLB 的 AWS Auto Scale 解决方案。

  • 使用 GWLB 的 Auto Scale 解决方案模板 -

    • Infrastructure_gwlb.yaml - 用于自定义 AWS 环境中的组件。

    • deploy_ngfw_autoscale_with_gwlb.yaml - 用于部署具有 GWLB 的 AWS Auto Scale 解决方案。



尽可能收集模板参数的值。这样可以在 AWS 管理控制台上部署模板时更轻松快速地输入值。


使用 NLB 的 Auto Scale 解决方案 - 在 Amazon CloudFormation 控制台上自定义和部署 NLB 基础设施模板

如果您使用 NLB 来部署 Auto Scale 解决方案,请执行本节中提供的步骤。

过程


步骤 1

在 AWS 管理控制台上,转到服务 (Services) > 管理和治理 (Management and Governance) > CloudFormation,然后点击创建堆栈 (Create stack) > 使用新资源(标准)(With new resources[standard])

步骤 2

选择上传模板文件 (Upload a template file),点击选择文件 (Choose file),然后从下载文件的文件夹中选择 infrastructure.yaml

步骤 3

点击下一步

步骤 4

指定堆栈详细信息 (Specify stack details) 页面上,输入堆栈的名称。

步骤 5

infrastructure.yaml 模板中的输入参数提供值。

步骤 6

点击下一步

步骤 7

配置堆栈选项 (Configure Stack Options) 窗口中点击下一步 (Next)

步骤 8

查看 (Review) 页面上,查看并确认设置。

步骤 9

点击创建堆栈 (Create Stack) 以部署 infrastructure.yaml 模板并创建堆栈。

步骤 10

在部署完成后,转到输出 (Outputs) 并记下 S3 S3 Bucket Name


使用 GWLB 的 Auto Scale 解决方案 - 在 Amazon CloudFormation 控制台上自定义和部署 GWLB 基础设施模板

如果您使用 GWLB 来部署 Auto Scale 解决方案,请执行本节中提供的步骤。

过程


步骤 1

在 AWS 管理控制台上,转到服务 (Services) > 管理和治理 (Management and Governance) > CloudFormation,然后点击创建堆栈 (Create stack) > 使用新资源(标准)(With new resources[standard])

步骤 2

选择上传模板文件 (Upload a template file),点击选择文件 (Choose file),然后从下载文件的文件夹中选择 Infrastructure_gwlb.yaml

步骤 3

点击下一步

步骤 4

指定堆栈详细信息 (Specify stack details) 页面上,输入堆栈的名称。

步骤 5

infrastructure_gwlb.yaml 模板中的输入参数提供值。

步骤 6

点击下一步

步骤 7

配置堆栈选项 (Configure Stack Options) 窗口中点击下一步 (Next)

步骤 8

查看 (Review) 页面上,查看并确认设置。

步骤 9

点击创建堆栈 (Create Stack) 以部署 Infrastructure_gwlb.yaml 模板并创建堆栈。

步骤 10

在部署完成后,转到输出 (Outputs) 并记下 S3 S3 Bucket Name


在管理中心配置网络基础设施

在管理中心为已注册的 Threat Defense Virtual 创建和配置设备丢弃、对象、运行状况检查端口、NAT 策略和访问策略。

您可以使用管理中心来管理 Threat Defense Virtual,前者是位于单独服务器上功能齐全的多设备管理器。Threat Defense Virtual 向您分配给 Threat Defense Virtual 虚拟机的管理接口上的 Threat Defense Virtual 注册并与之通信。

有关详细信息,请参阅关于使用安全防火墙管理中心的虚拟安全防火墙威胁防御

用于 Threat Defense Virtual 配置的所有对象均应由用户创建。


重要


应创建一个设备组,然后应对其应用规则。设备组上应用的所有配置都将被推送到 Threat Defense Virtual 实例。


添加设备组

管理中心允许将设备分组,从而可以在多台设备上轻松部署策略和安装更新。您可以展开和折叠组中的设备列表。

过程


步骤 1

选择设备 > 设备管理

步骤 2

添加 (Add) 下拉菜单中,选择添加组 (Add Group)

步骤 3

要编辑现有的组,请点击要编辑的组的“编辑”(编辑图标)。

步骤 4

输入 Name

步骤 5

可用设备 (Available Devices) 下,选择一台或多台要添加到设备组的设备。点击的同时使用 CtrlShift 选择多台设备。

步骤 6

点击添加 (Add) 将所选设备包含在设备组中。

步骤 7

点击确定 (OK) 以添加组。


创建主机对象

开始之前

使用 AWS 网络负载均衡器 (NLB) 时,必须创建主机对象。但是,在使用网关负载均衡器 (GWLB) 时,无需在 AWS 中创建主机对象,因为 GWLB 提供透明的服务插入。

过程


步骤 1

登录管理中心。

步骤 2

选择对象 > 对象管理

步骤 3

从对象类型列表中选择网络 (Network)

步骤 4

添加网络 (Add Network) 下拉菜单中选择添加对象 (Add Object)

步骤 5

输入 Name

步骤 6

输入说明。

步骤 7

网络 (Network) 字段中,选择主机 (Host) 选项并输入以下值。

  1. 对象类型的名称,例如 aws-metadata-server

  2. 根据主机协议的类型,输入 IPv4 的以下 IP 地址:169.254.169.254

步骤 8

点击保存 (Save)


创建端口对象

开始之前

使用 AWS 网络负载均衡器 (NLB) 时,您必须创建端口对象。但是,在使用网关负载均衡器 (GWLB) 时,无需在 AWS 中创建端口对象,因为 GWLB 提供透明的服务插入。

过程


步骤 1

登录管理中心。

步骤 2

选择对象 > 对象管理

步骤 3

从对象类型列表中选择端口 (Port)

步骤 4

添加端口 (Add Port) 下拉菜单中选择添加对象 (Add Object)

步骤 5

输入 Name

步骤 6

选择协议 (Protocol)。您必须选择已为主机对象类型输入的协议。根据选择的协议,按端口 (Port) 进行限制,或者选择 ICMP 类型 (Type)代码 (Code)

步骤 7

输入 8080。请注意,您可以根据需要自定义在此处输入的端口号。

 

如果选择与所有协议匹配,则必须使用其他 (Other) 下拉列表按端口限制对象。

步骤 8

点击保存 (Save)


创建安全区域和接口组对象

过程


步骤 1

选择对象 > 对象管理

步骤 2

从对象类型列表中选择接口

步骤 3

点击添加 (Add) > 安全区域 (Security Zone)添加 (Add) > 接口组 (Interface Group)

步骤 4

输入 名称 - inside-sz/outside-sz

步骤 5

选择接口类型 (Interface Type) - 已路由 (Routed)

步骤 6

点击保存 (Save)


为运行状况检查探测器启用端口

您可以为运行状况检查探测启用端口 22 (SSH) 或端口 443 (HTTP)。

为运行状况检查探测器启用端口 22 (SSH)

如果将端口 22 (SSH) 用于运行状况检查探测,请执行以下程序为运行状况检查探测启用端口。

过程

步骤 1

选择设备 (Devices) > 平台设置 (Platform Settings) > SSH 访问 (SSH Access)

步骤 2

点击 + 添加

步骤 3

从下拉列表中选择任意 IP 地址

步骤 4

可用区域/接口 (Available Zones/Interfaces) 窗口中,选择连接到 GWLB 的外部接口或外部子网。

步骤 5

点击添加 (Add) 以将该接口添加到所选区域/接口 (Selected Zones/Interfaces) 窗口。

步骤 6

点击确定 (OK)

步骤 7

点击保存 (Save)


为运行状况检查探测器启用端口 443 (HTTP)

如果将端口 443 (HTTP) 用于运行状况检查探测,请执行以下程序为运行状况检查探测启用端口。

过程

步骤 1

选择设备 (Devices) > 平台设置 (Platform Settings) > HTTP 访问 (HTTP Access)

步骤 2

选中启用 HTTP 服务器 (Enable HTTP Server) 复选框。

步骤 3

端口 (Port) 字段中输入 443

步骤 4

点击 + 添加

步骤 5

从下拉列表中选择相关 IP 地址

步骤 6

可用区域/接口 (Available Zones/Interfaces) 窗口中,选择连接到 GWLB 的外部接口或外部子网。

步骤 7

点击添加 (Add) 以将该接口添加到所选区域/接口 (Selected Zones/Interfaces) 窗口。

步骤 8

点击确定 (OK)

步骤 9

点击保存 (Save)


采用 NLB 的 Auto Scale 解决方案 - 配置和部署网络地址转换 (NAT) 策略

典型的 NAT 规则会将内部地址转换为外部接口 IP 地址上的端口。这类 NAT 规则称为接口端口地址转换 (PAT)。有关 NAT 策略的信息,请参阅使用 Cisco Secure Firewall Management Center 管理 Cisco Secure Firewall Threat Defense Virtual 中的配置 NAT

您的 NAT 策略中必须有一个强制规则。NAT 规则示例如下:

  • 源区域:外部区域

  • 目标区域:内部区域

  • 原始源:任意 ipv4

  • 原始源端口:原始/默认

  • 原始目标:接口

  • 原始目标端口:8080/或用户配置的任何运行状况端口

  • 转换后的源:any-ipv4

  • 转换后的源端口:原始/默认

  • 转换后的目标:aws-metadata-server

  • 已转换的目标端口:80/HTTP

同样,可以添加任何数据流量 NAT 规则,以便将此配置推送到 Threat Defense Virtual 设备。


重要


创建的 NAT 策略应应用于设备组。来自 Lambda 函数的管理中心验证会对此进行验证。


过程


步骤 1

登录 Cisco Secure Firewall Management Center。

步骤 2

设备 (Devices) 菜单中,点击 NAT

步骤 3

点击新建策略 (New Policy) > 威胁防御 NAT (Threat Defense NAT) 以创建新策略。

步骤 4

输入 NAT 策略的名称和描述。

步骤 5

点击保存 (Save)

您可以看到 NAT 页面上已添加并列出了一个新策略。

步骤 6

点击添加规则 (Add Rule)

步骤 7

NAT 规则 (NAT Rule) 下拉列表中选择 手动 NAT 规则 (Manual NAT Rule)

步骤 8

从“插入”(Insert) 下拉列表中选择按类别 (In Category)之前的 NAT 规则 (NAT Rule Before)

步骤 9

类型 (Type) 下拉菜单中选择静态 (Static)

步骤 10

输入说明。

步骤 11

接口对象 (Interface Objects) 菜单中,添加源对象和目标对象。

步骤 12

转换 (Translations) 菜单中,为每个参数添加以下值。

参数

起始源

any-ipv4

原始目标

地址 (Address)

原始源端口

HTTP

原始目标端口

8080

转换后的源

any-ipv4

转换后的源端口

原始/默认

转换目标

aws-metadata-server

转换后的目标端口

80/HTTP

步骤 13

点击保存 (Save) 以保存并添加规则。

步骤 14

选择已创建的新规则以部署在 Threat Defense Virtual 设备上。

步骤 15

点击部署 (Deploy) > 部署 (Deployment) 将策略部署到分配的设备。在部署更改之后,更改才生效。


创建基本访问控制策略

配置访问控制以允许从内部到外部的流量。可以创建具有所有必需策略的访问策略,应允许运行状况端口对象,以便允许此端口上的流量到达。有关访问策略的信息,请参阅使用 Cisco Secure Firewall Management Center 管理 Cisco Secure Firewall Threat Defense Virtual 中的配置访问控制

创建新的访问控制策略时,它包含默认操作和设置。创建策略后,您会立即进入编辑会话,以便您可以调整策略以满足您的要求。

过程


步骤 1

依次选择策略 > 访问控制

步骤 2

点击新建策略

步骤 3

输入唯一的名称和说明。

步骤 4

指定初始默认操作 (Default Action) - 阻止所有流量 (Block all traffic)

步骤 5

点击保存 (Save)

步骤 6

点击您创建的新策略的编辑图标。

步骤 7

点击添加规则 (Add Rule)

步骤 8

设置以下参数:

  • 名称:inside-to-outside

  • 插入:到强制

  • Action: Allow

  • 添加源区域和目标区域。

步骤 9

点击应用


更新 configuration.json 文件

configuration.json 文件位于您从 GitHub 下载的 lambda_python_files 文件夹中。使用您在管理中心设置的参数来更新 configuration.json 文件中的参数。请注意,不应更改 JSON 键值。

configuration.json 文件中的脚本如下所示。

{
  "licenseCaps": ["BASE", "MALWARE", "THREAT"],   //Management center virtual licenses 
  "fmcIpforDeviceReg": "DONTRESOLVE",   //Management center virtual IP address 
  "RegistrationId": "cisco",  //Registration ID used while configuring the manager in the Threat defense virtual
  "NatId": "cisco",  //NAT ID used while configuring the manager in the Threat defense virtual
  "fmcAccessPolicyName": "aws-asg-policy",  //Access policy name configured in the Management center virtual
  "fmcNatPolicyName": "AWS-Cisco-NGFW-VMs",  //NAT Policy name configured in the Management center virtual (Not required for GWLB-based deployment)
  "fmcInsideNicName": "inside", //Threat defense virtual inside interface name
  "fmcOutsideNicName": "outside", //Threat defense virtual outside interface name
  "fmcInsideNic": "GigabitEthernet0/0", //Threat defense virtual inside interface NIC Name - GigabitEthernet for c4 instance types, and TenGigabitEthernet for c5 instance types)
  "fmcOutsideNic": "GigabitEthernet0/1", //Threat defense virtual outside interface NIC Name - GigabitEthernet for c4 instance types, and TenGigabitEthernet for c5 instance types
  "fmcOutsideZone": "Outside-sz", //Outside Interface security zone name that is set in the Management center virtual
  "fmcInsideZone": "Inside-sz", //Inside Interface security zone name that is set in the Management center virtual
  "MetadataServerObjectName": "aws-metadata-server", //Host object name created for the IP 169.254.169.254 in the Management center virtual  (Not required for GWLB-based deployment)
  "interfaceConfig": [
    {
      "managementOnly": "false",
      "MTU": "1500",
      "securityZone": {
        "name": "Inside-sz"
      },
      "mode": "NONE",
      "ifname": "inside",
      "name": "GigabitEthernet0/0"
    },
    {
      "managementOnly": "false",
      "MTU": "1500",
      "securityZone": {
        "name": "Outside-sz"
      },
      "mode": "NONE",
      "ifname": "outside",
      "name": "GigabitEthernet0/1"
    }
  ],  //Interface-related configuration
  "trafficRoutes": [
    {
      "interface": "inside",
      "network": "any-ipv4",
      "gateway": "",
      "metric": "1"
    }
  ] //This traffic route is used for the Threat defense virtual instance's health check
}

您可以通过修改此文件中的 trafficRoutes 参数,为 Threat Defense Virtual 配置静态路由。静态路由配置示例如下所示。

{
      "interface": "inside",
      "network": "any-ipv4",
      "gateway": "",
      "metric": "1"
 }

使用 AWS CLI 配置基础设施组件

模板不会为 Threat Defense Virtual 和管理中心创建 Lambda 层和加密密码。使用下面给出的程序配置这些组件。有关 AWS CLI 的更多信息,请参阅 AWS 命令行界面

创建 Lambda 层 Zip 文件以管理计算资源

在 Linux 主机上创建 python 文件夹,然后创建 Lambda 层。

过程


步骤 1

在 Linux 主机(例如 Ubuntu 22.04)中创建 python 文件夹。

步骤 2

在 Linux 主机上安装 Python 3.9。下面提供了安装 Python 3.9 的示例脚本。

$ sudo apt update
$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:deadsnakes/ppa
$ sudo apt install python3.9
$ sudo apt install python3-virtualenv
$ sudo apt install zip
$ sudo apt-get install python3.9-distutils
$ sudo apt-get install python3.9-dev
$ sudo apt-get install libffi-dev

步骤 3

在 Linux 环境中创建 Lambda 层 zip 文件 autoscale_layer.zip。此文件为 Lambda 函数提供必要的 Python 库。

运行以下脚本以创建 autoscale_layer.zip 文件。

#!/bin/bash
mkdir -p layer
mkdir -p python
virtualenv -p /usr/bin/python3.9 ./layer/
source ./layer/bin/activate
pip3 install attrs==23.1.0
pip3 install bcrypt==3.2.2
pip3 install certifi==2022.12.7
pip3 install cffi==1.15.1
pip3 install chardet==3.0.4
pip3 install cryptography==2.9.1
pip3 install idna==2.10
pip3 install jsonschema==3.2.0
pip3 install paramiko==2.7.1
pip3 install pycparser==2.21
pip3 install pycryptodome==3.15.0
pip3 install PyNaCl==1.5.0
pip3 install pyrsistent==0.19.3
pip3 install requests==2.23.0
pip3 install scp==0.13.2
pip3 install six==1.16.0
pip3 install urllib3==1.25.11
echo "Copy from ./layer directory to ./python\n"
cp -r ./layer/lib/python3.9/site-packages/* ./python/
zip -r autoscale_layer.zip ./python

 

如果在安装期间遇到依赖项冲突错误(例如 urllib3 或加密),建议您包含冲突软件包及其建议版本。之后,您可以再次运行安装来解决冲突。

步骤 4

在创建 autoscale_layer.zip 文件后,将 autoscale_layer.zip 文件复制到从 GitHub 下载的 lambda-python-files 文件夹中。


(可选)为 Threat Defense Virtual和管理中心创建加密密码

如果已在 Infrastructure_gwlb.yaml 模板文件中输入 KMS ARN 值,则必须加密您在 Threat Defense Virtual 和管理中心中设置的密码。请参阅查找密钥 ID 和密钥 ARN,以使用 AWS KMS 控制台来识别密钥 ARN。在本地主机上,运行以下 AWS CLI 命令加密密码。

$ aws kms encrypt --key-id <KMS-ARN> --plaintext 
'MyC0mplIc@tedProtect1oN'
{
    "KeyId": "KMS-ARN", 
    "CiphertextBlob": 
"AQICAHgcQFAGtz/hvaxMtJvY/x/rfHnKI3clFPpSXUU7HQRnCAFwfXhXH
JAHL8tcVmDqurALAAAAajBoBgkqhki
G9w0BBwagWzBZAgEAMFQGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQM45
AIkTqjSekX2mniAgEQgCcOav6Hhol
+wxpWKtXY4y1Z1d0z1P4fx0jTdosfCbPnUExmNJ4zdx8="
}
$

“CiphertextBlob”的值是加密密码。将此密码用作 Infrastructure_gwlb.yaml 文件中 NGFWv 密码(Threat Defense Virtual 密码)或 AutoScale 自动化的 FMC 密码(管理中心密码)参数的值。您还可以将此密码用作将指标发布到 CloudWatch 的 FMC 密码的值。

创建目标文件夹

在本地主机上,使用下面提供的命令创建一个目标文件夹,其中包含必须上传到 Amazon S3 存储桶的文件。

python3 make.py build

这将在本地主机上创建一个名为“target”的文件夹。target 文件夹包含部署 Auto Scale 解决方案所需的 zip 文件和 yaml 文件。

将文件上传到 Amazon S3 存储桶

在本地主机上,使用下面给出的命令将目标目录中的所有文件上传到 Amazon S3 存储桶。

$ cd ./target

$ aws s3 cp . s3://<bucket-name> --recursive

支持 NLB 的 Auto Scale 解决方案 - 部署支持 NLB 的 Auto Scale 解决方案

如果您使用 NLB 来部署 Auto Scale 解决方案,请执行本节中提供的步骤。

过程


步骤 1

在 AWS 管理控制台上,转至服务 (Services) > 管理和监管 (Management and Governance) > CloudFormation > 堆栈, 然后点击模板创建的堆栈。

步骤 2

点击创建堆栈 (Create stack) > 通过新资源(标准)(With new resources [standard])

步骤 3

选择上传模板 (Upload a template) 文件,点击选择 (Choose) 以选择文件,然后从目标文件夹中选择 deploy_ngfw_autoscale.yaml

步骤 4

点击下一步

步骤 5

指定堆栈详细信息 (Specify stack details) 页面上,输入堆栈的名称。

步骤 6

deploy_ngfw_autoscale.yaml 模板中的输入参数提供值。

步骤 7

配置堆栈选项 (Configure Stack Options) 窗口中点击下一步 (Next)

步骤 8

查看 (Review) 页面上,查看并确认设置。

步骤 9

点击 创建堆栈 以部署 deploy_ngfw_autoscale.yaml 模板并创建堆栈。


这样就完成了为使用 NLB 的 Threat Defense Virtual 设置自动扩展解决方案所需的两个模板的部署。

支持 GWLB 的 Auto Scale 解决方案 - 部署支持 GWLB 的 Auto Scale 解决方案

如果您使用 GWLB 来部署 Auto Scale 解决方案,请执行本节中提供的步骤。

过程


步骤 1

在 AWS 管理控制台上,转至服务 (Services) > 管理和监管 (Management and Governance) > CloudFormation > 堆栈, 然后点击模板创建的堆栈。

步骤 2

点击创建堆栈 (Create stack) > 通过新资源(标准)(With new resources [standard])

步骤 3

选择上传模板 (Upload a template) 文件,点击选择 (Choose) 以选择文件,然后从目标文件夹中选择 deploy_ngfw_autoscale_with_gwlb.yaml

步骤 4

点击下一步

步骤 5

指定堆栈详细信息 (Specify stack details) 页面上,输入堆栈的名称。

步骤 6

deploy_ngfw_autoscale_with_gwlb.yaml 模板中的输入参数提供值。

步骤 7

配置堆栈选项 (Configure Stack Options) 窗口中点击下一步 (Next)

步骤 8

查看 (Review) 页面上,查看并确认设置。

步骤 9

点击创建堆栈 (Create Stack) 以部署 deploy_ngfw_autoscale_with_gwlb.yaml 模板并创建堆栈。


这样就完成了为使用 GWLB 的Threat Defense Virtual 设置自动扩展解决方案所需的两个模板的部署。

带有 GWLB 的 Auto Scale 解决方案 - 创建 GWLB 终端

如果您使用 GWLB 来部署 Auto Scale 解决方案,请执行本节中提供的步骤。

过程


步骤 1

在 AWS 管理控制台上,转至服务 (Services) > 网络和内容交付 (Networking & Content Delivery) > VPC > 终端服务 (Endpoint Services)

步骤 2

点击创建终端服务 (Create Endpoint Service)

步骤 3

在“负载均衡器”(Load balancer) 类型下,选择网关 (Gateway)

步骤 4

可用的负载均衡器 (Available load balancers) 下,选择作为 Auto scale 部署的一部分创建的网关负载均衡器。

步骤 5

要求接受终端 (Require accepting for endpoint) 下,选择需要接受 (Acceptance required)。这可确保您必须手动接受任何终端服务连接请求。

步骤 6

支持的 IP 地址类型 (Supported IP address types) 下,选择 IPv4

步骤 7

点击创建 (Create)

步骤 8

复制新创建的终端服务的服务名称。

步骤 9

转至服务 (Services) > 网络和内容交付 (Networking & Content Delivery) > VPC > 终端 (Endpoints)

步骤 10

点击创建终端 (Create endpoint)

步骤 11

服务类别 (Service category) 下,选择其他终端服务 (Other endpoint services)

步骤 12

对于服务名称 (Service name),输入服务的名称,然后选择验证服务 (Verify service)

步骤 13

VPC 字段中,选择要在其中创建终端的 VPC。

步骤 14

子网 (Subnets)下,选择要在其中创建终端的子网。

步骤 15

对于 IP 地址类型,请选择 IPv4 选项以将 IPv4 地址分配给终端网络接口。

步骤 16

点击创建终端 (Create endpoint)


为 VPC 配置路由

过程


步骤 1

在 AWS 管理控制台上,转到服务 (Services) > 网络和内容 (Networking & Content) > 虚拟私有云 (Virtual Private Cloud) > 路由表 (Route tables)

步骤 2

选择互联网网关的路由表并执行以下步骤:

  1. 点击操作 (Actions) > 编辑路由 (Edit routes)

  2. 对于 IPv4,请点击添加路由 (Add route)。对于目标 (Destination),输入应用服务器子网的 IPv4 CIDR 块。对于目标 (Target),选择 VPC 终端。

  3. 点击保存更改 (Save changes)

步骤 3

选择包含应用服务器的子网的路由表,并执行以下步骤:

  1. 点击操作 (Actions) > 编辑路由 (Edit routes)

  2. 对于 IPv4,请点击添加路由 (Add route)。对于目标 (Destination),输入0.0.0.0/0。对于目标 (Target),选择 VPC 终端。

  3. 点击保存更改 (Save changes)

步骤 4

选择带有网关负载均衡器终端的子网路由表,然后执行以下步骤:

  1. 点击操作 (Actions) > 编辑路由 (Edit routes)

  2. 对于 IPv4,请点击添加路由 (Add route)。对于目标 (Destination),输入0.0.0.0/0。对于目标 (Target),选择互联网网关。

  3. 点击保存更改 (Save changes)


编辑 Auto Scale 组

默认情况下,Auto Scale 组的最小和最大威胁防御虚拟实例数分别设置为 0 和 2。根据需要更改这些值。

过程


步骤 1

在 AWS 管理控制台上,转至服务 (Services) > 计算 (Compute) > EC2,然后点击自动扩展组 (Auto Scaling Groups)

步骤 2

选择您创建的 自动扩展组,然后点击编辑 (Edit) 以根据您的要求修改所需容量 (Desired capacity)最小容量 (Minimum capacity)最大容量 (Maximum capacity) 字段中的值。这些值对应于要为自动扩展功能调出的 Threat Defense Virtual 实例的数量。将所需容量 (Desired capacity) 设置为介于最小和最大容量值之间的值。

步骤 3

点击更新




我们建议您仅启动一个 Threat Defense Virtual 实例,并验证此实例的行为是否符合预期。然后,您可以根据自己的要求启动更多实例。


验证部署

成功部署模板后,转到 Amazon CloudWatch 控制台以确保正在收集日志并创建了所需的警报。

日志

检查日志文件,以排除管理中心连接方面的任何问题。

过程


步骤 1

AWS 管理控制台上,转至服务 (Services) > 管理和监管 (Management & Governance) > CloudWatch

步骤 2

点击日志组 (Log groups),然后点击此处显示的任何日志组以查看日志。


警报

确保已在 Amazon CloudWatch 控制台上创建所需的警报。

过程


步骤 1

AWS 管理控制台上,转至服务 (Services) > 管理和监管 (Management & Governance) > CloudWatch

步骤 2

点击警报 (Alarms) > 所有警报 (All Alarms) 以显示警报列表以及触发外向扩展和内向扩展函数的条件。


维护任务

扩展过程

本主题说明如何挂起、然后恢复 Auto Scale 组的一个或多个扩展过程。

开始和停止扩展操作

要开始和停止外向/内向扩展操作,请执行以下步骤。

运行状况监控

每 60 分钟,CloudWatch Cron 作业会触发运行状况医生模块的 Auto Scale 管理器 Lambda:

  • 如果有属于有效 threat defense virtual VM 的不正常 IP,且 threat defense virtual 超过了一小时,则该实例将被删除。

  • 如果这些 IP 不是来自有效的 threat defense virtual机,则仅从目标组中删除 IP。

运行状况监控器还会验证设备组、访问策略和 NAT 规则的 管理中心 配置。如果 IP/实例运行状况不正常,或者 管理中心 验证失败,则运行状况监控器会向用户发送邮件。

禁用运行状况监控器

要禁用运行状况监控器,请在 constant.py 中将常量设为“True”。

启用运行状况监控器

要启用运行状况监控器,请在 constant.py 中将常量设为“False”。

禁用生命周期钩子

在极少数需要禁用生命周期钩子的情况下,如果禁用,将不会向实例添加额外的接口。它还可能导致一系列 threat defense virtual 实例部署失败。

禁用 Auto Scale 管理器

要禁用 Auto Scale Manager,应禁用相应的 CloudWatch 事件“notify-instance-launch”和“notify-instance-terminate”。禁用这些不会对任何新事件触发 Lambda。但是,已在执行的 Lambda 操作将会继续。Auto Scale Manager 不会突然停止。通过删除堆栈或删除资源尝试突然停止可能会导致状态不确定。

负载均衡器目标

由于 AWS 负载均衡器不允许对具有多个网络接口的实例使用实例类型目标,因此将 Gigabit0/1 接口 IP 配置为目标组上的目标。但是,截至目前,AWS Auto Scale 运行状况检查仅对实例类型目标(而不是 IP)有效。此外,这些 IP 不会自动添加到目标组或从目标组中删除。因此,我们的 Auto Scale 解决方案会以编程方式处理这两个任务。但在进行维护或故障排除时,可能会有需要手动完成此操作的情况。

将目标注册到目标组

要将 threat defense virtual 实例注册到负载均衡器,其 Gigabit0/1 实例 IP(外部子网)应添加为目标组中的目标。请参阅按 IP 地址注册或取消注册目标

从目标组取消注册目标

要从负载均衡器取消注册 threat defense virtual 实例,其 Gigabit0/1 实例 IP(外部子网)应作为目标组中的目标删除。请参阅按 IP 地址注册或取消注册目标

实例备用

AWS 不允许在 Auto Scale 组中重新启动实例,但允许用户将实例置于备用状态并执行这类操作。但是,当负载均衡器目标为实例类型时,这将发挥最佳效果。但是,由于多个网络接口,threat defense virtual机无法配置为实例类型目标。

将实例置于备用状态

如果实例被置于备用状态,则其目标组中的 IP 在运行状况探测失败之前仍将继续处于相同状态。因此,建议在将实例置于备用状态之前,从目标组取消注册各自的 IP;有关详细信息,请参阅负载均衡器目标

删除 IP 后,请参阅暂时从 Auto Scaling 组中删除实例

从备用状态删除实例

同样,您也可以将实例从备用状态移至运行状态。从备用状态删除后,实例的 IP 应注册到目标组目标。请参阅负载均衡器目标

有关如何将实例置于备用状态以进行故障排除或维护的详细信息,请参阅 AWS 新闻博客

从 Auto Scale 组删除/分离实例

要从 Auto Scale 组中删除实例,应首先将其移到备用状态。请参阅“将实例置于备用状态”。当实例处于备用状态后,可以将其删除或分离。请参阅从 Auto Scaling 组分离 EC2 实例

管理中心 端不会有任何更改。需要手动执行任何必要的更改。

终止实例

要终止实例,应将其置于备用状态;请参阅实例备用。当实例处于备用状态后,即可继续终止。

实例内向扩展保护

为避免从 Auto Scale 组中意外删除任何特定实例,可以对其进行内向扩展保护。如果实例受到内向扩展保护,则不会因内向扩展事件而终止。

请参阅以下链接,以便将实例置于内向扩展保护状态。

https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-termination.html


重要


建议将状况良好的最小数量的实例(目标 IP 应正常运行,而不仅是 EC2 实例)设为内向扩展保护。


配置更改

配置中的任何更改都不会自动反映在运行中的实例上。更改将仅反映在未来的设备上。应手动将此类更改推送到现有设备。

如果您在现有实例上手动更新配置时遇到问题,我们建议从扩展组中删除这些实例并将其替换为新实例。

更改 管理中心 用户名和密码

在更改 管理中心 IP、用户名或密码的情况下,应对 Auto Scale Manager Lambda 函数和自定义指标发布方 Lambda 函数环境变量执行相应的更改。请参阅使用 AWS Lambda 环境变量

当 Lambda 下次运行时,将引用更改后的环境变量。



环境变量会被直接送入 Lambda 函数。此处不检查密码复杂性。


更改Threat Defense Virtual 管理员密码

对于运行中的实例,更改 threat defense virtual 密码时要求用户在每个设备上手动更改。对于要载入的新 threat defense virtual 设备,将从 Lambda 环境变量提取 threat defense virtual 密码。请参阅使用 AWS Lambda 环境变量

更改注册和 NAT ID

对于要使用不同的注册和 NAT ID 载入的新 threat defense virtual设备,在进行 管理中心 注册时,应在 Configuration.json 文件中更改这些信息。可以在 Lambda 资源页中找到 Configuration.json 文件。

访问策略和 NAT 策略更改

通过设备组分配的帮助,访问策略或 NAT 策略的任何更改都将自动应用到未来的实例。不过,要更新现有的 threat defense virtual 实例,您需要手动推送配置更改,然后从 管理中心 部署这些更改。

AWS 资源更改

部署后可以在 AWS 中更改许多内容,如 Auto Scale 组、启动配置、CloudWatch 事件、扩展策略等。您可以将资源导入 CloudFormation 堆栈,或通过现有资源创建新的堆栈。

有关如何管理对 AWS 资源执行的更改的详细信息,请参阅将现有资源引入 CloudFormation 管理

为现有自动缩放组实例配置 IMDSv2 所需模式

您可以为 AWS 上已部署的 Threat Defense Virtual 个自动缩放组实例配置 IMDSv2 必需模式。

Before you begin

Threat Defense Virtual 7.6 及更高版本支持 IMDSv2 必需模式。在为部署配置 IMDSv2 模式之前,确保现有实例版本与 IMDSv2 模式兼容(升级到版本 7.6)。

Procedure


Step 1

登录 http://aws.amazon.com/

Step 2

点击 EC2,然后选择自动扩展 (Auto Scaling) > 自动扩展组 (Auto Scaling Groups)

Step 3

从列表中选择自动扩展组,为该组的相关实例配置 IMDSv2 必需模式。

Step 4

点击启动模板 (Launch Template)

Step 5

启动模板 (Launch templates) 页面上,从操作 (Actions) 下拉列表中选择修改模板(创建新版本)(Modify template [Create new version])

Step 6

使用支持 IMDSv2 的映像来更新 AMI ID。

Step 7

高级详细信息 (Advanced Details) 下,启用 IMDSv2 元数据:

  1. 元数据可访问 (Metadata accessible) 下拉列表中选择启用 (Enabled)

  2. 元数据版本 (Metadata version) 下拉列表中选择 仅 V2(需要令牌)(V2 only [token required])

Step 8

使用此元数据版本的启动模板来部署启用 IMDSv2 Required 模式的自动扩展组实例。


故障排除

AWS CloudFormation 控制台

您可以在 AWS CloudFormation 控制台中验证 CloudFormation 堆栈的输入参数,该控制台允许您直接从网络浏览器创建、监控、更新和删除堆栈。

导航到所需的堆栈,然后选中参数选项卡。您还可以在 Lambda 函数环境变量选项卡中检查 Lambda 函数的输入。此外,还可以在 Auto Scale Manager Lambda 函数本身上查看 configuration.json

要了解有关 AWS CloudFormation 控制台的更多信息,请参阅《AWS CloudFormation 用户指南》。

Amazon CloudWatch 日志

您可以查看各个 Lambda 函数的日志。AWS Lambda 代表您自动监控 Lambda 功能,从而通过 Amazon CloudWatch 报告指标。为帮助您排除功能故障,Lambda 会记录您的功能处理的所有请求,并通过 Amazon CloudWatch 日志自动存储代码生成的日志。

您可以使用 Lambda 控制台、CloudWatch 控制台,AWS CLI 或 CloudWatch API 查看 Lambda 的日志。要了解有关日志组并通过 CloudWatch 控制台访问日志组的更多信息,请参阅《Amazon CloudWatch 用户指南》中的监控系统、应用和自定义日志文件。

负载均衡器运行状况检查失败

负载均衡器运行状况检查包含协议、ping 端口、ping 路径、响应超时和运行状况检查间隔等信息。如果实例在运行状况检查间隔内返回 200 响应代码,则该实例会被视为运行状况正常。

如果您的部分或所有实例的当前状态为 OutOfService,并且说明字段显示实例至少连续失败运行状况检查不正常阈值次数的检查 (Instance has failed at least the Unhealthy Threshold number of health checks consecutively),则表明实例未通过负载均衡器运行状况检查。

您应在 管理中心 配置中检查运行状况探测 NAT 规则。有关详细信息,请参阅传统负载均衡器故障排除:运行状况检查

流量问题

要排除 threat defense virtual 实例的流量问题,应检查负载均衡器规则、NAT 规则和 threat defense virtual 实例中配置的静态路由。

您还应检查部署模板中提供的 AWS 虚拟网络/子网/网关详细信息,包括安全组规则等。您还可以参阅 AWS 文档,例如 EC2 实例故障排除

管理中心 连接失败

如果管理连接中断,则应检查配置和凭证。请参阅《Cisco Secure Firewall Management Center 配置指南》中的“设备管理的要求和前提条件”。

设备无法向 管理中心 注册

如果设备未能向 管理中心 注册失败,您需要确定 管理中心 配置是否有故障/无法访问,或者 管理中心 是否有能力容纳新设备。请参阅《Cisco Secure Firewall Management Center 配置指南》中的“将设备添加到管理中心”。

无法通过 SSH 连接到 Threat Defense Virtual

如果无法通过 SSH 连接到 threat defense virtual,请检查是否通过模板将复杂密码传递到 threat defense virtual

双臂代理配置故障排除

threat defense virtual EC2 实例无法启动或进入连续的启动-终止循环。

您必须验证活动历史记录:转至自动扩展组 (Autoscale Group) > 自动扩展组 (Autoscale Group) > 活动 (Activity) > 活动历史记录 (Activity History) 以开始调试。

可能的原因包括 AMI 丢失和 Lambda 函数执行错误。

  • 确保 AMI 存在于 AWS 账户中。

  • 检查连接、配置和许可。

  • 选中与 threat defense virtual EC2 实例关联的标签,以获取设备的连接状态、配置状态、许可状态和其他状态。

  • 检查 CloudWatch 日志

    • 单个 Lambda 函数的日志可在 CloudWatch Logs 中查看。

    • 如果在连接或配置设备时出现问题,请继续查看 Lambda 函数的 CloudWatch 日志以了解根本原因。

    • 验证 Lambda 函数的日志组。

AWS 云端调试:流量未通过

  • 检查所有 AWS 子网的路由表是否与拓扑图中指定的一致。确保出口(设备上存在东西流量路由。

  • 确保与所有设备接口相关联的 AWS 安全组允许预期的 IP 地址范围。

使用案例 - 适用于 Threat Defense Virtual 的 Auto Scale 解决方案,使用 AWS 上的 GWLB 检查南北流量

本使用案例文档介绍如何在 AWS 环境中使用网关负载均衡器 (GWLB) 设置 Threat Defense Virtual 实例的自动扩展,以检测南北向流量。

如何设置 Threat Defense Virtual Auto Scale 解决方案以使用 AWS 上的 GWLB 检查南北流量

通过自动扩展解决方案,可以部署、扩展和管理托管用于流量检测的一组 Threat Defense Virtual 实例。流量根据性能或使用容量在单个或多个Threat Defense Virtual 实例之间分布。

GWLB 充当单一入口和出口点,以管理内部和外部生成的流量,并根据流量负载实时扩大或缩小Threat Defense Virtual 实例的数量。



此使用案例中使用的参数值为示例值。根据需要更改这些值。


拓扑示例

此拓扑示例说明如何通过 GWLB 将入站和出站网络流量分发到 Threat Defense Virtual 实例,然后再路由到应用 VPC 并返回。

图 3. 使用 GWLB 的 Threat Defense Virtual Auto Scale 解决方案

入站流量检测



互联网网关 (IGW) 接收来自互联网的流量。



流量会根据入口路由表中的路由路由到网关负载均衡器终端 (GWLBe)。



GWLBe 连接到安全虚拟私有云 (VPC) 中的终端服务。GWLB 封装收到的流量,并将其转发到 Threat Defense Virtual 自动扩展组进行检查。



自动扩展组检查的流量会返回到 GWLB,然后再返回到 GWLB 终端。



GWLB 终端将流量转发到应用 VPC,然后再将流量路由到应用子网中的资源。

出站流量检测



来自应用子网资源的流量会被路由到同一 VPC 中的 GWLBe。



GWLBe 连接到安全 VPC 中的终端服务。GWLB 封装收到的流量,并将其转发到自动扩展组进行检查。



自动扩展组检测到的流量会返回到 GWLB,然后再返回到 GWLBe。



流量到达源 VPC 后,会根据出口子网路由表中定义的路由转发到 IGW。



IGW 将流量发送到互联网。

端到端程序

以下流程图说明了在 Amazon Web 服务 (AWS) 上使用 GWLB 部署 Threat Defense Virtual 自动扩展解决方案的工作流程。

工作空间

步骤

本地主机

从 GitHub 下载所需的文件

Amazon CloudFormation 控制台

自定义和部署基础设施模板

管理中心

配置网络基础设施

本地主机

更新 Configuration.json 文件

本地主机

使用 AWS CLI 配置基础设施组件

本地主机

创建目标文件夹

本地主机

将文件上传到 Amazon S3 存储桶

Amazon CloudFormation 控制台

部署 Auto Scale 解决方案

Amazon EC2 控制台

编辑 Auto Scale 组

Amazon VPC 控制台

创建 GWLB 终端

Amazon VPC 控制台

为 VPC 配置路由

前提条件

  • GitHub 克隆 GitHub 清单到本地主机。此存储库包含 cisco-ftdv/autoscale/aws 下的以下文件。

    • 用于创建 Lambda 层的 Python (.py) 文件。

    • 一个 configuration.json 文件,用于根据需要添加静态路由和自定义任何网络参数。

    • 用于生成 zip 文件的 make.py

    • 部署需要使用 *.yaml 文件。

  • /templates 文件夹下的云形成模板:

    • Infrastructure_gwlb.yaml - 用于自定义 AWS 环境中的组件。

    • deploy_ngfw_autoscale_with_gwlb.yaml - 用于部署具有 GWLB 的 AWS Auto Scale 解决方案。

  • [可选] 尽可能收集模板参数的值。这样可以在 AWS 管理控制台上部署模板时更轻松快速地输入值。

Amazon CloudFormation 控制台 - 自定义和部署基础设施模板

执行本节中给出的步骤,以自定义和部署基础设施模板。

过程


步骤 1

在 AWS 管理控制台上,转到服务 (Services) > 管理和治理 (Management and Governance) > CloudFormation,然后点击创建堆栈 (Create stack) > 使用新资源(标准)(With new resources[standard])

步骤 2

选择上传模板文件 (Upload a template file),点击选择文件 (Choose file),然后从下载文件的文件夹中选择 Infrastructure_gwlb.yaml

步骤 3

点击下一步

步骤 4

指定堆栈详细信息 (Specify stack details) 页面上,输入堆栈的名称。

步骤 5

infrastructure_gwlb.yaml 模板中的输入参数提供值。

参数

Pod 配置

 

Pod 名称

infrastructure

Pod 编号

1

S3 存储桶名称

demo-us-bkt

VPC CIDR

20.0.0.0/16

可用性区域数量

2

 

Threat Defense Virtual 最多支持三个可用性区域。如果您选择跨三个 可用性区域部署虚拟设备,请确保为管理接口、内部接口和外部接口各选择三个子网。

ListOfAzs(可用区域列表)

us-west-1a,us-west-1b

管理子网的名称

MgmtSubnet-1,MgmtSubnet-2

MgmtSubnetCidrs

20.1.250.0/24,20.1.251.0/24

内部子网的名称

InsideSubnet-1,InsideSubnet-2

InsideSubnetCidrs

20.1.100.0/24,20.1.101.0/24

外部子网的名称

OutsideSubnet-1,OutsideSubnet-2

OutsideSubnetCidrs

20.1.200.0/24,20.1.201.0/24

Lambda 子网的名称

LambdaSubnet-1,LambdaSubnet-2

Lambda 子网 CIDR

20.1.50.0/24,20.1.51.0/24

步骤 6

点击下一步

步骤 7

配置堆栈选项 (Configure Stack Options) 窗口中点击下一步 (Next)

步骤 8

查看 (Review) 页面上,查看并确认设置。

步骤 9

点击创建堆栈 (Create Stack) 以部署 Infrastructure_gwlb.yaml 模板并创建堆栈。

步骤 10

在部署完成后,转到输出 (Outputs) 并记下 S3 S3 Bucket Name


管理中心 - 在管理中心配置 Threat Defense Virtual 网络基础设施

在管理中心为已注册的 Threat Defense Virtual 创建和配置对象、设备丢弃、运行状况检查端口和访问策略。

创建主机对象

过程

步骤 1

登录管理中心。

步骤 2

选择对象 > 对象管理

步骤 3

从对象类型列表中选择网络 (Network)

步骤 4

添加网络 (Add Network) 下拉菜单中选择添加对象 (Add Object)

步骤 5

输入名称 - aws-metadata-server

步骤 6

输入说明。

步骤 7

网络 (Network) 字段中,选择主机 (Host) 选项并输入 IPv4 地址 - 169.254.169.254

步骤 8

点击保存 (Save)


创建端口对象

过程

步骤 1

登录管理中心。

步骤 2

选择对象 > 对象管理

步骤 3

从对象类型列表中选择端口 (Port)

步骤 4

添加端口 (Add Port) 下拉菜单中选择添加对象 (Add Object)

步骤 5

输入名称 - test-port-object

步骤 6

选择协议 (Protocol)。您必须选择已为主机对象类型输入的协议。根据选择的协议,按端口 (Port) 进行限制。

步骤 7

输入 8080。请注意,您可以根据需要自定义在此处输入的端口号。

 

如果选择与所有 (All) 协议匹配,则必须使用其他 (Other) 下拉列表按端口限制对象。

步骤 8

点击保存 (Save)


创建安全区域和接口组对象

过程

步骤 1

选择对象 > 对象管理

步骤 2

从对象类型列表中选择接口

步骤 3

点击添加 (Add) > 安全区域 (Security Zone)添加 (Add) > 接口组 (Interface Group)

步骤 4

输入 名称 - inside-sz/outside-sz

步骤 5

选择接口类型 (Interface Type) - 已路由 (Routed)

步骤 6

点击保存 (Save)


添加设备组

管理中心允许将设备分组,从而可以在多台设备上轻松部署策略和安装更新。您可以展开和折叠组中的设备列表。

过程

步骤 1

选择设备 > 设备管理

步骤 2

添加 (Add) 下拉菜单中,选择添加组 (Add Group)

步骤 3

要编辑现有的组,请点击要编辑的组的编辑(编辑图标)。

步骤 4

输入名称 - aws-ngfw-autoscale-dg

步骤 5

点击确定 (OK) 以添加组。


为运行状况检查探测器启用端口 443 (HTTP)

如果将端口 443 (HTTP) 用于运行状况检查探测,请执行以下程序为运行状况检查探测启用端口。

过程

步骤 1

选择设备 (Devices) > 平台设置 (Platform Settings) > HTTP 访问 (HTTP Access)

步骤 2

选中启用 HTTP 服务器 (Enable HTTP Server) 复选框。

步骤 3

端口 (Port) 字段中输入 443

步骤 4

点击 + 添加

步骤 5

从下拉列表中选择相关 IP 地址

步骤 6

可用区域/接口 (Available Zones/Interfaces) 窗口中,选择连接到 GWLB 的外部接口或外部子网。

步骤 7

点击添加 (Add) 以将该接口添加到所选区域/接口 (Selected Zones/Interfaces) 窗口。

步骤 8

点击确定 (OK)

步骤 9

点击保存 (Save)


创建基本访问控制策略

创建新的访问控制策略时,它包含默认操作和设置。创建策略后,您会立即进入编辑会话,以便您可以调整策略以满足您的要求。

过程

步骤 1

依次选择策略 > 访问控制

步骤 2

点击新建策略

步骤 3

输入唯一的名称 - aws-asg-policy 和说明。

步骤 4

指定初始默认操作 (Default Action) - 阻止所有流量 (Block all traffic)

步骤 5

点击保存 (Save)

步骤 6

点击页面右上角的目标设备 (Targeted Devices) 以分配策略。

步骤 7

从可用设备中选择 aws-ngfw-autoscale-dg

步骤 8

点击添加到策略 (Add to Policy),然后点击确定 (OK) 以添加到策略。

步骤 9

点击您创建的新策略的编辑图标。

步骤 10

点击添加规则 (Add Rule)

步骤 11

设置以下参数:

  • 名称:inside-to-outside

  • 插入:到强制

  • 操作:允许

  • 添加源区域和目标区域。

步骤 12

点击应用


本地主机 - 更新配置 JSON 文件

configuration.json 文件位于您从 GitHub 下载的 lambda_python_files 文件夹中。使用您在 管理中心 设置的参数来更新 configuration.json 文件中的参数。

configuration.json 文件中的脚本如下所示。

"licenseCaps": ["BASE", "MALWARE", "THREAT"],   // Management center virtual licenses 
  "fmcIpforDeviceReg": "DONTRESOLVE",   // Management center virtual IP address 
  "RegistrationId": "cisco",  // Registration ID used while configuring the manager in the Threat defense virtual
  "NatId": "cisco",  // NAT ID used while configuring the manager in the Threat defense virtual
  "fmcAccessPolicyName": "aws-asg-policy",  // Access policy name configured in the Management center virtual
  "fmcInsideNicName": "inside", //Threat defense virtual inside interface name
  "fmcOutsideNicName": "outside", //Threat defense virtual outside interface name
  "fmcInsideNic": "TenGigabitEthernet0/0", // Threat defense virtual inside interface NIC Name - GigabitEthernet for c4 instance types, and TenGigabitEthernet for c5 instance types)
  "fmcOutsideNic": "TenGigabitEthernet0/1", // Threat defense virtual outside interface NIC Name - GigabitEthernet for c4 instance types, and TenGigabitEthernet for c5 instance types
  "fmcOutsideZone": "Outside-sz", //Outside Interface security zone name that is set in the Management center virtual
  "fmcInsideZone": "Inside-sz", //Inside Interface security zone name that is set in the Management center virtual
  "interfaceConfig": [
    {
      "managementOnly": "false",
      "MTU": "1500",
      "securityZone": {
        "name": "Inside-sz"
      },
      "mode": "NONE",
      "ifname": "inside",
      "name": "TenGigabitEthernet0/0"
    },
    {
      "managementOnly": "false",
      "MTU": "1500",
      "securityZone": {
        "name": "Outside-sz"
      },
      "mode": "NONE",
      "ifname": "outside",
      "name": "TenGigabitEthernet0/1"
    }
  ],  // Interface-related configuration
  "trafficRoutes": [
    {
      "interface": "inside",
      "network": "any-ipv4",
      "gateway": "",
      "metric": "1"
    }
  ] // This traffic route is used for the Threat defense virtual instance's health check
}


要使用专用 IP 向 Management Center Virtual 注册 Threat Defense Virtual,请修改 cisco-ftdv/autoscale/aws/lambda-python-files/ 中的 constant.py 文件中的以下行:

  • USE_PUBLIC_IP_FOR_FMC_CONN = False


Ubuntu 主机 - 使用 AWS CLI 配置基础设施组件

模板不会为 Threat Defense Virtual 和管理中心创建 Lambda 层和加密密码。使用下面给出的程序配置这些组件。有关 AWS CLI 的更多信息,请参阅 AWS 命令行界面

过程


步骤 1

创建 Lambda 层 zip 文件。

在 Linux 主机上创建 python 文件夹,然后创建 Lambda 层。

  1. 在 Linux 主机(例如 Ubuntu 22.04)中创建 python 文件夹。

  2. 在 Linux 主机上安装 Python 3.9。下面提供了安装 Python 3.9 的示例脚本。

    $ sudo apt update
    $ sudo apt install software-properties-common
    $ sudo add-apt-repository ppa:deadsnakes/ppa
    $ sudo apt install python3.9
    $ sudo apt install python3-virtualenv
    $ sudo apt install zip
    $ sudo apt-get install python3.9-distutils
    $ sudo apt-get install python3.9-dev
    $ sudo apt-get install libffi-dev
    
  3. 在 Linux 环境中创建 Lambda 层 zip 文件 autoscale_layer.zip。此文件为 Lambda 函数提供必要的 Python 库。

    运行以下脚本以创建 autoscale_layer.zip 文件。

    #!/bin/bash
    mkdir -p layer
    mkdir -p python
    virtualenv -p /usr/bin/python3.9 ./layer/
    source ./layer/bin/activate
    pip3 install attrs==23.1.0
    pip3 install bcrypt==3.2.2
    pip3 install certifi==2022.12.7
    pip3 install cffi==1.15.1
    pip3 install chardet==3.0.4
    pip3 install cryptography==2.9.1
    pip3 install idna==2.10
    pip3 install jsonschema==3.2.0
    pip3 install paramiko==2.7.1
    pip3 install pycparser==2.21
    pip3 install pycryptodome==3.15.0
    pip3 install PyNaCl==1.5.0
    pip3 install pyrsistent==0.19.3
    pip3 install requests==2.23.0
    pip3 install scp==0.13.2
    pip3 install six==1.16.0
    pip3 install urllib3==1.25.11
    echo "Copy from ./layer directory to ./python\n"
    cp -r ./layer/lib/python3.9/site-packages/* ./python/
    zip -r autoscale_layer.zip ./python
    
  4. 在创建 autoscale_layer.zip 文件后,将 autoscale_layer.zip 文件复制到从 GitHub 下载的 lambda-python-files 文件夹中。

步骤 2

(可选)为 Threat Defense Virtual 和管理中心创建加密密码。

如果已在 Infrastructure_gwlb.yaml 模板文件中输入 KMS ARN 值,则必须加密您在 Threat Defense Virtual 和管理中心中设置的密码。请参阅查找密钥 ID 和密钥 ARN,以使用 AWS KMS 控制台来识别密钥 ARN。在本地主机上,运行以下 AWS CLI 命令加密密码。
$ aws kms encrypt --key-id <KMS-ARN> --plaintext 'MyC0mplIc@tedProtect1oN'
{
    "KeyId": "KMS-ARN", 
    "CiphertextBlob": 
"AQICAHgcQFAGtz/hvaxMtJvY/x/rfHnKI3clFPpSXUU7HQRnCAFwfXhXHJAHL8tcVmDqurALAAAAajBoBgkqhki
G9w0BBwagWzBZAgEAMFQGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQM45AIkTqjSekX2mniAgEQgCcOav6Hhol
+wxpWKtXY4y1Z1d0z1P4fx0jTdosfCbPnUExmNJ4zdx8="
}
$
CiphertextBlob 的值是加密密码。将此密码用作 Infrastructure_gwlb.yaml 文件中 NGFWv 密码threat defense virtual 密码)或 AutoScale 自动化的 FMC 密码(管理中心 密码)参数的值。您还可以将此密码用作将指标发布到 CloudWatch 的 FMC 密码的值。

本地主机 - 创建目标文件夹

导航至本地主机上克隆存储库中的 cisco-ftdv/autoscale/aws/,然后运行下面提供的命令创建一个目标文件夹,其中包含必须上传到 Amazon S3 存储桶的文件。

python3 make.py build

这将在本地主机上创建一个名为“target”的文件夹。target 文件夹包含部署 Auto Scale 解决方案所需的 zip 文件和 yaml 文件。

本地主机 - 将 AWS GWLB Auto Scale 解决方案部署文件上传到 Amazon S3 存储桶

使用下面提供的命令将目标目录中的所有文件上传到在基础设施堆栈部署期间创建的 Amazon S3 存储桶。

$ cd ./target

$ aws s3 cp . s3://demo-us-bkt --recursive

Amazon CloudFormation 控制台 - 使用 GWLB 为 Threat Defense Virtual 部署 Auto Scale 解决方案

过程


步骤 1

在 AWS 管理控制台上,转至服务 (Services) > 管理和监管 (Management and Governance) > CloudFormation > 堆栈, 然后点击模板创建的堆栈。

步骤 2

点击创建堆栈 (Create stack) > 通过新资源(标准)(With new resources [standard])

步骤 3

选择上传模板 (Upload a template) 文件,点击选择 (Choose) 以选择文件,然后从目标文件夹中选择 deploy_ngfw_autoscale_with_gwlb.yaml

步骤 4

点击下一步

步骤 5

指定堆栈详细信息 (Specify stack details) 页面上,输入堆栈的名称。

步骤 6

deploy_ngfw_autoscale_with_gwlb.yaml 模板中的输入参数提供值。

堆栈名称:Threat-Defense-Virtual

 

您可以从已创建的基础设施堆栈中找到 VPC ID、S3 存储桶名称、子网和安全组值。确保管理中心参数与您创建的实际 FMC IP 地址、设备组名称、用户凭证和其他参数相匹配。

参数

Pod 配置

 

Autoscale 组名称前缀

NGFWv-AutoScale

Pod 编号

1

Autoscale 邮件通知

指定用于接收通知的电子邮件地址。例如:username@cisco.com

基础设施详细信息

 

VPC ID

vpc-05277f76370396df4

S3 存储桶名称

demo-us-bkt

Lambda 函数的子网

subnet-0f6bbd4de47d50c6b,subnet-0672f4c24156ac443

Lambda 函数的安全组

sg-023dfadb1e7d4b87e

可用性区域数量

2

 

Threat Defense Virtual 最多支持三个可用性区域。如果您选择跨三个可用性区域部署虚拟设备,请确保为管理接口、内部接口和外部接口各选择三个子网。

可用区域

us-west-1a、us-west-1b

NGFWv 管理接口的子网列表

subnet-0e0bc4961de87b170、subnet-0c285f960d165b1fc

NGFWv 内部接口的子网列表

subnet-0f6acf3b548d9e95b、subnet 0bc6d89f5d34e806b

NGFWv 外部接口的子网列表

subnet-0cc7ac70df7144b7e、subnet-0237113d433c416fc

GWLB 配置

 

输入用于 NGFWv 实例运行状况检查的端口

22

思科 NGFWv 实例配置

 

NGFWv 实例类型

c5. xlarge

NGFWv 实例许可证类型

BYOL

从 AWS IP 池为 NGFWv 分配公用 IP

true

NGFWv 实例的安全组

sg-088ae4bc1093f5833

内部 NGFWv 实例的安全组

sg-0e0ce5dedcd9cd4f3

外部 NGFWv 实例的安全组

sg-07dc50ff47d0c8126

NGFWv AMI-ID

ami-00faf58c7ee8d11e1

 

您必须指定 AWS 账户中存在的正确 NGFWv AMI-ID。

要搜索 AMI-ID,请执行以下操作:

  1. 转至 EC2 > AMI

  2. 公共 AMI 的过滤器。

  3. 搜索 aws-marketplace/ftdv。使用指定选项中最新版本的 AMI ID。

KMS 主密钥 ARN(视情况而定)

NGFWv 密码

W1ch3sterBr0s

FMC 自动化配置

 

FMC 主机 IP 地址

3.38.137.49

AutoScale 自动化的 FMC 用户名

autoscaleuser

AutoScale 自动化的 FMC 密码

W1nch3sterBr0s

FMC 设备组名称

aws-ngfw-autoscale-dg

FMCv 许可的性能层值

FTDv20

FMC 设备组指标发布配置

 

从 FMC 发布自定义指标

TRUE

用于将指标发布到 CloudWatch 的 FMC 用户名

metricuser

用于将指标发布到 CloudWatch 的 FMC 密码

W1ch3sterBr0s

扩展配置

 

下限、上限 CPU 阈值

10,70

下限、上限内存阈值

40,70

步骤 7

配置堆栈选项 (Configure Stack Options) 窗口中点击下一步 (Next)

步骤 8

查看 (Review) 页面上,查看并确认设置。

步骤 9

点击创建堆栈 (Create Stack) 以部署 deploy_ngfw_autoscale_with_gwlb.yaml 模板并创建堆栈。


这样就完成了为使用 GWLB 的Threat Defense Virtual 设置自动扩展解决方案所需的两个模板的部署。

Amazon EC2 控制台 - 编辑 Auto Scale 组中实例的数量

默认情况下,Auto Scale 组的最小和最大威胁防御虚拟实例数分别设置为 0 和 2。根据需要更改这些值。

过程


步骤 1

在 AWS 管理控制台上,转至服务 (Services) > 计算 (Compute) > EC2,然后点击自动扩展组 (Auto Scaling Groups)

步骤 2

选择您创建的 自动扩展组,然后点击编辑 (Edit) 以根据您的要求修改所需容量 (Desired capacity)最小容量 (Minimum capacity)最大容量 (Maximum capacity) 字段中的值。这些值对应于要为自动扩展功能调出的 Threat Defense Virtual 实例的数量。将所需容量 (Desired capacity) 设置为介于最小和最大容量值之间的值。

步骤 3

点击更新




建议您仅启动一个 Threat Defense Virtual 实例,并验证该实例在自动扩展组中处于服务状态并已注册到 Management Center Virtual。然后,您可以根据自己的要求启动更多实例。


Amazon VPC 控制面板控制台 - 创建 GWLB 终端并为客户 VPC 配置路由

在部署两个 CloudFormation 模板后,您必须为客户 VPC 创建 GWLB 终端并配置路由。

创建 GWLB 终端

过程

步骤 1

在 AWS 管理控制台上,转至服务 (Services) > 网络和内容交付 (Networking & Content Delivery) > VPC > 终端服务 (Endpoint Services)

步骤 2

点击创建终端服务 (Create Endpoint Service)

步骤 3

负载均衡器 (Load balancer) 类型下,选择网关 (Gateway)

步骤 4

可用的负载均衡器 (Available load balancers) 下,选择作为 Auto scale 部署的一部分创建的网关负载均衡器。

步骤 5

点击创建 (Create)

步骤 6

复制新创建的终端服务的服务名称。

步骤 7

转至服务 (Services) > 网络和内容交付 (Networking & Content Delivery) > VPC > 终端 (Endpoints)

步骤 8

点击创建终端 (Create endpoint)

步骤 9

服务类别 (Service category) 下,选择其他终端服务 (Other endpoint services)

步骤 10

对于服务名称 (Service name),输入服务的名称,然后选择验证服务 (Verify service)

步骤 11

VPC 字段中,选择要在其中创建终端的 VPC 应用 VPC (App VPC)

步骤 12

子网 (Subnets)下,选择要在其中创建终端的子网出口子网 (Egress subnet)

步骤 13

对于 IP 地址类型,请选择 IPv4 选项以将 IPv4 地址分配给终端网络接口。

步骤 14

点击创建终端 (Create endpoint)

步骤 15

转至服务 (Services) > 网络和内容交付 (Networking & Content Delivery) > VPC > 终端服务 (Endpoint services),点击 终端连接 (Endpoint Connections) 选项卡,选择您之前创建的终端 ID,然后点击操作 (Actions) > 接受终端连接请求 (Accept endpoint connection request)


为客户 VPC 配置路由

过程

步骤 1

在 AWS 管理控制台上,转到服务 (Services) > 网络和内容 (Networking & Content) > 虚拟私有云 (Virtual Private Cloud) > 路由表 (Route tables)

步骤 2

创建入口路由表,然后执行以下步骤:

  1. 点击操作 (Actions) > 编辑路由 (Edit routes)

  2. 对于 IPv4,请点击添加路由 (Add route)。对于目标 (Destination),输入应用服务器子网的 IPv4 CIDR 块 10.0.1.0/24。对于目标 (Target),选择 VPC 终端。

  3. 点击保存更改 (Save changes)

  4. 边缘关联 (Edge Associations) 选项卡中,点击编辑边缘关联 (Edit edge associations),然后选择互联网网关 (Edit edge associations)

  5. 点击保存更改 (Save changes)

步骤 3

选择包含应用服务器的子网的路由表,并执行以下步骤:

  1. 点击操作 (Actions) > 编辑路由 (Edit routes)

  2. 对于 IPv4,请点击添加路由 (Add route)。对于目标 (Destination),输入0.0.0.0/0。对于目标 (Target),选择 VPC 终端。

  3. 点击保存更改 (Save changes)

步骤 4

选择带有网关负载均衡器终端的子网路由表,然后执行以下步骤:

  1. 点击操作 (Actions) > 编辑路由 (Edit routes)

  2. 对于 IPv4,请点击添加路由 (Add route)。对于目标 (Destination),输入0.0.0.0/0。对于目标 (Target),选择互联网网关。

  3. 点击保存更改 (Save changes)


Amazon CloudWatch - 验证部署

成功部署模板后,转到 Amazon CloudWatch 控制台以确保正在收集日志并创建了所需的警报。

日志

检查日志文件,以排除管理中心连接方面的任何问题。

过程

步骤 1

AWS 管理控制台上,转至服务 (Services) > 管理和监管 (Management & Governance) > CloudWatch

步骤 2

点击日志组 (Log groups),然后点击此处显示的任何日志组以查看日志。


警报

确保已在 Amazon CloudWatch 控制台上创建所需的警报。

过程

步骤 1

AWS 管理控制台上,转至服务 (Services) > 管理和监管 (Management & Governance) > CloudWatch

步骤 2

点击警报 (Alarms) > 所有警报 (All Alarms) 以显示警报列表以及触发外向扩展和内向扩展函数的条件。