Hadoop運維記錄 | Zeppelin啟用https和Hack內核的過程

今天給大家分享一篇來自于某大公司運維工程師的文章。在Linux運維的工作中,大數據運維總是要與hadoop打交道,那么在面對hadoop相關問題的時候,運維工程師應該怎么做?又該如何提高自己的效率呢?

本文是在工作過程中講Zeppelin啟用https過程和Hack內核以滿足客戶需求的記錄。

原因是這客戶很有意思,該客戶中國分公司的人為了驗證內網安全性,從國外找了一個滲透測試小組對Zeppelin和其他產品進行黑客測試,結果發現Zeppelin主要倆問題,一個是在內網沒用https,一個是zeppelin里面可以執行shell命令和python語句。其實這不算大問題,zeppelin本來就是干這個用的。但是滲透小組不了解zeppelin是做什么的,認為即使在內網里,執行shell命令能查看操作系統的一些文件是大問題,然后發生的事就不說了,不是我們的問題了。

不過既然他們要求整改,我們也只好配合,雖然大家都覺得內網域名加https屬于脫了褲子放屁,然后不讓zeppelin干他本來應該干的事就更過分了,但鑒于客戶是甲方,也只好hack源碼了。

于是某個周末用了4個小時完成所有工作。

先記錄下zeppelin加https訪問,我們有自己的域名證書,所以直接用即可。如果沒有域名證書,需要自簽發,那么可以看第二部分,雙向認證步驟。

https第一部分,已有域名添加jks:

Hadoop運維記錄 | Zeppelin啟用https和Hack內核的過程

https第二部分,自簽發證書雙向認證添加jks

Hadoop運維記錄 | Zeppelin啟用https和Hack內核的過程

如果是不需要雙向認證,只要單向自簽發,不創建客戶端的各種就可以了。

然后找個地把這些文件放過去,再修改zeppelin配置即可。

Hadoop運維記錄 | Zeppelin啟用https和Hack內核的過程

然后反代那里也加上443的ssl證書以及443轉8443的upstream即可。

然后是hack zeppelin源碼加入關鍵字限制,這個確實找了一小會zeppelin發送執行源碼給interpreter的地方,zeppelin架構比較清晰,但是代碼挺復雜的,用到了很多小花活兒。比如thrift,interpreter腳本里建立nc監聽。然后各個解釋器插件用socket跟interpreter腳本通信,前端angular,后端jetty,還用shiro做驗證和授權。回頭可以單開好幾篇說說zeppelin安裝,使用和詳細配置,做這項目基本把zeppelin摸透了。

找到發送前端編寫內容給interpreter的java代碼,然后用很生硬的辦法限制執行命令。具體那個.java文件的名字我就不說了,有懸念有驚喜。我不寫java,只負責讀源碼找到代碼位置,hack的java是同事寫的。然后編譯,替換jar包,完成。后面改了改配置,后續的滲透測試順利通過。

Hadoop運維記錄 | Zeppelin啟用https和Hack內核的過程

因為客戶有deadline限制,所以快速定位源碼位置的過程還是挺有意思的,比較緊張刺激,在這個以小時計算deadline壓力下,什么intelliJ, Eclipse都不好使啊,就grep和vi最好用,從找到到改完,比客戶定的deadline提前了好幾個小時。

作者:Slaytanic

來源:http://slaytanic.blog.51cto.com/2057708/1978521

相關新聞

聯系我們

400-080-6560

在線咨詢:點擊這里給我發消息

郵件:[email protected]

工作時間:周一至周日,09:00-18:30

QR code
云南快乐10分开奖直播