mongodb两次被黑后......
先说说事情的经过......
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#把源码要过来自己改了。
最后多方协调,终于找人把外网访问的功能暂时屏蔽了,只允许公司内部访问,这样再被黑,我真的要砸键盘了。通过这件事,想到了很多:
- 平常工作中增加安全意识,不能存在侥幸心理;
- 数据库要定期更换密码和异机备份;
- 认为正确的事要坚持原则;
- 做一个正直的人;
人生就是一个不断挖坑、填坑的过程,不止要填自己挖的坑,还要填别人帮你挖的坑。
mongodb两次被黑后......的更多相关文章
- maven 当两个工程合并后 他的classpath也合并了
maven 当两个工程合并后 他的classpath也合并了 也就是说资源文件环境合并了
- 练习五十七:for循环 809??=800*?+9*?+1其中?代表的两位数,8*?的结果为两位数,9*?的结果为3位数。求?代表的两位数,及809??后的结果
题目:809??=800*?+9*?+1其中?代表的两位数,8*?的结果为两位数,9*?的结果为3位数.求?代表的两位数,及809??后的结果 注意:一定要看清楚题目哦,809??代表的是结果,?代表 ...
- 程序员之---C语言细节20(符号和有符号之间转换、两数相加溢出后数值计算)
主要内容:无符号和有符号之间转换.两数相加溢出后数值计算 #include <stdio.h> /* 这个函数存在潜在漏洞 */ float sum_elements(float a[], ...
- 【PTA】5-1 输入一个正整数n,再输入n个学生的姓名和百分制成绩,将其转换为两级制成绩后输出。
5-1 输入一个正整数n,再输入n个学生的姓名和百分制成绩,将其转换为两级制成绩后输出.要求定义和调用函数set_grade(stu, n),其功能是根据结构数组stu中存放的学生的百分制成绩scor ...
- MongoDB 集合间关联查询后通过$filter进行筛选
在前面的分享中,有讲解 “详解MongoDB中的多表关联查询($lookup)” 一节,其内容涵盖了常见的集合管理的需求.我们知道文档的选择都是通过$match进行匹配刷选.但这是文档间的匹配筛选,并 ...
- mongodb 两小时入门
传统的计算机应用大多使用关系型数据库来存储数据,比如大家可能熟悉的MySql, Sqlite等等,它的特点是数据以表格(table)的形式储存起来的.数据库由一张张排列整齐的表格构成,就好像一个Exc ...
- 配置Mongodb两种方式
手动上传方式 Mongodb-Centos7 安装之前准备工作 下载地址:https://www.mongodb.org/dl/linux 环境说明:下载地址 1系统虚拟机信息:CentOS7 X86 ...
- oracle将两个结果连接后进行查询,得到两个查询的联合结果
一.需求 用户答题,共3道,必须3题都答完才能提交. 目的:要查询用户答对了几题,答错了几题.(当然此处可以只查答对的题目数,用3减即得答错题的题目数) 二.sql select * ) rightC ...
- MongoDb 集群不可用后SECONDARY节点强制启动
机房意外断电断网不得不预防,下面模拟测试某机房断电断网,B机房断电断网后A机房可正常提供服务,A机房断电断网后可能需要强制重启继续提供服务了,目前查看数据都还在,暂时没验证是否有数据丢失,小试了一把. ...
随机推荐
- 安卓Monkey源码分析之运行流程
在<MonkeyRunner源码分析之与Android设备通讯方式>中,我们谈及到MonkeyRunner控制目标android设备有多种方法,其中之一就是在目标机器启动一个monkey服 ...
- SQL点滴16—SQL分页语句总结
原文:SQL点滴16-SQL分页语句总结 今天对分页语句做一个简单的总结,他们大同小异的,只要理解其中一个其他的就很好理解了. 使用top选项 *from Orders orderid from Or ...
- 硬盘安装Archlinux「2013-12-26」
按照Archlinux的中文WIKI安装完成,最后安装引导失败.原因未知. 折腾的脑袋好大,本来都要放弃了,幸好在贴吧发帖求助,吧友@atmouse耐心热心的帮助 最后重启成功启动.帖子地址:http ...
- Sql Server 自定义数据类型
SQLServer 提供了 25 种基本数据类型: ·Binary [(n)] 二进制数据 既可以是固定长度的(Binary),也可以是变长度的.其中,n 的取值范围是从 1 到 8000.其存储窨 ...
- 【分布式存储系统sheepdog
】
Sheepdog,是由NTT的3名日本研究员开发的开源项目,主要用来为虚拟机提供块设备. 其架构例如以下: 以下,我们将从架构.模块等几个方面来介绍下: 一.架构图 如上图: 採用无中心节点的全对称架 ...
- Linux 下 Vi 配置文件 .vimrc 文件
Linux 下 Vi 配置文件 .vimrc 文件 配置 vim 的方法是在用户主目录下建立个.vimrc文件,我一般使用root帐户,所以就在/root/下建立一个.vimrc文件:vi /root ...
- mvc4项目数据库优先的尝试
对于mvc代码优先原则,感觉真不知道为什么硬要设计这种模式,代码优先使得每次运行程序都要重建数据库,现实中这种模式有什么用呢. 数据库优先可能有好多方式,看了好久才做出来一种比较简单的.通过先添加一个 ...
- 一个Shift的后门程序,可以让你可以进入你不知道密码的电脑
1.前提 你可以在平时亲身接触状态电脑,哪怕是在电脑主人不在的时候(虽然主人不在,或者关机了,进入电脑是要密码的). 2.原理 利用电脑连续按5次Shift会触发粘滞键,它会运行c:\winows\s ...
- r.js实践
r.js合并实践 项目中用到require.js做生产时模块开发,但上线要合并压缩,幸好它配套有r.js.下面就其用法说明一下. 首先建一个目录,里面的结构如下: require.js可以到r.js项 ...
- 移动tempdb导致数据库服务不能启动
事情的起因是因为数据库的IO操作过大,于是新加了个硬盘,发现在执行写入操作的时候,服务器的压力依然是比较大的,于是想到了内存盘.内存盘是"魔方"系统优化提供的一个小工具,就是将内存 ...