V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Livid
V2EX  ›  Docker

今天踩了一个 Docker 和 UFW 的安全坑,分享一下恐怖经历

  •  1
     
  •   Livid · 2018-06-28 19:35:44 +08:00 · 7500 次点击
    这是一个创建于 2121 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在一台公网服务器上通过 Docker 安装某个网络服务用于测试,在 UFW 里添加了规则只允许内网访问。

    但是没想到,docker -p 的端口映射的实现,会忽略系统的 UFW 规则,于是新安装的那个服务就对公网敞开了。

    具体说明可参考这篇文章:

    https://www.techrepublic.com/article/how-to-fix-the-docker-and-ufw-security-flaw/
    12 条回复    2020-02-19 01:11:26 +08:00
    defunct9
        1
    defunct9  
       2018-06-28 20:03:53 +08:00 via iPhone
    这不是坑,当初部署的时候就该考虑到这一点
    chinvo
        2
    chinvo  
       2018-06-28 20:09:31 +08:00
    没记错 UFW 是单独的规则表,不是直接在 iptables 的 INCOMING 和 OUTGOING 上做规则的。
    kslr
        3
    kslr  
       2018-06-28 20:55:39 +08:00
    记录
    How to fix this
    Fortunately, there's a way to fix this. Go back to the terminal on your Docker server and issue the command sudo nano /etc/default/docker and add the following line:

    DOCKER_OPTS="--iptables=false"
    aoaoho
        4
    aoaoho  
       2018-06-28 22:16:25 +08:00
    Shura
        5
    Shura  
       2018-06-28 22:17:40 +08:00   ❤️ 1
    这是一个 feature
    rrfeng
        6
    rrfeng  
       2018-07-03 15:31:31 +08:00 via Android
    一直对 docker 使用 iptables 做端口转发怀有极大的抵触情绪。

    根本不应该出现这个功能。
    Cbdy
        7
    Cbdy  
       2018-07-03 15:37:10 +08:00 via Android   ❤️ 2
    -p 的时候记得前面加 ip
    yanaraika
        8
    yanaraika  
       2018-07-03 15:41:37 +08:00
    这是一个 feature,Docker 新版添加了 DOCKER-USER chain 可以自己在里面添加规则
    mritd
        9
    mritd  
       2018-07-03 19:38:21 +08:00 via iPhone
    一直就是这样的🙃
    Sylv
        10
    Sylv  
       2018-12-02 13:33:43 +08:00
    今天遇到同样的坑,但不同的是添加 DOCKER_OPTS="--iptables=false" 到 /etc/default/docker 文件的修复方法对于 Ubuntu 并不管用,这是因为用 systemd 来启动 docker 时并不会读取 /etc/default/docker 文件,正确的解决办法是使用 /etc/docker/daemon.json 文件:
    {
    "iptables": false
    }

    https://github.com/moby/moby/issues/9889
    gamesover
        11
    gamesover  
       2020-02-18 20:35:09 +08:00
    @Sylv 用了这个方法的确让 ufw 起了原先的作用

    但是外来流量进入 docker 的 ip 被改了,比如原先从 1.2.3.4 的外来公有 ip,访问 docker 里的服务,但是 docker 的服务看到的 ip 是一个内部 ip,比如 172.8.1.1 之类,不是原来的公有 ip,不知道怎么回事
    Sylv
        12
    Sylv  
       2020-02-19 01:11:26 +08:00
    @gamesover 这我就不清楚了,不过似乎我用的时候看到的还是公网 IP,可能是容器的网络配置问题?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4783 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:49 · PVG 17:49 · LAX 02:49 · JFK 05:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.