暴露的长期凭证仍然是AWS客户事件响应团队(CIRT)观察到的安全事件中威胁行为者最常利用的入口点。威胁行为者对长期凭证或访问密钥的暴露和后续使用给云环境带来了安全风险。此外,糟糕的密钥轮换实践、多个用户之间共享访问密钥或未能撤销未使用的凭证都可能使系统面临风险。
强烈不鼓励使用长期凭证,这为迁移到AWS身份和访问管理(IAM)角色和联合访问提供了机会。虽然我们推荐的最佳实践是让客户摆脱长期凭证,但我们认识到这种转变可能并非对所有组织都立即可行。
构建针对意外访问长期凭证的全面防御需要采取战略性的分层方法。此方法旨在弥合理想安全实践与现实操作限制之间的差距,为管理需要长期凭证的传统AWS工作负载的团队提供可操作的步骤。
在本文中,您将学习如何构建您的防御体系,首先通过Amazon Q Developer和AWS IAM Access Analyzer等服务识别现有风险和潜在暴露情况,从而了解整个环境中的凭证风险。然后,通过服务控制策略(SCPs)和数据边界建立严格的边界,以控制凭证的创建和使用方式。有了这些机制后,您可以通过网络级控制来加强您的防御态势,这些控制有助于保护可能使用访问密钥的基础设施,实施AWS WAF和Amazon Inspector等服务以帮助防范漏洞利用。最后,实施自动化密钥轮换等操作最佳实践,以维持持续的安全卫生并最小化潜在泄露的影响。
检测当前访问密钥和暴露情况
审计当前访问密钥
为了进行全面审计,组织应定期生成凭证报告,以识别IAM用户拥有的长期凭证以及其他相关信息,例如密钥上次轮换时间、上次使用时间、上次使用的服务和上次使用的区域。这些报告为您提供了凭证环境的重要可见性,使您能够通过关注活动陈旧、超出轮换策略以及来自不熟悉区域的意外使用模式等访问密钥来发现未使用或可能已泄露的凭证。
检测暴露的访问密钥
凭证泄露的一个常见来源是通过无意中提交到公共代码库。当开发人员意外地将凭证提交到公共仓库时,这些凭证可能会被对手使用的自动扫描工具收集。代码扫描是一个基础步骤,有助于在这些敏感凭证被意外提交到代码库或部署到可能被利用的生产环境之前,尽早发现这些关键的安全问题。
Amazon Q Developer可以审查您的代码库以发现安全漏洞和代码质量问题,从而在整个开发周期中改善应用程序的安全态势。您可以审查整个代码库,分析本地项目或工作空间中的所有文件,或审查单个文件。您还可以启用自动审查,在您编写代码时进行评估。
Amazon Q会为您的代码检查以下问题:
- SAST扫描 — 检测源代码中的安全漏洞。Amazon Q识别各种安全问题,例如资源泄漏、SQL注入和跨站脚本。
- 密钥检测 — 防止在代码中暴露敏感或机密信息。Amazon Q会审查您的代码和文本文件中的密钥,例如硬编码密码、数据库连接字符串和用户名。密钥发现包括有关未受保护密钥的信息以及如何保护它。
- IaC问题 — 评估基础架构文件的安全态势。Amazon Q可以审查您的基础架构即代码(IaC)文件,以检测配置错误、合规性和安全问题。
AWS Trusted Advisor还包含一个暴露的访问密钥检查,用于检查流行的代码仓库中是否存在已公开暴露的访问密钥,以及是否存在可能是由于访问密钥泄露导致的不规则Amazon Elastic Compute Cloud(Amazon EC2)使用情况。
请注意,虽然这些都是有价值的安全工具,但它们无法检测存储在其扫描范围之外位置的密钥或访问密钥,例如本地开发机器或外部系统。它们应作为更广泛安全策略的一部分使用,而不是作为识别和防止凭证暴露的唯一方法。
在解决可能已泄露的访问密钥时,建议立即轮换密钥。请参阅有关如何轮换IAM用户访问密钥的说明。
检测未使用的访问权限
除了识别暴露的凭证外,检测未使用的访问密钥有助于最小化攻击面。IAM Access Analyzer包含一个未使用的访问分析器,用于查找要么过于宽松,要么已经停止使用的访问权限,包括未使用的IAM角色、IAM用户的访问密钥、IAM用户的密码以及活动IAM角色和用户的服务和操作。在审查由组织范围或特定账户分析器生成的结果后,您可以删除或修改不需要的权限。通过识别和撤销未使用的凭证和访问权限,您可以限制威胁行为者获取凭证时的影响。
通过实施这些工具,您可以深入了解整个环境中的凭证风险。这些综合功能有助于发现嵌入式密钥、暴露的访问密钥以及需要删除的凭证。
预防性护栏:建立数据边界
既然您已经了解了如何识别暴露或未使用的凭证,让我们来探讨如何使用SCPs和资源控制策略(RCPs)来创建数据边界,并帮助确保只有您信任的身份才能从预期的网络访问受信任的资源。在您的AWS环境周围实施预防性护栏对于帮助防止未经授权的访问和潜在的访问密钥泄露至关重要。有关什么是数据边界以及如何建立一个数据边界的更多信息,请参阅《在AWS上建立数据边界》博客系列文章。
以下SCP拒绝IAM用户凭证在意外网络(公司无类别域间路由CIDR或特定虚拟私有云VPC)之外使用。此策略在NotAction元素中包含几个操作,如果不豁免,会影响服务访问。SCPs和RCPs的示例可以在data-perimeter-policy-examples中找到,这是新修订策略的真相来源。以下示例已更新,以解决用户凭证在意外网络之外使用的情况。
|
|
通过实施此网络边界,您可以降低凭证泄露导致未经授权访问和数据暴露的风险。试图从咖啡店或家庭网络使用被盗凭证的威胁行为者将被阻止,有助于限制意外访问凭证的影响。
为了进一步增加您的纵深防御,您可以使用RCPs来帮助保护您的数据,例如,通过使用它们来控制哪些身份可以访问您的资源。例如,您可能希望允许组织内的身份访问组织内的资源。您也可能希望防止组织外部的身份访问您的资源。您可以使用RCPs来强制执行此控制。您可以使用RCPs来限制对您资源的最大可用访问,并指定组织内部和外部的哪些主体可以访问您的资源。SCPs只能影响您AWS组织内主体的有效权限。
通过实施以下RCP,您可以确保如果长期凭证意外暴露,来自您组织外部的未经授权用户将被阻止使用它们访问您的关键数据和资源。该策略将拒绝Amazon Simple Storage Service(Amazon S3)操作,除非请求来自您的公司CIDR范围(NotIpAddressIfExists与aws:SourceIp),或来自您的VPC(StringNotEqualsIfExists与aws:SourceVpc)。请参阅支持RCPs的AWS服务列表。SCPs和RCPs的示例可以在GitHub仓库中找到,这是新修订策略的真相来源。以下示例已更新,以解决本文中讨论的用例。
|
|
如果您准备好开始迁移远离长期凭证,使用SCP来拒绝创建访问密钥以及拒绝更新现有密钥有助于强制执行使用更安全的身份验证方法,如IAM角色和联合访问。此策略拒绝主体创建或更新AWS访问密钥。
|
|
除了建立这些数据边界控制外,让我们检查网络控制如何保护访问密钥运行的运行时环境。
网络控制:保护访问密钥的运行时环境
除了构建数据边界和使用SCPs和RCPs之外,保护使用这些访问密钥的计算和网络基础设施至关重要。凭证通过受损的运行时环境暴露的风险使得基础设施保护成为访问密钥安全的关键组成部分,因为恶意行为者经常以这些环境为目标来获取未经授权的访问。
安全组和网络ACL(NACLs)
使用网络级安全保护,这些保护充当不同级别的防火墙,例如实例级别或子网级别,以帮助防止未经授权的访问。
限制关键端口,如SSH(端口22)和RDP(端口3306),是至关重要的,因为它们是寻求未经授权系统访问的恶意行为者的主要目标。在安全组中开放管理端口会增加您的攻击面和安全风险。使用AWS Systems Manager Session Manager有助于提供安全的远程访问,而无需暴露入站端口,从而无需堡垒主机或SSH密钥管理。
NACL通过在子网边界充当无状态包过滤器,有效地在子网级别阻止访问。与保护单个实例的安全组不同,NACL通过明确的允许/拒绝规则来保护整个子网的入站和出站流量。它们创建了一个关键的边界防御层,在流量到达您的实例之前对其进行过滤。当作为纵深防御方法的一部分部署时,NACL提供应用层之间的子网级隔离,在网络边缘阻止恶意流量模式,并在其他安全层受损时保持保护,有助于通过多个独立的控制点实现全面的网络安全。
为了获得超越NACL的增强网络保护,AWS Network Firewall通过全面的VPC保护实现了企业级边界防御。它结合了入侵防御系统、域名过滤、深度包检测和地理IP控制,同时利用Amazon收集的全球威胁情报自动保护您的云环境免受新出现的威胁。通过使用Network Firewall和AWS Transit Gateway集成,您可以在VPC和可用区之间实现一致的安全策略,并进行集中管理。
为了自动化和扩展整个组织的网络安全性,AWS Firewall Manager提供对Network Firewall规则和安全组策略的集中管理。随着组织的成长,Firewall Manager通过跨多个账户和组织单位自动部署通用安全组策略、清理未使用的组以及修复过于宽松的规则,来帮助维护安全性。
Amazon Inspector
为了帮助大规模识别意外的网络暴露,请考虑使用Amazon Inspector。Amazon Inspector持续扫描AWS工作负载的软件漏洞和意外网络暴露,帮助您在安全漏洞被利用之前识别并修复它们。
关键功能包括:
- 软件包漏洞:软件包漏洞发现识别您AWS环境中暴露于常见漏洞与暴露(CVEs)的软件包。恶意行为者可以利用这些未修补的漏洞来破坏数据的机密性、完整性或可用性,或访问其他系统。
- 代码漏洞:代码漏洞发现有助于识别可能被利用的代码行。代码漏洞包括缺少加密、数据泄漏、注入缺陷和弱加密。Amazon Inspector通过Lambda函数扫描及其代码安全功能生成发现。它根据与Amazon Q合作开发的内部检测器来识别策略违规和漏洞。
- 网络可达性:网络可达性发现显示您的端口是否可通过互联网网关(包括位于应用程序负载均衡器或经典负载均衡器后面的实例)、VPC对等连接或通过虚拟网关的VPN从互联网访问。这些发现突出显示可能过于宽松的网络配置,例如管理不当的安全组、NACL或互联网网关,或者可能允许潜在恶意访问的配置。它可以帮助识别实例安全组上开放的SSH端口。
AWS WAF
为了补充您的网络安全控制和漏洞管理,AWS WAF提供了一个额外的防御层,通过过滤可能导致凭证暴露的恶意网络流量。
AWS WAF提供了多个托管规则组,以防范未经授权的访问和常见漏洞:
- AWS WAF欺诈控制账户创建欺诈预防(ACFP)规则组:ACFP使用请求令牌来收集有关客户端浏览器以及账户创建请求中人类交互程度的信息。该规则组通过按IP地址和客户端会话以及按提供的账户信息(如物理地址和电话号码)聚合请求来检测和管理批量账户创建尝试。此外,该规则组检测并阻止使用已泄露的凭证创建新账户,这有助于保护您的应用程序和新用户的安全态势。
- AWS WAF欺诈控制账户接管预防(ATP)规则组:为了帮助防止可能导致欺诈活动的账户接管,ATP使您能够查看和控制异常的登录尝试以及使用被盗凭证的登录尝试。对于Amazon CloudFront分发,除了检查传入的登录请求外,ATP规则组还会检查您的应用程序对登录尝试的响应,以跟踪成功和失败率。ATP会根据其被盗凭证数据库检查电子邮件和密码组合,该数据库会定期更新,因为新的泄露凭证在暗网上被发现。
操作最佳实践
为了补充这些保护层并维持持续的安全态势,通过Secrets Manager实施自动化的凭证管理,以帮助促进整个环境中访问密钥的正确轮换和生命周期管理。这种自动化减少了人为错误,有助于及时更新凭证,并限制凭证泄露时的暴露窗口。
建议至少每90天轮换一次密钥。Secrets Manager通过按计划自动轮换密钥来提供帮助,确保凭证定期更新而无需手动干预。它还集中存储密钥,减少了多个用户之间共享访问密钥的可能性。使用Secrets Manager,您可以使用Lambda集成配置自动密钥轮换。
还有一个现有解决方案可以部署,以实现大规模自动访问密钥轮换。此模式通过使用AWS CloudFormation模板帮助您自动轮换IAM访问密钥,这些模板在GitHub IAM密钥轮换仓库中提供。
如果您无法实施自动轮换,并且需要一种更快的方法来识别需要轮换的访问密钥,AWS Trusted Advisor有一个IAM访问密钥轮换安全检查,用于检查过去90天内未轮换的活动IAM访问密钥。如果您需要执行手动轮换,可以使用安全检查来深入了解您环境中哪些访问密钥需要轮换。
检测异常的IAM活动
最后,尽管保护IAM基础设施的主动措施至关重要,但拥有强大的检测和警报机制同样重要。无论您的努力多么细致,仍然存在不可预见的威胁或未经授权活动的可能性。这就是为什么全面的纵深防御策略应包括快速识别和响应异常IAM相关事件的能力。Amazon GuardDuty结合机器学习和集成的威胁情报,帮助保护AWS账户、工作负载和数据免受威胁。
GuardDuty扩展威胁检测自动关联跨不同数据源的多个事件,以识别AWS环境中的潜在威胁。当扩展威胁检测检测到可疑的活动序列时,它会生成全面的攻击序列发现。系统将单个API活动分析为微弱信号,这些信号可能单独不表示风险,但当以特定模式一起观察时,可以揭示潜在的安全问题。
此功能在AWS账户中激活GuardDuty时默认启用,无需额外配置即可提供保护。
与泄露凭证相关的特定攻击序列发现是 AttackSequence:IAM/CompromisedCredentials,标记为严重级别。此发现通知您GuardDuty检测到使用AWS凭证进行的一系列可疑操作,这些操作影响了您环境中的一个或多个资源。同一凭证观察到多个可疑和异常威胁行为,从而提高了凭证被滥用的置信度。
结论
本文概述的安全最佳实践提供了一个全面的多层方法,以减轻与长期凭证相关的风险。通过实施主动的代码扫描、自动化密钥轮换、网络级控制、数据边界限制和威胁检测,您可以显著减少攻击面,并在完全迁移到临时凭证之前更好地保护组织的AWS资源。
虽然本文提供的建议代表了一组充足的控制措施,可以使组织处于良好的安全态势,但根据每个环境的具体需求和风险状况,可能还需要采取额外的安全措施。关键是采用全面的、分层的凭证管理和保护方法。通过这样做,您可以在完全过渡到临时凭证成为可能之前弥合差距。
实施这些安全措施可以帮助降低风险,但长期凭证本质上带有安全风险。即使有严格的最佳实践和全面的安全控制,也无法完全消除凭证泄露的可能性。您应考虑评估组织的安全态势,并尽可能优先使用通过IAM角色和联合的临时凭证。如果您有任何问题或需要帮助,AWS随时为您提供支持。