堡壘機:愛奇藝海量伺服器安全運維平臺的建設

愛奇藝技術產品團隊發表於2019-03-29

堡壘機是集帳號管理、授權管理、認證管理和綜合審計於一體的IT基礎設施。它為企業提供統一框架,整合網路裝置、主機系統、應用系統,具備強大的安全審計功能和防禦功能。

愛奇藝堡壘機分為Web端和Client端兩部分。Client端包括登入模組、管理模組和審計模組;Web端包括作業平臺、伺服器管理模組、釋出模組等。愛奇藝堡壘機當前服務於數千使用者、數萬伺服器,數十萬授權列表。

堡壘機:愛奇藝海量伺服器安全運維平臺的建設愛奇藝堡壘機架構圖



堡壘機:愛奇藝海量伺服器安全運維平臺的建設堡壘機簡易流程圖



01 單點登入


1.1 登入入口

愛奇藝堡壘機支援SSH/SFTP/RDP/VNC等協議:SSH協議基於sshd實現;SFTP協議依賴Paramiko實現;RDP/VNC遠端桌面協議依賴開源軟體Guacamole實現,使用者通過web訪問。


1.2 賬號管理

賬號建立:管理員根據部門或者專案申請堡壘機;使用者登入堡壘機Web端上傳公鑰,即完成堡壘機賬號建立,隨後可使用終端登入堡壘機Client端。


賬號銷燬:人員離職或異動,堡壘機會定時清除該員工賬號以及授權列表

堡壘機:愛奇藝海量伺服器安全運維平臺的建設

1.3 使用者組管理

愛奇藝堡壘機支援類似Linux下使用者組的概念。管理員建立一個使用者組,為其授權若干伺服器後;當管理員再向這個組中新增使用者時,該使用者自動擁有了組使用者對應的授權。


1.4

登入方式

為提升使用者登入體驗,我們支援了3種登入方式:

1、Tab補全,輸入備註或IP登入

2、輸入序號後登入

3、傳入環境變數登

堡壘機:愛奇藝海量伺服器安全運維平臺的建設


1.5 KeyLess方案

愛奇藝堡壘機實現了KeyLess方案:在該方案中,堡壘機登入伺服器時使用的私鑰,將不會落到磁碟,而是通過Redis和MySQL資料庫將已加密的伺服器私鑰載入到記憶體中,使用後立即銷燬,減小私鑰洩漏的風險,增強每一次訪問的可審計性。

堡壘機:愛奇藝海量伺服器安全運維平臺的建設

在降低私鑰洩漏風險的同時,還需要保證服務的高可用。堡壘機所在機房必須配備2個Redis和MySQL的只讀例項,降低堡壘機Client端依賴單點資料庫的風險。即使機房之間專線故障,使用者也可使用備用域名訪問堡壘機服務;當某一個只讀例項當機後,也不影響堡壘機服務穩定。

在極端情形下,若同機房的兩個只讀例項同時當機,堡壘機在讀取MySQL超時兩秒後,會嘗試轉移連線其他機房的資料庫;當讀取Redis中伺服器列表失敗後,會自動降級為使用者手動輸入伺服器IP和使用者名稱。



1.6 二次認證

主動:堡壘機管理員可在伺服器授權時,設定需要二次認證的間隔時間,分為四個級別:

1、每次登入伺服器時輸入MOTP

2、每4小時輸入一次MOTP

3、每8小時輸入一次MOTP

4、每12小時輸入一次MOTP

堡壘機:愛奇藝海量伺服器安全運維平臺的建設

被動:堡壘機通過關聯分析使用者行為,發現異常登入和操作時,Client端主動要求使用者輸入MOTP,進行二次身份驗證。


02 訪問/授權控制


2.1 伺服器管理

主動:使用者可通過堡壘機Web端新增Owner為自己的伺服器到所屬部門堡壘機

被動:堡壘機Web端對接了愛奇藝伺服器管理平臺,使用者申請的伺服器被建立後,將通過介面自動新增到指定的堡壘機


2.2 伺服器授權

主動:管理員將伺服器分組、使用者分組,按照伺服器組-使用者,伺服器-使用者,伺服器-使用者組,伺服器組-使用者組的方式授權

被動:使用者通過“運維申請”功能,申請伺服器或者伺服器組,管理員審批通過即獲得伺服器許可權


2.3 登入列表同步

登入列表同步是堡壘機的核心模組:如果同步功能有問題,使用者登入列表會不一致,需要登入的伺服器可能不在列表中,非常影響使用者體驗,讓使用者覺得堡壘機不夠穩定。為了保證登入列表一致性,堡壘機client端採用了三種同步方式:

1、Docker啟動時全量同步,耗時大約5分鐘(數十萬條授權)

