堡壘機是集帳號管理、授權管理、認證管理和綜合審計於一體的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方案;整合作業平臺,可定時,批量執行運維指令碼