为了简化Docker容器之间的服务端口管理,我希望允许包含的HTTP服务监听HTTP的默认TCP端口80,即它们各自容器的IP地址。
侦听低于1025的端口号通常仅限于具有特殊权限的用户,如root
。据我所知,这样做的原因是为了禁止多用户系统上的非特权用户充当整个机器的权威HTTP服务。
在较新的Linux版本中,还可以通过应用Linux内核功能CAP_NET_BIND_SERVICE
将其应用于特定的可执行文件。为了在Docker容器中工作,我似乎还需要将此功能应用于Docker容器本身,通过Docker客户端上的--add-cap
标志或Docker-Compose cap_add
部分。
从理论上讲,这种端口号限制的原因在这种情况下是过时的,因为Linux内核的网络名称空间只允许容器中的进程绑定到它们自己独有的IP地址上。
我现在的问题是,这样做是否有任何严重的警告。这是不是会成为我没有考虑到的安全问题?或者,在这样做的时候还有其他问题吗?
发布于 2017-03-16 22:49:20
我认为这样做没有问题。
虽然可以使用"cap add“并导致安全漏洞暴露,但允许使用端口80不是问题。它只是您的软件侦听的TCP/IP端口,从安全的角度来看,它与任何其他随机端口号没有什么不同。
发布于 2017-09-02 15:53:53
目前,我建议只绑定到其他端口。其中一个总是在创建容器时将它们转发到另一个端口。在容器中摆弄安全性和留下不必要的特权似乎太麻烦了,仅仅在内部绑定到一个特定的端口。
https://stackoverflow.com/questions/42830495
复制相似问题