服务器的数据库被黑了,想问一下如何通过防火墙阻止数据库远程登录?

361 天前
 NASK

今天登服务器,突然发现自己部署的项目连不上数据库了。然后我第一反应就是把项目重启一下,结果发现 mysql 容器已经停止运行了,并且启动容器后后端项目对应的数据库被删除了。 我的服务器一直是 ssh 密钥登录,并且 ufw 只开放了常用的 80 ,443 ,22 端口,所以我感觉应该不是服务器被黑。 然后我测试了一下 Naviat 远程连接数据库,居然能远程登录( ufw 处于开启状态,,ufw default deny ,并且 ufw 没有开启 3306 端口)。 想问一下 V 友,为什么 ufw 无法控制 docker 容器的端口的入站出站?有没有什么解决的办法👀

2424 次点击
所在节点    问与答
16 条回复
storyxc
361 天前
看下你 iptables ,docker 建立端口映射直接用的是 iptables ,所以如果 iptables 放行了,ufw 就控制不了
wdlth
361 天前
这个以前就有人踩过坑,https://www.v2ex.com/t/466666

因为 Docker 默认用的是 iptables FORWARD
你可以去 GitHub 找 ufw-docker 这个 repo 看一下 ufw 的配置。
hefish
361 天前
一般是用 iptables ,如果云主机提供商额外提供了防火墙服务,那就在防火墙服务里面,把 3306 端口禁止访问。
一般尽量采用白名单的方式来设置防火墙或者 iptables 规则,设置 iptables 的时候要小心,别把自己给禁了。。
hhjswf
361 天前
MySQL 本身就可以远程登录的 ip 呀?
haigeek
361 天前
1.可以禁用 docker 的 iptables 然后重启并清除 iptables 规则,用 ufw 开端口访问
2.docker 提供了 DOCKER-USER 组供用户自定义规则,可以在这个组用 iptables 加规则
swulling
361 天前
额,这个是老问题了。Docker 不被 ufw 托管。

另外不要依赖主机防火墙,太多种场景失效了。使用云 VPC 防火墙。
qq565425677
361 天前
震惊,我之前也不知道,多亏看了老哥的帖子。另外 fail2ban 也是因为 docker 默认用的 forward 导致禁了某 ip ,这个 ip 还是能访问 docker -p 的容器
tulongtou
361 天前
破解版的 navicat 里面有病毒?
kaedeair
361 天前
可以用 docker-compose 组容器集群,容器间可以通过容器名进行 dns 解析,这样他们就可以在同一网段自己玩,不担心外部干扰了,需要外面访问就再加一个补充的 yml ,追加映射端口,不用的时候重新 update 就行了
opengps
360 天前
80 开着,查下网站里有没有被注入脚本木马,我曾经被黑的一次是传入了一个.asp 的黑客工具网页,然后发现黑客工具真的牛逼,直接执行 sql 把我主数据库 bak 后提供了对外下载连接
ysc3839
360 天前
印象中 ufw 配合 Docker 用挺多坑的,我自己是换成了 firewalld
NASK
360 天前
@swulling 谢谢,按你的方法已经把端口堵上了
Chad0000
360 天前
问下 OP 数据库放 docker 是生产环境的吗?
NASK
360 天前
@Chad0000 不是,项目是自己写的拿来练手的,还不完善,数据库被删了可以重新建。
cslive
360 天前
docker 自动开放端口,ufw 看不出来的,在 iptables 可以看到是开放的,用云厂商提供的安全端口策略
cokyhe
360 天前
我去 赶紧去查查 docker 的端口去

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/937041

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX