• 请不要在回答技术问题时复制粘贴 AI 生成的内容
zy5a59
V2EX  ›  程序员

一次 mongodb 未加密导致的惨痛教训,很痛!

  •  
  •   zy5a59 ·
    PRO
    · Mar 30, 2020 · 7174 views
    This topic created in 2244 days ago, the information mentioned may be changed or developed.

    之前做了一些开发,在阿里云上部署了服务,用的是 mongodb,因为有时候会在本地做一些数据的更新,而且我这流量太小,相当于没有,当时也有点懒,就没给 db 加权限控制,结果今天发现数据被删了,要 0.15 个比特币才给恢复。
    于是赶紧想了想有什么恢复措施,发现平时根本没做备份,突然想到之前使用过阿里云快照功能,进去一看,居然 17 年以后就开始收费了。。自然也没有自动快照生成。只能在重新录入数据了。又要花费好长时间了。。。

    pic

    网上搜了下 mongodb 数据勒索的事件,发现以前早就有了,就是利用了 mongodb 不需要身份验证来搞的。
    https://yq.aliyun.com/articles/114813

    借此机会给广大 v 友提个醒,mongodb 一定要记得加密,最好也能经常备份数据。

    顺便求问:mongodb 没有手动备份,有可以恢复数据的方法么。。。

    41 replies    2020-03-31 22:45:21 +08:00
    AngryMagikarp
        1
    AngryMagikarp  
       Mar 30, 2020
    你的 mongodb 绑定的是公网 IP 地址吗
    zy5a59
        2
    zy5a59  
    OP
    PRO
       Mar 30, 2020
    @AngryMagikarp 是。。因为在本地方便直接连数据库改些东西,就直接绑了。
    AngryMagikarp
        3
    AngryMagikarp  
       Mar 30, 2020
    @zy5a59 我自己的服务器我也都是没有密码的,不过只绑定内网 IP 。要该数据就 ssh 上去改。
    smallgoogle
        4
    smallgoogle  
       Mar 30, 2020
    淡定。我也遇到过。但是数据不重要 从新再录入一边就好了。
    type
        5
    type  
       Mar 30, 2020
    @zy5a59 将 mongodb 绑到内网 IP ;本地如果要连接数据库,使用 SSH Tunnel,就兼顾安全和方便了。
    marcTTT
        6
    marcTTT  
       Mar 30, 2020
    楼上正解,ssh 连数据库就可以,不用绑公网 ip
    spadger
        7
    spadger  
       Mar 30, 2020
    一个不加密的默认设置,害了多少人
    zy5a59
        8
    zy5a59  
    OP
    PRO
       Mar 30, 2020
    lovedebug
        9
    lovedebug  
       Mar 30, 2020
    这种数据库难道不应该限制内网本地登陆吗?
    imnaive
        10
    imnaive  
       Mar 30, 2020
    可以试试 MongoDB 官方的 Atlas,需要设置信任的 IP 和管理员账号密码。
    sphawkcn
        11
    sphawkcn  
       Mar 30, 2020   ❤️ 2
    佩服,敢绑公网。
    xuanbg
        12
    xuanbg  
       Mar 30, 2020
    无论是 mysql 、redis 还是 mongo 啊 mq 啊什么的,加密码,不用默认端口,有条件就用白名单是基操啊。
    diferent
        13
    diferent  
       Mar 30, 2020
    这不不叫未加密吧.
    这个叫未认证.
    nicevar
        14
    nicevar  
       Mar 30, 2020
    隔一段时间在 v 站上就看到楼主这样犯错的,很多人还是一样,开公网,即使加密有啥用呢,有漏洞照样危险,不开公网才是最保险的,楼上的人也说了,直接用 ssh 就可以了,bitvise 这样的软件直接就能隐射到本地。
    Vegetable
        15
    Vegetable  
       Mar 30, 2020
    很常见,我还和同事分析了一波,认为就算你给了 btc 。也不可能给你恢复数据,因为他们的网络环境根本不可能允许他们下载超大数据库,而小数据库往往是没价值的。
    PHPer233
        16
    PHPer233  
       Mar 30, 2020 via Android
    黑客给你上了一课,吃一堑长一智,以后要保护好自己的东西,别有侥幸心理。
    zxfgds
        17
    zxfgds  
       Mar 30, 2020
    @type

    木错~~
    zy5a59
        18
    zy5a59  
    OP
    PRO
       Mar 30, 2020
    @lovedebug
    @xuanbg
    还是之前意识不够,感觉这种小数据库没人会搞,这次真是上了一课
    zy5a59
        19
    zy5a59  
    OP
    PRO
       Mar 30, 2020
    @diferent 嗯是,未认证。。
    zy5a59
        20
    zy5a59  
    OP
    PRO
       Mar 30, 2020
    @nicevar 嗯嗯,重要的还是不能有侥幸心理
    hantsy
        21
    hantsy  
       Mar 30, 2020
    开发环境不要用户认证就罢了,生产环境这么来能怪谁。
    tt67wq
        22
    tt67wq  
       Mar 30, 2020
    标题不太对,者不叫加密,叫鉴权
    hyyou2010
        23
    hyyou2010  
       Mar 30, 2020
    我倾向于数据库本身就应该设计为默认需要口令。
    wmhx
        24
    wmhx  
       Mar 30, 2020
    不要用默认端口, 不要用默认端口, 不要用默认端口
    renmu
        25
    renmu  
       Mar 30, 2020 via Android
    他们都是用机器来扫的,不会在意你是大的还是小的数据库(我被黑过一次博客,然后就被我关了 2333 )
    xcstream
        26
    xcstream  
       Mar 30, 2020
    能使用 mysql 的尽量使用 mysql
    janxin
        27
    janxin  
       Mar 30, 2020
    你这是没加权限认证🤦‍♂️
    no1xsyzy
        28
    no1xsyzy  
       Mar 30, 2020
    @zy5a59 #18 大概三年前就看到这种消息了…… 而且被删的数据库查流量会发现没有大上传,上传量连十分之一的数据库都没有,所以根本没留底,只是简单帮你删了然后留段信息。

    完全自动化扫过去的,确实没有 “人” 搞你。
    Vegetable
        29
    Vegetable  
       Mar 30, 2020
    @hyyou2010 mongodb 本身设计时 bind 127.0.0.1,这样其实足够了吧,我非常反对像 MySQL 那样还要去日志找密码的设计。
    xuanbg
        30
    xuanbg  
       Mar 30, 2020
    @zy5a59 不是有目的地搞你,是被机器扫到了,自动地就搞了。所以,像你这种,只要稍微加点安全措施,能防机器就行了。
    zy5a59
        31
    zy5a59  
    OP
    PRO
       Mar 30, 2020
    感谢上面各位老哥的建议,再同步一下最新的结果:
    我在 db 文件里找了半天,发现有 journal 文件,会保存每一条插入记录,还好当前数据不多,于是把 journal 文件里面的数据拿出来重新插入了一遍,避免了重新再手动录入。
    后面如果大家有类似问题,也提供一个思路
    proqj
        32
    proqj  
       Mar 31, 2020 via Android
    可以,又提醒了大伙儿
    123444a
        33
    123444a  
       Mar 31, 2020 via Android
    aws 有 security group 设置硬件防火墙的,绑公网很正常
    123444a
        34
    123444a  
       Mar 31, 2020 via Android
    加什么密,都是来源 IP 限制,难道黑客黑入到你公司的 IP 那就没辙
    123444a
        35
    123444a  
       Mar 31, 2020 via Android
    你以为加密扫描的人就破解不了么
    Kobayashi
        36
    Kobayashi  
       Mar 31, 2020 via Android
    大清亡了?
    lc7029
        37
    lc7029  
       Mar 31, 2020
    1,数据库权限控制
    2,访问来源控制
    3,MongoDB 不给公网 IP
    三选一就行
    xyjincan
        38
    xyjincan  
       Mar 31, 2020
    别开放端口啊,内部用就行了
    mostkia
        39
    mostkia  
       Mar 31, 2020
    不备份的真大丈夫。我数据库每天零点准时备份。。虽然站点基本基本没什么人来,写个计划任务那么难嘛。。
    kiddingU
        40
    kiddingU  
       Mar 31, 2020
    心大
    1 、公网 IP
    2 、默认端口
    3 、不加权限
    4 、数据不备份

    删库了,只能说买教训了
    kiddingU
        41
    kiddingU  
       Mar 31, 2020
    备份,写个脚本自动每天 dump 不就行了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1226 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 178ms · UTC 23:55 · PVG 07:55 · LAX 16:55 · JFK 19:55
    ♥ Do have faith in what you're doing.