實(shí)現(xiàn)Webconsole功能

近期負(fù)責(zé)運(yùn)維研發(fā)的工作衅檀,前段時(shí)間研究了一下WebSocket和Linux下偽終端的功能谎倔,主要目的是一直在思考,如何實(shí)現(xiàn)WebConsole功能起宽,讓公司的同事能夠基于瀏覽器能夠安全的登錄到公司的服務(wù)器洲胖,并與公司的安全體系一起,實(shí)現(xiàn)權(quán)限可管理的坯沪、安全性有保證的Web端的shell的功能绿映。

WebConsole簡介

理論上來說應(yīng)該叫做WebShell,它是一種以網(wǎng)頁形勢存在的一種命令執(zhí)行環(huán)境腐晾,也可以成為一種網(wǎng)頁后門叉弦。
WebShell因?yàn)楹唵我子茫砸环矫娉3S糜诜?wù)器管理藻糖,可以方便管理員淹冰、站長甚至于程序員方便的登錄到服務(wù)器,進(jìn)行必要的操作和維護(hù)巨柒,但是另外一方面它常常容易被入侵者利用樱拴,從而達(dá)到控制服務(wù)器的目的柠衍。

目前常用的WebShell有Gateone、WebSSH2晶乔、shellinabox等等珍坊,產(chǎn)品很多。

如何實(shí)現(xiàn)偽終端

偽終端的實(shí)現(xiàn)原理正罢,可以參考 Linux偽終端一文阵漏,在該文中進(jìn)行了詳細(xì)的原理和代碼講解。這里我們也簡要描述一下:

實(shí)現(xiàn)步驟:

  • open /dev/ptmx
  • 生成ptsname:調(diào)用ioctl(fd, syscall.TIOCGPTN, &n)翻具,這里會(huì)得到當(dāng)前終端編號履怯,終端名格式為:/dev/pts/?
  • 清除slave PTY lock:調(diào)用ioctl(f.Fd(), syscall.TIOCSPTLCK, &u)
  • 啟動(dòng)/bin/bash進(jìn)程,并把進(jìn)程的輸入輸出綁定到偽終端中

這樣/bin/bash進(jìn)程的輸入和輸出裆泳,都在PTS上進(jìn)行叹洲, 而前文我們分析過,PTS與PTM形成了一種雙向管道的模式工禾。

    PTM輸出  --->  PTS輸入
    PTS輸出  --->  PTM輸入

WebSocket實(shí)現(xiàn)WebConsole

WebSocket是很通用的技術(shù)疹味,這里就不做過多的描述,可以參考一下WebSocket Helloworld!這篇文章帜篇。

有了前面的鋪墊,我們很容易基于WebSocket來實(shí)現(xiàn)WebConsole了诫咱,具體的架構(gòu)圖如下所示:


webconsole.png

在瀏覽器端笙隙,需要嵌入xterm.js插件,實(shí)現(xiàn)對終端的輸入輸出支持能力坎缭,通過Websocket連接到后端服務(wù)后竟痰,在服務(wù)端把連接升級為WebSocket連接,并創(chuàng)建一個(gè)終端管理模型與一個(gè)/bin/bash進(jìn)程

  • 把終端管理模型的PTY Slave端的輸入輸出綁定到/bin/bash的輸入輸出中
  • 把WebSocket連接的輸入輸出與PTY Master的輸出輸入綁定

這樣一個(gè)WebConsole的雛形就完成了掏呼。

實(shí)現(xiàn)安全可靠的WebConsole

從web上訪問shell功能坏快,如何授權(quán),并且保證系統(tǒng)安全性是一個(gè)需要深入考慮的問題憎夷。像上面那樣莽鸿,僅僅通過http提供服務(wù)支持,系統(tǒng)無法保證安全性拾给。所以要做以下幾個(gè)方面的考慮:

  • 認(rèn)證 : 基于公司的登錄體系
  • 授權(quán) : 基于授權(quán)開通用戶的服務(wù)器
  • 網(wǎng)絡(luò)安全: 基于公司內(nèi)網(wǎng)體系/內(nèi)部防火墻
  • 審計(jì):通過日志記錄登錄用戶執(zhí)行的所有命令

具體細(xì)節(jié)設(shè)計(jì)到一些公司安全方面的事宜祥得,這里不便深入分析,有興趣的朋友可以按照以上思路自己去實(shí)現(xiàn)蒋得。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末级及,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子额衙,更是在濱河造成了極大的恐慌饮焦,老刑警劉巖怕吴,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異县踢,居然都是意外死亡转绷,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門殿雪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來暇咆,“玉大人,你說我怎么就攤上這事丙曙“忠担” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵亏镰,是天一觀的道長扯旷。 經(jīng)常有香客問我,道長索抓,這世上最難降的妖魔是什么钧忽? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮逼肯,結(jié)果婚禮上耸黑,老公的妹妹穿的比我還像新娘。我一直安慰自己篮幢,他們只是感情好大刊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著三椿,像睡著了一般缺菌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上搜锰,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天伴郁,我揣著相機(jī)與錄音,去河邊找鬼蛋叼。 笑死焊傅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鸦列。 我是一名探鬼主播租冠,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼薯嗤!你這毒婦竟也來了顽爹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤骆姐,失蹤者是張志新(化名)和其女友劉穎镜粤,沒想到半個(gè)月后捏题,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肉渴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年公荧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片同规。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡循狰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出券勺,到底是詐尸還是另有隱情绪钥,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布关炼,位于F島的核電站程腹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏儒拂。R本人自食惡果不足惜寸潦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望社痛。 院中可真熱鬧见转,春花似錦、人聲如沸蒜哀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凡怎。三九已至,卻和暖如春赊抖,著一層夾襖步出監(jiān)牢的瞬間统倒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工氛雪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留房匆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓报亩,卻偏偏與公主長得像浴鸿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子弦追,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容