先说说事情的经过......

2017年1月8号星期天,在家翻头条无意中看到一条新闻说很多用户的mongodb被黑了,数据都被删了。当时想着公司的爬虫用的也是mongodb做存储,应该不会被黑吧,不可能这么巧,也没太在意。

1月9号周一来到公司,运营人员找我说数据一条都查不出来了,我当时心里一紧,回想昨天晚上看到的新闻,抓紧打开数据库一看,顿时傻眼了,“不会这么巧吧”。 数据库被删干净了,只留了一条信息

Your DB is Backed up at our servers, to restore send 0.1 BTC to the Bitcoin Address then send an email with your server ip  

抓紧上网查了下,果然很多人都中招了,留下的也是这一条信息。想想最后一次备份是在一个多月以前(因为数据库太大,备份太麻烦,所以没考虑到定期备份),简直想死的心都有。不过万幸的是只是抓取的网页数据丢了,其他之前配置过的一些重要的信息都存在了另一个SQL Server数据库中。被领导批过以后,老老实实的还原数据,加密码,重新运行爬虫。

其实之前考虑到放在公网上,也给mongodb加过密码。只是加了密码之后,另一个组的同事C#写的客户端就没法访问了,研究了两天也没解决,就和我商量着能不能先把密码去了,等他研究明白了再加上,不能因为这个影响了运营部门同事的工作了。当时想着我们这么个小公司,谁会没事黑我们啊,就暂时去了吧,等过段时间再加上。这样暂时去掉以后,就再也没有后来了......

等数据还原完以后,我拿起手机发了条朋友圈

2017年做了第一件SB的事,mongodb裸奔......

并在心里发誓,谁让我把密码去掉我也不去。

第二天一早,接到了领导的电话,“你把密码去掉吧”。原来负责客户端的那个同事还是没办法连上我加密码后的数据库,而他本人在客户现场驻场开发,抽不出时间来研究。领导的意思是说用bind_ip的方式来保证安全,既要能保证外网的访问,因为外网有两个程序需要连这个库,又要保证内网的任意用户能够连接,我说那这该怎么实现啊,当他说出“你自己研究啊,难道要我告诉你吗?”时,心里别提有多委屈了。

没办法,领导都下了命令,就必须执行。于是乖乖的把密码去掉,然后开始各种搜索怎么通过bind_ip实现只允许特定机器的访问。但是多次试验后,发现 bind_ip设置除了本机ip和127.0.0.1之外的地址,mongod服务就起不来了,查日志也是bind() failed错误。于是加了几个群一问就被大神们笑话了,说你自己的机器去绑别人的地址肯定不行啊。这时我才意识到,我理解错了bind_ip的作用,一直以为这个设置是为了限制哪些主机可以访问本机数据库,其实bind_ip只能绑定本机有的ip地址,是监听的意思,是允许其他机器通过哪个地址来访问本机数据库。理解了这个,就明白了通过这种方式是无法实现我们的要求的。

后来听群里大神说可以通过在防火墙设置ip白名单的方式实现,我开始欢天喜地的去设置防火墙,还没等我设置完,运营人员发来了一条信息,“数据库又一条数据都查不到了”。看到这条消息我压抑住心底骂人的冲动再次打开数据库,数据又被删干净了,只留了这样一条消息

亲,您的数据库我们没有备份,但是如果你想放广告请支付0.1 BTC给我们

我气得手都有点哆嗦,一方面气世界上为什么会存在这样可气的不法分子,一方面气自己为什么不长记性,还一方面是气领导这样草率的决定。我颤抖着双手给领导发了一条信息,“你还是让XXX抽时间研究研究把密码访问mongodb加上吧,数据库又被黑了”。领导也很震惊,然后又说这边项目太紧抽不出人手,最后丢下一句“你自己想办法吧”,心灰意泠的感觉啊,恨不得自己学下C#把源码要过来自己改了。

最后多方协调,终于找人把外网访问的功能暂时屏蔽了,只允许公司内部访问,这样再被黑,我真的要砸键盘了。通过这件事,想到了很多:

  1. 平常工作中增加安全意识,不能存在侥幸心理;
  2. 数据库要定期更换密码和异机备份;
  3. 认为正确的事要坚持原则;
  4. 做一个正直的人;

人生就是一个不断挖坑、填坑的过程,不止要填自己挖的坑,还要填别人帮你挖的坑。

