一次 mongodb 未加密导致的惨痛教训,很痛! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
zy5a59
V2EX    程序员

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

  •  
  •   zy5a59
    PRO
    2020-03-30 11:07:55 +08:00 6810 次点击
    这是一个创建于 2026 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    pic

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

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

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

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

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

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

    删库了,只能说买教训了
    kiddingU
        41
    kiddingU  
       2020-03-31 22:45:21 +08:00
    备份,写个脚本自动每天 dump 不就行了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     894 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 20:12 PVG 04:12 LAX 13:12 JFK 16:12
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86