修复实例的暴露 EC2 - AWS Security Hub

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

修复实例的暴露 EC2

AWS Security Hub 可以生成亚马逊弹性计算云 (EC2) 实例的暴露结果。

在 Security Hub 控制台上,暴露发现中涉及的 EC2 实例及其识别信息列在发现详情的 “资源” 部分中。通过编程方式,您可以通过 Security Hub API 的GetFindingsV2操作来检索资源详细信息。

确定风险调查结果中涉及的资源后,如果您不需要该资源,则可以将其删除。删除不必要的资源可以减少您的曝光概况和 AWS 成本。如果资源必不可少,请按照这些建议的补救步骤进行操作,以帮助降低风险。补救主题根据特征的类型进行划分。

单个暴露发现包含在多个补救主题中发现的问题。相反,您只需解决一个补救主题即可解决风险发现并降低其严重性级别。您的风险补救方法取决于您的组织要求和工作量。

注意

本主题中提供的补救指南可能需要在其他 AWS 资源中进行进一步的咨询。

实例的错误配置特征 EC2

以下是 EC2 实例的错误配置特征和建议的补救步骤。

该 EC2 实例允许使用版本 1 访问 IMDS

实例元数据是关于您的 Amazon EC2 实例的数据,应用程序可以使用这些数据来配置或管理正在运行的实例。实例元数据服务(IMDS)是实例上的组件,在实例上进行编码,用于安全访问实例元数据。如果 IMDS 没有得到适当的保护,它可能会成为潜在的攻击媒介,因为它提供了对临时凭证和其他敏感配置数据的访问权限。 IMDSv2 通过面向会话的身份验证、元数据请求需要会话令牌并限制会话持续时间,从而提供更强的防范漏洞利用保护。按照标准安全原则, AWS 建议您将Amazon EC2 实例配置为使用 IMDSv2 和禁用 IMDSv1。

测试应用程序兼容性

在实施之前 IMDSv2,请测试您的实例以确保其与兼容 IMDSv2。某些应用程序或脚本可能需要 IMDSv1 核心功能,并且需要额外的配置。有关测试应用程序兼容性的工具和推荐路径的更多信息,请参阅 Amazon Elastic Compute Cloud 用户指南中的过渡到使用实例元数据服务版本 2

更新要使用的实例 IMDSv2

修改要使用的现有实例 IMDSv2。有关更多信息,请参阅 Amazon 弹性计算云用户指南中的修改现有实例的实例元数据选项

对 Auto Scaling 组中的实例应用更新

如果您的实例属于 Auto Scaling 组,请使用新配置更新启动模板或启动配置,然后刷新实例。

与 Amazon EC2 实例关联的 IAM 角色具有管理访问策略

管理访问策略为 Amazon EC2 实例提供了广泛的访问权限 AWS 服务 和资源。这些策略通常包括实例功能不需要的权限。在 Amazon EC2 实例遭到入侵时,为其提供具有管理访问策略的 IAM 身份(而不是您的实例配置文件中附加的角色所需的最低权限集)可能会扩大攻击范围。 EC2 如果实例遭到入侵,攻击者可能会利用这些过多的权限在您的环境中横向移动、访问数据或操纵资源。遵循标准的安全原则,我们建议您授予最低权限,这意味着您只授予执行任务所需的权限。

审查并确定管理政策

在 IAM 控制面板中,找到具有角色名称的角色。查看附加到 IAM 角色的权限策略。如果该策略是 AWS 托管策略,请查找AdministratorAccessIAMFullAccess。否则,在策略文档中查找带有"Effect": "Allow", "Action": "*"、和的声明"Resource": "*"

实施最低权限访问

将管理策略替换为仅授予实例运行所需的特定权限的策略。有关 IAM 角色安全最佳实践的更多信息,请参阅AWS Identity and Access Management 用户指南中安全最佳实践中的应用最低权限权限。要识别不必要的权限,您可以使用 IAM Access Analyzer 来了解如何根据访问历史记录修改策略。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的外部访问和未使用访问的调查结果。或者,您可以创建一个新的 IAM 角色以避免影响使用现有角色的其他应用程序。在此场景中,创建一个新的 IAM 角色,然后将新的 IAM 角色与该实例关联。有关替换实例的 IAM 角色的说明,请参阅 A mazon Elastic Compute Cloud 用户指南中的将 IAM 角色附加到实例。

安全配置注意事项

