我想阻止对默认 docker.io 注册表的访问。为了安全/IP 保护,我们需要阻止对公共 Docker 中心的推/拉访问。
曾经有过many尝试将此作为配置选项,但所有 PR 都不断被拒绝。红帽已经实现了“--block-registry”和“--add-registry”,它们是exactly我需要什么,但它只适用于 Red Hat 的 docker 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
or
# 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
完成所有这些后,我仍然可以从 docker.io 搜索/拉取。
解决此问题的 PR 之一已被维护人员关闭,他表示这看起来应该由防火墙解决。有人可以告诉我这实际上是如何做到的吗?