为什么即使在我的 Linode 中阻止了端口,我也能够公开访问我的 Web 应用程序?

Why am I able to access my webapp publicly even when blocking the port in my Linode?

我有一个 Linode 设置,我已经设置了 UFW 来阻止端口,尤其是 8080。我已经重新加载了防火墙 而且我仍然可以通过网络访问网络应用程序。

UFW:

Status: active

To                         Action      From
--                         ------      ----
787/tcp                    ALLOW       Anywhere
8080                       DENY        Anywhere
787/tcp (v6)               ALLOW       Anywhere (v6)
8080 (v6)                  DENY        Anywhere (v6)

我在 docker 上是 运行 traefik,并且将端口上的仪表板映射到 8080,并且能够通过网络访问该应用程序。这里发生了什么? 8080 的规则不是应该阻止连接吗?

解法:

编辑 /etc/docker/daemon.json 中的 daemon.json 并添加以下内容:

{ "iptables": false }

保存,然后重新加载 docker。这现在可以防止 docker 修改 iptables 和“回避”ufw 规则。

对通过 Docker 端口发布打开的端口的访问在 nat PREROUTING 链或 filter FORWARD [=28= 中受到控制].您现有的防火墙规则可能只影响 filter INPUT table.

添加对 Docker 容器的调解访问规则的规范位置是 filter table 中的 DOCKER_USER 链,它是从 FORWARD链.

对于 DOCKER_USER 链中的规则,您将需要使用容器侦听的端口,而不是发布服务的主机端口。