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

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

  •  
  •   hellodigua · 64 天前 · 6490 次点击
    这是一个创建于 64 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    第 1 条附言  ·  63 天前

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

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

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

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

    以后一定要备份,唉

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

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

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

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

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

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

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

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