我想阻止访问默认的docker.io注册表。为了安全/ IP保护,我们需要阻止对公共Docker集线器的推/拉访问。
已经有很多尝试将其作为配置选项,但所有PR都会被拒绝。红帽已经实施了两个' - block-registry'和' - add-registry',它们完全我需要的东西,但它只适用于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中列出的上述主机):
# 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
有了所有这些,我仍然可以从docker.io搜索/拉出。
解决这个问题的其中一个PR被一位维护者关闭了,他说这看起来好像应该由防火墙解决。有人可以告诉我这是如何实现的吗?
答案 0 :(得分:6)
在Ubuntu上的/ etc / hosts中添加它对我有用:
0.0.0.0 index.docker.io auth.docker.io registry-1.docker.io dseasb33srnrn.cloudfront.net production.cloudflare.docker.com
答案 1 :(得分:5)
在redhat / centos上添加
--block-registry docker.io
到你从哪里开始你的docker引擎(在redhat上可能是/etc/sysconfig/docker
,或者可能是/lib/systemd/system/docker.service
)
如果您编辑了服务文件(systemd
)并且在任何一种情况下重新启动docker引擎(systemctl daemon-reload
),请不要忘记刷新systemctl restart docker.service
现在如果你执行ps auxwwf | grep docker
docker engine --block-register标志应出现在进程列表中。
我来到这里是因为这不适用于debian / ubuntu,我正在寻找一种在debian上执行此操作的方法。 = / HTH