【问题标题】:Docker container accessible only via Cloudflare CDN (selected ip ranges)只能通过 Cloudflare CDN 访问的 Docker 容器(选定的 IP 范围)
【发布时间】:2020-07-12 06:46:19
【问题描述】:

我在 docker 容器中有网络服务器,但我无法在我的主机 (Debian) 上配置 iptables。我希望指定的 IP 地址在端口 80 和 443 上连接到我的机器(主机)。端口 22 应该可以从任何 ip 访问。就我而言,allowed 应该是 Cloudflare ip 地址。 Cloudflare ip 可在https://www.cloudflare.com/ips-v4 获得。

我应该如何正确阻止端口 80 和 443 上的非 Cloudflare ips 连接?

【问题讨论】:

    标签: linux docker nginx iptables cloudflare


    【解决方案1】:

    解决方案:

    iptables -F DOCKER-USER
    iptables -I DOCKER-USER -j RETURN
    iptables -I DOCKER-USER -p tcp -m multiport --dports http,https -j DROP
    for i in `curl -s https://www.cloudflare.com/ips-v4`;\
            do iptables -I DOCKER-USER -p tcp -i eth0 -m multiport --dports http,https -s $i -j RETURN;\
    done
    iptables -I DOCKER-USER -o eth0 -d 0.0.0.0/0 -j ACCEPT
    

    DOCKER-USER 的iptables -L 的结果:

    ACCEPT     all  --  anywhere             anywhere
    RETURN     tcp  --  <ACCEPTED IPs>       anywhere             multiport dports http,https
    DROP       tcp  --  anywhere             anywhere             multiport dports http,https
    RETURN     all  --  anywhere             anywhere
    

    说明:
    第一部分 (ACCEPT) 接受来自 Web 服务器(docker 容器)的传出流量。
    第二部分 (RETURN) 描述了允许在端口 80 或 443 上连接的 IP 地址。
    第三部分 (DROP) 丢弃端口 80/443 上的连接数据包,这些数据包未在 RETURN 部分中列出。
    第四部分(RETURN)是 DOCKER-USER 链中的默认规则。它可以通过下一个规则处理其他端口上的连接,而不是丢弃非 80/443 端口(例如端口 22 - ssh)上的所有连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-07
      • 1970-01-01
      • 2016-06-01
      • 2011-06-29
      • 2011-08-19
      • 2018-04-21
      • 2022-11-02
      • 1970-01-01
      相关资源
      最近更新 更多