一. teleport簡介
說明: Teleport是一款簡單易用的堡壘跳板機系統,具備小巧、易用的特色,支持 RDP/SSH/SFTP/Telnet 協議的遠程鏈接和審計管理。mysql
Teleport由兩大部分構成:linux
- 跳板核心服務
- WEB操做界面
官網地址: https://tp4a.com/ 官網文檔: https://docs.tp4a.com/web
https://tp4a.com/download 下載地址sql
支持的操做系統(服務端)
Teleport支持部署到Linux系統中,目前支持的系統版本以下:docker
- Ubuntu 14.04 64位 及以上版本
- CentOS 6.2 64位 及以上版本
- Debian 6.0 64位 及以上版本
- Redhat 6.2 64位 及以上版本
支持的操做系統(客戶端)
- Windows
- MacOS
依賴環境
由於Teleport內建了所需的腳本引擎、WEB服務等模塊,所以不須要額外安裝其餘的庫或者模塊,整個系統的安裝與部署很是方便。數據庫
二. 部署使用
本次操做環境 centos6.8vim
1. 下載安裝
首先要到官網下載最新或所需的teleport的對應版本安裝包。將下載獲得的安裝包放到臨時目錄中,而後執行下列命令. windows
如要升級版本, 升級版本前要先備份數據 參考官方: https://docs.tp4a.com/install/#_2centos
[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
(直接回車便可),也能夠指定別的路徑,請注意路徑中不要含有中文字符或空格,以免出現不可預知的錯誤。bash
默認的錄像回放文件位於/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、分組管理
2.1 主機分組管理
爲便於管理(例如運維受權或者審計受權時),能夠將主機進行分組。
分組操做很是簡單,在「資產-主機分組管理」頁面,點擊右上角的「建立主機分組」按鈕並填寫分組名稱,便可創建一個新的分組。
分組創建以後,點擊某個分組的名稱,便可進入對應分組的主機成員列表頁面,管理此分組中的主機。在此頁面中能夠添加或者刪除主機。
向分組中添加主機,或者刪除分組,均不影響現存的主機數據,但若是此分組已經在運維策略或者審計策略中被受權了,那麼刪除分組會影響到分組中全部主機的受權。
2.2 帳號分組管理
帳號分組管理功能與主機分組的操做一致,此處再也不贅述。
3、分組最佳實踐
在teleport系統中,主機、帳號、用戶都可以進行分組管理,並且,每一項也能夠屬於多個分組。例如,一臺運行數據庫的Linux主機,能夠屬於 「Linux」 分組,同時能夠屬於 「數據庫」 分組,還能夠屬於 「阿里雲ECS」 分組。
靈活使用分組,能夠高效快捷地管理主機、帳號和用戶,尤爲是在管理大量資產時,利用分組能夠大大減小管理難度。下面經過幾個示例進行說明,固然,須要根據你的實際使用場景進行靈活處理。
3.1 資產管理
某公司有大量虛擬主機,部分運行在雲端,部分運行在自建機房,爲了方便管理,能夠從不一樣分類的維度建立一些主機分組來進行區分,例如:
- 按地域或機房劃分:總部機房/自建-華東區/自建-西南區/阿里雲/騰訊雲/AWS/…
- 按設備類型劃分:物理主機/虛擬機/交換機/路由器/…
- 按用途劃分:防火牆/網關/蜜罐系統/數據庫服務器/應用發佈服務器/…
這樣能夠在主機管理界面經過分組過濾器快速分揀出須要的主機列表。
3.2 運維受權管理
雖然teleport支持將主機受權給某個用戶,從而使用戶可使用該主機上的任意一個帳號進行遠程鏈接、運維,但從平常使用場景來看,給運維人員分配的權限每每須要映射到具體的某臺主機的某個帳號上。
在實際工做中,會由於運維人員的經驗、崗位等不一樣而爲其分配不一樣的遠程帳號。例如,有經驗的運維人員能夠爲其分配遠程主機的root帳號,而數據庫運維人員會爲其分配一些運行數據庫服務的主機的dba帳號。所以,能夠從不一樣維度建立一些帳號分組來進行方便受權操做,例如:
- 按業務類型劃分:www/database/自動構建/系統管理員/…
- 按地域劃分:總部機房管理員帳號/華東辦事處管理員帳號組/…
一樣的,也能夠對用戶進行分組,好比:
- 按崗位劃分:管理員組/QA用戶組/運維組/…
- 按職責劃分:應用發佈組/灰度測試組/基礎部署組/…
由於teleport可按組進行受權,所以設置好受權策略並按分組進行受權以後,後續有主機、帳號或者運維人員的變動時,只須要將其加入對應的一個或者多個組(或者從相應組的成員列表中移除),便可得到或失去對應的受權。