如果实例需要服务级别的管理权限,请考虑实施以下其他安全控制措施以降低风险:

  • 安全配置注意事项

    • 多重身份验证 (MFA) — MFA 要求使用其他形式的身份验证,从而增加了额外的安全层。即使凭据遭到泄露,这也有助于防止未经授权的访问。有关更多信息,请参阅《用户指南》中的 “需要多重身份验证 (MFA) AWS Identity and Access Management ”

    • IAM 条件 — 设置条件元素允许您根据来源 IP 或 MFA 年龄等因素限制何时以及如何使用管理权限。有关更多信息,请参阅AWS Identity and Access Management 用户指南中的使用 IAM 策略中的条件进一步限制访问权限

    • 权限边界-权限边界确定角色可以拥有的最大权限,为具有管理访问权限的角色提供防护。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的使用权限边界委派账户内的权限管理

将更新应用于 auto Scaling 组中的实例

对于 AWS auto Scaling 组中的 Amazon EC2 实例,使用新的实例配置文件更新启动模板或启动配置,然后刷新实例。有关更新启动模板的信息,请参阅 Amazon Elastic Compute Cloud 用户指南中的修改启动模板(管理启动模板版本)。有关更多信息,请参阅使用实例刷新来更新 Auto Scaling 组中的实例。有关在 Auto Scaling 群组中使用 IAM 角色的更多信息,请参阅 Amazon A EC2 uto Scaling 用户指南中的适用于在亚马逊 EC2实例上运行的应用程序的 IAM 角色。

与 Amazon EC2 实例关联的 IAM 角色具有服务管理员策略

服务访问策略为 Amazon EC2 实例提供了访问 AWS 服务和资源的广泛权限。这些策略通常包括实例功能不需要的权限。为一个 IAM 身份提供对 Amazon EC2 实例的管理访问策略,而不是您的实例配置文件中附加的角色所需的最低权限集,可能会在实例遭到入侵时扩大攻击范围。遵循标准的安全原则,我们建议您授予最低权限,这意味着您只授予执行任务所需的权限。

审查并确定管理政策

在 IAM 控制面板中,找到具有角色名称的角色。查看附加到 IAM 角色的权限策略。如果该策略是 AWS 托管策略,请查找AdministratorAccessIAMFullAccess。否则,在策略文档中查找带有"Effect": "Allow", "Action": "*"、和的声明"Resource": "*"

实施最低权限访问

将服务管理员策略替换为仅授予实例运行所需的特定权限的策略。有关 IAM 角色安全最佳实践的更多信息,请参阅AWS Identity and Access Management 用户指南中安全最佳实践中的应用最低权限权限。要识别不必要的权限,您可以使用 IAM Access Analyzer 来了解如何根据访问历史记录修改策略。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的外部访问和未使用访问的调查结果。或者,您可以创建新的 IAM 角色以避免影响使用现有角色的其他应用程序。在此场景中,创建一个新的 IAM 角色,然后将新的 IAM 角色与该实例关联。有关替换实例的 IAM 角色的信息,请参阅 A mazon Elastic Compute Cloud 用户指南中的将 IAM 角色附加到实例

安全配置注意事项

如果实例需要服务级别的管理权限,请考虑实施以下其他安全控制措施以降低风险:

安全配置注意事项

如果实例需要服务级别的管理权限,请考虑实施以下其他安全控制措施以降低风险:

  • 多重身份验证 (MFA) — MFA 要求使用其他形式的身份验证,从而增加了额外的安全层。即使凭据遭到泄露,这也有助于防止未经授权的访问。有关更多信息,请参阅《用户指南》中的 “需要多重身份验证 (MFA) AWS Identity and Access Management ”

  • IAM 条件 — 设置条件元素允许您根据来源 IP 或 MFA 年龄等因素限制何时以及如何使用管理权限。有关更多信息,请参阅AWS Identity and Access Management 用户指南中的使用 IAM 策略中的条件进一步限制访问权限

  • 权限边界-权限边界确定角色可以拥有的最大权限,为具有管理访问权限的角色提供防护。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的使用权限边界委派账户内的权限管理

对 Auto Scaling 组中的实例应用更新

对于 AWS auto Scaling 组中的 Amazon EC2 实例,使用新的实例配置文件更新启动模板或启动配置,然后刷新实例。有关更新启动模板的信息,请参阅 Amazon Elastic Compute Cloud 用户指南中的修改启动模板(管理启动模板版本)。有关更多信息,请参阅使用实例刷新来更新 Auto Scaling 组中的实例。有关在 Auto Scaling 群组中使用 IAM 角色的更多信息,请参阅 Amazon A EC2 uto Scaling 用户指南中的适用于在亚马逊 EC2实例上运行的应用程序的 IAM 角色。

Amazon EC2 实例具有允许 SSH 或 RDP 访问的安全组或网络 ACL

