允许容器监听 80 端口的副作用
Side effects of allowing a container to listen on port 80
为了简化 Docker 容器之间的服务端口管理,我想允许包含的 HTTP 服务侦听各自容器 IP 地址的 HTTP 默认 TCP 端口 80。
侦听低于 1025 的端口号通常仅限于具有特殊权限的用户,例如 root
。这样做的原因,据我了解是为了禁止多用户系统上的非特权用户充当整机的HTTP权威服务。
在较新的 Linux 版本中,也可以通过应用 Linux 内核功能 CAP_NET_BIND_SERVICE
允许特定的可执行文件执行此操作。为了在 Docker 容器中工作,我似乎还需要通过 Docker 客户端上的 --add-cap
标志或 Docker-撰写cap_add
节。
理论上,在这种情况下,此端口号限制的原因已过时,因为 Linux 内核的网络命名空间允许容器内的进程仅绑定到它们独有的自己的 IP 地址.
我现在的问题是,这样做是否有任何严重的警告。这是否会以任何方式成为我未考虑的安全问题?或者这样做还有其他问题吗?
我认为这样做的问题为零。
虽然可以使用 "cap add" 并导致安全漏洞暴露,但允许使用端口 80 不是问题。它只是一个 TCP/IP 您的软件侦听的端口,从安全角度来看,它与任何其他随机端口号没有什么不同。
目前我建议只绑定到其他端口。创建容器时,总是将它们转发到另一个端口。搞乱安全性并在容器中留下不必要的特权似乎太麻烦了,无法在内部绑定到特定端口。
为了简化 Docker 容器之间的服务端口管理,我想允许包含的 HTTP 服务侦听各自容器 IP 地址的 HTTP 默认 TCP 端口 80。
侦听低于 1025 的端口号通常仅限于具有特殊权限的用户,例如 root
。这样做的原因,据我了解是为了禁止多用户系统上的非特权用户充当整机的HTTP权威服务。
在较新的 Linux 版本中,也可以通过应用 Linux 内核功能 CAP_NET_BIND_SERVICE
允许特定的可执行文件执行此操作。为了在 Docker 容器中工作,我似乎还需要通过 Docker 客户端上的 --add-cap
标志或 Docker-撰写cap_add
节。
理论上,在这种情况下,此端口号限制的原因已过时,因为 Linux 内核的网络命名空间允许容器内的进程仅绑定到它们独有的自己的 IP 地址.
我现在的问题是,这样做是否有任何严重的警告。这是否会以任何方式成为我未考虑的安全问题?或者这样做还有其他问题吗?
我认为这样做的问题为零。
虽然可以使用 "cap add" 并导致安全漏洞暴露,但允许使用端口 80 不是问题。它只是一个 TCP/IP 您的软件侦听的端口,从安全角度来看,它与任何其他随机端口号没有什么不同。
目前我建议只绑定到其他端口。创建容器时,总是将它们转发到另一个端口。搞乱安全性并在容器中留下不必要的特权似乎太麻烦了,无法在内部绑定到特定端口。