之前做了一些开发,在阿里云上部署了服务,用的是 mongodb,因为有时候会在本地做一些数据的更新,而且我这流量太小,相当于没有,当时也有点懒,就没给 db 加权限控制,结果今天发现数据被删了,要 0.15 个比特币才给恢复。
于是赶紧想了想有什么恢复措施,发现平时根本没做备份,突然想到之前使用过阿里云快照功能,进去一看,居然 17 年以后就开始收费了。。自然也没有自动快照生成。只能在重新录入数据了。又要花费好长时间了。。。
网上搜了下 mongodb 数据勒索的事件,发现以前早就有了,就是利用了 mongodb 不需要身份验证来搞的。
https://yq.aliyun.com/articles/114813
借此机会给广大 v 友提个醒,mongodb 一定要记得加密,最好也能经常备份数据。
顺便求问:mongodb 没有手动备份,有可以恢复数据的方法么。。。
![]() | 1 AngryMagikarp 2020-03-30 11:16:19 +08:00 你的 mongodb 绑定的是公网 IP 地址吗 |
![]() | 2 zy5a59 OP PRO @AngryMagikarp 是。。因为在本地方便直接连数据库改些东西,就直接绑了。 |
![]() | 3 AngryMagikarp 2020-03-30 11:32:03 +08:00 @zy5a59 我自己的服务器我也都是没有密码的,不过只绑定内网 IP 。要该数据就 ssh 上去改。 |
![]() | 4 smallgoogle 2020-03-30 11:36:53 +08:00 淡定。我也遇到过。但是数据不重要 从新再录入一边就好了。 |
6 marcTTT 2020-03-30 11:50:29 +08:00 楼上正解,ssh 连数据库就可以,不用绑公网 ip |
![]() | 7 spadger 2020-03-30 11:52:34 +08:00 一个不加密的默认设置,害了多少人 |
![]() | 8 zy5a59 OP PRO |
![]() | 9 lovedebug 2020-03-30 11:58:24 +08:00 这种数据库难道不应该限制内网本地登陆吗? |
![]() | 10 imnaive 2020-03-30 12:00:21 +08:00 可以试试 MongoDB 官方的 Atlas,需要设置信任的 IP 和管理员账号密码。 |
11 sphawkcn 2020-03-30 12:02:10 +08:00 ![]() 佩服,敢绑公网。 |
![]() | 12 xuanbg 2020-03-30 12:06:37 +08:00 无论是 mysql 、redis 还是 mongo 啊 mq 啊什么的,加密码,不用默认端口,有条件就用白名单是基操啊。 |
13 diferent 2020-03-30 12:39:12 +08:00 这不不叫未加密吧. 这个叫未认证. |
14 nicevar 2020-03-30 12:43:00 +08:00 隔一段时间在 v 站上就看到楼主这样犯错的,很多人还是一样,开公网,即使加密有啥用呢,有漏洞照样危险,不开公网才是最保险的,楼上的人也说了,直接用 ssh 就可以了,bitvise 这样的软件直接就能隐射到本地。 |
![]() | 15 Vegetable 2020-03-30 12:51:48 +08:00 很常见,我还和同事分析了一波,认为就算你给了 btc 。也不可能给你恢复数据,因为他们的网络环境根本不可能允许他们下载超大数据库,而小数据库往往是没价值的。 |
![]() | 16 PHPer233 2020-03-30 12:53:41 +08:00 via Android 黑客给你上了一课,吃一堑长一智,以后要保护好自己的东西,别有侥幸心理。 |
21 hantsy 2020-03-30 14:04:00 +08:00 开发环境不要用户认证就罢了,生产环境这么来能怪谁。 |
![]() | 22 tt67wq 2020-03-30 14:04:35 +08:00 标题不太对,者不叫加密,叫鉴权 |
![]() | 23 hyyou2010 2020-03-30 14:10:30 +08:00 我倾向于数据库本身就应该设计为默认需要口令。 |
24 wmhx 2020-03-30 14:15:39 +08:00 不要用默认端口, 不要用默认端口, 不要用默认端口 |
25 renmu 2020-03-30 14:47:00 +08:00 via Android 他们都是用机器来扫的,不会在意你是大的还是小的数据库(我被黑过一次博客,然后就被我关了 2333 ) |
![]() | 26 xcstream 2020-03-30 14:51:16 +08:00 能使用 mysql 的尽量使用 mysql |
![]() | 27 janxin 2020-03-30 15:15:02 +08:00 你这是没加权限认证♂ |
![]() | 28 no1xsyzy 2020-03-30 15:43:31 +08:00 @zy5a59 #18 大概三年前就看到这种消息了…… 而且被删的数据库查流量会发现没有大上传,上传量连十分之一的数据库都没有,所以根本没留底,只是简单帮你删了然后留段信息。 完全自动化扫过去的,确实没有 “人” 搞你。 |
![]() | 29 Vegetable 2020-03-30 15:47:02 +08:00 @hyyou2010 mongod 本身设计时 bind 127.0.0.1,这样其实足够了吧,我非常反对像 MySQL 那样还要去日志找密码的设计。 |
![]() | 31 zy5a59 OP PRO 感谢上面各位老哥的建议,再同步一下最新的结果: 我在 db 文件里找了半天,发现有 journal 文件,会保存每一条插入记录,还好当前数据不多,于是把 journal 文件里面的数据拿出来重新插入了一遍,避免了重新再手动录入。 后面如果大家有类似问题,也提供一个思路 |
![]() | 32 proqj 2020-03-31 04:06:15 +08:00 via Android 可以,又提醒了大伙儿 |
33 123444a 2020-03-31 07:58:19 +08:00 via Android aws 有 security group 设置硬件防火墙的,绑公网很正常 |
34 123444a 2020-03-31 07:59:29 +08:00 via Android 加什么密,都是来源 IP 限制,难道黑客黑入到你公司的 IP 那就没辙 |
35 123444a 2020-03-31 08:00:02 +08:00 via Android 你以为加密扫描的人就破解不了么 |
36 Kobayashi 2020-03-31 08:29:12 +08:00 via Android 大清亡了? |
37 lc7029 2020-03-31 11:41:47 +08:00 1,数据库权限控制 2,访问来源控制 3,MongoDB 不给公网 IP 三选一就行 |
![]() | 38 xyjincan 2020-03-31 12:58:05 +08:00 别开放端口啊,内部用就行了 |
![]() | 39 mostkia 2020-03-31 13:33:12 +08:00 不备份的真大丈夫。我数据库每天零点准时备份。。虽然站点基本基本没什么人来,写个计划任务那么难嘛。。 |
40 kiddingU 2020-03-31 22:44:55 +08:00 心大 1 、公网 IP 2 、默认端口 3 、不加权限 4 、数据不备份 删库了,只能说买教训了 |
41 kiddingU 2020-03-31 22:45:21 +08:00 备份,写个脚本自动每天 dump 不就行了 |