SSH 和 RDP 等远程访问协议允许用户从外部位置连接和管理 Amazon EC2 实例。当安全组允许通过互联网不受限制地访问这些协议时,它们会允许您的实例访问互联网,从而增加您的 Amazon EC2 实例的攻击面。遵循标准的安全原则, AWS 建议您将远程访问限制在特定、可信的 IP 地址或范围内。

  1. 修改安全组规则

    将对您的 Amazon EC2 实例的访问权限限制为特定的可信 IP 地址。将 SSH 和 RDP 访问限制为特定的可信 IP 地址,或者使用 CIDR 表示法指定 IP 范围(例如 198.168.1.0/24)。要修改安全组规则,请参阅 Amazon 弹性计算云用户指南中的配置安全组规则

Amazon EC2 实例有一个开放的安全组

安全组充当您的 Amazon EC2 实例的虚拟防火墙,用于控制入站和出站流量。开放式安全组允许从任何 IP 地址进行不受限制的访问,这可能会使您的实例面临未经授权的访问。根据标准安全原则, AWS 建议将安全组的访问权限限制为特定 IP 地址和端口。

查看安全组规则并评估当前配置

评估哪些端口是开放的,并且可以从广泛的 IP 范围访问,例如(0.0.0.0/0 or ::/0)。有关查看安全组详细信息的说明,请参阅 .NET 移植助手 API 参考DescribeSecurityGroups中的。

修改安全组规则

修改您的安全组规则,以限制对特定可信 IP 地址或范围的访问。更新安全组规则时,请考虑通过为每个所需的源 IP 范围创建规则或限制对特定端口的访问权限来区分不同网段的访问要求。要修改安全组规则,请参阅 Amazon EC2 用户指南中的配置安全组规则

Amazon EC2 实例具有公有 IP 地址

具有公有 IP 地址的 Amazon EC2 实例可通过互联网公开访问。虽然向外部客户提供服务的实例有时需要公有 IP 地址,但攻击未经授权的委托人可能会利用公有 IP 地址。遵循标准的安全原则, AWS 建议您尽可能限制资源的公开曝光。

将实例移至私有子网

如果实例不需要直接访问互联网,可以考虑将其移至您的 VPC 内的私有子网。这将删除其公有 IP 地址,同时仍允许其与您的 VPC 内的其他资源通信。有关更多信息,请参阅如何将我的 Amazon EC2 实例移动到另一个子网、可用区或 VPC? 在 AWS 知识中心。

将实例配置为在没有公有 IP 地址的情况下启动

如果实例是在不需要公有 IP 地址的公有子网中启动的,则可以修改启动配置以防止自动分配公有 IP 地址。可以在子网级别或启动单个实例时禁用此功能。有关更多信息,请参阅亚马逊虚拟私有云用户指南中的修改子网的 EC2instance IP 地址属性,以及亚马逊弹性计算云用户指南中的亚马逊 IP 地址。

其他访问方法

对于其他访问方法,请考虑以下选项:

  • 使用 NAT 网关进行出站互联网连接

    对于私有子网中需要访问互联网(例如下载更新)的实例,可以考虑使用 NAT 网关而不是分配公有 IP 地址。NAT 网关允许私有子网中的实例启动到 Internet 的出站连接,同时阻止来自互联网的入站连接。有关更多信息,请参阅 A mazon Virtual Private Cloud 用户指南中的 NAT 网关

  • 使用 Elastic Lo ad Balancing — 对于运行 Web 应用程序的实例,可以考虑使用弹性负载均衡器 (LB)。 LBs 可以配置为允许您的实例在私有子网中运行,而 LB 在公有子网中运行并处理互联网流量。有关更多信息,请参阅什么是 Elastic Load Balancing? 在 AWS ELB 用户指南中。有关如何为负载均衡器选择粘AWS 性策略的指导,请参阅规范性指南中的负载均衡器子网

实例的可达性特征 EC2

以下是 EC2 实例的可访问性特征和建议的补救步骤。

可以通过互联网访问该 EC2 实例

具有可通过互联网网关(包括应用程序负载均衡器或经典负载均衡器后面的实例)、VPC 对等连接或 VPN 虚拟网关从 Internet 访问端口的 Amazon EC2 实例可能会将您的实例暴露在互联网上。遵循标准的安全原则,我们建议通过将入站流量限制在必要的来源和端口上,从而实现最低权限的网络访问控制。

修改或移除安全组规则

