将Docker Swarm的公开端口限制为特定的外部IP地址

时间:2020-05-11 10:05:34

标签: linux docker security ufw firewalld

目标

我们将Docker Swarm与反向代理(Traefik)结合使用,以在云提供商处托管实习应用程序。我们只想为某些特定的外部IP地址打开端口80/443。

问题

当我们在docker-compose.yml文件中公开端口(通过Docker堆栈部署)时,Docker使用iptables将这些端口公开为默认端口。有没有一种干净的方法可以使某些特定IP的限制不被Docker覆盖?我们使用UFW / firewalled之类的工具来解决此问题,但是Docker似乎没有注意到我们所做的更改,因此忽略了它们。也许我们错过了某些东西,我们正在寻找最佳实践之类的东西。可以自动化并且不需要人工返工的东西。


步骤

步骤1:

    firewall-cmd --permanent --zone=public --add-rich-rule='
    rule family="ipv4"
    source address="XXX.XXX.XXX.XXX"
    port protocol="tcp" port="80" accept'

    firewall-cmd --permanent --zone=public --add-rich-rule='
    rule family="ipv4"
    source address="XXX.XXX.XXX.XXX"
    port protocol="tcp" port="443" accept'

步骤2:

    docker-compose.yaml

    services:
        aservice:
        [...]
            ports:
            - protocol: tcp
                published: 80
                target: 80
                mode: host
            - protocol: tcp
                published: 443
                target: 443
                mode: host

步骤3:

    docker stack deploy --compose-file=docker-compose.yaml service-name

0 个答案:

没有答案