goo*_*ing 5 linux docker docker-compose
令人惊讶的是,运行 docker-compose 使一些端口打开。我只想开放 80、22 和 443。我该如何实现这一目标?如何禁用 docker 打开它们?这确实感觉像是一个巨大的安全问题。
我将回答您没有问过但您实际上想知道的问题,希望它能对未来的读者有所帮助,主要是因为我自己也遇到过这个问题。
如何安全、正确地进行呢?
我假设默认的--iptables=true
docker 配置。
--ip
绑定容器端口时默认为0.0.0.0
ie。所有接口。因此容器绑定到所有接口,即。该端口1234
被重定向到80
来自所有传入接口的端口。因为DOCKER
链是添加到链中的 iptablesnat
表中的PREROUTING
,所以它通常会在普通防火墙插入表中的任何其他内容之前进行重定向filter
。
为了安全起见,请修改并指定重定向端口时容器将绑定到的/etc/docker/daemon.json
默认值:ip
{
"ip": "127.0.0.1"
}
Run Code Online (Sandbox Code Playgroud)
或将命令行选项添加--ip=127.0.0.1
到您的 docker 实例。这样,ports
当未指定时,只会插入本地主机的重定向。
这可能还不够,因为 iptables 规则可能很奇怪 - 因此iptables
建议了解您的规则并在需要时修改它们。或者,您可以添加一些过滤规则到表DOCKER_USER
中的链中filter
以专门过滤流量。
对于您确实想要暴露给外界的实例,请显式设置0.0.0.0
(或外部接口的 IP 编号):
ports:
- 0.0.0.0:1234:80 # global
- 127.0.0.1:1235:80 # local only
- 1236:80 # whatever defaults is set in docker.json, usually 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
我如何关闭它们?
停止docker
服务。停止容器。从 iptables 中删除规则。关闭你的电脑。从您的电脑上删除网络连接。
我只想开放 80、22 和 443。我该如何实现这一目标?
因此,仅重定向这些端口,而不重定向其他端口。
如何禁用 docker 打开它们?
禁用 docker 中的 iptables 支持 - 传递--iptables=false
或dockerd
进行/etc/docker/daemon.json
相应修改。
归档时间: |
|
查看次数: |
6229 次 |
最近记录: |