在 “资源” 选项卡中,打开 Amazon EC2 安全组的资源。查看实例是否需要互联网访问才能正常运行。修改或移除允许不受限制访问的入站安全组规则(0.0.0.0/0::/0)。根据特定 IP 范围或安全组实施更严格的规则。如果需要有限的公共访问权限,请限制对实例运行所需的特定端口和协议的访问。有关管理安全组规则的说明,请参阅 Amazon EC2 用户指南中的配置安全组规则

更新网络 ACLs

查看和修改与实例子网关联的网络访问控制列表 (ACLs)。验证 ACL 设置是否与安全组的更改保持一致,并且不要无意中允许公共访问。有关修改网络的说明 ACLs,请参阅 Amazon VPC 用户指南 ACLs中的使用网络

其他访问方法

对于其他访问方法,请考虑以下选项:

  • 使用 NAT 网关进行出站互联网连接 — 对于私有子网中需要访问互联网(例如,下载更新)的实例,可以考虑使用 NAT 网关而不是分配公有 IP 地址。NAT 网关允许私有子网中的实例启动到 Internet 的出站连接,同时阻止来自互联网的入站连接。s

  • 使用 Systems Manager 会话管理器 — 会话管理器提供对您的 Amazon EC2 实例的安全外壳访问权限,无需入站端口、管理 SSH 密钥或维护堡垒主机。

  • 使用 WAF 和 Elastic Load Balancing 或应用程序负载均衡器 — 对于运行 Web 应用程序的实例,可以考虑将负载均衡与 AWS Web 应用程序防火墙 (WAF) 结合使用。 LBs 可以配置为允许您的实例在私有子网中运行,而 LB 在公有子网中运行并处理互联网流量。在您的负载均衡器中添加 WAF 可提供额外的保护,抵御网络漏洞和机器人。

可以在亚马逊 VPC 内访问亚马逊 EC2 实例

Amazon Virtual Private Cloud(亚马逊 VPC)允许您在定义的虚拟网络中启动 AWS 资源。如果实例遭到入侵,允许实例之间不受限制访问的 Amazon VPC 网络配置可能会扩大攻击范围。遵循安全最佳实践, AWS 建议在子网和安全组级别实施网络分段和最低权限访问控制。

查看亚马逊 VPC 网络连接模式

在风险调查结果中,识别 ARN 中的安全组 ID。确定哪些实例需要相互通信以及需要在哪些端口上进行通信。您可以使用 Amazon VPC 流日志来分析您的 Amazon VPC 中的现有流量模式,以帮助确定正在使用哪些端口。

修改安全组规则

修改您的安全组规则,以限制对特定可信 IP 地址或范围的访问。例如,与其允许来自整个 VPC CIDR 范围(例如 10.0.0.0/16)的所有流量,不如限制对特定安全组或 IP 范围的访问。更新安全组规则时,请考虑通过为每个所需的源 IP 范围创建规则或限制对特定端口的访问权限来区分不同网段的访问要求。要修改安全组规则,请参阅 Amazon EC2 用户指南中的配置安全组规则。

考虑根据安全要求或功能将您的 Amazon VPC 资源组织成子网。例如,将 Web 服务器和数据库服务器放在不同的子网中。有关更多信息,请参阅《Amazon Virtual Private Cloud 用户指南》中的 VPC 子网

配置网络 ACLs 以实现子网级保护

网络访问控制列表 (NACLs) 在子网级别提供了额外的安全层。与安全组不同, NACLs 它们是无状态的,需要明确定义入站和出站规则。有关更多信息,请参阅 Amazon Virtual Private Cloud 用户指南中的使用网络访问控制列表控制子网流量

额外注意事项

在限制对您的 Amazon VPC 的访问权限时,请考虑以下几点

  • T@@ ransit Gateway 或 Amazon VPC 对等互连具有限制性路由 — 如果您的架构使用多个 VPCs 需要通信的架构,请考虑使用 T AWS ransit Gateway 和 Amazon VPC 对等互连来提供亚马逊之间的连接, VPCs 同时允许您控制哪些子网可以相互通信。有关更多信息,请参阅开始使用 Amazon VPC 传输网关VPC 对等连接

  • 服务终端节点和私有链接 — Amazon VPC 终端节点可用于将流量保持在 AWS 网络内,以便与 AWS 资源通信,而不是通过互联网进行通信。这减少了访问相同服务的实例之间对直接连接的需求。有关 VPC 终端节点的信息,请参阅什么是 Amazon VPC 终端节点? 在《亚马逊虚拟私有云 Virtual Private Cloud 用户指南》中。要连接到其他 Amazon 上托管的服务 VPCs,请考虑使用 AWS PrivateLink。

EC2 实例的漏洞特征

以下是 EC2 实例的漏洞特征和建议的补救步骤。

