当前位置: 首页 > 科技观察

Top10推荐安全加固容器方法

时间:2023-03-13 20:53:28 科技观察

众所周知,网络安全事件会严重影响一个组织的声誉和市场竞争力,甚至可能导致最终用户提起诉讼和各种不必要的法律纠纷。根据IBM的一份调查报告,全球组织每次数据泄露的平均总成本约为392万美元。通常,组织的整体安全状况会因以下方面的疏忽而恶化:缺乏安全管理工具和实践方面的技能和培训缺乏风险可见性和漏洞发现机制未能持续监控当前系统和服务的安全状态PaloAltoNetworks最近的《??云安全状况调查报告??》报告显示,94%的组织正在使用一个或多个云平台,大约45%的计算将在其容器或CaaS(容器即服务)上进行。随着应用程序容器的主导地位的增长,由此产生的安全威胁也越来越大。同时,报告还列出了以下八大安全威胁:恶意软件导致的数据泄露、应用程序的代码级漏洞、系统认证组件薄弱或损坏、应用程序配置错误、错误访问或高权限来源来自内部人员的威胁身份验证凭据泄漏不安全的端点为了应对上述威胁,我们在下面讨论了容器安全的一些最佳实践。您可以通过遵循和实施应用程序来保护您的应用程序,以减少容器化工作负载中的各种安全风险。1.来自可信存储库的基于源的镜像当我们创建容器镜像时,我们通常依赖来自流行的、私有的或公共注册中心的种子镜像。但请注意,镜像供应链中的某个人可能会渗透并植入恶意代码,从而为攻击者打开大门。例如,2018年,一些黑客攻击了英国航空公司的软件供应链。他们将恶意JavaScript代码插入到英国航空公司的Web应用程序中。详情请参考链接--https://www.wired.com/story/british-airways-hack-details/。同样,就在几年前,Docker在其DockerHub上发现了一些安装了Cryptominers(加密货币挖掘软件)的图像。因此,您需要在以下几个方面给予足够的重视:创建容器镜像时,请使用经过知名可信发布者安全加固的基础镜像源。选择经常使用最新的安全修复程序和补丁更新的图像。请使用经过签名和标记的镜像,并在拉取过程中验证镜像的真实性,以阻止中间人攻击。2.安装经过验证的包出于同样的原因,我们还需要确保安装在基础镜像上的包也来自经过验证和可信的来源。3.最小化镜像中的攻击面我们常说应用程序的攻击面与镜像中安装的软件包和库的数量有关。通常,此类对象的数量越少,出现漏洞的可能性就越低。可见,在满足应用程序运行时的基本要求的情况下,应该使图像的尺寸尽可能的小。理想情况下,我们最好在一个应用程序容器中只保留一个应用程序。同时,您可以从以下方面着手:删除不需要的工具和软件,包括:包管理器(如yum和apt)、网络工具、客户端以及镜像中的shell和netcat(可用于创建反向shell))等。使用多阶段Dockerfile并从生产映像中删除用于构建软件的各个组件。为了减少威胁,请不要在容器中暴露不必要的网络端口、套接字和运行不必要的服务(如SSH守护进程等)。与其使用带有完整操作系统的镜像,不如选择alpine镜像、临时镜像或针对容器优化的操作系统。4.不要在图像中保留信任凭据。所有信任凭证都应该“远离”图像和Dockerfile。各种机密信息,包括SSL证书、密码、令牌和API密钥,应该存储在外部,并通过容器编排引擎或外部密钥管理器安全地挂载。目前,HashicorpVault工具、AWSSecretsManager提供的基于云的秘密管理服务、KubernetesSecrets、DockerSecretsManagement和Cyber??Ark都可以改善您在这方面的安全态势。5.使用安全的私有或公共注册表企业通常有自己的基础镜像,其中包含他们不想公开分发的各种专有软件存储库。为确保图像托管在安全且受信任的注册表中以防止未经授权的访问,请使用具有受信任的根CA的TLS证书并实施强身份验证以防止MITM(中间人)攻击。6.不要使用特权用户或根用户,在容器中运行应用程序这是容器化工作负载中最常见的错误配置。牢记最小权限原则,为您的应用程序创建一个专用用户,并使用该用户在容器内运行您的应用程序的相应进程。你可能会问为什么不能使用root用户?原因是:除了通过其额外的元数据来识别它是否是容器的一部分之外,在容器中运行的进程与在宿主操作系统上运行的进程非常相似。相似。一旦容器中的root用户拥有UID和GID,它就可以访问甚至修改其在宿主机上的文件。请注意,如果您未在Dockerfile中定义任何USER,则容器将以root身份运行。7.在CI/CD中实施图像漏洞扫描在为容器构建和交付设计CI/CD时,包括一种图像扫描方法来识别CVE发布的众所周知的漏洞。此外,请不要在没有修复的情况下部署任何可用图像。常见的漏洞扫描工具包括:Clair、Synk、Anchore、AquaSec、Twistlock等。同时AWSECR、Quay.io等容器注册中心也需要配备各种相应的扫描方案。8.启用内核安全配置文件,如AppArmorAppArmor是一个Linux安全模块,可用于保护操作系统及其应用程序免受各种安全威胁。Docker通过提供默认的配置文件,让程序可以访问有限的资源,如网络访问、内核功能、文件权限等。这种方法不仅减少了潜在的攻击面,而且提供了良好的纵深防御。9.安全的集中式远程日志记录通常,容器会将所有内容记录到标准输出——STDOUT。显然,这些日志由于中断而丢失。因此,我们需要将日志安全地流式传输到一个地方,以便将来进行审计和按需取证。当然,我们需要保证这样的日志系统的安全性,不让敏感的数据信息泄露到日志之外。10.部署运行时(Runtime)安全监控上面给出的九项安全建议只能最大限度地减少安全威胁,并不能完全阻止攻击的发生。对此,我们仍然需要通过持续监控和记录应用程序的行为,及时检测和发现任何可疑或恶意活动。同时,我们还可以进行分层防御,针对不同的监控范围部署不同的审计和容器保护工具。可用于安全管控的开源工具俗话说:工欲善其事,必先利其器。为了简化上述针对容器的安全加固,我为大家罗列了以下六款开源和商用工具,方便大家按需使用:Docker-bench-security——Docker官方工具。作为CISBenchmark为Docker提出的行业标准,可用于审计容器的各种工作负载。HadolintLinterforDockerfile–您可以使用linter对Dockerfile执行静态代码分析。作为一种好的做法,linters可以与各种流行的代码编辑器和集成管道集成。Clair–是一种流行的应用程序容器静态漏洞扫描工具。它定期从各种漏洞数据库中获取元数据。类似的工具包括:Anchore、Synk和Trivy。OWASPCheatsheet–此漏洞备忘单来自OWASP,这是一个受安全专家欢迎的开放社区。OpenSCAPforContainer——SCAP(SecurityContentAutomationProtocol,安全内容自动化协议)是一个多用途规范框架,可以支持自动化配置、漏洞和补丁检查、技术控制合规活动和安全测量。它执行NIST标准。SysdigFalco–随着黑客的不断进步和新漏洞的不断出现,静态扫描工具已经力不从心。我们需要持续的行为监控和基于AI/ML的高级引擎。Falco作为一个可以用来实现运行时安全的工具,使用高效的eBPF拦截各种调用和流量,可以实时监控取证。此外,您还可以选择企业级安全工具和商业产品,如AquaSec、Twistlock、Sysdig、Synk和Qualys。希望上述解决方案能够真正为您抵御黑客攻击,帮助您及时发现当前系统的异常状态,为您的容器负载提升提供合理的建议。译者简介JulianChen,社区编辑,拥有十余年IT项目实施经验,擅长管控内外部资源和风险,专注传播网络与信息安全方面的知识和经验;以多种形式分享前沿技术和新知识;经常在线上和线下开展信息安全培训和讲座。原标题:Top10WaysToSecureContainers,作者:AnjulSahu