跳过内容

C5:安全默认配置

描述

“默认安全”意味着产品无需额外费用即可开箱即用,能够抵御常见的攻击技术。软件应在无需大量用户配置的情况下以安全状态启动,确保默认设置始终是最安全的选择。

从一开始就确保应用程序安全的好处在于,它减轻了开发人员如何锁定系统的负担,为他们提供了一个已经安全的产品。这减少了以安全方式部署产品所需的工作量,并增强了产品能够长期保持安全的信心。

威胁

  • 攻击者可能通过利用未从出厂状态更改的默认、弱或众所周知的凭据来获取未经授权的访问。
  • 攻击者可能利用过于宽松的默认设置来访问敏感资源或执行未经授权的操作。
  • 攻击者可能通过探测不必要地启用或默认激活的功能或服务来收集敏感信息。
  • 攻击者可能通过利用宽松的默认安全头(它们未能提供足够的保护来抵御此类威胁)来执行跨站脚本(XSS)攻击。

实施

在现代云应用程序中,开发人员在构建应用程序时,也在构建其应用程序的基础设施,并在编写代码的同时做出基础设施决策,包括安全关键配置。这些应用程序部署在通过代码创建和配置的基础设施上,即基础设施即代码(IaC),其配置应用于应用程序级别(包括Web服务器和数据库)、容器、函数即服务或基础设施级别。例如,对于Web应用程序,文件夹权限需要遵循最小权限原则,以限制资源访问权限。当Web和移动应用程序部署到生产环境时,应禁用调试功能。

当开发人员组合其基础设施组件时,重要的是他们应:

  1. 实施基于最小权限原则的配置——例如:确保您的云存储(S3或其他)配置为私有,并仅被最少必要实体访问
  2. 默认拒绝访问,并通过允许列表授权访问
  3. 使用已扫描软件包和组件漏洞并从私有容器注册表拉取的容器镜像
  4. 优先选择声明式基础设施配置,而非手动配置活动。在底层,利用基础设施即代码(Infrastructure-as-Code)模板自动化配置和部署您的云和本地基础设施。在高层,利用策略即代码(Policy-as-Code)来强制执行策略,包括权限分配。
    使用声明式格式允许像管理源代码一样管理这些策略:签入到源代码管理系统、版本控制、访问控制、受变更管理等。
  5. 流量加密——默认启用,或从一开始就不实现未加密的通信通道

持续配置验证

作为软件开发的一部分,开发人员需要确保软件在应用程序级别默认配置安全。例如:

  • 定义基础设施的代码应遵循最小权限原则。
  • 应禁用不必要的配置和功能,例如账户、软件和演示功能。

防止的漏洞

参考资料

工具

  • Tfsec - 适用于您的 Terraform 模板的开源静态分析工具
  • Terrascan - 扫描基础设施即代码漏洞
  • Checkov - 扫描开源和基础设施即代码漏洞
  • Scout Suite 是一款开源的多云安全审计工具,目前支持:Amazon Web Services、Microsoft Azure、Google Cloud Platform
  • prowler
  • Cloudmapper
  • Snyk - 扫描开源、代码、容器和基础设施即代码漏洞
  • Trivy - 扫描开源、代码、容器和基础设施即代码漏洞
  • KICS - 扫描基础设施即代码漏洞
  • Kubescape - 扫描 Kubernetes 漏洞
  • Kyverno - 使用策略保护 Kubernetes