Docker端口转发曝光

信息安全 防火墙 转发端口 码头工人
2021-08-25 23:21:03

我用一个简单的 webapp 尝试 docker :

docker run -d -v $(pwd):/app -p 8080:80 image_name

我在 8080 上有 docker 监听:

tcp6 0 0 :::8080 :::*
LISTEN 13304/docker

所以我可以通过 localhost:8080 测试我的网络应用程序

我将 iptables 与 UFW 一起使用,但我拒绝传入,除了:80、443 和 22

但令人惊讶的是,如果我从 Internet 到我的机器上的 8080 端口做一个 netcat,我可以访问我的网络应用程序!

Docker 必须做一些特别的事情,因为如果我这样启动 socat:

socat TCP6-LISTEN:8080 TCP4:www.google.fr:80

我明白 :

tcp6 0 0 :::8080 :::*
LISTEN 11577/socat

但是这次我无法从外部连接...... UFW 完成了他的工作......

2个回答

Docker 只是在 UFW 规则之前添加了自己的 iptables 规则,详情请参阅https://docs.docker.com/articles/networking/

为了避免我放的铅

DOCKER_OPTS="--ip 127.0.0.1"

在我的 /etc/default/docker. 所以我只绑定到 localhost 并且无法从外部访问。

绑定到本地主机会破坏我的内部路由。我用

DOCKER_OPTS="--iptables=false"

来解决这个问题。