 推荐工具
› RoboMongo
推荐书目
› 50 Tips and Tricks for MongoDB Developers
推荐工具
› RoboMongo
推荐书目
› 50 Tips and Tricks for MongoDB DevelopersVPS 上运行了自己的记账程序和博客程序,今天早上起来突然发现账单里面的记录全都没了,刚才登录到 VPS 里查看,发现数据库目录只剩下 DB_DELETED.0 和 DB_DELETED.ns 两个文件,其他的全都没了,哭晕简直!
请问大佬们这种情况是发生什么了?我的 MongoDB 没有做用户权限,也没有备份,出现这两个文件,是被人恶意删库了吗还是因为其他原因,请教啊 QAQ
晚上又登录上去看了下数据库,发现了留下来的信息,这下真的是哭晕了

经过这次教训,明天准备重装VPS,请教了大佬,有两个办法:
把服务端也迁移到VPS上,MongoDB只监听本地环回接口,彻底禁止外网访问
装上防火墙,MongoDB切换端口,设置管理员权限,定期备份,只是可怜我那垃圾VPS又得折腾了
以后一定要备份,唉
|  |      1lifeintools      2017-04-21 14:20:27 +08:00 via iPhone  1 前一段不是报出来一个漏洞么? | 
|  |      2jiangzhuo      2017-04-21 14:20:32 +08:00  1 https://www.v2ex.com/t/356219#reply7 如果设置了用户权限的话,也可能是你梦游的时候自己删了不记得了。 看你有没有创建主从了,如果没有的话好像完全没有希望恢复了。 你可以找找有没有给你留下联系邮箱或者比特币钱包地址,觉得价格合适交钱删库的人会还给你数据。 | 
|  |      3hellodigua OP  1 @jiangzhuo 并没有设置管理员,默认连接的,以后只能长记性,每天备份了 | 
|  |      4Finest      2017-04-21 14:31:40 +08:00  1 我还想进来让你尽快跑路 | 
|  |      5nailuoGG      2017-04-21 14:32:49 +08:00  1 眼熟地瓜😂 | 
|  |      6Elven      2017-04-21 14:38:12 +08:00 via iPhone  1 啊嘞嘞,地瓜这名怎么这么熟悉,唔,没备份的话大概没办法了 Orz | 
|      7linxl      2017-04-21 14:42:26 +08:00  1 还好我不会 MongoDB | 
|  |      8Phariel      2017-04-21 14:44:03 +08:00  1 没有备份就 GG ,血的教训 | 
|  |      9LokiSharp      2017-04-21 14:46:07 +08:00  1 @hellodigua #3 地瓜!!! | 
|  |      10realpg PRO  1 你一定是用了 centos | 
|  |      11anyclue      2017-04-21 14:49:59 +08:00  2 | 
|  |      12iRiven      2017-04-21 14:51:05 +08:00 via Android  1 快照 | 
|  |      13hellodigua OP  1 @realpg 你怎么知道的! centos7 | 
|  |      14Ouyangan      2017-04-21 15:29:33 +08:00  1 没事 ,博客你迟早会自己删的. | 
|  |      15realpg PRO  1 | 
|  |      17lfzyx      2017-04-21 15:36:57 +08:00  2 debian 大法好,退 centos 保平安 | 
|  |      18jiangzhuo      2017-04-21 15:41:44 +08:00  2 arc 大法好,退 centos 保平安??? 因为 centos 默认所有端口全开着的,如果是给公共访问的 mongodb 建议只给用户只读权限 | 
|      19lianz      2017-04-21 15:45:55 +08:00  1 你能怎么办, 你也很绝望啊 | 
|  |      20hellodigua OP  1 @jiangzhuo 多谢大佬提醒 | 
|  |      21hellodigua OP  1 @Ouyangan 是啊哈哈,但是数据还是想保存的…… | 
|  |      22tabris17      2017-04-21 15:51:43 +08:00  1 接下去该跑路了 | 
|      23DoraJDJ      2017-04-21 15:54:57 +08:00 via Android  1 缺乏安全意识,没能及时为服务器进行安全配置的后果,只能是自作自受。 下次记得做好服务器安全配置的检查,多做备份。 | 
|  |      25oott123      2017-04-21 16:29:43 +08:00  1 你用 MongoChef 之类的 GUI 工具连上去看(主要是方便),应该能看到删库的人留下的联系信息。 不过建议不要交赎金,很大可能交了赎金也拿不回数据…… 试试联系 VPS 提供商,看他们有没有较早的实例备份,可能可以付点钱拿回来。 | 
|      26wbt      2017-04-21 16:33:54 +08:00  1 我还想提醒你趁早跑路呢 | 
|  |      27ftdejo      2017-04-21 16:42:28 +08:00  1 兄得 你这个还好 要是商业项目就只能跑路了 2333 | 
|      28jeneser      2017-04-21 16:46:50 +08:00 via Android  1 也别跑路了,从头再来吧...... | 
|      29notreami      2017-04-21 17:08:01 +08:00  1 每天定时备份,多简单的事情 | 
|  |      30nullcc      2017-04-21 17:10:01 +08:00  1 可能你的 mongodb 对外开放端口且是默认端口,也没设置密码,被别人扫到,直接进去搞破坏。 | 
|  |      31misaka19000      2017-04-21 17:10:48 +08:00 via Android  1 楼主不哭,摸摸头😆 | 
|  |      32jiangzhuo      2017-04-21 17:47:05 +08:00  1 @murmur 你得看良心不良心了吧。要树立国际化的百年勒索品牌的话,信誉肯定是首要的。拿了赎金还撕票的话以后还怎么在江湖上混,第二票再绑了谁还会给赎金。 | 
|  |      34flyingghost      2017-04-21 18:08:15 +08:00  2 1 ,数据库或者说任何服务开外网并且不上锁简直就是作死。 2 ,比特币勒索不要去支付,根本没人帮你备份的。 3 ,安全意识差和操作系统默认设置没关系。就算默认不开端口, lz 为了外网访问而搜索百度然后打开 iptables 设置。 4 ,作为以上一条补充: mongodb 虽然默认没密码,但人家默认不开外网的。。。 | 
|  |      35tblxdezhu      2017-04-21 18:14:35 +08:00 via Android  1 我也是来看楼主是不是要跑路的 | 
|  |      37hellodigua OP  1 @nullcc 很有可能,因为这台机器平时真的用的不多 | 
|  |      38hellodigua OP  1 @anyclue 看到了你贴的第一个帖子,灵机一动,去看了下那个数据库,然后发现悲剧了…… | 
|  |      39hellodigua OP  1 | 
|  |      40oott123      2017-04-21 20:55:42 +08:00 via Android  1 不想迁移服务端可以通过配置 iptables 给你服务端开白名单解决。 当然用户名密码也是有必要的。 换端口意义就不是很大了,属于掩耳盗铃,防止一些批量扫描而已。 | 
|  |      41hellodigua OP  1 @oott123 了解,明天去试试,还是多谢了~ | 
|      42gongpeione      2017-04-21 21:04:38 +08:00  1 心疼地瓜 dalao | 
|  |      43mathgl      2017-04-21 21:50:42 +08:00  1 我在 vps 用 mongodb 从来都会屏蔽外网访问。 | 
|  |      44hellodigua OP  1 @mathgl 服务端不在本地,没办法 | 
|  |      45hellodigua OP  1 @gongpeione 被树 dalao 心疼 | 
|  |      46mathgl      2017-04-21 22:36:25 +08:00  1 @hellodigua 如果两台都是 vps, 那么搞白名单好了,老实说任何数据库放开端口,就算有用户密码,都是高风险,不推荐这样用。 | 
|  |      47gzlock      2017-04-21 23:21:04 +08:00  1 docker-compose 内使用 mongodb ,不暴露端口到宿主机,可否避免这个问题? | 
|  |      48GoBeyond      2017-04-21 23:30:50 +08:00 via Android  1 数据库没特殊需求给外网等于找死 | 
|  |      49yunshansimon      2017-04-21 23:40:35 +08:00  1 @gzlock 除非你的 client 端也在同一台机器上,并用 docker 的内置 router 连接,才能保证安全。或者映射服务端口到 127.0.0.1 上。没有密码千万不要映射到外部 ip 上。 | 
|  |      50cxbig      2017-04-22 00:46:25 +08:00  1 老生常谈的问题 1. 只用 SSH Key 登录 2. 任何数据库服务不对外网公开 3. 经常、多地备份 | 
|  |      51fy      2017-04-22 00:53:55 +08:00  1 看看能不能回滚,也就是自动的镜像备份什么的。 话说一个博客程序弄 mongodb 干啥,还不如 sqlite 健壮朴实,迁移方便啊! | 
|  |      52Mbin      2017-04-22 04:29:49 +08:00 via iPhone  1 这是去年的事了,楼主竟然没警觉 | 
|  |      53neroxps      2017-04-22 09:07:34 +08:00  1 只开放使用的端口是必须的吧? 端口就是洞洞,开的越多越危险啊。恨不得 SSH 也用 HTTPS 代理呢。 | 
|  |      542owe      2017-04-22 09:39:51 +08:00  1 给钱的方法不靠谱吧,割肉喂狼 | 
|  |      55hellodigua OP  1 @fy 前端开发练手用的,,, | 
|  |      56hellodigua OP  1 @Mbin 前端表示基本没关注过数据库方面的问题啊,结果今天才被坑。。。 | 
|  |      57hellodigua OP  1 @2owe 肯定是不会给钱的,我那点数据也不值 800 块。。。 | 
|  |      58kimoCHG      2017-04-22 10:31:05 +08:00  1 MongoDB 鉴权模式登录 http://www.jianshu.com/p/79caa1cc49a5 | 
|  |      59realpg PRO  1 | 
|  |      60wdlth      2017-04-22 11:55:59 +08:00  1 ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh REJECT all -- anywhere anywhere reject-with icmp-host-prohibited 默认只开放 22 ,肯定是你改了 iptables 规则或者关闭了 iptables …… | 
|  |      61L1shen      2017-04-22 11:59:43 +08:00 via Android  1 心疼地瓜 dalao | 
|      62annielong      2017-04-22 12:03:08 +08:00  1 前一段时间就已经发生一波了,一看就是不经常光 V2 ,还有别付钱,都是删库的,谁会多事给你备份一下 | 
|      63yuchting      2017-04-22 12:15:06 +08:00  1 | 
|  |      641yndonn3u      2017-04-22 15:01:15 +08:00  1 这个 case 发生很久了,竟然楼主都没有注意么。 另外,换一个入门 MongoDB , MongoDB 从入门到跑路。 | 
|  |      65tux      2017-04-22 15:48:33 +08:00 via Android  1 数据库被绑架了,绑匪要求赎金 0.1BTC ,不然就撕票 | 
|  |      66cwek      2017-04-22 15:52:57 +08:00  1 已经猜出了,开放 mongodb 被勒索删库,没备份的话,默哀吧。 | 
|  |      67DT27      2017-04-22 16:20:21 +08:00  1 我的站点跟数据库每天自动打包后通过 webdev 备份到坚果云。 之前用的 dropbox ,后台文件大了, dropbox 又太贵就改坚果云了。。 | 
|      70kaneg      2017-04-22 18:52:32 +08:00 via iPhone  1 防火墙配起来,只开必要的端口,比如 ufw | 
|  |      71nanjishidu      2017-04-22 19:05:51 +08:00 via iPhone  1 数据备份很重要 。。。 | 
|  |      73realpg PRO | 
|  |      75realpg PRO  1 @kn007 #74  我觉得这个问题上 debian 系的 apt 做的要好 首先你要复杂应用 数据库都跟 webserver 之类分离的大项目,一般都有更专业一些的系统管理员(哪怕非专职) 反而是大部分的单服务器玩法的 不精通运维 就像楼主一样踩坑 | 
|  |      77realpg PRO @kn007 #76  mysql 其实还好,真正不开权限系统的好像还真没见过几个 redis 和 mongodb 就完蛋了 尤其 redis 如果你用 sshkey 登陆 server ,用备份接口直接获取你 server 的 root 登录权限 | 
|  |      78kn007      2017-04-22 21:16:46 +08:00 @realpg 所有配置都监听 127.0.0.1 。。。另外我只开放 web sever 对外端口,其他都是 Drop 或者有特定规则、软防。 | 
|      80ferran      2017-04-22 22:11:10 +08:00 看到 lz 头像就想起了鱼雷跳法 233 | 
|  |      81dven      2017-04-23 03:47:25 +08:00 做个类似 SSH 隧道或者 VPN 的东西然后 iptables 吧... @realpg 开外网的 Ubuntu 或者 SLES 也没卵用 | 
|  |      82dven      2017-04-23 03:48:54 +08:00 不过...财务数据库直接跑在公网机器上没有问题?要是别有用心的人故意篡改贵司记账数据 | 
|  |      84LCD      2017-04-23 07:46:15 +08:00 via Android 苦逼啊 | 
|  |      85loveminds      2017-04-23 09:24:48 +08:00 | 
|  |      86loveminds      2017-04-23 09:27:58 +08:00 http://www.tuicool.com/articles/fMRniq 类似这种东西来做隧道可以实现只监听 127.0.0.1 | 
|  |      88timothyye      2017-04-23 09:52:55 +08:00 via Android 目测是没密码并且端口暴露给公网被黑 | 
|  |      89tuutoo      2017-04-23 12:49:31 +08:00 数据库和网站至少要每天备份啊。 | 
|  |      90pynix      2017-04-23 15:55:03 +08:00 公网访问不设认证,你真牛逼。。。 | 
|  |      91lights      2017-04-23 16:56:18 +08:00 前天我们公司的同事才把生产环境代码全都删掉了……不过幸好数据库没删掉 |