我已经在 ufw 上设置了一些规则,但我认为它并没有阻止任何东西。这是它的当前状态:
~# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
22 ALLOW IN Anywhere
80 ALLOW IN Anywhere
27015:27115/udp ALLOW IN Anywhere
27015:27115/tcp ALLOW IN Anywhere
22 (v6) ALLOW IN Anywhere (v6)
80 (v6) ALLOW IN Anywhere (v6)
27015:27115/udp (v6) ALLOW IN Anywhere (v6)
27015:27115/tcp (v6) ALLOW IN Anywhere (v6)
如您所见,它默认拒绝传入连接,仅允许某些端口。但是,我刚刚在端口 8083 上设置了一个新服务,我可以从外部访问它。为什么会这样?
我已经使用 Docker 容器来运行这项新服务,以防万一。
答案1
看起来像
Docker 直接篡改 IPTables
。可以通过向 Docker 守护进程添加 --iptables=false 来覆盖此行为。
编辑 /etc/default/docker 并取消注释DOCKER_OPTS 行:
DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --iptables=false"
作者得出以下结论:
- UFW 不会告诉您 iptables 的真实状态(虽然并不令人震惊,但仍然如此)。
- 永远不要在 Docker 中使用 -p 选项(或 -P)来表示您不想公开的内容。
- 仅绑定在环回接口或内部 IP 上。