2、新增同步,通過Web介面獲取最近15s新增授權

3、為了避免使用者新增和刪除授權後,引起登入列表差異,每兩小時執行一次差異同步(通過快取使用者列表數和使用者redis中列表數比較,如果存在差異,通過Web介面獲取最新的該使用者的登入列表,並更新快取)




2.4 SSH-Agent

堡壘機支援SSH-Agent功能,授權時可選擇是否開啟該功能。SSH-Agent可以將堡壘機上的私鑰載入到記憶體傳遞到使用者登入的伺服器,極大的方便使用者批量操作伺服器。SSH-Agent也會帶來一些麻煩,例如通過git pull抓取程式碼的時候


03 檔案傳輸


SFTP檔案傳輸:堡壘機Client端使用Paramiko實現SFTP服務,支援各種常見SFTP客戶端,上傳資料可審計。同時,使用者還可以使用IDE工具SFTP連線到伺服器,直接在伺服器上進行開發和除錯。由於堡壘機頻寬和Paramiko效能等問題,SFTP傳輸速度5-8M/s。

通過重構paramiko.ServerInterface.check_auth_publickey(),可以在

return paramiko.AUTH_SUCCESSFUL 之前自定義認證方式

堡壘機:愛奇藝海量伺服器安全運維平臺的建設

大檔案傳輸

堡壘機還整合了“愛奇藝檔案快傳服務”,新增審計模組,中轉使用者傳輸的檔案,平均速度可達50M/S。


04 基線規則

堡壘機支援安全基線規則集,堡壘機管理員可以定製基線規則,並應用到所屬的堡壘機中,Client端通過同步程式,同步基線規則,使用者操作伺服器時觸發規則,會執行設定動作。

安全規則包含多個條件組成,支援and, or, not, 左括號(, 右括號)操作符,例如: (條件0 or 條件1) and (not 條件2);條件可以是多個維度(當前使用者名稱,目錄,輸入命令,埠等)的正則匹配

堡壘機:愛奇藝海量伺服器安全運維平臺的建設

堡壘機:愛奇藝海量伺服器安全運維平臺的建設

堡壘機:愛奇藝海量伺服器安全運維平臺的建設


05 審計



5.1 會話審計

使用者登入堡壘機Client端會建立一條Session Log,Session Log關聯事件日誌,方便關聯審計


5.2 事件審計

使用者每次操作都會記錄一條日誌,記錄使用者命令輸入和輸出,當前操作堡壘機,當前主機名,當前使用者名稱等資訊


5.3 遠端堡壘機日誌審計

VNC和RDP協議通過web訪問記錄錄屏日誌,堡壘機將文字日誌轉碼為mp4檔案,視訊進度可拖拽


5.4 公鑰審計

堡壘機聯動HIDS,通過HIDS蒐集伺服器公鑰與堡壘機報備公鑰對比,發現異常公鑰並郵件報警


5.5 日誌儲存

堡壘機日誌儲存兩份:一份按照時間段分表儲存資料庫,用於堡壘機Web端事件審計查詢;一份儲存到Hadoop,方便內審通過關聯分析發現違規操作。另外,堡壘機日誌已接入愛奇藝區塊鏈系統,確保日誌完整、無法被篡改。


06 堡壘機作業平臺


6.1 Web端批量操作


  • 使用者設定運維指令碼,指令碼分為私有和公有,私有自己可見,公有所有人可見
  • 指令碼安全性評估
  • 選擇需要執行指令碼的伺服器,否週期執行
  • 執行結果寫入資料庫,審計
  • 管理員限制賬號執行運維指令碼


6.2 使用者定製命令 - 執行指令碼(類似alias)

在基線規則的基礎上,增加執行動作指令碼。使用者輸入命令觸發設定條件,執行指定指令碼檔案。例如:定製一條輸入命令為 fileupload ansible規則,動作是執行ansible指令碼,當使用者輸入fileupload ansible這個命令時堡壘機client 端會自動執行ansible指令碼


07 總結


堡壘機作為辦公網到IDC的第一道屏障,伺服器運維入口,在保證4A的同時,也要儘量保證使用者體驗。

1、使用者體驗:愛奇藝堡壘機支援多種登入方式,支援大檔案快速傳輸,支援IDE通過SFTP連線伺服器開發

2、運維管理:堡壘機擁有一套完善的認證,授權系統;相比於商業堡壘機更輕量級,可定製化,支援更多的伺服器運維操作

3、安全合規:堡壘機支援主被動式二次認證;支援基線規則檢查,可異常彈窗和阻斷使用者操作;採用機器學習識別異常登入,賬號共用;以及合規檢查的日誌查詢系統

4、創新探索:堡壘機支援KeyLess方案;整合作業平臺,可定時,批量執行運維指令碼

相關文章