介绍
Docker 容器和 Kubernetes 是现代软件开发生命周期的驱动力。尽管 Docker 比直接在主机上工作更安全,但在使用容器时可能会出现许多潜在的安全问题。
Docker安全技巧有哪些?本文包括十个Docker安全最佳技巧和提示,可帮助你防止攻击和安全漏洞。
1.定期更新Docker和Host
Docker安全配置的方法:确保你的主机和 Docker 是最新的。使用最新的操作系统版本和容器化软件来防止安全漏洞。每个更新都包含对保护主机和数据至关重要的关键安全补丁。
保持 Docker 更新不仅限于平台本身。正在运行的容器不会自动更新。你还应该更新容器及其所基于的图像。
注意:如果你需要更新现有容器的帮助,请参阅如何将 Docker 镜像和容器更新到最新版本。
2. 配置资源配额
为避免过度消耗资源的受损容器,请设置 Docker 内存和 CPU 使用限制。
在不配置资源配额的情况下,你可以让容器访问主机的完整 RAM 和 CPU 资源。由于这是默认设置,因此建议限制容器可以使用的资源量,以免干扰其他服务。
这不仅可以防止容器耗尽所有资源,还有助于保持 Docker 环境的高效。资源配额确保容器以预期的速度运行并增强安全性。
3.使用非root用户
Docker安全技巧有哪些?Docker 允许以特权模式运行容器。尽管这可能是绕过某些安全协议的更快方法,但你应该始终避免使用这种做法。
运行特权容器的危险在于它为潜在的恶意活动打开了大门。特权 Docker 用户具有与 root 相同的特权。这意味着它可以访问主机上的内核功能和其他设备。恶意用户可能会通过容器进入你的主机系统并危及其上的一切。
只使用非 root 用户很简单,因为它是 Docker 的默认设置。要修改默认配置,你必须将--privileged
标志添加到docker run
命令中。但是,这是一个重大的安全隐患,不应使用。
4. 限制能力
Docker安全最佳技巧和提示:容器具有一组受限的 Linux 功能。例如,它们可以允许用户以类似 root 的效率运行容器,但没有完全的 root 权限。
Docker 的有限功能是默认安全设置,它们对于每个容器都是相同的。因此,建议修改功能以仅包含需要的功能。管理员使用--cap-add
和--cap-drop
选项管理它们。
配置容器功能最安全的方法是删除所有(使用--cap-drop=ALL
选项),然后添加所需的。
有关所有功能和缩写的列表,请参阅 Linux 手册页的功能部分。
5. 禁止新权限
Docker安全配置的方法:如上例所示,Docker 允许在容器启动后更改其功能和权限。为了防止权限提升攻击,定义容器权限是一个好主意。
要禁止容器进程获得新权限,请使用--security-opt
值为的标志no-new-privileges:true
。将标志添加到docker run
命令会覆盖你使用--cap-add
和--cap-drop
选项设置的任何规则。
此外,你可以删除或禁用图像中的setuid和setgid二进制文件。这样做可确保该功能不会用于路径遍历/注入、缓冲区溢出和权限提升攻击。
注意:阅读我们的文章以了解有关特权访问管理的更多信息。
6. 使用可信图像
Docker安全技巧有哪些?从在线注册表中提取映像时,请确保它来自安全、可信的来源。最安全的选择是坚持使用官方的 Docker 中心。避免使用缺乏控制策略的公共第三方注册。
如果使用在线图书馆,请务必查看图像中的内容。此外,在主机系统上下载任何内容之前,请使用图像扫描工具搜索漏洞。
最好查看Docker Hub,看看是否可以在那里找到所需的镜像。它是世界上最大的 Docker 库和社区,拥有超过 100,000 个容器镜像。
注意:你应该定期扫描图像,而不仅仅是从在线注册表下载图像时。在构建容器之前,甚至应该扫描一段时间未使用的本地图像。
7. 保持图像和容器轻量级
Docker安全最佳技巧和提示:通过使用最少的基础镜像和减少容器组件的数量来最小化 Docker 容器的攻击面。保持较小的图像大小有助于防止安全漏洞并加快容器性能。
有关如何减小映像大小的提示,请参阅如何保持 Docker 映像较小。
8. 安全的注册表
Docker 注册表是一个内容交付系统,用于为你的容器存储和提供图像。你可以使用 Docker 的官方在线注册表或在你的主机上设置一个私有注册表。
对于企业级图像存储解决方案,你应该使用Docker Trusted Registry (DTR)。你可以在防火墙后面安装注册表以帮助防止潜在的漏洞。
9. 不要暴露Docker Daemon Socket
Docker安全配置的方法:Docker 与一个名为/var/run/docker.sock的 UNIX 域套接字通信。这是 Docker API 的主要入口点。任何有权访问 Docker 守护进程套接字的人也具有不受限制的 root 访问权限。
允许用户写入/var/run/docker.sock或将套接字暴露给容器对系统的其余部分来说是一个很大的安全风险。这样做本质上给了它root权限。
在容器内挂载 Docker 套接字并不限制它在容器内的特权访问。它允许容器完全控制主机和所有其他容器。因此,这不是推荐的做法。
10. 监控 API 和网络活动
Docker安全技巧有哪些?API 和网络在 Docker 安全中起着至关重要的作用。Docker 容器通过 API 和网络进行通信。因此,为了避免入侵,必须安全地配置架构。
安全管理员最近发现了一种利用错误配置的 Docker API 的新型攻击。黑客利用配置不当的 API 和网络安全,使用它来部署映像,并在主机系统上运行恶意容器。
除了安全地设置网络和 API 之外,你还需要监控活动以捕捉潜在的异常情况。
结论
本文中概述的Docker安全最佳技巧和提示应该可以帮助你防止可能的 Docker 安全漏洞和特权攻击。
如果你仍然习惯使用 Docker,还可以下载包含所有有用 Docker 命令的方便参考表。