确保Docker安全的10款顶尖开源工具
当然,市面上不乏商业容器安全产品,但开源项目给你带来的帮助很大。许多人专注于审计和跟踪CIS、国家漏洞数据库及其他机构建立的通用漏洞披露(CVE)数据库和基准。然后,工具扫描容器镜像,显示内容,将内容与已知漏洞的这些清单进行比较。
由于可以帮助团队在构建管道时早期发现问题,容器审计自动化以及使用其他容器安全流程对企业大有好处。
虽然市面上有好多开源容器安全工具,但下面是拥有最大用户社区的应用好且成熟的几个工具。
对照安全基准审计Docker容器的脚本
Docker Bench for Security面向使用Docker社区版管理容器的开发人员,它是Docker的开源脚本,用于对照常见的安全最佳实践审计容器。
Docker Bench的测试基于行业标准CIS基准,帮助手动测试漏洞的繁琐过程实现自动化。
Docker的安全负责人Diogo Mó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,比如Docker Bench Test、drydock和Actuary。
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与Docker和Kubernetes等Linux容器平台兼容,增加了安全可见性和控制逻辑。
它基于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 2m
Cilium的支持和社区很棒。你会找到大量的指南和文档、专门的Slack频道,甚至每周可以与项目维护人员联络。
4. Anchore
使用CVE数据和用户定义的策略检查容器安全的工具
Anchore Engine是一种用于分析容器镜像的工具。除了基于CVE的安全漏洞报告外,Anchore Engine还可以使用自定义策略评估Docker镜像。
策略会导致Pass或Fail的结果。策略基于白名单或黑名单、登录信息、文件内容、配置类型或用户生成的其他线索。
Anchore打包成了Docker容器镜像,可以独立运行,也可以在Kubernetes等编排平台上运行。它还有与Jenkins和GitLab集成的功能,实现持续集成/持续交付(CI/CD)。
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。
用于为各种平台创建和维护安全策略的环境
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和Offensive Security漏洞数据库。
想使用Dagda扫描Docker容器,先要往Mongo数据库填充漏洞数据。执行该命令即可分析单个Docker镜像:
python3 dagda.py check --docker_image jboss/wildfly
可以远程运行它,也可以不断调用它来监视活动的Docker容器。输出显示了漏洞数量、严重性级别及其他详细信息,有助于修复。
Dagda的一个好处是涵盖广泛的漏洞数据。这意味着可直接访问大量更新后的、全面的漏洞数据库。它也很灵活,可以通过CLI和REST API来控制它。
7. Notary
使用服务器加强容器安全的框架,用于以加密方式委派责任
Notary是事实上的Docker镜像签名框架,现已开源。Docker开发了它,然后在2017年捐给了云原生计算基金会。
Notary的任务就是确保责任分离;使用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
依赖更新框架和Go语言作为依赖项,Notary可以验证容器应用程序镜像的加密完整性。
8. Grafaes
帮助管理内部安全策略的元数据API
Grafaes可以帮助你创建自己的容器安全扫描项目。该容器安全工具于2017年底发布,由IBM和谷歌开发。
开发人员可以使用Grafaes(被称为“组件元数据API”)来定义虚拟机和容器的元数据。 IBM的Vulnerability Advisor也集成到项目中。
想了解实际的案例,不妨看看Shopify如何使用Grafaes管理50万个容器镜像的元数据(https://cloudplatform.googleblog.com/2018/04/exploring-container-security-digging-into-Grafeas-container-image-metadata.html?m=1)。团队借助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在此(https://github.com/draios/sysdig)提供了更多的容器故障排除资料。
静态分析Docker容器镜像的框架
Collector得到Banyanops的支持,这个开源实用程序可用于“窥视”Docker容器镜像文件的内部。使用Collector,开发人员可以收集容器数据、执行安全策略等。