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

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

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

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

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

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