某天发现自己的博客的搜索功能失效了,搜索使用ElasticSearch作为博客的全文搜索引擎。
ElasticSearch使用的是2.X版本,并且使用了插件head来进行管理。默认的ElasticSearch,以及head插件是无需输入认证信息就能访问,这个确实是一大安全问题。
现在黑客使用工具基本上就可以扫描你服务器,0-65535个端口基本上会给扫一遍。
针对常用的服务端口,更加是他们最喜欢最容易攻破的地方! 比如:Tomcat默认端口8080,MySQL默认端口3306,等等。 然而ElasticSearch的http端口默认就是9200!
下面就分享下我的ElasticSearch被黑了,然后要勒索我0.1个比特币。
我的ElasticSearch博客数据被清空(应该是被黑客拿去,然后清除我这边服务器数据),并且新增了一条信息,就是说在48小时内,要我给某某账号支付0.1个比特币,不然数据就泄露出去!
信息原文如下:
Send 0.1 BTC to a wallet 1MGJE7YK7LS1i6JPRRn2LX92DcAFhP2SKA and send a message in this email ooxe2iqu@airmail.cc with IP of your server for database recovery. If you do not agree, within 48 hours the data will be leaked (all that we find: emails, passwords, etc) on the public network and deleted
留在ElasticSearch的数据截图如下:
连夜赶紧修复这个问题,基本上花了6个小时左右才搞定这个安全问题。
下面说下我解决这个问题的过程:
①网络搜索资源如何防止解决ElasticSearch的安全问题,查找到使用插件 Search Guard可以解决权限安全问题。
②Search Guard安装在服务器,并且使用SSL解决安全问题,前前后后出现了各种问题,特别是权限认证上不通过,大概花了3、4个小时。解决完成之后,访问Head插件,成功生效,需要输入用户名和密码才能访问管理界面。
③由于之前使用的ElasticSearch内置的客户端接口TransportClient,封装之后没有考虑支持Search Guard SSL,所以就继续网上找资料,并且继续开发和修改之前的工具,网上资料相对少一点,并且开发调试的过程中各种问题,大概花了2个多小时才把工具写好和测试OK。
④然后重新打包将项目在服务器上重新启动,恢复正常,搜索服务也正常。
教训与经验:
①重要数据一定要考虑数据安全,特别是与钱相关的业务!(虽然我博客的数据并不重要,原数据都在mysql,重新索引即可。)
②相关服务端口不要用默认的端口,因为默认端口方便了黑客的各种攻击尝试,更加容易出现安全问题。(比如,mysql端口可以设置为23432等)
③服务器防火墙安全设置防护,这是第一道墙。(对于不需要账号登录的服务(内网),特别是相关的服务端口,基本上要禁止外网或者非法用户的访问)
④服务增加安全认证权限,非法用户不能访问没有权限的数据及其服务。(比如ElasticSearch服务就应该不能随意给访问,甚至给修改数据)
⑤重要数据服务需要增加安全监控报警,一旦有问题就报警给相关管理人员和开发人员立即处理。
等等。
这里是我参考网上资料解决ElasticSearch的安全问题,希望对你有用:
1、elasticsearch安装与使用(5)-- search guard安装与配置 http://www.cnblogs.com/shifu204/p/6376683.html
2、Elasticsearch 数据安全(上) http://rickywag.com/archives/377
以上若有误,请指出校正,谢谢。
长按二维码识别,一键关注干货
网友评论