linux - 允许容器监听 80 端口的副作用

标签 linux docker containers linux-namespaces linux-capabilities

为了简化 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/

相关文章:

使用 Docker 的 PHP 开发环境

css - 如何阻止我的 2 列布局将右侧的 float div 推到下方?

docker - ic build -t registry.ng.bluemix.net/<my_namespace>/myimage 命令中的 <my_namespace> 是什么

linux - 如何在备份脚本中实现进度条

node.js - 如何从haproxy docker容器内的请求获取客户端IP?

c++ - 如何使用 Eclipse 从 Windows 调试 linux C++ 程序?

r - 如何从本地 R 连接到在 Docker 容器中运行的 PostgreSQL?

java - 集合与容器的区别

c - 父子之间的消息队列导致 msgsnd 中的参数无效

c++ - 在 C++ 缓冲输出中避免 memcpy