Docker 1.10 版本具有许多新功能,其中包括一些安全改进,值得任何使用 Docker 开发和运行应用程序的人注意。我想在一系列简短的博客中重点介绍其中的三个功能:Seccomp 配置文件、Authorization Plug-in 和 User Namespace Support。
Seccomp 是最初为 Google Chrome 创建的现有开源项目。它使您能够控制禁用哪些系统调用,这也适用于通过 Docker 应用的容器。此外,Docker 还实施了一个默认设置,该设置现在是 Docker 守护程序的一部分,但可以更改此设置。
默认情况下,新的 Docker Seccomp 配置文件禁用 64 位 Linux 系统中可用的 313 个系统调用中的 44 个。例如,对 reboot 的系统调用被禁用,因为很难想象容器需要重新启动主机。
另一个很好的例子是 keyctl – 最近发现漏洞的系统调用 (CVE 2016-0728)。Keyctl 现在也默认处于禁用状态。
这是什么意思?首先,默认设置是一个很好的举措,因为它在一定程度上减少了攻击面。问题是,它仍然有近 270 个呼叫处于开放状态——这仍然是一个足够大的攻击面,容易受到攻击。例如,CVE 2014-2153 是在 futex 系统调用中发现的一个漏洞,该漏洞允许通过内核漏洞进行权限提升,并且该系统调用仍处于启用状态。这是不可避免的,因为此系统调用具有合法用途,可用于实现基本资源锁定以满足同步需求。
Docker 无法使这个默认设置更加严格,因为容器的类型太多了,它们之间几乎使用了所有剩余的系统调用。
这里的另一个重要新颖性是能够为容器单独设置 Seccomp 配置文件。这提供了必要的灵活性,可以根据特定容器的实际需求进一步强化特定容器。但是,它需要对容器行为及其使用的系统调用有深入的了解,而且大多数开发人员和 Docker 用户很可能根本没有必要的资金来明智地执行此类更改。从程序员的角度来看,最好让事情保持开放状态,而不是因为错误地禁止访问而冒着应用程序行为中出现 bug 的风险。
Rome 当然不是一天建成的,也不是所有的皱纹都被消除,但 Seccomp 的添加无疑是构建更安全的容器环境的重要一步。
原文始发于微信公众号(菜鸟小新):Docker 安全功能及其含义:Seccomp 配置文件
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论