如何阻止 Docker 注册表?
How to block a Docker registry?
我想阻止对默认 docker.io 注册表的访问。为了 security/IP 保护,我们需要阻止 push/pull 访问 to/from public Docker 集线器。
已经多次 尝试将此设置为配置选项,但所有 PR 都不断被拒绝。 Red Hat 实现了“--block-registry”和“--add-registry”,正是我所需要的,但它只适用于 Red Hat 的 [=44] 分支=] v1.10,我想使用 docker v1.12+
我正在使用 RHEL/Centos 7
DNS 欺骗似乎无法通过 /etc/hosts 中的以下内容起作用(不再):
127.0.0.1 index.docker.io registry.docker.io registry-1.docker.io docker.io
而且我似乎无法让防火墙通过以下规则阻止访问(其中 IP 当前是来自 /etc/hosts 中列出的上述主机的 IP):
# firewall-cmd --direct --get-rules ipv4 filter OUTPUT
0 -p tcp -m tcp --dport 5000 -j REJECT
0 -p tcp -m tcp --dport 443 -j REJECT
0 -p tcp -m tcp -d 52.207.178.113 -j DROP
0 -p tcp -m tcp -d 52.73.159.23 -j DROP
0 -p tcp -m tcp -d 54.85.12.131 -j DROP
0 -p tcp -m tcp -d 52.6.119.223 -j DROP
0 -p tcp -m tcp -d 52.0.53.94 -j DROP
0 -p tcp -m tcp -d 34.192.123.224 -j DROP
0 -m state --state ESTABLISHED,RELATED -j ACCEPT
1 -p tcp -m tcp --dport 80 -j ACCEPT
1 -p tcp -m tcp --dport 53 -j ACCEPT
1 -p udp --dport 53 -j ACCEPT
1 -p tcp -m tcp --dport 2376 -j ACCEPT
2 -j REJECT
或
# firewall-cmd --direct --get-rules ipv4 filter FORWARD
0 -p tcp -m tcp --dport 5000 -j REJECT
0 -p tcp -m tcp --dport 443 -j REJECT
0 -p tcp -m tcp -d 52.207.178.113 -j DROP
0 -p tcp -m tcp -d 52.73.159.23 -j DROP
0 -p tcp -m tcp -d 54.85.12.131 -j DROP
0 -p tcp -m tcp -d 52.6.119.223 -j DROP
0 -p tcp -m tcp -d 52.0.53.94 -j DROP
0 -p tcp -m tcp -d 34.192.123.224 -j DROP
有了所有这些,我仍然可以 search/pull 来自 docker.io。
其中一个解决此问题的 PR 已被维护者关闭,维护者说它看起来应该由防火墙解决。有人可以告诉我这实际上是怎么做到的吗?
在 redhat/centos 添加
--block-registry docker.io
到你启动 docker 引擎的任何地方(可能是 /etc/sysconfig/docker
在 redhat 上,或者可能是 /lib/systemd/system/docker.service
)
如果您编辑了服务文件 (systemctl daemon-reload
),请不要忘记刷新 systemd
并在任何一种情况下重新启动 docker 引擎 (systemctl restart docker.service
)
现在,如果您执行 ps auxwwf | grep docker
,docker engine --block-register 标志应该出现在进程列表中。
我来这里是因为这在 debian/ubuntu 上不起作用,我正在寻找一种在 debian 上执行此操作的方法。 = / HTH
将此添加到 Ubuntu 上的 /etc/hosts 对我有用:
0.0.0.0 index.docker.io auth.docker.io registry-1.docker.io dseasb33srnrn.cloudfront.net production.cloudflare.docker.com
我想阻止对默认 docker.io 注册表的访问。为了 security/IP 保护,我们需要阻止 push/pull 访问 to/from public Docker 集线器。
已经多次 尝试将此设置为配置选项,但所有 PR 都不断被拒绝。 Red Hat 实现了“--block-registry”和“--add-registry”,正是我所需要的,但它只适用于 Red Hat 的 [=44] 分支=] v1.10,我想使用 docker v1.12+
我正在使用 RHEL/Centos 7
DNS 欺骗似乎无法通过 /etc/hosts 中的以下内容起作用(不再):
127.0.0.1 index.docker.io registry.docker.io registry-1.docker.io docker.io
而且我似乎无法让防火墙通过以下规则阻止访问(其中 IP 当前是来自 /etc/hosts 中列出的上述主机的 IP):
# firewall-cmd --direct --get-rules ipv4 filter OUTPUT
0 -p tcp -m tcp --dport 5000 -j REJECT
0 -p tcp -m tcp --dport 443 -j REJECT
0 -p tcp -m tcp -d 52.207.178.113 -j DROP
0 -p tcp -m tcp -d 52.73.159.23 -j DROP
0 -p tcp -m tcp -d 54.85.12.131 -j DROP
0 -p tcp -m tcp -d 52.6.119.223 -j DROP
0 -p tcp -m tcp -d 52.0.53.94 -j DROP
0 -p tcp -m tcp -d 34.192.123.224 -j DROP
0 -m state --state ESTABLISHED,RELATED -j ACCEPT
1 -p tcp -m tcp --dport 80 -j ACCEPT
1 -p tcp -m tcp --dport 53 -j ACCEPT
1 -p udp --dport 53 -j ACCEPT
1 -p tcp -m tcp --dport 2376 -j ACCEPT
2 -j REJECT
或
# firewall-cmd --direct --get-rules ipv4 filter FORWARD
0 -p tcp -m tcp --dport 5000 -j REJECT
0 -p tcp -m tcp --dport 443 -j REJECT
0 -p tcp -m tcp -d 52.207.178.113 -j DROP
0 -p tcp -m tcp -d 52.73.159.23 -j DROP
0 -p tcp -m tcp -d 54.85.12.131 -j DROP
0 -p tcp -m tcp -d 52.6.119.223 -j DROP
0 -p tcp -m tcp -d 52.0.53.94 -j DROP
0 -p tcp -m tcp -d 34.192.123.224 -j DROP
有了所有这些,我仍然可以 search/pull 来自 docker.io。
其中一个解决此问题的 PR 已被维护者关闭,维护者说它看起来应该由防火墙解决。有人可以告诉我这实际上是怎么做到的吗?
在 redhat/centos 添加
--block-registry docker.io
到你启动 docker 引擎的任何地方(可能是 /etc/sysconfig/docker
在 redhat 上,或者可能是 /lib/systemd/system/docker.service
)
如果您编辑了服务文件 (systemctl daemon-reload
),请不要忘记刷新 systemd
并在任何一种情况下重新启动 docker 引擎 (systemctl restart docker.service
)
现在,如果您执行 ps auxwwf | grep docker
,docker engine --block-register 标志应该出现在进程列表中。
我来这里是因为这在 debian/ubuntu 上不起作用,我正在寻找一种在 debian 上执行此操作的方法。 = / HTH
将此添加到 Ubuntu 上的 /etc/hosts 对我有用:
0.0.0.0 index.docker.io auth.docker.io registry-1.docker.io dseasb33srnrn.cloudfront.net production.cloudflare.docker.com