我有一个运行 UFW 的 Debian 9 服务器,我想阻止除端口 2122(SSH)和 80/443(对于 HTTP(s))之外的所有传入请求。
我运行了以下命令:
ufw reset
ufw default deny incoming
ufw default allow outgoing
ufw allow incoming 2122/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
编译结果为:
ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
2122/tcp ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
2122/tcp (v6) ALLOW IN Anywhere (v6)
80/tcp (v6) ALLOW IN Anywhere (v6)
443/tcp (v6) ALLOW IN Anywhere (v6)
至少对我来说,一切似乎都很好。但是,当我在端口 2424(或者实际上任何其他端口)上运行 docker 容器时,我仍然可以访问http://域名.tld:2424,尽管有防火墙。
我尝试过重启、重启 iptables……但都无济于事。有什么建议吗?非常感谢!
答案1
Docker 会在防火墙本身中打开端口,用于正在运行的容器所暴露的任何端口。这些端口不会显示在ufw
输出中,但可以在 中查看iptables
。
你应该:
- 确保仅暴露需要互联网访问的端口。
- 使用 docker-compose 来协调多个相关容器的创建和运行。它们可以相互通信,而无需公开端口。