授予对特权端口的非 root 访问权限的安全隐患 (<1024)
信息安全
港口
码头工人
2021-08-18 19:20:20
2个回答
当您使用无根 Docker/Podman 时,允许用户绑定端口 < 1024 的风险通常取决于系统上发生的其他情况。
TBH 对低端口的旧限制不再适用,因为敏感端口的负载超过 1024(例如 Docker 本身默认监听 2375 或 2376)。
可能存在风险,例如,您想要在低端口上侦听的敏感服务,并且您担心用户启动的服务会与其发生冲突,或者如果您有多个用户可能想要绑定主机上的端口,恶意用户可能会在“预期”用户之前尝试访问它。
但是,如果情况并非如此,您可能可以允许这样做。Docker在这里推荐的解决方案是允许所有低端口这样做,这比您提到的podman建议的粒度要小。
这取决于您的系统。
如果它是一个多用户系统,并且有多个用户能够运行 docker,那么您可能会成为竞争攻击的受害者,当您的合法 docker 出于某种原因重新启动时,恶意 docker 容器就会启动。
但是,值得注意的是,如果您可以访问 docker,则成为 root通常是微不足道的,并且如果您在生产中使用它,则应该考虑保护您的 docker 安装。
因此,允许 docker 直接绑定到低于 1024 的端口可能是一个方便的功能,值得在单用户系统上进行安全权衡 - 或者您可能会认为在其他情况下它不值得。一种替代方法是在 docker 服务前设置一个 Web 服务器(例如 nginx 或 Apache)作为反向代理。Web 服务器将面向世界,并且可以处理 tls 终止,而 docker 不需要关心证书 - 并且可以侦听非特权端口。