mongodb两次被黑后......的更多相关文章

  1. maven 当两个工程合并后 他的classpath也合并了

    maven   当两个工程合并后 他的classpath也合并了  也就是说资源文件环境合并了

  2. 练习五十七:for循环 809??=800*?+9*?+1其中?代表的两位数,8*?的结果为两位数,9*?的结果为3位数。求?代表的两位数,及809??后的结果

    题目:809??=800*?+9*?+1其中?代表的两位数,8*?的结果为两位数,9*?的结果为3位数.求?代表的两位数,及809??后的结果 注意:一定要看清楚题目哦,809??代表的是结果,?代表 ...

  3. 程序员之---C语言细节20(符号和有符号之间转换、两数相加溢出后数值计算)

    主要内容:无符号和有符号之间转换.两数相加溢出后数值计算 #include <stdio.h> /* 这个函数存在潜在漏洞 */ float sum_elements(float a[], ...

  4. 【PTA】5-1 输入一个正整数n,再输入n个学生的姓名和百分制成绩,将其转换为两级制成绩后输出。

    5-1 输入一个正整数n,再输入n个学生的姓名和百分制成绩,将其转换为两级制成绩后输出.要求定义和调用函数set_grade(stu, n),其功能是根据结构数组stu中存放的学生的百分制成绩scor ...

  5. MongoDB 集合间关联查询后通过$filter进行筛选

    在前面的分享中,有讲解 “详解MongoDB中的多表关联查询($lookup)” 一节,其内容涵盖了常见的集合管理的需求.我们知道文档的选择都是通过$match进行匹配刷选.但这是文档间的匹配筛选,并 ...

  6. mongodb 两小时入门

    传统的计算机应用大多使用关系型数据库来存储数据,比如大家可能熟悉的MySql, Sqlite等等,它的特点是数据以表格(table)的形式储存起来的.数据库由一张张排列整齐的表格构成,就好像一个Exc ...

  7. 配置Mongodb两种方式

    手动上传方式 Mongodb-Centos7 安装之前准备工作 下载地址:https://www.mongodb.org/dl/linux 环境说明:下载地址 1系统虚拟机信息:CentOS7 X86 ...

  8. oracle将两个结果连接后进行查询,得到两个查询的联合结果

    一.需求 用户答题,共3道,必须3题都答完才能提交. 目的:要查询用户答对了几题,答错了几题.(当然此处可以只查答对的题目数,用3减即得答错题的题目数) 二.sql select * ) rightC ...

  9. MongoDb 集群不可用后SECONDARY节点强制启动

    机房意外断电断网不得不预防,下面模拟测试某机房断电断网,B机房断电断网后A机房可正常提供服务,A机房断电断网后可能需要强制重启继续提供服务了,目前查看数据都还在,暂时没验证是否有数据丢失,小试了一把. ...

随机推荐

  1. jQuery选取和操纵元素的特点

    jQuery选取和操纵元素的特点 JavaScript选取元素 先来看看不用jQuery的时候我们是怎么处理元素选取的. JavaScript选取元素的时候,可以根据id获取元素,当id不存在的时候, ...

  2. Asp.net 4.0,首次请求目录下的文件时响应很慢

    原文:Asp.net 4.0,首次请求目录下的文件时响应很慢 1. 问题起因2. 尝试过的处理思路3. 解决方法 1. 问题起因 一个从VS2003(.Net Framework 1.1)升级到.ne ...

  3. Sql Server 自定义数据类型

    SQLServer 提供了 25 种基本数据类型: ·Binary [(n)]  二进制数据 既可以是固定长度的(Binary),也可以是变长度的.其中,n 的取值范围是从 1 到 8000.其存储窨 ...

  4. Mysql高级之索引

    原文:Mysql高级之索引 索引:是针对数据所建立的目录. 作用: 可以加快查询速度 负面影响: 降低了增删改的速度. 索引的创建原则: 1:不要过度索引 2:在where条件最频繁的列上加.在重复度 ...

  5. ADFS 2.0 配置简介 PartⅠ – 安装ADFS

        Active Directory Federation Service 也即联盟身份认证服务是微软的单点登录解决方案 (SSO),配置步骤相当多,中文资料也比较少,写在这里希望对后来人有所帮助 ...

  6. C#动态表达式计算(续1)

    距上一帖近五天时间,让大家久等了,没想到关注这个话题的也不少人,正如有同志所说的想解决该问题其实是有太多的解决方法,比如动态构造类编译.调用vbscript或者可以采用javascript解析引擎或者 ...

  7. C++ builder 中AnsiString的字符串转换方法大全

    C++ builder 中AnsiString的字符串转换方法大全 //Ansistring 转 charvoid __fastcall TForm1::Button1Click(TObject *S ...

  8. Jquery CSS 与 Attr

    今天用Jquery想动态更改一张位图的src发现css不好用,查看Jquery文档好像是css是设置样式的属性的,如颜色,字体,背景等,而attr貌似是能操作所有属性,包括Jquery未封装的属性. ...

  9. EditPlus 3设置字体大小

    EditPlus设置字体大小 tools ---> preferences ---> fonts

  10. noip模拟赛:部队[技巧?思想?]

    王国军总指挥——卡西乌斯准将决定重建情报局,需要从全国各地挑选有能力的士兵,选择的标准为A,B两种能力.对于每个候选士兵,如果存在另一名士兵的两项能力均大于等于他,那么他将被淘汰.(注意:若两名士兵两 ...