如何禁用添加到 iptables 的所有 docker 规则以获取 public accces?

How do I disable all the docker rules that are added to iptables for public accces?

我正在使用 docker-compose 并且刚刚发现我从 docker-compose.yml 公开的所有端口实际上都添加到 iptables 以允许世界访问。不知道,但这给我留下了一个巨大的安全漏洞。

docker 页面对 运行 说:iptables -I DOCKER-USER -i ext_if ! -s 192.168.1.1 -j DROP

但这对我没有任何帮助。我仍然可以在没有隧道的情况下远程访问我的数据库服务器。

我不确定我的本地 IP 地址是什么。我仍然想允许主机 OS 上的内部连接连接到这些端口,但不允许连接到世界。

如果您不希望暴露的端口公开可用,有比乱用 Docker 的 iptables 规则更简单的解决方案。

  1. 只是不要暴露它们。

    您不需要为了访问服务而公开端口。您只需连接到容器 ip 地址即可访问任何开放的容器端口。

  2. 仅在本地主机上公开它们。

    不要写-p 8080:8080,它会在所有接口上的主机端口8080 上公开容器端口8080,而写-p 127.0.0.1:8080:8080,这只会在环回地址上公开端口。现在您可以在 localhost:8080 的主机上访问它,但其他任何人都无法访问它。