问题描述
在使用容器时,想了解防病毒/防恶意软件的最佳实践。用户在SOC 2控制中发现,确保生产服务器上运行防病毒/防垃圾邮件/防恶意软件是必要的。用户在互联网上搜索了一些资料,但不确定在容器环境中是否应该在主机操作系统上运行防病毒软件。有些资料似乎表明,如果这样做,就需要排除容器使用的文件,以避免锁定容器。这似乎会失去防病毒的目的。用户在Google Kubernetes Engine上使用Google的预制容器操作系统,想知道是否有人有相关经验。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
安全软件开发生命周期(S-SDLC)
在传统环境中,开发人员和管理员的工作站通常会安装防病毒和防恶意软件,因此开发人员创建的代码和管理员部署的代码都会经过定期自动扫描。同样的控制措施也需要应用于我们的自动化流水线。你可以考虑使用ClamAV或商业防病毒软件对源代码和构件进行扫描。以下是一些相关工具:
– Trivy:提供漏洞扫描功能,不是防病毒软件,但可以防止通过上游第三方进入恶意软件。
– Anchore
– Clair
减少攻击面
容器开发的最佳实践之一是通过使用经过硬化和最小化的基础镜像来减少攻击面。例如,删除任何非必要的组件,如shell、网络工具和文本编辑器。可以使用CIS镜像等预先硬化的镜像,并应用相应的CIS或STIG基准。
管理Kubernetes主节点和节点
如果你管理自己的Kubernetes主节点和节点,应考虑针对主机的攻击向量使用端点保护来减轻风险。但如果你使用托管的Kubernetes,如Google Kubernetes Engine或Azure Kubernetes Service,则需要一些额外的步骤来使其工作。你可能已经看到了一些基本的建议,以及需要了解扫描引擎的限制,即它无法查看容器内部。以下是一些相关工具和资源:
– Docker Anti-virus Exclusions:请注意,Kubernetes使用的是ContainerD。
– Kubernetes ClamAV
– Sysdig Falco
– Carbon Black
使用SELinux和完整性检查
主节点和节点应使用SELinux作为强制访问控制安全机制,并应用相关的CIS或STIG基准。此外,完整性检查也非常重要,虽然它不是防病毒软件本身的一部分,但它是大多数防病毒软件包的组成部分,可以帮助你发现问题。以下是一些相关工具和资源:
– Docker镜像签名:镜像应该进行签名,并且Kubernetes应该配置为仅使用由可信方签名的镜像。
– twistlock:主机应使用文件完整性监控,例如twistlock。
– 容器内的文件完整性监控
基础设施即代码
最后,记住”基础设施即代码”,如果你可以销毁所有基础设施并自动重新构建,那么从受损中恢复将变得更加容易。这对于审计人员来说可能是一个难以接受的观点。
如果你实施了上述所有措施,你可能会发现自己陷入信息过载的境地。这时,安全信息和事件管理(SIEM)工具可以帮助将所有内容整合到一个单一的视图中。
希望以上解决方案对你有所帮助。如果你在获得SOC2报告的过程中采取了一些措施来”充分控制”恶意软件和代码的风险,我们会很高兴听到你的经验。