Docker已成为现代Devops和Development中必不可少的工具。它使您可以隔离包围,简化服装并快速扩展应用程序。但是,默认情况下,Docker需要一个根,这会产生一个潜在的危险区域,在早期阶段通常会被忽略。
为什么Docker从根起作用? h2>
Docker使用Linux的功能:CGROUP,命名空间,Iptables,Mount,网络和其他系统功能。这些操作仅适用于超级用户。
这就是为什么:
* Dockerd恶魔从根开始
* Docker命令传输到此恶魔。
这简化了工作,并完全控制了系统,但与此同时,它打开了潜在的漏洞。
为什么危险:集装箱突破,CVE,RCE h2>
容器突破 h3>
由于绝缘弱,攻击者可以使用Chroot或Pivot_root进入主机。
真实攻击的例子:
* CVE-2019-5736-Vulnerability to runc,允许重写应用程序并在主机上执行代码。
* cve-2021-3156-对sudo的视频,允许在容器内扎根并脱下。
RCE(远程代码执行) h3>
如果容器中的应用程序脆弱并从根开始,则RCE =对主机的完全控制。

无根的码头:问题的解决方案 h2>
为了最大程度地减少这些风险,在Docker中出现了无根模式。在这种模式下,恶魔和容器都是代表通常的用户启动的,没有任何根特性。这意味着,即使攻击者得到对容器的控制,他也将无法损害主机系统。
有限制:您无法使用低于1024的端口(例如80和443), – 私人模式以及某些网络模式不可用。但是,在大多数开发方案和CI/CD无根的Docker中,它可以应付其任务,并大大提高了安全水平。
从历史上看,从根-Antipattern h2>发射
从一开始,最小特权的原则已在UNIX/Linux世界中应用。该过程的权利越少,危害所做的损失就越少。 Docker最初要求根源访问,但今天被认为是潜在的威胁。
来源 h2>
https://docs.docker.com/engine/security/rootless/
https://rootlesscontaine.rs/