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

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

  •  
  •   hellodigua · 4 天前 · 6052 次点击

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

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

    第 1 条附言  ·  3 天前

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

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

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

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

    以后一定要备份,唉

    91 回复  |  直到 2017-04-23 16:56:18 +08:00
        1
    lifeintools   4 天前 via iPhone   ♥ 1
    前一段不是报出来一个漏洞么?
        2
    jiangzhuo   4 天前   ♥ 1
    https://www.v2ex.com/t/356219#reply7

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

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

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

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

    话说一个博客程序弄 mongodb 干啥,还不如 sqlite 健壮朴实,迁移方便啊!
        52
    Mbin   3 天前 via iPhone   ♥ 1
    这是去年的事了,楼主竟然没警觉
        53
    neroxps   3 天前   ♥ 1
    只开放使用的端口是必须的吧?

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

    首先你要复杂应用 数据库都跟 webserver 之类分离的大项目,一般都有更专业一些的系统管理员(哪怕非专职)
    反而是大部分的单服务器玩法的 不精通运维 就像楼主一样踩坑
        76
    kn007   2 天前
    @realpg 嗯,确实考虑欠缺。
    搞得很多人很被动啊。
        77
    realpg   2 天前
    @kn007 #76
    mysql 其实还好,真正不开权限系统的好像还真没见过几个
    redis 和 mongodb 就完蛋了
    尤其 redis 如果你用 sshkey 登陆 server ,用备份接口直接获取你 server 的 root 登录权限
        78
    kn007   2 天前
    @realpg 所有配置都监听 127.0.0.1 。。。另外我只开放 web sever 对外端口,其他都是 Drop 或者有特定规则、软防。
        79
    everpcpc   2 天前
        80
    ferran   2 天前
    看到 lz 头像就想起了鱼雷跳法 233
        81
    dven   2 天前
    做个类似 SSH 隧道或者 VPN 的东西然后 iptables 吧...
    @realpg 开外网的 Ubuntu 或者 SLES 也没卵用
        82
    dven   2 天前
    不过...财务数据库直接跑在公网机器上没有问题?要是别有用心的人故意篡改贵司记账数据
        83
    dven   2 天前
    @kn007 数据库一般都是用类似 VPN 的东西跑在一个特定的 10 段上
        84
    LCD   2 天前 via Android
    苦逼啊
        85
    loveminds   2 天前
    @realpg @kn007
    只监听 127.0.0.1 ,然后用 SSH 隧道和前端的 WebServer 交互?这样也可以
        86
    loveminds   2 天前
    http://www.tuicool.com/articles/fMRniq
    类似这种东西来做隧道可以实现只监听 127.0.0.1
        87
    loveminds   2 天前
    @dven 方案很多,反向 SSH ,各种代理,甚至用 SS 应该都行
        88
    timothyye   2 天前 via Android
    目测是没密码并且端口暴露给公网被黑
        89
    tuutoo   2 天前
    数据库和网站至少要每天备份啊。
        90
    pynix   2 天前
    公网访问不设认证,你真牛逼。。。
        91
    lights   1 天前
    前天我们公司的同事才把生产环境代码全都删掉了……不过幸好数据库没删掉
    DigitalOcean
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   1970 人在线   最高记录 2466   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.7.5 · 77ms · UTC 08:40 · PVG 16:40 · LAX 01:40 · JFK 04:40
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1