給elasticsearch 5.X 安裝sql插件 並修復
1 人贊了文章
本文主題是介紹elasticsearch-sql插件的安裝方法 順便說一個該插件安裝過程中我發現存在安全隱患的地方,並分析其原因與解決辦法。
安裝正文開始
先簡單介紹一下elasticsearch(百度百科 其實就是著名的elk中的e)
elasticsearch是一個基於Lucene的搜索伺服器。它提供了一個分散式多用戶能力的全文搜索引擎,基於RESTful web介面。Elasticsearch是用Java開發的,並作為Apache許可條款下的開放源碼發布,是當前流行的企業級搜索引擎。設計用於雲計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。
再簡單介紹一下sql插件
項目git的地址
https://github.com/NLPchina/elasticsearch-sql
ElasticSearch的強大程度不用我多講了,但是查詢語法真是要命,各種匹配方式與查詢語法,今天正好有個特殊需求,這時我想起了之前有人介紹過一款叫做sql的插件,它的功能就是能讓我們用熟悉的sql語句查詢Elasticsearch。
在GITHUB的介紹上,作者詳細的介紹了插件的每個版本與es的版本對應,以及功能是否齊全。
同時作者在GITHUB也給出了在線安裝方法
進入elasticsearch的目錄 進入bin目錄 執行安裝語句 (windows同理)
以下為 在線與離線的安裝方法以及卸載插件方法(第一句為在線安裝 第二句為刪除 第三句為本地離線安裝)
如圖所示 回顯Installed便是安裝成功了。
重點來了
那麼在5.x和6.x 需要一項額外配置
需要下載 es-sql-site-standalone.zip
下載後將其解壓至任意目錄 進入site-server目錄
執行npm install express –save 安裝所需依賴文件
執行後可以看見存在以下幾個文件
site_configuration.json文件為配置文件
內容為
{"port":8080}
node-server.js文件為程序文件
內容為
var express = require(express);var app = express();app.use(express.static(../_site));app.get(/, function (req, res) {res.sendFile("../_site/" + "index.html" );})var fs = require(fs);var siteConfiguration = JSON.parse(fs.readFileSync(site_configuration.json, utf8));var server = app.listen(siteConfiguration.port)
可以修改為任意埠
此時執行 node node-server.js 後訪問你設置的埠已經可以正常使用了。
安裝過程中發現的安全隱患
按照github提供的方法進行安裝、配置、使用到此應該結束了,但因為我的主業是信息安全,我心中突然閃出幾個問題:
1、如此監聽那不是綁定了0.0.0.0?
2、是什麼原因形成的?
3、這樣是否會直接將sql插件暴露給內網?
4、如有公網ip那不是直接暴露給公網了?
正常來說,一個程序默認的安全設置應是存在的,如不存在就會釀成mongodb那樣的血案,那一定會造成信息泄露甚至數據全部丟失。
想到這裡 我驗證了一下我的想法,因我司elasticsearch為確保安全不接入公網,所以我在測試環境重新搭建了一個,果然證實了我的想法:
1、確實綁定了 0.0.0.0
2、形成原因:插件為什麼默認沒有認證,是因為使用了expressjs(https://expressjs.com) 這個庫建的一個簡單的web server導致的.
3、如沒有其他waf限制,確實會將操作數據的許可權暴露給內網與公網.
結論:如直接按照默認給出的方法操作那將會造成極大的安全隱患(不知道有多少人按這種默認方法安裝了 希望你家數據沒丟)。
解決方案:
將node-server.js的最後一句
var server = app.listen(siteConfiguration.port)
修改為
var server = app.listen(siteConfiguration.port, 127.0.0.1)
將監聽地址綁定為127.0.0.1 如此便將應用限制為本機訪問了
最後思考:
其實因為elasticsearch安全模塊收費,而默認使用時無默認安全設置(類似mongodb),所以多數elasticsearch都對外封閉了他的默認埠9200(或做了驗證 常見的401 或ip驗證) 但這個插件會為我們帶來驚喜。
到底有多少數據伺服器存在這個問題呢?附圖一張,可見數據伺服器擁有外網地址的並不多,但我相信在內網存在該隱患的情況會比外網多N倍。
作者: 7kbstorm
歡迎來安全脈搏查看更多的乾貨文章和我們一起交流互動哦!
脈搏地址:https://www.secpulse.com/archives/73020.html
微博地址:https://weibo.com/311057789/home?wvr=5
推薦閱讀:
※《中醫典海》、超星期刊、海研等資料庫伴你寒假好心情
※Spring整合SequoiaDB SQL
※八字資料庫---丁火日元
※mysql查詢最近三個月的記錄
TAG:Elasticsearch | 資料庫 | SQL |