开源堡垒机系统Teleport

一. 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

默认状况下,teleport的WEB服务使用7190端口,安装后可按以下地址访问:
http://您的堡垒机IP地址: 7190
若是您须要更改默认端口号,请修改配置文件(注意,两个配置文件均涉及到web端口,要一并修改)。
/usr/local/teleport/data/etc/web.ini
/usr/local/teleport/data/etc/core.ini
重要提示:修改完配置文件后,须要从新启动teleport服务使修改生效.

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还没有支持域名方式链接远程主机;
  • 链接模式: 可选择直接链接或者端口映射模式;
  • 名称/资产编号/备注: (选填)为方便区分可填写相关信息。

web-add-host-1

其中“链接模式”一项,若是此远程主机能够由teleport服务器直接链接,则能够选择“直接链接”模式,例如远程主机与teleport服务器处于同一个局域网中,或者远程主机是开放了远程链接端口的云端服务器等。

若是远程主机与teleport服务器之间须要经过其余网络设备进行端口映射方可链接的,则须要选择“端口映射”模式。在这种模式下,teleport服务器实际上链接的是配置的 路由主机 的地址和映射端口,而非远程主机地址。

web-add-host-2

端口映射模式经常使用于如下场景:

  • teleport服务器处于公司内网,被维护的远程主机在云端且没有公网IP,须要经过一台有公网IP的服务器进行跳转。集群服务器常使用这种方式。
  • 使用teleport服务器管理运行docker的主机以及进入docker内部进行管理。

主机信息填写完毕后,点击“肯定”按钮便可完成主机的添加。

 

1.2 添加帐号

添加完主机后,还须要为此主机设置远程登陆的帐号,点击主机的帐号数量,或者右侧操做菜单中的“管理远程帐号”,会显示远程帐号管理对话框。

web-asset-manage-acc

而后点击“添加帐号”按钮,弹出添加远程帐号的对话框。须要注意的是,若是主机的链接模式使用端口映射模式,那么这里的“端口”项是没法更改的。

web-asset-add-acc

远程帐号信息填写完毕后,可使用对话框上的“测试链接”按钮来进行测试。

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服务器,查看它的提示语,而后将其填写到预期提示的输入框中。

web-asset-add-acc-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
路由端口   “端口映射”模式时使用的端口
资产编号   自行设置的编号,可用于资产管理
帐号   登陆远程主机的帐号
协议类型   登陆远程主机的协议,能够是 rdpssh,或者 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可按组进行受权,所以设置好受权策略并按分组进行受权以后,后续有主机、帐号或者运维人员的变动时,只须要将其加入对应的一个或者多个组(或者从相应组的成员列表中移除),便可得到或失去对应的受权。

相关文章
相关标签/搜索