本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
修复 EC2 实例的暴露
AWS Security Hub 可以生成亚马逊弹性计算云 (EC2) 实例的暴露结果。
在 Security Hub 控制台上,暴露调查发现中涉及的 EC2 实例及其识别信息列在调查发现详细信息的资源部分中。通过编程方式,您可以通过 Security Hub CSP GetFindingsV2M API 的操作来检索资源详细信息。
在确定暴露调查发现中涉及的资源后,如果不需要该资源,您可以将其删除。删除不必要的资源可以减少您的曝光概况和 AWS 成本。如果资源至关重要,请按照这些建议的修复步骤进行操作以帮助降低风险。修复主题根据特征的类型进行划分。
单个暴露调查发现包含在多个修复主题中发现的问题。相反,您只需解决一个修复主题即可解决暴露调查发现并降低其严重性级别。您的风险修复方法取决于您的组织要求和工作负载。
注意
本主题中提供的补救指南可能需要在其他 AWS 资源中进行进一步的咨询。
目录
EC2 实例的错误配置特征
以下是 EC2 实例的错误配置特征和建议的修复步骤。
EC2 实例允许使用版本 1 访问 IMDS
实例元数据是有关您的 Amazon EC2 实例的数据,可以用来配置或管理正在运行的实例。实例元数据服务(IMDS)是实例上的组件,在实例上进行编码,用于安全访问实例元数据。如果 IMDS 没有得到妥善保护,它可能会成为潜在攻击向量,因为它提供了对临时凭证和其他敏感配置数据的访问权限。IMDSv2 通过面向会话的身份验证提供更强的防漏洞利用保护,要求对元数据请求使用会话令牌,并限制会话持续时间。按照标准安全原则, AWS 建议您将亚马逊 EC2 实例配置为使用 imdsv2 并禁用 imdsv1。
测试应用程序兼容性
在实施 IMDSv2 之前,请测试您的实例以确保其与 IMDSv2 兼容。某些应用程序或脚本可能需要 IMDSv1 来实现核心功能,并且需要额外配置。有关测试应用程序兼容性的工具和推荐路径的更多信息,请参阅《Amazon Elastic Compute Cloud 用户指南》中的转换为使用实例元数据服务版本 2。
更新实例以使用 IMDSv2
修改现有实例以使用 IMDSv2。有关更多信息,请参阅《Amazon Elastic Compute Cloud 用户指南》中的为现有实例修改实例元数据选项。
将更新应用于自动扩缩组中的实例
如果您的实例属于某个自动扩缩组,请使用新配置更新您的启动模板或启动配置,并执行实例刷新。
与 Amazon EC2 实例关联的 IAM 角色具有管理访问策略
管理访问策略为 Amazon EC2 实例提供了广泛的访问权限 AWS 服务 和资源。这些策略通常包含实例功能不需要的权限。如果 Amazon EC2 实例遭到入侵,在 Amazon EC2 实例上提供具有管理访问策略的 IAM 身份(而不是附加到实例配置文件的角色所需的最低权限集)可能会扩大攻击范围。如果实例遭到入侵,攻击者可能会利用这些过多的权限在您的环境中横向移动、访问数据或操纵资源。根据标准安全原则,我们建议您授予最低权限,这意味着您仅授予执行任务所需的权限。
查看和识别管理策略
在 IAM 控制面板中,找到具有角色名称的角色。查看附加到 IAM 角色的权限策略。如果该策略是 AWS 托管策略,请查找AdministratorAccess或IAMFullAccess。否则,请在策略文档中查找带有 "Effect": "Allow", "Action": "*" 和 "Resource": "*" 的语句。
实施最低权限访问
将管理策略替换为仅授予实例运行所需的特定权限的策略。有关 IAM 角色的安全最佳实践的更多信息,请参阅《AWS Identity and Access Management 用户指南》中的应用最低权限许可。要识别不必要的权限,您可以使用 IAM Access Analyzer 来了解如何基于访问历史记录修改策略。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的外部和未使用的访问的调查发现。或者,您可以创建一个新的 IAM 角色,以避免影响使用现有角色的其他应用程序。在这种情况下,请创建一个新的 IAM 角色,然后将新的 IAM 角色与实例关联起来。有关如何替换实例的 IAM 角色的说明,请参阅《Amazon Elastic Compute Cloud 用户指南》中的将 IAM 角色附加到实例。
安全配置注意事项
如果实例需要服务级别的管理权限,请考虑实施以下额外安全控制措施来降低风险:
-
安全配置注意事项
-
Multi-factor 身份验证 (MFA) — MFA 要求使用其他形式的身份验证,从而增加了额外的安全层。即使凭证遭到泄露,这也有助于防止未经授权的访问。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的需要多重身份验证(MFA)。
-
IAM 条件 – 通过设置条件元素,您可以基于源 IP 或 MFA 期限等因素限制何时以及如何使用管理权限。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的使用 IAM 策略中的条件进一步限制访问权限。
-
权限边界 – 权限边界规定了角色可以拥有的最大权限,为具有管理访问权限的角色提供防护。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的使用权限边界在账户内委派权限管理。
-
将更新应用于自动扩缩组中的实例
对于 AWS 自动扩展组中的 Amazon EC2 实例,使用新的实例配置文件更新启动模板或启动配置,然后刷新实例。有关更新启动模板的信息,请参阅《Amazon Elastic Compute Cloud 用户指南》中的修改启动模板(管理启动模板版本)。有关更多信息,请参阅使用实例刷新更新自动扩缩组中的实例。有关将 IAM 角色与自动扩缩组结合使用的更多信息,请参阅《Amazon EC2 Auto Scaling 用户指南》中的在 Amazon EC2 实例上运行的应用程序的 IAM 角色。
与 Amazon EC2 实例关联的 IAM 角色具有服务管理员策略
服务访问策略为 Amazon EC2 实例提供了对 AWS 服务和资源的广泛权限。这些策略通常包含实例功能不需要的权限。如果实例遭到入侵,在 Amazon EC2 实例上提供具有管理访问策略的 IAM 身份(而不是附加到实例配置文件的角色所需的最低权限集)可能会扩大攻击范围。根据标准安全原则,我们建议您授予最低权限,这意味着您仅授予执行任务所需的权限。
查看和识别管理策略
在 IAM 控制面板中,找到具有角色名称的角色。查看附加到 IAM 角色的权限策略。如果该策略是 AWS 托管策略,请查找AdministratorAccess或IAMFullAccess。否则,请在策略文档中查找带有 "Effect": "Allow", "Action": "*" 和 "Resource": "*" 的语句。
实施最低权限访问
将服务管理员策略替换为仅授予实例运行所需的特定权限的策略。有关 IAM 角色的安全最佳实践的更多信息,请参阅《AWS Identity and Access Management 用户指南》中的应用最低权限许可。要识别不必要的权限,您可以使用 IAM Access Analyzer 来了解如何基于访问历史记录修改策略。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的外部和未使用的访问的调查发现。或者,您可以创建一个新的 IAM 角色,以避免影响使用现有角色的其他应用程序。在这种情况下,请创建一个新的 IAM 角色,然后将新的 IAM 角色与实例关联起来。有关如何替换实例的 IAM 角色的信息,请参阅《Amazon Elastic Compute Cloud 用户指南》中的将 IAM 角色附加到实例。
安全配置注意事项
如果实例需要服务级别的管理权限,请考虑实施以下额外安全控制措施来降低风险:
安全配置注意事项
如果实例需要服务级别的管理权限,请考虑实施以下额外安全控制措施来降低风险:
-
Multi-factor 身份验证 (MFA) — MFA 要求使用其他形式的身份验证,从而增加了额外的安全层。即使凭证遭到泄露,这也有助于防止未经授权的访问。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的需要多重身份验证(MFA)。
-
IAM 条件 – 通过设置条件元素,您可以基于源 IP 或 MFA 期限等因素限制何时以及如何使用管理权限。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的使用 IAM 策略中的条件进一步限制访问权限。
-
权限边界 – 权限边界规定了角色可以拥有的最大权限,为具有管理访问权限的角色提供防护。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的使用权限边界在账户内委派权限管理。
将更新应用于自动扩缩组中的实例
对于 AWS 自动扩展组中的 Amazon EC2 实例,使用新的实例配置文件更新启动模板或启动配置,然后刷新实例。有关更新启动模板的信息,请参阅《Amazon Elastic Compute Cloud 用户指南》中的修改启动模板(管理启动模板版本)。有关更多信息,请参阅使用实例刷新更新自动扩缩组中的实例。有关将 IAM 角色与自动扩缩组结合使用的更多信息,请参阅《Amazon EC2 Auto Scaling 用户指南》中的在 Amazon EC2 实例上运行的应用程序的 IAM 角色。
Amazon EC2 实例具有允许 SSH 或 RDP 访问的安全组或网络 ACL
SSH 和 RDP 等远程访问协议允许用户从外部位置连接和管理 Amazon EC2 实例。当安全组允许从互联网无限制地访问这些协议时,它们会允许通过互联网访问您的 Amazon EC2 实例,从而增加这些实例的攻击面。遵循标准的安全原则, AWS 建议您将远程访问限制在特定、可信的 IP 地址或范围内。
-
修改安全组规则
将对 Amazon EC2 实例的访问限制于特定的受信任 IP 地址。将 SSH 和 RDP 访问限制为特定的可信 IP 地址,或者使用 CIDR 表示法指定 IP 范围(例如 198.168.1)。 0/24)。要修改安全组规则,请参阅《Amazon Elastic Compute Cloud 用户指南》中的配置安全组规则。
Amazon EC2 实例具有开放式安全组
安全组充当 Amazon EC2 实例的虚拟防火墙以控制入站和出站流量。开放式安全组允许从任何 IP 地址进行不受限制的访问,这可能会使实例面临未经授权的访问。根据标准安全原则, AWS 建议将安全组的访问权限限制为特定 IP 地址和端口。
查看安全组规则并评测当前配置
评估哪些端口已开放且可从广泛的范围 IP 地址(例如 (0.0.0.0/0 or ::/0))访问。有关查看安全组详细信息的说明,请参阅 .NET 移植助手 API 参考DescribeSecurityGroups中的。
修改安全组规则
修改您的安全组规则,将访问限制于特定的受信任 IP 地址或范围。更新安全组规则时,请考虑通过为每个所需的源 IP 地址范围创建规则或限制对特定端口的访问来区分不同网段的访问要求。要修改安全组规则,请参阅《Amazon EC2 用户指南》中的配置安全组规则。
EC2 实例的可访问性特征
以下是 EC2 实例的可访问性特征和建议的修复步骤。
可通过互联网访问 EC2 实例
带有可从互联网访问的端口的 Amazon EC2 实例可能会暴露您的实例。可访问性可通过 Internet 网关(包括应用程序负载均衡器或经典负载均衡器后面的实例)、VPC 对等连接或 VPN 虚拟网关实现。根据标准安全原则,我们建议通过将入站流量限制在仅必要的来源和端口来实施最低权限网络访问控制。
修改或移除安全组规则
在资源选项卡中,打开 Amazon EC2 安全组的资源。检查实例运行是否需要访问互联网。修改或移除允许无限制访问(0.0.0.0/0 或 ::/0)的入站安全组规则。根据特定 IP 范围或安全组实施更严格的规则。如果需要有限的公开访问,请将访问限制于实例运行所需的特定端口和协议。有关管理安全组规则的说明,请参阅《Amazon EC2 用户指南》中的配置安全组规则。
更新网络 ACL
查看并修改与实例子网关联的网络访问控制列表(ACL)。验证 ACL 设置是否与安全组更改一致,并且不会无意中允许公开访问。有关修改网络 ACL 的说明,请参阅《Amazon VPC 用户指南》中的使用网络 ACL。
替代访问方法
请考虑以下替代访问方法选项:
-
使用 NAT 网关进行出站互联网连接 – 对于私有子网中需要访问互联网的实例(例如下载更新),请考虑使用 NAT 网关而不是分配公共 IP 地址。NAT 网关允许私有子网中的实例启动与互联网的出站连接,同时阻止来自互联网的入站连接。
-
使用 Systems Manager 会话管理器:会话管理器提供对 Amazon EC2 实例的 Secure Shell 访问,无需入站端口、管理 SSH 密钥或维护堡垒主机。
-
使用 WAF 和 Elastic Load Balancing 或应用程序负载均衡器 — 对于运行 Web 应用程序的实例,可以考虑将负载均衡与 AWS Web 应用程序防火墙 (WAF) 结合使用。LB 可以配置为允许您的实例在私有子网中运行,而 LB 在公共子网中运行并处理互联网流量。向负载均衡器添加 WAF 可提供额外保护来抵御 Web 漏洞和机器人。
EC2 实例的漏洞特征
以下是 EC2 实例的漏洞特征和建议的修复步骤。
EC2 实例存在可通过网络利用的软件漏洞,被利用的可能性很高
EC2 实例上安装的软件包可能会暴露于常见漏洞和暴露(CVE)。关键 CVE 会给您的 AWS 环境带来严重的安全风险。未经授权的主体可以利用这些未修补的漏洞来破坏数据的保密性、完整性或可用性,或访问其他系统。利用可能性较高的严重漏洞代表直接的安全威胁,因为漏洞利用代码可能已经公开并被攻击者或自动扫描工具积极使用。我们建议您修补这些漏洞以保护您的实例。
更新受影响的实例
查看特征的漏洞选项卡中的参考部分。供应商文档可能包括具体的修复指导。请按照以下一般准则进行适当的修复:
使用 Systems Manager 补丁管理器来应用操作系统和应用程序的补丁。补丁管理器可帮助您在大量实例上自动选择和部署操作系统和软件补丁。如果没有配置补丁管理器,请手动更新每个受影响实例上的操作系统。
按照供应商推荐的步骤,将受影响的应用程序更新到最新的安全版本。要管理多个实例中的应用程序更新,请考虑使用 Systems Manager 状态管理器使软件保持一致状态。如果没有更新可用,请考虑在补丁发布或采取其他缓解措施(例如,限制对应用程序的网络访问或禁用易受攻击的功能)之前移除或禁用易受攻击的应用程序。
遵循 Amazon Inspector 调查发现中提供的具体修复建议。这可能涉及更改安全组规则、修改实例配置或调整应用程序设置。
检查该实例是否属于 Auto Scaling 组。 AMI-replacement 通过更新配置为在 Auto Scaling 组中部署新 Amazon EC2 实例的 AMI ID,可以在不可变基础设施上进行修补。如果您使用的是 custom/golden AMI,请使用新 AMI 创建实例,然后自定义该实例并创建新的金色 AMI。有关更多信息,请参阅 AMI 更新修补(使用已修补的 AMI 用于 Auto Scaling 群组)。
未来注意事项
为防止未来再次发生,请考虑实施漏洞管理计划。可以将 Amazon Inspector 配置为自动扫描实例上的 CVE。Amazon Inspector 还可以与 Security Hub 集成以实现自动修复。请考虑使用 Systems Manager Maintenance Windows 实施定期修补计划,以尽量减少对实例的中断。
Amazon EC2 实例存在软件漏洞
安装在 Amazon EC2 实例上的软件包可能会暴露在常见漏洞和风险敞口 (CVE) 中。与严重 CVE 相比,非严重 CVE 代表安全隐患,其严重性或可利用性较低。虽然这些漏洞不会造成直接风险,但攻击者仍可以利用这些未修补的漏洞来破坏数据的保密性、完整性或可用性,或访问其他系统。按照安全最佳实践, AWS 建议修补这些漏洞以保护您的实例免受攻击。
更新受影响的实例
使用 AWS Systems Manager 补丁管理器为操作系统应用补丁。补丁管理器可帮助您在大量实例上自动选择和部署操作系统和软件补丁。如果没有配置补丁管理器,请手动更新每个受影响实例上的操作系统。
按照供应商推荐的步骤,将受影响的应用程序更新到最新的安全版本。要跨多个实例管理应用程序更新,请考虑使用 S AWS ystems Manager 状态管理器使您的软件保持一致状态。如果没有更新可用,请考虑在补丁发布或采取其他缓解措施(例如,限制对应用程序的网络访问或禁用易受攻击的功能)之前移除或禁用易受攻击的应用程序。
遵循 Amazon Inspector 调查发现中提供的具体修复建议。这可能涉及更改安全组规则、修改实例配置或调整应用程序设置。
检查该实例是否属于 Auto Scaling 组。 AMI-replacement 通过更新配置为在 Auto Scaling 组中部署新 Amazon EC2 实例的 AMI ID,可以在不可变基础设施上进行修补。如果您使用的是 custom/golden AMI,请使用新 AMI 创建实例,然后自定义该实例并创建新的金色 AMI。有关更多信息,请参阅 AMI 更新修补(使用已修补的 AMI 用于 Auto Scaling 群组)。
未来注意事项
为防止未来再次发生,请考虑实施漏洞管理计划。可以将 Amazon Inspector 配置为自动扫描实例上的 CVE。Amazon Inspector 还可以与 Security Hub 集成以实现自动修复。请考虑使用 Systems Manager Maintenance Windows 实施定期修补计划,以尽量减少对实例的中断。
EC2 实例具有 End-Of-Life 操作系统
EC2 实例运行的操作系统已过期,不再由原始开发人员支持或维护。这会使实例面临安全漏洞和潜在攻击。当操作系统寿命结束时,供应商通常会停止发布新的安全公告。现有的安全公告也可以从供应商 Feed 中删除。因此,Amazon Inspector可能会停止为已知的CVE生成调查结果,从而在安全覆盖方面造成进一步的漏洞。
请参阅《亚马逊检查员用户指南》中的已停产操作系统,了解有关亚马逊检查员可以检测到的已使用寿命终止的操作系统的信息。
更新到支持的操作系统版本
我们建议更新到支持的操作系统版本。在风险调查结果中,打开资源以访问受影响的资源。在更新实例上的操作系统版本之前,请查看 Amazon Inspector 用户指南中支持的操作系统中的可用版本,了解当前支持的操作系统版本列表。
EC2 实例包含恶意软件包
恶意软件包是包含有害代码的软件组件,旨在危害系统和数据的机密性、完整性和可用性。恶意软件包会对您的实例构成严重威胁,因为攻击者可以在不利用漏洞的情况下自动执行恶意代码。按照安全最佳实践, AWS 建议移除恶意软件包,以保护您的实例免受潜在攻击。
移除恶意软件包
在特征的 “漏洞” 选项卡的 “参考” 部分中查看恶意软件包的详细信息,以了解威胁。使用相应的软件包管理器删除已识别的恶意软件包。有关示例,请参阅《亚马逊 Linux 2023 用户指南》中的 Pack age 管理工具。删除恶意软件包后,可以考虑执行扫描,确保所有可能由恶意代码安装的软件包都已删除。有关更多信息,请参阅 GuardDuty中的启动 On-demand 恶意软件扫描。
EC2 实例包含恶意文件
恶意文件包含有害代码,旨在危害系统和数据的机密性、完整性和可用性。恶意文件会对您的实例构成严重威胁,因为攻击者可以在不利用漏洞的情况下自动执行恶意代码。遵循安全最佳实践, AWS 建议删除恶意文件以保护您的实例免受潜在攻击。
移除恶意文件
要识别包含恶意文件的特定亚马逊 Elastic Block Store (Amazon EBS) 卷,请查看该特征发现详情的 “资源” 部分。识别出带有恶意文件的卷后,请移除已识别的恶意文件。删除恶意文件后,请考虑执行扫描,以确保可能由恶意文件安装的所有文件都已删除。有关更多信息,请参阅 GuardDuty中的启动 On-demand 恶意软件扫描。