为你的mongodb砌堵墙吧,防止被攻击和勒索

起因

2017年1月,当大家都在为16的逝去写总结,并为17年的到来做计划的时候,一波黑客发动了一轮攻击,攻击的对象瞄准了mongodb数据库。他们删除了所有数据库数据,并留下一个勒索数据库。不幸的是,我也成为这“幸运”的一员。
当收到用户反馈说,无法登陆网站时,我还在奇怪。当我连上线上服务器时,看到了这个:

黑客留下的数据

线上的数据库“food”已经被清空,大小为:0.000GB。而且,多了一个数据库“PLEASE_READ”,查看里面的数据,真是一个大大的惊喜。

{
    "_id" : ObjectId("58702744f933f563e815c44f"),
    "Info" : "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",
    "Bitcoin Address" : "1J5ADzFv1gx3fsUPUY1AWktuJ6DF9P6hiF",
    "Email" : "kraken0@india.com"
}

数据被删,没有做过备份,然后被勒索0.1BTC,有大神说黑客也没有证据说明他对你的数据库做了备份,且我也没有BTC啊。
不过幸好这只是我自己玩玩的一个项目,刚上线不久,数据也不多,之前备份过一点数据,将该数据恢复了。

防范措施

在查到勒索数据时,立马查看了数据库log文件:


黑客操作的记录

可以看到,黑客也没有使用特别高深的技术,就像怎么把大象放到冰箱里一样,只用了三步:

  • 直连数据库
  • 删除数据(至于有没有备份数据,就不知道了)
  • 留下勒索信息

多么的简单粗暴。

黑客能够直接访问数据,也是怪我没有关闭外网访问权限,尴尬!
还有就是,这是自己直接在官网下载安装,没有安装发行版,而默认安装的mongodb是没有安全设置的

记住这个教训,立马采取一些措施:

关闭万网访问权限

关闭外网访问权限,也就是限定只能是内网访问。
在mongodb.conf中配置:

bind_ip 127.0.0.1

修改默认端口

mongodb默认的端口是27017,修改端口:

port 27038

访问用户授权

在admin 数据库中创建用户,如 supper 密码为 supWDxsf67%H(此处均为举例说明,请勿使用此账号密码)
步骤一:在未开启认证的环境下,登录到数据库
[mongodb@rac3 bin]$ ./mongo 127.0.0.1:27028 (此处修改了默认端口)
MongoDB shell version: 2.0.1
connecting to: 127.0.0.1:27028/test
步骤二:切换到admin数据库
> use admin
switched to db admin
>
步骤三:创建管理员账号
> db.addUser("supper", "supWDxsf67%H")  
或
>db.createUser({user:"supper",pwd:"supWDxsf67%H",roles:["root"]})
{ "n" : 0, "connectionId" : 4, "err" : null, "ok" : 1 }
{
        "user" : "supper",
        "readOnly" : false,
        "pwd" : "51a481f72b8b8218df9fee50b3737c44",
        "_id" : ObjectId("4f2bc0d357a309043c6947a4")
}
新增的用户在system.users中
> db.getCollectionNames()
[ "system.indexes", "system.users", "system.version" ]
说明:
1)MongoDB从V3版本开始取消使用addUser方法,采用db.createUser方法创建用户;
2)账号不要设置为常见账号,密码需要满足一定的复杂度,至少8位以上,包括大小写字母、数字、特殊字符混合体,不要使用生日、姓名、身份证编号等常见密码。  
步骤四:验证用户是否创建成功
> db.auth("supper","supWDxsf67%H")
1
> exit
bye
步骤五:杀掉进程,重启mongoDB服务
./mongod --dbpath=/path/mongodb --bind_ip=192.168.0.1 --port=27028 --fork=true logpath=/path/mongod.log &

经常备份你的数据库

对数据进行本地异地备份,好的备份策略是保证数据安全的最后一根救命稻草。
推荐策略:可靠的本地备份+远程备份存储方案

MongoDB备份方式(API参考):

>mongodump -h dbhost -d dbname -o dbdirectory
-h:
MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d:
需要备份的数据库实例,例如:test
-o:
备份的数据存放位置,例如:c:\data\dump,该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。

MongoDB数据恢复方式(API参考):

mongodb使用 mongorestore 命令来恢复备份的数据。
语法
mongorestore命令脚本语法如下:
>mongorestore -h dbhost -d dbname --directoryperdb dbdirectory
-h:
MongoDB所在服务器地址
-d:
需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
--directoryperdb:
备份数据所在位置,例如:c:\data\dump\test,这里为什么要多加一个test,而不是备份时候的dump。
--drop:
恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!

备份策略

  • 全量备份:可以最快的时间快速恢复所有数据,缺点是备份成本大,时间长;
  • 全量备份+增量备份:可以较快的恢复所有数据,缺点是恢复时间长,如果增量数据有问题,无法恢复所有数据;
  • 搭建从库,直接切换到从库,前提是从库的数据安全可靠。

更多安全措施参考

后记

通过这次的教训,更加深刻认识到数据库安全的重要性,在以后的工作中一定要更加注重服务器和数据库的安全,做好安全措施。

谨记,安全,安全,安全。


前端微志公众号,欢迎关注
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容