EC2 实例存在可通过网络利用的软件漏洞,很有可能被利用

安装在 EC2 实例上的软件包可能会暴露在常见漏洞和漏洞中(CVEs)。 CVEs 危急会给您的 AWS 环境带来严重的安全风险。未经授权的委托人可以利用这些未修补的漏洞来破坏数据的机密性、完整性或可用性,或者访问其他系统。由于漏洞利用代码可能已经公开并被攻击者或自动扫描工具积极使用,因此具有高被利用可能性的关键漏洞构成了直接的安全威胁。我们建议修补这些漏洞以保护您的实例。

更新受影响的实例

查看该特征的 “漏洞” 选项卡中的 “参考” 部分。供应商文档可能包括具体的补救指南。按照以下一般准则执行相应的补救措施:

使用 Systems Manager 补丁管理器为操作系统和应用程序应用补丁。Patch Manager 可帮助您在大型实例组上自动选择和部署操作系统和软件补丁。如果您没有配置 Patch Manager,请在每个受影响的实例上手动更新操作系统。

按照供应商推荐的程序,将受影响的应用程序更新到最新的安全版本。要跨多个实例管理应用程序更新,请考虑使用 Systems Manager 状态管理器使您的软件保持一致状态。如果没有更新,请考虑在补丁发布之前删除或禁用有漏洞的应用程序,或者采取其他缓解措施,例如限制对应用程序的网络访问或禁用易受攻击的功能。

请遵循 Amazon Inspector 调查结果中提供的具体补救建议。这可能涉及更改安全组规则、修改实例配置或调整应用程序设置。

检查该实例是否属于 Auto Scaling 组。AMI 替换补丁是通过更新配置为在 Auto Scaling 组中部署新 Ama EC2 zon 实例的 AMI ID 在不可变基础设施上完成的。如果您使用的是 custom/golden AMI,请使用新 AMI 创建实例,然后自定义该实例并创建新的金色 AMI。有关更多信息,请参阅 AMI 更新修补(使用为 Auto Scaling 组打补 AMIs 丁)。

未来的考虑

为了防止 future 事件的发生,可以考虑实施漏洞管理计划。可以将 Amazon Inspector 配置为 CVEs 自动扫描您的实例。Amazon Inspector 也可以与 Security Hub 集成以进行自动补救。考虑使用 Systems Manager 维护窗口实施定期修补计划,以最大限度地减少对实例的干扰。

Amazon EC2 实例存在软件漏洞

安装在 Amazon 上的软件包 EC2instances 可能会暴露在常见漏洞和风险之下(CVEs)。非临界 CVEs 表示安全漏洞,与严重漏洞相比,其严重性或可利用性较低。 CVEs虽然这些漏洞带来的直接风险较小,但攻击者仍然可以利用这些未修补的漏洞来破坏数据的机密性、完整性或可用性,或者访问其他系统。按照安全最佳实践, AWS建议修补这些漏洞以保护您的实例免受攻击。

更新受影响的实例

使用 AWS Systems Manager 补丁管理器为操作系统应用补丁。Patch Manager 可帮助您在大型实例组上自动选择和部署操作系统和软件补丁。如果您没有配置 Patch Manager,请在每个受影响的实例上手动更新操作系统。

按照供应商推荐的程序,将受影响的应用程序更新到最新的安全版本。要跨多个实例管理应用程序更新,请考虑使用 S AWS ystems Manager 状态管理器使您的软件保持一致状态。如果没有更新,请考虑在补丁发布之前删除或禁用有漏洞的应用程序,或者采取其他缓解措施,例如限制对应用程序的网络访问或禁用易受攻击的功能。

请遵循 Amazon Inspector 调查结果中提供的具体补救建议。这可能涉及更改安全组规则、修改实例配置或调整应用程序设置。

检查该实例是否属于 Auto Scaling 组。AMI 替换补丁是通过更新配置为在 Auto Scaling 组中部署新 Ama EC2 zon 实例的 AMI ID 在不可变基础设施上完成的。如果您使用的是 custom/golden AMI,请使用新 AMI 创建实例,然后自定义该实例并创建新的金色 AMI。有关更多信息,请参阅 AMI 更新修补(使用为 Auto Scaling 组打补 AMIs 丁)。

未来的考虑

为了防止 future 事件的发生,可以考虑实施漏洞管理计划。可以将 Amazon Inspector 配置为 CVEs 自动扫描您的实例。Amazon Inspector 也可以与 Security Hub 集成以进行自动补救。考虑使用 Systems Manager 维护窗口实施定期修补计划,以最大限度地减少对实例的干扰。