今天登服务器,突然发现自己部署的项目连不上数据库了。然后我第一反应就是把项目重启一下,结果发现 mysql 容器已经停止运行了,并且启动容器后后端项目对应的数据库被删除了。 我的服务器一直是 ssh 密钥登录,并且 ufw 只开放了常用的 80 ,443 ,22 端口,所以我感觉应该不是服务器被黑。 然后我测试了一下 Naviat 远程连接数据库,居然能远程登录( ufw 处于开启状态,,ufw default deny ,并且 ufw 没有开启 3306 端口)。 想问一下 V 友,为什么 ufw 无法控制 docker 容器的端口的入站出站?有没有什么解决的办法👀
1
storyxc 2023-05-03 18:23:33 +08:00
看下你 iptables ,docker 建立端口映射直接用的是 iptables ,所以如果 iptables 放行了,ufw 就控制不了
|
2
wdlth 2023-05-03 18:28:45 +08:00
这个以前就有人踩过坑,https://www.v2ex.com/t/466666 。
因为 Docker 默认用的是 iptables FORWARD 你可以去 GitHub 找 ufw-docker 这个 repo 看一下 ufw 的配置。 |
3
hefish 2023-05-03 18:48:40 +08:00
一般是用 iptables ,如果云主机提供商额外提供了防火墙服务,那就在防火墙服务里面,把 3306 端口禁止访问。
一般尽量采用白名单的方式来设置防火墙或者 iptables 规则,设置 iptables 的时候要小心,别把自己给禁了。。 |
4
hhjswf 2023-05-03 19:11:30 +08:00 via Android
MySQL 本身就可以远程登录的 ip 呀?
|
5
haigeek 2023-05-03 19:36:24 +08:00 via iPhone
1.可以禁用 docker 的 iptables 然后重启并清除 iptables 规则,用 ufw 开端口访问
2.docker 提供了 DOCKER-USER 组供用户自定义规则,可以在这个组用 iptables 加规则 |
6
swulling 2023-05-03 19:48:14 +08:00 1
额,这个是老问题了。Docker 不被 ufw 托管。
另外不要依赖主机防火墙,太多种场景失效了。使用云 VPC 防火墙。 |
7
qq565425677 2023-05-03 19:51:57 +08:00
震惊,我之前也不知道,多亏看了老哥的帖子。另外 fail2ban 也是因为 docker 默认用的 forward 导致禁了某 ip ,这个 ip 还是能访问 docker -p 的容器
|
8
tulongtou 2023-05-03 19:58:40 +08:00
破解版的 navicat 里面有病毒?
|
9
kaedeair 2023-05-03 19:58:52 +08:00 via Android
可以用 docker-compose 组容器集群,容器间可以通过容器名进行 dns 解析,这样他们就可以在同一网段自己玩,不担心外部干扰了,需要外面访问就再加一个补充的 yml ,追加映射端口,不用的时候重新 update 就行了
|
10
opengps 2023-05-03 22:07:50 +08:00
80 开着,查下网站里有没有被注入脚本木马,我曾经被黑的一次是传入了一个.asp 的黑客工具网页,然后发现黑客工具真的牛逼,直接执行 sql 把我主数据库 bak 后提供了对外下载连接
|
11
ysc3839 2023-05-03 23:11:46 +08:00 via Android 1
印象中 ufw 配合 Docker 用挺多坑的,我自己是换成了 firewalld
|
13
Chad0000 2023-05-04 04:45:23 +08:00 via iPhone
问下 OP 数据库放 docker 是生产环境的吗?
|
15
cslive 2023-05-04 09:42:16 +08:00
docker 自动开放端口,ufw 看不出来的,在 iptables 可以看到是开放的,用云厂商提供的安全端口策略
|
16
cokyhe 2023-05-04 13:54:08 +08:00 via Android
我去 赶紧去查查 docker 的端口去
|