V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
hellodigua
V2EX  ›  MongoDB

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

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

    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
    https://www.v2ex.com/t/356219#reply7

    如果设置了用户权限的话,也可能是你梦游的时候自己删了不记得了。
    看你有没有创建主从了,如果没有的话好像完全没有希望恢复了。
    你可以找找有没有给你留下联系邮箱或者比特币钱包地址,觉得价格合适交钱删库的人会还给你数据。
    hellodigua
        3
    hellodigua  
    OP
       2017-04-21 14:29:43 +08:00   ❤️ 1
    @jiangzhuo 并没有设置管理员,默认连接的,以后只能长记性,每天备份了
    hand515
        4
    hand515  
       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  
       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  
       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
    @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  
       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  
       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  
       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  
       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  
       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   ·   实用小工具   ·   5620 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 06:02 · PVG 14:02 · LAX 22:02 · JFK 01:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.