一. teleport簡介
說明: Teleport是一款簡單易用的堡壘跳板機系統,具有小巧、易用的特點,支持 RDP/SSH/SFTP/Telnet 協議的遠程連接和審計管理。
Teleport由兩大部分構成:
- 跳板核心服務
- WEB操作界面
官網地址: https://tp4a.com/ 官網文檔: https://docs.tp4a.com/
https://tp4a.com/download 下載地址
支持的操作系統(服務端)
Teleport支持部署到Linux系統中,目前支持的系統版本如下:
- Ubuntu 14.04 64位 及以上版本
- CentOS 6.2 64位 及以上版本
- Debian 6.0 64位 及以上版本
- Redhat 6.2 64位 及以上版本
支持的操作系統(客戶端)
- Windows
- MacOS
依賴環境
因為Teleport內建了所需的腳本引擎、WEB服務等模塊,因此不需要額外安裝其他的庫或者模塊,整個系統的安裝與部署非常方便。
二. 部署使用
本次操作環境 centos6.8
1. 下載安裝
首先要到官網下載最新或所需的teleport的對應版本安裝包。將下載得到的安裝包放到臨時目錄中,然后執行下列命令.
如要升級版本, 升級版本前要先備份數據 參考官方: https://docs.tp4a.com/install/#_2
[root@centos-B opt]# tar xf teleport-server-linux-x64-3.1.0.tar.gz [root@centos-B opt]# cd teleport-server-linux-x64-3.1.0
[root@centos-B teleport-server-linux-x64-3.1.0]# sudo ./setup.sh
安裝時需要指定安裝路徑,默認的安裝路徑/usr/local/teleport
(直接回車即可),也可以指定別的路徑,請注意路徑中不要含有中文字符或空格,以避免出現不可預知的錯誤。
默認的錄像回放文件位於/usr/local/teleport/data/replay
目錄下,會占用/usr
的空間,因此建議安裝完成后配置錄像回放文件的存儲路徑。
2. 初始化配置
初次安裝完成后,可以訪問 http://你的teleport服務器IP:7190/
進行初始化設置。( 我選的 mysql 5.7 )
初始化設置時,需要確定使用的數據庫類型。Teleport默認使用內建的sqlite3數據庫,因此無需額外安裝數據庫服務即可開始使用堡壘機的各項功能。如果您希望使用MySQL數據庫,請在初始化之前進行MySQL數據庫配置。
teleport支持MySQL數據庫(當然也支持MariaDB)。這里以MySQL為例進行說明。要使用MySQL數據庫,需要先為teleport創建庫並授權。以MySQL數據庫的管理員身份在命令行工具中執行: 注意:數據庫的字符集必須是 utf-8 ,否則會出現亂碼。
2.1 配置mysql
安裝完成后建庫及授權
mysql> create database teleport default character set utf8 collate utf8_general_ci; Query OK, 1 row affected (0.00 sec) mysql> grant all privileges on teleport.* to 'teleport'@'127.0.0.1' identified by 'bszh1234'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec)
2.2 修改 /usr/local/teleport/data/etc/web.ini
[database]
; database in use, should be sqlite/mysql, default to sqlite.
; type=sqlite
type=mysql
; sqlite-file=/usr/local/teleport/data/db/teleport.db
mysql-host=127.0.0.1
mysql-port=3306
mysql-db=teleport
mysql-prefix=tp_
mysql-user=teleport
mysql-password=bszh1234
2.3 頁面配置
刷新網頁后進行配置,完成后登陸界面
3. teleport服務管理
Teleport 有兩個服務:核心服務 core
和網頁服務 web
。兩個服務可以同時啟動、停止、重啟,也可單獨操作其中的一個。
操作完整的 teleport 服務:
- 啟動:
/etc/init.d/teleport start
- 停止:
/etc/init.d/teleport stop
- 重啟:
/etc/init.d/teleport restart
- 查看運行狀態:
/etc/init.d/teleport status
僅操作核心服務 core:
- 啟動:
/etc/init.d/teleport start core
- 停止:
/etc/init.d/teleport stop core
- 重啟:
/etc/init.d/teleport restart core
僅操作網頁服務 web:
- 啟動:
/etc/init.d/teleport start web
- 停止:
/etc/init.d/teleport stop web
- 重啟:
/etc/init.d/teleport restart web
[root@centos-B mysql]# /etc/init.d/teleport status teleport web server is running. teleport core server is running. [root@centos-B mysql]# /etc/init.d/teleport restart stoping teleport web ... done. stoping teleport core server ... done. starting teleport web ... [done] starting teleport core server ... [done] teleport web server is running. teleport core server is running.
4. 修改web訪問端口( 可選附加 )
配置文件說明官方文檔: https://docs.tp4a.com/config/#_1
5. 錄像文件存放路徑replay-path
因為在teleport服務工作過程中,占用磁盤空間較大的是錄像回放文件,容易導致 /usr 空間不足,因此可以根據需要將錄像文件存放到別的掛載的磁盤上。可以通過修改 replay-path
來進行設定。
[root@centos-B mysql]# vim /usr/local/teleport/data/etc/core.ini ; 'replay-path' define the replay file location. if not set, default locate ; to `$INSTDIR%/data/replay` ;replay-path=/var/lib/teleport/replay replay-path=/var/tmp/teleport/replay
修改后重啟服務
三. 實踐應用
一. 資產管理
官方文檔: https://docs.tp4a.com/guide_asset/#_1
點擊左側菜單,展開“資產”項目,然后點擊“主機及賬號”,會打開主機管理頁面,遠程主機和遠程登錄賬號的管理主要在此界面中操作
1.1 添加主機
點擊頁面右上方的“添加主機”按鈕,然后在彈出的對話框中根據你要添加的遠程主機的信息選擇和填寫相關內容:
- 遠程主機系統: 可選擇Windows或者Linux/Unix;
- 遠程主機地址: 填寫遠程主機的IP地址,目前teleport尚未支持域名方式連接遠程主機;
- 連接模式: 可選擇直接連接或者端口映射模式;
- 名稱/資產編號/備注: (選填)為方便區分可填寫相關信息。
其中“連接模式”一項,如果此遠程主機可以由teleport服務器直接連接,則可以選擇“直接連接”模式,例如遠程主機與teleport服務器處於同一個局域網中,或者遠程主機是開放了遠程連接端口的雲端服務器等。
如果遠程主機與teleport服務器之間需要通過其他網絡設備進行端口映射方可連接的,則需要選擇“端口映射”模式。在這種模式下,teleport服務器實際上連接的是配置的 路由主機 的地址和映射端口,而非遠程主機地址。
端口映射模式常用於以下場景:
- teleport服務器處於公司內網,被維護的遠程主機在雲端且沒有公網IP,需要通過一台有公網IP的服務器進行跳轉。集群服務器常使用這種方式。
- 使用teleport服務器管理運行docker的主機以及進入docker內部進行管理。
主機信息填寫完畢后,點擊“確定”按鈕即可完成主機的添加。
1.2 添加賬號
添加完主機后,還需要為此主機設置遠程登錄的賬號,點擊主機的賬號數量,或者右側操作菜單中的“管理遠程賬號”,會顯示遠程賬號管理對話框。
然后點擊“添加賬號”按鈕,彈出添加遠程賬號的對話框。需要注意的是,如果主機的連接模式使用端口映射模式,那么這里的“端口”項是無法更改的。
遠程賬號信息填寫完畢后,可以使用對話框上的“測試連接”按鈕來進行測試。
1.2.1 RDP協議
添加賬號時,如果遠程賬號是Windows域用戶,那么賬號名稱需要使用 user@domain
這樣的形式,而不能使用 domain\user
的形式。后者雖然可以正常遠程登錄使用,但會導致無法進行錄像回放。因為teleport在回放RDP錄像時,會下載錄像文件到本地,文件名中會包含遠程賬號名稱,而遠程賬號中的字符 \
是操作系統的路徑風格符,從而導致無法創建本地文件使得下載失敗。
有時 rdp客戶端連接windows服務器失敗,日志提示“協議不支持”。
被遠程的服務器端打開 計算機-屬性-遠程設置,將默認的“僅允許運行使用網絡級別身份驗證的遠程桌面的計算機連接”,更改為“允許運行任意版本遠程桌面的計算機連接” 即可正常連接.
1.2.2 SSH協議
如果是SSH協議,那么認證方式可以選擇“SSH私鑰認證”,此時密碼輸入框將被替換為SSH私鑰輸入框。目前teleport 僅支持RSA私鑰,且私鑰不能是密碼加密后的。私鑰的格式如下所示:
-----BEGIN RSA PRIVATE KEY-----
MIIEoAIBAAKCAQBki7kohX+oa0AELV8Oflrz545PQS47H5mh/sQ6KRHkt7bErVC3
watQdeXFHrnH0uKbmglFS6MVni86/tltqxxt+dcgTBsNyFiuUtSQBlIIwBiqtpFl
......
JQKBgBWsgyj+So3nB8nVsRFawarouM+xfwN+12CeLrlHVxvOdJ5LBF+uhPUO75qG
jU8XyGm54zSLsZfjyJ5IQu4WmiuEhzQagceML9x2INHHXE3w
-----END RSA PRIVATE KEY-----
如果你使用的私鑰不是以上格式,請用相關工具進行轉換方可在teleport中使用。
注意,私鑰對應的公鑰應該預先部署在你的遠程主機上了,具體操作可搜索“SSH免密碼登錄”。
1.2.3 TELNET協議
在添加telnet協議的遠程賬號時,如果使用用戶名/密碼認證方式,會要求填寫“用戶名預期提示”和“密碼預期提示”兩項內容。這是因為telnet本身是弱協議,也就是說它並沒有明確定義用戶如何登陸,何時輸入用戶名或者密碼,不同的telnet服務有着各自不同的實現方式。比如說,有些telnet服務會顯示 Login:
來提示用戶輸入用戶名,而另一些則用 username:
進行提示,還有的用 login:
進行提示。而teleport在檢測到對應的提示時,才能夠正確填寫相應的用戶名和密碼來完成自動登錄。
所以,在添加telnet協議的遠程賬號之前,你需要手動連接一次你的telnet服務器,查看它的提示語,然后將其填寫到預期提示的輸入框中。
小技巧:默認的預期提示 ogin:
和 assword:
,其實是 login:
和 password:
去掉了第一個字母,是因為常見的telnet服務多數使用這兩個提示語,但是一些首字母是大寫,一些首字母是小寫。跳過第一個字母則可以增加適配性。
1.3 批量添加主機和賬號
在“資產-主機及賬號”頁面的右上角,點擊“導入主機和賬號”按鈕,會彈出導入資產對話框。
點擊圖標上傳你的資產信息文件。如果還沒有准備資產信息文件,可以從對話框中的下載鏈接中下載一份進行修改。
資產信息文件是一個CSV格式(逗號分隔)的文本文件,你可以用 Office 2016 及以上版本的 Excel 打開編輯,也可以用普通的文本編輯工具進行編輯,比如 EditPlus、UltraEdit,或者 NotePad++等。
注意:建議使用文本編輯工具進行編輯,某些版本的Excel會在保存時去掉部分逗號,導致最終文件格式不合法而無法導入。
1.3.1 資產文件格式
下面對資產信息文件進行詳細說明。首先來看一個示例:
用文本編輯工具打開的效果:
#IP,操作系統類型(linux/win),名稱,路由IP,路由端口,資產編號,賬號,協議類型(ssh/rdp/telnet),協議端口,認證類型(no/pw/key),密碼或私鑰,賬號提示(僅telnet),密碼提示(僅telnet),分組,描述 1.2.3.4,linux,數據庫,,,DB-0453,,,,,,,,數據庫|阿里雲-天津機房, ,,,,,,root,ssh,22,pw,abcd1234,,,管理員, ,,,,,,test,ssh,22,pw,abcd1234,,,測試|部署, 1.2.3.5,windows,,192.168.0.5,2054,,,,,,,,,,阿里雲,天津機房\naS2n129m ,,,,,,administrator,rdp,,pw,abcd1234,,,管理員, 1.2.3.6,linux,,,,,,,,,,,,, ,,,,,,root,ssh,22,key,abcd1234,,,管理員,
用Excel打開的效果:
在資產信息文件中,#
開頭的行是注釋,注釋行和空行在導入時將被忽略。Teleport要求資產信息文件中,主機與賬號各自獨立成行,不能寫到同一行上。正確的做法是,一行主機信息,后面緊跟着一到多行的賬號信息。
下面詳細解釋各個字段的含義(除特別說明外,加粗字段是必填項):
字段 | 主機 | 賬號 | 說明 |
---|---|---|---|
IP | √ | 遠程主機的IP地址 | |
操作系統類型 | √ | 遠程主機的操作系統,可以是 windows 或者 linux ,其中windows可以簡寫為 win |
|
名稱 | √ | 遠程主機的名稱,用名稱比用IP更便於區分 | |
路由IP | √ | 如果遠程主機需要使用“端口映射”模式進行連接,則需要填寫路由IP | |
路由端口 | √ | “端口映射”模式時使用的端口 | |
資產編號 | √ | 自行設置的編號,可用於資產管理 | |
賬號 | √ | 登錄遠程主機的賬號 | |
協議類型 | √ | 登錄遠程主機的協議,可以是 rdp ,ssh ,或者 telnet |
|
協議端口 | √ | 對應遠程主機協議的端口,例如,默認情況下rdp為3389 ,ssh為22 ,telnet為23 。注意,如果使用端口映射模式,則不能填寫協議端口,因為端口映射模式下,遠程連接必須通過路由端口進行。 |
|
認證類型 | √ | 遠程賬號登陸時的驗證方式,可以是密碼驗證(pw ),私鑰驗證(key )或者無驗證(no )。其中,rdp協議必須使用pw,ssh協議可以使用pw或者key,而telnet協議則可以使用pw或者no。 |
|
密碼或私鑰 | √ | 根據認證類型字段,填寫賬號的密碼或者私鑰,如果認證類型為no,則本字段不用填寫。 | |
賬號提示 | √ | 僅用於telnet協議,預期的提示輸入賬號的提示語 | |
密碼提示 | √ | 僅用於telnet協議,預期的提示輸入密碼的提示語 | |
分組 | √ | √ | 對主機或賬號進行分組,方便管理。一個主機或者賬號可以屬於多個組,多個組之間可以用豎線符號| 分隔開。 |
描述 | √ | √ | 為主機或賬號編寫描述信息,相當於備注 |
1.3.2 批量導入常見問題
- 在編輯資產信息文件期間,頁面會話已經超時了,需要重新登錄后再執行導入操作。
- 主機和賬號寫到同一行上了。
- 逗號分隔符數量不正確。例如密碼中包含英文逗號,但是在資產文件中逗號被當做分隔符使用,導致格式錯誤。或者用低版本的Excel編輯后保存,有可能導致某些行的逗號丟失。
- 文本編輯工具或者Excel打開后是亂碼。請更換編輯工具或高版本的Excel。
二、分組管理
2.1 主機分組管理
為便於管理(例如運維授權或者審計授權時),可以將主機進行分組。
分組操作非常簡單,在“資產-主機分組管理”頁面,點擊右上角的“創建主機分組”按鈕並填寫分組名稱,即可建立一個新的分組。
分組建立之后,點擊某個分組的名稱,即可進入對應分組的主機成員列表頁面,管理此分組中的主機。在此頁面中可以添加或者刪除主機。
向分組中添加主機,或者刪除分組,均不影響現存的主機數據,但如果此分組已經在運維策略或者審計策略中被授權了,那么刪除分組會影響到分組中所有主機的授權。
2.2 賬號分組管理
賬號分組管理功能與主機分組的操作一致,此處不再贅述。
三、分組最佳實踐
在teleport系統中,主機、賬號、用戶均可以進行分組管理,而且,每一項也可以屬於多個分組。例如,一台運行數據庫的Linux主機,可以屬於 “Linux” 分組,同時可以屬於 “數據庫” 分組,還可以屬於 “阿里雲ECS” 分組。
靈活使用分組,可以高效快捷地管理主機、賬號和用戶,尤其是在管理大量資產時,利用分組可以大大減少管理難度。下面通過幾個示例進行說明,當然,需要根據你的實際使用場景進行靈活處理。
3.1 資產管理
某公司有大量虛擬主機,部分運行在雲端,部分運行在自建機房,為了方便管理,可以從不同分類的維度創建一些主機分組來進行區分,例如:
- 按地域或機房划分:總部機房/自建-華東區/自建-西南區/阿里雲/騰訊雲/AWS/…
- 按設備類型划分:物理主機/虛擬機/交換機/路由器/…
- 按用途划分:防火牆/網關/蜜罐系統/數據庫服務器/應用發布服務器/…
這樣可以在主機管理界面通過分組過濾器快速分揀出需要的主機列表。
3.2 運維授權管理
雖然teleport支持將主機授權給某個用戶,從而使用戶可以使用該主機上的任意一個賬號進行遠程連接、運維,但從日常使用場景來看,給運維人員分配的權限往往需要映射到具體的某台主機的某個賬號上。
在實際工作中,會因為運維人員的經驗、崗位等不同而為其分配不同的遠程賬號。例如,有經驗的運維人員可以為其分配遠程主機的root賬號,而數據庫運維人員會為其分配一些運行數據庫服務的主機的dba賬號。因此,可以從不同維度創建一些賬號分組來進行方便授權操作,例如:
- 按業務類型划分:www/database/自動構建/系統管理員/…
- 按地域划分:總部機房管理員賬號/華東辦事處管理員賬號組/…
同樣的,也可以對用戶進行分組,比如:
- 按崗位划分:管理員組/QA用戶組/運維組/…
- 按職責划分:應用發布組/灰度測試組/基礎部署組/…
因為teleport可按組進行授權,因此設置好授權策略並按分組進行授權之后,后續有主機、賬號或者運維人員的變更時,只需要將其加入對應的一個或者多個組(或者從相應組的成員列表中移除),即可獲得或失去對應的授權。