为了简化Docker容器之间的服务端口管理,我想允许包含的HTTP服务侦听HTTP各自容器IP地址的默认TCP端口80。
听取1025以下的端口号通常仅限于具有特殊权限的用户,例如root
。据我所知,其原因是禁止多用户系统上的非特权用户充当整个机器的权威HTTP服务。
在较新的Linux版本中,还可以通过应用Linux内核功能CAP_NET_BIND_SERVICE
将其用于特定的可执行文件。为了在Docker容器中工作,我似乎还需要通过Docker客户端上的--add-cap
标志或Docker-Compose cap_add
部分将此功能应用于Docker容器本身。
理论上,这种端口号限制的原因在这种情况下已经过时,因为Linux内核的网络命名空间只允许容器内的进程绑定在它们独有的IP地址上。
现在我的问题是,如果有任何关于这样做的严重警告。是这还是可能以某种方式成为一种安全问题,而这种安全问题一直被我所忽视?或者还有其他问题吗?
答案 0 :(得分:2)
我认为这样做没有问题。
虽然可以使用“cap add”并导致暴露安全漏洞,但允许使用端口80不是问题。它只是您的软件侦听的TCP / IP端口,从安全角度来看,它与任何其他随机端口号没有什么不同。
答案 1 :(得分:-1)
目前我建议只绑定到其他端口。一个在创建容器时始终将它们转发到另一个端口。解决安全问题并在容器中留下不必要的权限似乎太麻烦了,只需内部绑定到特定端口。