为了简化 Docker 容器之间的服务端口管理,我想允许包含的 HTTP 服务监听各自容器 IP 地址的 HTTP 默认 TCP 端口 80。
监听低于 1025 的端口号通常仅限于具有特殊权限的用户,例如 root
。这样做的原因,据我了解是为了禁止多用户系统上的非特权用户充当整机的权威HTTP服务。
在较新的 Linux 版本中,还可以通过应用 Linux 内核功能 CAP_NET_BIND_SERVICE
允许特定可执行文件执行此操作。为了在 Docker 容器中工作,我似乎还需要通过 Docker 客户端上的 --add-cap
标志或 Docker-Compose 将此功能应用于 Docker 容器本身cap_add
部分。
理论上,在这种情况下,此端口号限制的原因已过时,因为 Linux 内核的网络命名空间允许容器内的进程仅绑定(bind)到它们自己独有的 IP 地址。
我现在的问题是,这样做是否有任何严重的警告。这是否会以任何方式成为我未考虑的安全问题?或者这样做还有其他问题吗?
最佳答案
我认为这样做的问题为零。
虽然可以使用“cap add”并导致安全漏洞暴露,但允许使用端口 80 不是问题。它只是您的软件监听的一个 TCP/IP 端口,从安全角度来看,它与任何其他随机端口号没有什么不同。
关于linux - 允许容器监听 80 端口的副作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42830495/