【问题标题】:How do I prevent redirected docker ports from being open to the outside world?如何防止重定向的 docker 端口向外界开放?
【发布时间】:2019-08-09 20:25:34
【问题描述】:

我在不同的容器中有多个 Web 服务,我将每个服务器的 80 个端口重定向到主机服务器上的另一个端口。 (container 1 80 -> 8003, container 2 80 -> 8004, container 3 80 -> 8005) 我想阻止访问这些端口,除了预配置的 ip 列表

我已将 iptables 规则添加到“docker-user”链中,如下所示;

-A INPUT -s 212.154.74.194/32 -p tcp -j ACCEPT //accept all from this ip
-A INPUT -s 185.22.208.0/25 -p tcp -j ACCEPT //accept all from this ip
-A INPUT -p tcp -m tcp --dport 8003 -j DROP //block anyone except allowed ips 
-A INPUT -p tcp -m tcp --dport 8004 -j DROP //block anyone except allowed ips
-A INPUT -p tcp -m tcp --dport 8005 -j DROP //block anyone except allowed ips

但它不起作用。路由端口仍然可以从外部访问。我不知道我做错了什么。如何阻止对路由端口的访问?

【问题讨论】:

    标签: docker iptables portforwarding


    【解决方案1】:

    似乎From docker docs 非常详尽地回答了您的问题:

    默认情况下,允许所有外部源 IP 连接到 Docker 守护程序。要仅允许特定 IP 或网络访问容器,请在 DOCKER 过滤器链的顶部插入否定规则。例如,以下规则限制外部访问除 192.168.1.1 之外的所有 IP 地址:

    $ iptables -I DOCKER-USER -i ext_if ! -s 192.168.1.1 -j DROP
    

    允许特定子网:

    iptables -I DOCKER-USER -i ext_if ! -s 192.168.1.0/24 -j DROP
    

    奖励:您还可以完全限制与 localhost 的连接:docker run -p 127.0.0.1:80:8003 应该会自动限制对 localhost 的访问。

    或者使用 docker compose:

    webapp:
        image: image_name
        ports:
        - "127.0.0.1:80:8003"
    

    【讨论】:

      猜你喜欢
      • 2018-07-18
      • 2014-08-13
      • 2017-04-01
      • 1970-01-01
      • 2019-06-12
      • 1970-01-01
      • 2021-01-29
      • 1970-01-01
      • 2016-10-06
      相关资源
      最近更新 更多