让我们回顾一下。对于那些不熟悉Docker的人,以下是您需要了解的内容。Docker就像虚拟机一样,您可以在物理硬件上构建大量的环境。但是,Docker可能比虚拟机更有效,因为每个新的运行环境不需要模拟整个机器。
在未来三年内,容器将如何改变Windows 10
容器将在如何在桌面上使用Windows中扮演一个关键角色。
Docker在传统硬件上运行Docker引擎。在这方面,它有点像VM的管理程序。使用虚拟机架构,每个新的虚拟机都是一个完整的机器映像,只是在软件中。所有运行的代码都在每个VM中。例如,如果您运行四个Linux服务器vm,那么您将拥有四个完整的Linux副本,每个副本占用服务器资源。
Docker使用引擎(请考虑hypervisor,尽管它不是)和容器。与容器的不同之处在于容器很轻。它只包含那个项目的独特之处。例如,如果您在Docker中以容器的形式运行四个Apache实例,那么您将使用更少的RAM,因为您不会将整个Linux堆栈复制四次。
对于今天这个可怕的故事,您需要记住的底线是:每个服务器在Docker中运行的容器比在vm中运行的容器多得多。有多少?嗯,我开始做一个网络搜索来找出答案,我找到了另一篇史蒂文写的文章。对于给定服务器上的每个传统VM实例,可以运行4到6个Docker容器。
假设有一个可以运行8个vm的服务器。同一个服务器可以运行48个Docker容器。
现在,事情变得严肃起来。思科2017年年中的网络安全报告提供了一个深入了解网络安全状况的机会。正如您所期望的,该文档中没有什么漂亮的东西。随着不断发展的趋势,思科的团队开始关注新出现的问题。在第53页,他们提到了思科的一位合作伙伴Rapid7从Docker那里注意到的一些事情。
在我进一步扰乱您的世界之前,有必要了解一下Docker是一个大型的DevOps工具。由于Docker支持轻量级部署,而且这些部署在服务器之间在功能上是相同的,因此开发人员经常将Docker容器作为开发/测试/部署工作周期的一部分。
下面是拉皮德所注意到的。
他们发现在互联网上有1000多个Docker实例是“完全开放的”。Docker告诉我,许多Docker实例可能被遗弃或遗忘了测试系统。其中,美国居多,中国、法国、德国和荷兰位居前五。
Docker告诉我,“需要注意的是,在默认情况下,Docker附带的API只公开给本地主机。Docker还明确声明,操作人员不应该向外部公开他们的Docker API,如果他们这样做了,他们应该配置MTLS。
图片:思科
更令人担忧的是,245个实例分配了超过4GB的RAM。对于传统的vm来说,这可能不是不合理的大。但是,如果您考虑到一个恶意软件在做一些非常卑鄙的事情时占用的空间有多小,那么您将看到一个巨大的、可用的和开放的计算资源。
不过,重要的是要正确看待这个问题。黑客已经侵入了家庭和桌面系统,其中大多数都配备了超过4GB的RAM。那么,为什么这些开放的Docker实例如此令人不安呢?
首先,让我明确表示,思科和Rapid7并没有得出这些结论。他们只是报告了漏洞的可能性。我正在进行思想上的飞跃,从意识到脆弱,到审视其中的含义。
DIY-IT项目指南
更新:如果你正在做自己的DIY项目,这篇全面的技术项目指南是个不错的开始。
阅读更多
以下是我最关心的两个问题。首先,Docker实例旨在成为以数据为中心的系统,而不是以桌面或用户为中心的系统。恶意软件已经通过从用户系统跳到企业环境中而迅速传播,这就是为什么我们看到了来自高级持续威胁和其他数据中心入侵的破坏。
但是使用Docker,其目的是让大多数实例驻留在数据中心中。不需要在用户空间和服务器空间之间进行协商或跨越边界,数据中心空间中如此大的漏洞可以极大地减少任何一点摩擦,阻止恶意软件渗透到公司核心。
其次,Docker允许启动和执行包含整个服务器配置的非常小的容器。如果Docker的开放实例可用,恶意软件开发人员可能会将更复杂、更强大的系统插入数据中心。实际上,恶意软件开发人员可以在数据中心内部安装自己的恶意服务器,而不仅仅是一个流氓进程。
到目前为止,开放的实例相对较少。但是,由于它们有可能直接在受保护的空间内提供快速通道,所以我敦促开发人员和IT经理调查并保护所有现有的Docker实例。Docker告诉我,“Docker Bench工具还可以通过在容器中运行和扫描环境来识别问题。”一定要开发一个最佳实践来防止“完全开放”的Docker实例被部署。