对于容器安全性,你会发现许多开源工具可以帮助防止像特斯拉那样遭受Kubernetes集群破坏的另一场崩溃。但容器安全性仍然很棘手,因此您需要知道要添加到您的库中的实用程序。
如果您花时间选择最佳的应用程序安全测试工具并确保您的应用程序尽可能安全,那么您不希望它在不安全的容器上运行。幸运的是,那里有商业容器安全产品,但开源项目也可以带你走得很远。许多人专注于审计,跟踪由CIS,国家漏洞数据库和其他机构建立的常见漏洞和暴露(CVE)数据库和基准。然后,工具扫描容器图像,显示其内容,并将内容与已知漏洞的这些清单进行比较。
通过帮助团队在构建管道的早期捕获问题,自动化容器审计以及使用其他容器安全流程可以为企业带来巨大的好处。
虽然有很多开源容器安全工具,但这里有最好的,最成熟的用户社区。
1. Docker Bench for Security
用于根据安全基准审核Docker容器的脚本
面向使用Docker社区版管理容器的开发人员,Docker Bench for Security是Docker的开源脚本,用于审核容器以防止常见的安全最佳实践。
Docker Bench的测试基于行业标准的CIS基准测试,帮助实现手动漏洞测试的繁琐过程自动化。
Docker的安全负责人DiogoMónica将其描述为“测试容器的容器”。您可以按如下方式启动容器:
docker run -it --net host --pid host --userns host --cap-add audit_control \ -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \ -v /var/lib:/var/lib \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/lib/systemd:/usr/lib/systemd \ -v /etc:/etc --label docker_bench_security \ docker/docker-bench-security
结果会为每个安全配置基准测试发出Info,Warning和Pass日志。您也可以从Docker主机运行此实用程序,通过Docker Compose克隆它,或直接从基本主机运行它。
一个缺点是输出结果缺乏机器可读性。许多社区软件包,如Docker Bench Test,drydock和Actuary,都在Docker Bench上得到改进。
2. Clair
API驱动的静态容器安全性分析,具有庞大的CVE数据库
Clair由CoreOS构建,对容器漏洞进行静态分析。它也用在Quay.io中,这是一个替代Docker Hub的公共容器注册表。
Clair引入了许多漏洞数据源,例如Debian Security Bug Tracker,Ubuntu CVE Tracker和Red Hat Security Data。由于Clair消耗了如此多的CVE数据库,因此其审计非常全面。
Clair首先索引容器图像中的功能列表。然后,使用Clair API,开发人员可以在数据库中查询与特定映像相关的漏洞。
要开始使用Clair,请参阅Running Clair指南。将它部署到Kubernetes集群很容易:
git clone https://github.com/coreos/clair cd clair/contrib/helm cp clair/values.yaml ~/my_custom_values.yaml vi ~/my_custom_values.yaml helm dependency update clair helm install clair -f ~/my_custom_values.yaml
Clair的功能集非常灵活。它允许您添加自己的驱动程序以用于其他行为。此外,对审计特定容器映像进行单独的API调用是一种流畅的,机器驱动的替代方法,可以通过大量的报告日志进行搜索。
3. Cilium
内核层的API感知网络和安全性
Cilium致力于保护网络连接。Cilium与Linux容器平台(如Docker和Kubernetes)兼容,增加了安全可见性和控制逻辑。
它由BPF(以前称为Berkeley数据包过滤器)提供支持,这是一种Linux内核技术。其低级实现的有趣方面是您可以在不更改应用程序代码或容器配置的情况下应用和更新Cilium安全策略。
CoreOS开发了Cilium,以响应现代微服务开发和快速容器部署的不稳定生命周期。将它与Kubernetes集成是很简单的;以下是如何使用本地更改部署Cilium:
$ kubectl create -f ./cilium.yaml clusterrole "cilium" created serviceaccount "cilium" created clusterrolebinding "cilium" created configmap "cilium-config" created secret "cilium-etcd-secrets" created daemonset "cilium" created $ kubectl get ds --namespace kube-system NAME DESIRED CURRENT READY NODE-SELECTOR AGE cilium 1 1 1 <none> 2m
Cilium周围的支持和社区非常棒。你会找到大量的指南和文档,一个专门的Slack频道,甚至每周一次与项目维护人员进行环聊。
4. Anchore
使用CVE数据和用户定义的策略检查容器安全性的工具
Anchore Engine是一种用于分析容器图像的工具。除了基于CVE的安全漏洞报告之外,Anchore Engine还可以使用自定义策略评估Docker镜像。
策略导致通过或失败结果。策略基于白名单或黑名单,凭据,文件内容,配置类型或其他用户生成的提示。
Anchore打包为Docker容器映像,可以独立运行,也可以在Kubernetes等业务流程平台上运行。它还有用于CI / CD的Jenkins和GitLab集成。
Anchore命令行界面(CLI)是一种操作Anchore Engine的简便方法。例如,此CLI命令返回有关图像内容的详细信息:
anchore-cli image content INPUT_IMAGE CONTENT_TYPE
此示例命令将对映像执行漏洞扫描:
anchore-cli image vuln docker.io/library/debian:latest os
Anchore输出漏洞详细信息,威胁级别,CVE标识符和其他相关信息的列表。由于用户定义的规则是使用Anchore Cloud Service图形用户界面(GUI)创建的,因此它的运行方式与SaaS类似。
5. OpenSCAP Workbench
用于为各种平台创建和维护安全策略的环境
OpenSCAP是IT管理员和安全审核员的生态系统,包括许多开放式安全基准指南,配置基线和开源工具。
在Fedora,Red Hat Enterprise Linux,CentOS或Scientific Linux上运行的人可以将OpenSCAP Workbench安装为GUI,以在虚拟机,容器和映像上运行扫描。使用以下命令安装OpenSCAP Workbench:
#yum install scap-workbench
要根据SCAP策略指南和CVE验证容器,请使用OpenSCAP附带的oscap-docker实用程序。
OpenSCAP以NIST认证的安全内容自动化协议(SCAP)为中心,并提供许多机器可读的安全策略。OpenSCAP安全指南指出,该项目的目标是“允许多个组织通过避免冗余来有效地开发安全内容”。
由于OpenSCAP比此列表中的其他人更广泛,因此对于希望为整个平台创建安全策略的团队而言,它是一个不错的选择。
6. Dagda
用于扫描Docker容器中的漏洞,特洛伊木马,病毒和恶意软件的工具
Dagda是另一种用于容器安全性静态分析的工具。它的CVE源包括OWASP依赖性检查,Red Hat Oval和攻击性安全漏洞利用数据库。
要使用Dagda扫描Docker容器,首先要使用漏洞数据填充Mongo数据库。执行此命令以分析单个Docker镜像:
python3 dagda.py check --docker_image jboss/wildfly
您可以远程运行它,也可以不断调用它来监视活动的Docker容器。输出显示漏洞数,严重性级别和其他详细信息以帮助修复。
Dagda的一个好处是可以广泛覆盖漏洞数据。这意味着可以直接访问大量更新,全面的漏洞利用集合。它也很灵活,您可以通过CLI和REST API来控制它。
7. Notary
用于通过加密方式委派责任的服务器来提高容器安全性的框架
公证人是事实上的Docker图像签名框架,现在开源其他实现。Docker开发了它,然后在2017年将其捐赠给了Cloud Native Computing Foundation。
公证就是责任分离;使用Notary,开发人员可以委派角色并在容器之间定义职责。该软件包提供服务器和客户端,以提供发布和验证内容的加密安全方法。
要在本地部署Notary,请通过克隆repo来开始。接下来,使用Docker Compose部署本地配置:
$ docker-compose build $ docker-compose up -d $ mkdir -p ~/.notary && cp cmd/notary/config.json cmd/notary/root-ca.crt ~/.notary
依赖于Update Framework和Go语言作为依赖关系,Notary可以验证容器应用程序映像的加密完整性。
8. Grafaes
用于帮助管理内部安全策略的元数据API
Grafaes可以极大地帮助您创建自己的容器安全扫描项目。该容器安全工具于2017年底宣布,由IBM和Google开发。
开发人员可以使用Grafaes(称为“组件元数据API”)来定义虚拟机和容器的元数据。IBM的Vulnerability Advisor也集成到项目中。
有关可靠的案例研究,请参阅Shopify如何使用Grafaes管理500,000个容器图像的元数据。与Kritis合作,该团队在使用Grafeas元数据的Kubernetes集群上实施安全策略。
能够快速获取容器元数据有助于加快补救尝试,从而减少从利用到解决的窗口。虽然Grafaes是开源的,但它由大型软件提供商维护 - 这对长期支持是有益的。
9. Sysdig Falco
提供深度容器可见性的行为活动监控
Falco是一种由Kubernetes识别的安全审计工具,由Sysdig开发,强调对容器,主机和网络活动的行为监控。使用Falco,开发人员可以对其基础架构进行连续检查,检测异常情况,并为任何类型的Linux系统调用设置警报。
Falco文档建议用户将Falco作为Docker容器运行。可以使用这些命令安装它。实施后,标准输出Falco警报如下所示:
stdout_output: enabled: true 10:20:05.408091526: Warning Sensitive file opened for reading by non-trusted program
使用Falco监视shell在容器中运行的时间,容器已安装,敏感文件的意外读取,出站网络尝试或其他可疑调用。Sysdig在此提供了更多容器故障排除材料。
10. Banyanops Collector
Docker容器图像的静态分析框架
在Banyanops的支持下,Collector是一个开源实用程序,可用于“窥视”Docker容器图像文件。使用Collector,开发人员可以收集容器数据,实施安全策略等。
首先,Banyanops可以在私有注册表上运行,也可以作为Docker Hub上的容器运行。Banyanops还提供可提供更深入数据分析的SaaS产品,因此如果您遇到有限的功能,请注意向上销售。
尊敬的开源
- Dockscan:具有少量提交的安全漏洞扫描程序
- Batten:类似于Docker Bench的审计工具包,但具有非活动支持
- BlackDuck Docker安全性:作为Web服务构建的容器映像安全扫描工具。遗憾的是,目前的形式并未建议使用生产
- Inspec:具有Docker容器测试功能的审计和测试框架
你的旅费可能会改变
由于容器化已经发展成为一种流行的部署方式,因此需要使用适当的安全控制来扩充这些容器是至关重要的。值得庆幸的是,您将找到一个强大的开源安全解决方案生态系统,这些解决方案已针对许多不同的环境进行了定制。
这些工具的整体强度取决于所进行的检查的深度。有效性还取决于CVE数据库和基准本身继续使用新漏洞更新数据并发布新的最佳实践。值得庆幸的是,正在努力缩短零日漏洞利用和容器漏洞检测之间的时间。
开发人员还将倾向于使用具有更好体验的工具,这将减少日志结果中的噪音和重复。这种粒度偏好只能通过反复试验来确定,具体取决于您的构建例程和个人偏好。