MongoDB 被删库,我该怎么办?好无助 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hellodigua
V2EX    MongoDB

MongoDB 被删库,我该怎么办?好无助

  •  
  •   hellodigua 2017-04-21 14:14:18 +08:00 12366 次点击
    这是一个创建于 3096 天前的主题,其中的信息可能已经有所发展或是发生改变。

    VPS 上运行了自己的记账程序和博客程序,今天早上起来突然发现账单里面的记录全都没了,刚才登录到 VPS 里查看,发现数据库目录只剩下 DB_DELETED.0 和 DB_DELETED.ns 两个文件,其他的全都没了,哭晕简直!

    请问大佬们这种情况是发生什么了?我的 MongoDB 没有做用户权限,也没有备份,出现这两个文件,是被人恶意删库了吗还是因为其他原因,请教啊 QAQ

    第 1 条附言    2017-04-21 20:15:44 +08:00

    晚上又登录上去看了下数据库,发现了留下来的信息,这下真的是哭晕了

    经过这次教训,明天准备重装VPS,请教了大佬,有两个办法:

    1. 把服务端也迁移到VPS上,MongoDB只监听本地环回接口,彻底禁止外网访问

    2. 装上防火墙,MongoDB切换端口,设置管理员权限,定期备份,只是可怜我那垃圾VPS又得折腾了

    以后一定要备份,唉

    91 条回复    2017-04-23 16:56:18 +08:00
    lifeintools
        1
    lifeintools  
       2017-04-21 14:20:27 +08:00 via iPhone   1
    前一段不是报出来一个漏洞么?
    jiangzhuo
        2
    jiangzhuo  
       2017-04-21 14:20:32 +08:00   1
    t/356219#reply7

    如果设置了用户权限的话,也可能是你梦游的时候自己删了不记得了。
    看你有没有创建主从了,如果没有的话好像完全没有希望恢复了。
    你可以找找有没有给你留下联系邮箱或者比特币钱包地址,觉得价格合适交钱删库的人会还给你数据。
    hellodigua
        3
    hellodigua  
    OP
       2017-04-21 14:29:43 +08:00   1
    @jiangzhuo 并没有设置管理员,默认连接的,以后只能长记性,每天备份了
    Finest
        4
    Finest  
       2017-04-21 14:31:40 +08:00   1
    我还想进来让你尽快跑路
    nailuoGG
        5
    nailuoGG  
       2017-04-21 14:32:49 +08:00   1
    眼熟地瓜
    Elven
        6
    Elven  
       2017-04-21 14:38:12 +08:00 via iPhone   1
    啊嘞嘞,地瓜这名怎么这么熟悉,唔,没备份的话大概没办法了 Orz
    linxl
        7
    linxl  
       2017-04-21 14:42:26 +08:00   1
    还好我不会 MongoDB
    Phariel
        8
    Phariel  
       2017-04-21 14:44:03 +08:00   1
    没有备份就 GG ,血的教训
    LokiSharp
        9
    LokiSharp  
       2017-04-21 14:46:07 +08:00   1
    @hellodigua #3 地瓜!!!
    realpg
        10
    realpg  
    PRO
       2017-04-21 14:46:10 +08:00   1
    你一定是用了 centos
    iRiven
        12
    iRiven  
       2017-04-21 14:51:05 +08:00 via Android   1
    快照
    hellodigua
        13
    hellodigua  
    OP
       2017-04-21 15:24:45 +08:00   1
    @realpg 你怎么知道的! centos7
    Ouyangan
        14
    Ouyangan  
       2017-04-21 15:29:33 +08:00   1
    没事 ,博客你迟早会自己删的.
    realpg
        15
    realpg  
    PRO
       2017-04-21 15:30:33 +08:00   1
    @hellodigua #13
    ubuntu server 大法好
    退 redhat 保平安
    kn007
        16
    kn007  
       2017-04-21 15:34:27 +08:00 via Android   1
    @realpg 怎么说?
    lfzyx
        17
    lfzyx  
       2017-04-21 15:36:57 +08:00   2
    debian 大法好,退 centos 保平安
    jiangzhuo
        18
    jiangzhuo  
       2017-04-21 15:41:44 +08:00   2
    arc 大法好,退 centos 保平安???
    因为 centos 默认所有端口全开着的,如果是给公共访问的 mongodb 建议只给用户只读权限
    lianz
        19
    lianz  
       2017-04-21 15:45:55 +08:00   1
    你能怎么办, 你也很绝望啊
    hellodigua
        20
    hellodigua  
    OP
       2017-04-21 15:47:01 +08:00   1
    @jiangzhuo 多谢大佬提醒
    hellodigua
        21
    hellodigua  
    OP
       2017-04-21 15:47:13 +08:00   1
    /div>
    @Ouyangan 是啊哈哈,但是数据还是想保存的……
    tabris17
        22
    tabris17  
       2017-04-21 15:51:43 +08:00   1
    接下去该跑路了
    DoraJDJ
        23
    DoraJDJ  
       2017-04-21 15:54:57 +08:00 via Android   1
    缺乏安全意识,没能及时为服务器进行安全配置的后果,只能是自作自受。

    下次记得做好服务器安全配置的检查,多做备份。
    murmur
        24
    murmur  
       2017-04-21 15:55:40 +08:00   1
    @jiangzhuo 所有的勒索都是直接删库,谁会给你拷贝数据出来
    oott123
        25
    oott123  
       2017-04-21 16:29:43 +08:00   1
    你用 MongoChef 之类的 GUI 工具连上去看(主要是方便),应该能看到删库的人留下的联系信息。

    不过建议不要交赎金,很大可能交了赎金也拿不回数据……

    试试联系 VPS 提供商,看他们有没有较早的实例备份,可能可以付点钱拿回来。
    wbt
        26
    wbt  
       2017-04-21 16:33:54 +08:00   1
    我还想提醒你趁早跑路呢
    ftdejo
        27
    ftdejo  
       2017-04-21 16:42:28 +08:00   1
    兄得 你这个还好 要是商业项目就只能跑路了 2333
    jeneser
        28
    jeneser  
       2017-04-21 16:46:50 +08:00 via Android   1
    也别跑路了,从头再来吧......
    notreami
        29
    notreami  
       2017-04-21 17:08:01 +08:00   1
    每天定时备份,多简单的事情
    nullcc
        30
    nullcc  
       2017-04-21 17:10:01 +08:00   1
    可能你的 mongodb 对外开放端口且是默认端口,也没设置密码,被别人扫到,直接进去搞破坏。
    misaka19000
        31
    misaka19000  
       2017-04-21 17:10:48 +08:00 via Android   1
    楼主不哭,摸摸头
    jiangzhuo
        32
    jiangzhuo  
       2017-04-21 17:47:05 +08:00   1
    @murmur 你得看良心不良心了吧。要树立国际化的百年勒索品牌的话,信誉肯定是首要的。拿了赎金还撕票的话以后还怎么在江湖上混,第二票再绑了谁还会给赎金。
    jiangzhuo
        33
    jiangzhuo  
       2017-04-21 17:49:32 +08:00   1
    @murmur 另外有价值的数据肯定要拷出来的,勒索不成还能拿到黑市上卖个钱。
    flyingghost
        34
    flyingghost  
       2017-04-21 18:08:15 +08:00   2
    1 ,数据库或者说任何服务开外网并且不上锁简直就是作死。
    2 ,比特币勒索不要去支付,根本没人帮你备份的。
    3 ,安全意识差和操作系统默认设置没关系。就算默认不开端口, lz 为了外网访问而搜索百度然后打开 iptables 设置。
    4 ,作为以上一条补充: mongodb 虽然默认没密码,但人家默认不开外网的。。。
    tblxdezhu
        35
    tblxdezhu  
       2017-04-21 18:14:35 +08:00 via Android   1
    我也是来看楼主是不是要跑路的
    msg7086
        36
    msg7086  
       2017-04-21 18:48:35 +08:00   1
    @jiangzhuo 不会的。就算不停撕票,也总会有人继续给赎金的。
    hellodigua
        37
    hellodigua  
    OP
       2017-04-21 19:18:12 +08:00   1
    @nullcc 很有可能,因为这台机器平时真的用的不多
    hellodigua
        38
    hellodigua  
    OP
       2017-04-21 19:45:34 +08:00   1
    @anyclue 看到了你贴的第一个帖子,灵机一动,去看了下那个数据库,然后发现悲剧了……
    hellodigua
        39
    hellodigua  
    OP
       2017-04-21 20:20:46 +08:00   1
    @flyingghost @jiangzhuo @oott123 悲剧,果然是被删库
    oott123
        40
    oott123  
       2017-04-21 20:55:42 +08:00 via Android   1
    不想迁移服务端可以通过配置 iptables 给你服务端开白名单解决。
    当然用户名密码也是有必要的。
    换端口意义就不是很大了,属于掩耳盗铃,防止一些批量扫描而已。
    hellodigua
        41
    hellodigua  
    OP
       2017-04-21 21:03:33 +08:00   1
    @oott123 了解,明天去试试,还是多谢了~
    gongpeione
        42
    gongpeione  
       2017-04-21 21:04:38 +08:00   1
    心疼地瓜 dalao
    mathgl
        43
    mathgl  
       2017-04-21 21:50:42 +08:00   1
    我在 vps 用 mongodb 从来都会屏蔽外网访问。
    hellodigua
        44
    hellodigua  
    OP
       2017-04-21 21:53:48 +08:00   1
    @mathgl 服务端不在本地,没办法
    hellodigua
        45
    hellodigua  
    OP
       2017-04-21 21:54:03 +08:00   1
    @gongpeione 被树 dalao 心疼
    mathgl
        46
    mathgl  
       2017-04-21 22:36:25 +08:00   1
    @hellodigua 如果两台都是 vps, 那么搞白名单好了,老实说任何数据库放开端口,就算有用户密码,都是高风险,不推荐这样用。
    gzlock
        47
    gzlock  
       2017-04-21 23:21:04 +08:00   1
    docker-compose 内使用 mongodb ,不暴露端口到宿主机,可否避免这个问题?
    GoBeyond
        48
    GoBeyond  
       2017-04-21 23:30:50 +08:00 via Android   1
    数据库没特殊需求给外网等于找死
    yunshansimon
        49
    yunshansimon  
       2017-04-21 23:40:35 +08:00   1
    @gzlock 除非你的 client 端也在同一台机器上,并用 docker 的内置 router 连接,才能保证安全。或者映射服务端口到 127.0.0.1 上。没有密码千万不要映射到外部 ip 上。
    cxbig
        50
    cxbig  
       2017-04-22 00:46:25 +08:00   1
    老生常谈的问题
    1. 只用 SSH Key 登录
    2. 任何数据库服务不对外网公开
    3. 经常、多地备份
    fy
        51
    fy  
       2017-04-22 00:53:55 +08:00   1
    看看能不能回滚,也就是自动的镜像备份什么的。

    话说一个博客程序弄 mongodb 干啥,还不如 sqlite 健壮朴实,迁移方便啊!
    Mbin
        52
    Mbin  
       2017-04-22 04:29:49 +08:00 via iPhone   1
    这是去年的事了,楼主竟然没警觉
    neroxps
        53
    neroxps  
       2017-04-22 09:07:34 +08:00   1
    只开放使用的端口是必须的吧?

    端口就是洞洞,开的越多越危险啊。恨不得 SSH 也用 HTTPS 代理呢。
    2owe
        54
    2owe  
       2017-04-22 09:39:51 +08:00   1
    给钱的方法不靠谱吧,割肉喂狼
    hellodigua
        55
    hellodigua  
    OP
       2017-04-22 10:06:10 +08:00 via Android   1
    @fy 前端开发练手用的,,,
    hellodigua
        56
    hellodigua  
    OP
       2017-04-22 10:07:00 +08:00 via Android   1
    @Mbin 前端表示基本没关注过数据库方面的问题啊,结果今天才被坑。。。
    hellodigua
        57
    hellodigua  
    OP
       2017-04-22 10:08:12 +08:00 via Android   1
    @2owe 肯定是不会给钱的,我那点数据也不值 800 块。。。
    kimoCHG
        58
    kimoCHG  
       2017-04-22 10:31:05 +08:00   1
    MongoDB 鉴权模式登录 http://www.jianshu.com/p/79caa1cc49a5
    realpg
        59
    realpg  
    PRO
       2017-04-22 11:44:10 +08:00   1
    wdlth
        60
    wdlth  
       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 ……
    L1shen
        61
    L1shen  
       2017-04-22 11:59:43 +08:00 via Android   1
    心疼地瓜 dalao
    annielong
        62
    annielong  
       2017-04-22 12:03:08 +08:00   1
    前一段时间就已经发生一波了,一看就是不经常光 V2 ,还有别付钱,都是删库的,谁会多事给你备份一下
    yuchting
        63
    yuchting  
       2017-04-22 12:15:06 +08:00   1
    1yndonn3u
        64
    1yndonn3u  
       2017-04-22 15:01:15 +08:00   1
    这个 case 发生很久了,竟然楼主都没有注意么。
    另外,换一个入门 MongoDB ,
    MongoDB 从入门到跑路。
    tux
        65
    tux  
       2017-04-22 15:48:33 +08:00 via Android   1
    数据库被绑架了,绑匪要求赎金 0.1BTC ,不然就撕票
    cwek
        66
    cwek  
       2017-04-22 15:52:57 +08:00   1
    已经猜出了,开放 mongodb 被勒索删库,没备份的话,默哀吧。
    DT27
        67
    DT27  
       2017-04-22 16:20:21 +08:00   1
    我的站点跟数据库每天自动打包后通过 webdev 备份到坚果云。
    之前用的 dropbox ,后台文件大了, dropbox 又太贵就改坚果云了。。
    kn007
        68
    kn007  
       2017-04-22 16:39:06 +08:00 via Android   1
    @realpg 自己编译,自己调整配置,不存在这种问题
    realpg
        69
    realpg  
    PRO
       2017-04-22 16:43:28 +08:00   1
    @kn007 #68
    会调配置的还说啥……就没这事儿了
    kaneg
        70
    kaneg  
       2017-04-22 18:52:32 +08:00 via iPhone   1
    防火墙配起来,只开必要的端口,比如 ufw
    nanjishidu
        71
    nanjishidu  
       2017-04-22 19:05:51 +08:00 via iPhone   1
    数据备份很重要 。。。
    kn007
        72
    kn007  
       2017-04-22 20:55:22 +08:00   1
    @realpg 我以为 redhat 有什么漏洞可以直接攻进来。。这本来所有的系统就应该做好防火墙端口限制。。
    realpg
        73
    realpg  
    PRO
       2017-04-22 20:59:49 +08:00
    @kn007 #72
    不是那个意思
    是很多做的不够人性化
    就 mysql 为例, 95%的应用场景基本都是只需要对 127.0.0.1 开放 默认配置就是 0.0.0.0
    kn007
        74
    kn007  
       2017-04-22 21:02:04 +08:00
    @realpg 确实这点很不好,可能考虑的只是被当为内网机子。或者说使用者熟悉防火墙规则设定
    realpg
        75
    realpg  
    PRO
       2017-04-22 21:03:56 +08:00   1
    @kn007 #74
    我觉得这个问题上 debian 系的 apt 做的要好

    首先你要复杂应用 数据库都跟 webserver 之类分离的大项目,一般都有更专业一些的系统管理员(哪怕非专职)
    反而是大部分的单服务器玩法的 不精通运维 就像楼主一样踩坑
    kn007
        76
    kn007  
       2017-04-22 21:05:41 +08:00
    @realpg 嗯,确实考虑欠缺。
    搞得很多人很被动啊。
    realpg
        77
    realpg  
    PRO
       2017-04-22 21:14:35 +08:00
    @kn007 #76
    mysql 其实还好,真正不开权限系统的好像还真没见过几个
    redis 和 mongodb 就完蛋了
    尤其 redis 如果你用 sshkey 登陆 server ,用备份接口直接获取你 server 的 root 登录权限
    kn007
        78
    kn007  
       2017-04-22 21:16:46 +08:00
    @realpg 所有配置都监听 127.0.0.1 。。。另外我只开放 web sever 对外端口,其他都是 Drop 或者有特定规则、软防。
    everpcpc
        79
    everpcpc  
       2017-04-22 21:40:45 +08:00
    ferran
        80
    ferran  
       2017-04-22 22:11:10 +08:00
    看到 lz 头像就想起了鱼雷跳法 233
    dven
        81
    dven  
       2017-04-23 03:47:25 +08:00
    做个类似 SSH 隧道或者 VPN 的东西然后 iptables 吧...
    @realpg 开外网的 Ubuntu 或者 SLES 也没卵用
    dven
        82
    dven  
       2017-04-23 03:48:54 +08:00
    不过...财务数据库直接跑在公网机器上没有问题?要是别有用心的人故意篡改贵司记账数据
    dven
        83
    dven  
       2017-04-23 07:10:43 +08:00
    @kn007 数据库一般都是用类似 VPN 的东西跑在一个特定的 10 段上
    LCD
        84
    LCD  
       2017-04-23 07:46:15 +08:00 via Android
    苦逼啊
    loveminds
        85
    loveminds  
       2017-04-23 09:24:48 +08:00
    @realpg @kn007
    只监听 127.0.0.1 ,然后用 SSH 隧道和前端的 WebServer 交互?这样也可以
    loveminds
        86
    loveminds  
       2017-04-23 09:27:58 +08:00
    http://www.tuicool.com/articles/fMRniq
    类似这种东西来做隧道可以实现只监听 127.0.0.1
    loveminds
        87
    loveminds  
       2017-04-23 09:29:32 +08:00
    @dven 方案很多,反向 SSH ,各种代理,甚至用 SS 应该都行
    timothyye
        88
    timothyye  
       2017-04-23 09:52:55 +08:00 via Android
    目测是没密码并且端口暴露给公网被黑
    tuutoo
        89
    tuutoo  
       2017-04-23 12:49:31 +08:00
    数据库和网站至少要每天备份啊。
    pynix
        90
    pynix  
       2017-04-23 15:55:03 +08:00
    公网访问不设认证,你真牛逼。。。
    lights
        91
    lights  
       2017-04-23 16:56:18 +08:00
    前天我们公司的同事才把生产环境代码全都删掉了……不过幸好数据库没删掉
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2787 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 14:28 PVG 22:28 LAX 07:28 JFK 10:28
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86