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机房断电断网后可能需要强制重启继续提供服务了,目前查看数据都还在,暂时没验证是否有数据丢失,小试了一把. ...
随机推荐
- php 解析xml 的四种方法
XML处理是开发过程中经常遇到的,PHP对其也有很丰富的支持,本文只是对其中某几种解析技术做简要说明,包括:Xml parser, SimpleXML, XMLReader, DOMDocument. ...
- Java堆栈(转)
Java栈与堆 ----对这两个概念的不明好久,最终找到一篇好文,拿来共享 1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自己主动管理栈和堆, ...
- JS获取标签方法及兼容处理
document.getElementById('Id名'); // 所有浏览器 document.getElementsByTagName('标签名'); // 所有浏览器 document.ge ...
- 快速构建Windows 8风格应用32-构建辅助磁贴
原文:快速构建Windows 8风格应用32-构建辅助磁贴 引言 Windows Phone中,我们开发者可能会开发的一个功能点是将数据列表中某一项"Pin To Start(固定到开始屏幕 ...
- 自己编译的openwrt在开机时一直打印jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found...的错误提示
具体的输入信息是这样的. uboot> http Link down: eth0 Ethernet mode (duplex/speed): / Mbps HTTP server is star ...
- Singal Page App:使用Knockout和RequireJS创建高度模块化的单页应用引擎
Singal Page App 开篇扯淡 距离上一篇文章已经有好几个月,也不是没有时间记录点东西,主要是换了新的工作,在一家外资工作,目前的工作内容大多都是前端开发,新接触的东西因为时间原因,大多还不 ...
- Excel和notepad++加之更换
1. 替换文本的内容Tab长度,粘合剂Excel有效的变革在列. 2. 替换空行.这里用到回车跟换行.回车\r使光标回到最左,换行\n使光标下移一行. 版权声明:本文博客原创文章,博客,未经同意,不得 ...
- nginx启动,重启,关闭命令
nginx启动,重启,关闭命令 停止操作停止操作是通过向nginx进程发送信号(什么是信号请参阅linux文 章)来进行的步骤1:查询nginx主进程号ps -ef | grep nginx在进程列表 ...
- Ninject是一款.Net平台下的开源依赖注入框架
Ninject是一款.Net平台下的开源依赖注入框架.按照官方说法,它快如闪电.超级轻量,且充分利用了.Net的最新语法,使用Lambda表达式代替Xml文件完成类型绑定.Ninject结构精巧,功能 ...
- 在线预览PDF
FlexPaper+SWFTool+操作类=在线预览PDF 引言 由于客户有在线预览PDF格式的需求,在网上找了一下解决方案,觉得FlexPaper用起来还是挺方便的,flexpaper是将pdf ...