Teleport开源堡垒机操作使用

小柒博客 Teleport评论104K1字数 7103阅读23分40秒阅读模式

一、资产管理

点击页面左侧菜单,展开"资产"项目,然后点击"主机及账号",会打开主机管理页面,远程主机和远程登录账号的管理主要在这个界面中进行。

1、添加主机

点击页面右上方的"添加主机"按钮,然后在弹出的对话框中根据你要添加的远程主机的信息选择和填写相关内容:

  • 远程主机系统:可选择Windows或者Linux/Unix;
  • 远程主机地址:填写远程主机的IP地址,目前teleport尚未支持域名方式连接远程主机;
  • 连接模式:可选择直接连接或者端口映射模式;
  • 名称/资产编号/备注:(选填)为方便区分可填写相关信息。

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

如果远程主机与teleport服务器之间需要通过其他网络设备进行端口映射方可连接的,则需要选择"端口映射"模式。在这种模式下,teleport服务器实际上连接的是配置的路由主机的地址和映射端口,而非远程主机地址。

端口映射模式常用于以下场景:

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

主机信息填写完毕后,点击"确定"按钮即可完成主机的添加。

2、添加账号

注意:账号必须存在连接服务器中

添加完主机后,还需要为此主机设置远程登录的账号,点击主机的账号数量,或者右侧操作菜单中的"管理远程账号",会显示远程账号管理对话框。

然后点击"添加账号"按钮,弹出添加远程账号的对话框。需要注意的是,如果主机的连接模式使用端口映射模式,那么这里的"端口"项是无法更改的。

远程账号信息填写完毕后,可以使用对话框上的"测试连接"按钮来进行测试。

3、RDP协议

添加账号时,如果远程账号是Windows域用户,那么账号名称需要使用user@domain这样的形式,而不能使用domain\user的形式。后者虽然可以正常远程登录使用,但会导致无法进行录像回放。因为teleport在回放RDP录像时,会下载录像文件到本地,文件名中会包含远程账号名称,而远程账号中的字符\是操作系统的路径风格符,从而导致无法创建本地文件使得下载失败。

4、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免密码登录"。

5、TELNET协议

在添加telnet协议的远程账号时,如果使用用户名/密码认证方式,会要求填写"用户名预期提示"和"密码预期提示"两项内容。这是因为telnet本身是弱协议,也就是说它并没有明确定义用户如何登陆,何时输入用户名或者密码,不同的telnet服务有着各自不同的实现方式。比如说,有些telnet服务会显示 Login: 来提示用户输入用户名,而另一些则用 username: 进行提示,还有的用 login: 进行提示。而teleport在检测到对应的提示时,才能够正确填写相应的用户名和密码来完成自动登录。

所以,在添加telnet协议的远程账号之前,你需要手动连接一次你的telnet服务器,查看它的提示语,然后将其填写到预期提示的输入框中。

小技巧:默认的预期提示ogin:和assword:,其实是login:和password:去掉了第一个字母,是因为常见的telnet服务多数使用这两个提示语,但是一些首字母是大写,一些首字母是小写。跳过第一个字母则可以增加适配性。

6、批量添加主机和账号

在"资产-主机及账号"页面的右上角,点击"导入主机和账号"按钮,会弹出导入资产对话框。

点击图标上传你的资产信息文件。如果还没有准备资产信息文件,可以从对话框中的下载链接中下载一份进行修改。

资产信息文件是一个CSV格式(逗号分隔)的文本文件,你可以用 Office 2016 及以上版本的 Excel 打开编辑,也可以用普通的文本编辑工具进行编辑,比如 EditPlus、UltraEdit,或者 NotePad++等。

注意:建议使用文本编辑工具进行编辑,某些版本的Excel会在保存时去掉部分逗号,导致最终文件格式不合法而无法导入。

7、资产文件格式

下面对资产信息文件进行详细说明。首先来看一个示例:

用文本编辑工具打开的效果:

#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协议,预期的提示输入密码的提示语
分组 对主机或账号进行分组,方便管理。一个主机或者账号可以属于多个组,多个组之间可以用竖线符号|分隔开。
描述 为主机或账号编写描述信息,相当于备注

8、批量导入常见问题

  • 在编辑资产信息文件期间,页面会话已经超时了,需要重新登录后再执行导入操作。
  • 主机和账号写到同一行上了。
  • 逗号分隔符数量不正确。例如密码中包含英文逗号,但是在资产文件中逗号被当做分隔符使用,导致格式错误。或者用低版本的Excel编辑后保存,有可能导致某些行的逗号丢失。
  • 文本编辑工具或者Excel打开后是乱码。请更换编辑工具或高版本的Excel。

二、分组管理

1、主机分组管理

为便于管理(例如运维授权或者审计授权时),可以将主机进行分组。

分组操作非常简单,在"资产-主机分组管理"页面,点击右上角的"创建主机分组"按钮并填写分组名称,即可建立一个新的分组。

分组建立之后,点击某个分组的名称,即可进入对应分组的主机成员列表页面,管理此分组中的主机。在此页面中可以添加或者删除主机。

向分组中添加主机,或者删除分组,均不影响现存的主机数据,但如果此分组已经在运维策略或者审计策略中被授权了,那么删除分组会影响到分组中所有主机的授权。

2、账号分组管理

账号分组管理功能与主机分组的操作一致,此处不再赘述。

三、分组最佳实践

在teleport系统中,主机、账号、用户均可以进行分组管理,而且,每一项也可以属于多个分组。例如,一台运行数据库的Linux主机,可以属于 "Linux" 分组,同时可以属于 "数据库" 分组,还可以属于 "阿里云ECS" 分组。

灵活使用分组,可以高效快捷地管理主机、账号和用户,尤其是在管理大量资产时,利用分组可以大大减少管理难度。下面通过几个示例进行说明,当然,需要根据你的实际使用场景进行灵活处理。

1、资产管理

某公司有大量虚拟主机,部分运行在云端,部分运行在自建机房,为了方便管理,可以从不同分类的维度创建一些主机分组来进行区分,例如:

  • 按地域或机房划分:总部机房/自建-华东区/自建-西南区/阿里云/腾讯云/AWS/…
  • 按设备类型划分:物理主机/虚拟机/交换机/路由器/…
  • 按用途划分:防火墙/网关/蜜罐系统/数据库服务器/应用发布服务器/…

这样可以在主机管理界面通过分组过滤器快速分拣出需要的主机列表。

2、运维授权管理

虽然teleport支持将主机授权给某个用户,从而使用户可以使用该主机上的任意一个账号进行远程连接、运维,但从日常使用场景来看,给运维人员分配的权限往往需要映射到具体的某台主机的某个账号上。

在实际工作中,会因为运维人员的经验、岗位等不同而为其分配不同的远程账号。例如,有经验的运维人员可以为其分配远程主机的root账号,而数据库运维人员会为其分配一些运行数据库服务的主机的dba账号。因此,可以从不同维度创建一些账号分组来进行方便授权操作,例如:

  • 按业务类型划分:www/database/自动构建/系统管理员/…
  • 按地域划分:总部机房管理员账号/华东办事处管理员账号组/…

同样的,也可以对用户进行分组,比如:

  • 按岗位划分:管理员组/QA用户组/运维组/…
  • 按职责划分:应用发布组/灰度测试组/基础部署组/…

因为teleport可按组进行授权,因此设置好授权策略并按分组进行授权之后,后续有主机、账号或者运维人员的变更时,只需要将其加入对应的一个或者多个组(或者从相应组的成员列表中移除),即可获得或失去对应的授权。

四、运维授权

点击展开左侧菜单"运维"项目,然后点击"运维授权",即可打开运维授权管理页面。只有具备运维授权权限的用户可以查看此界面,并进行授权管理。

具备运维权限的非管理员用户,默认是不能对任何远程主机进行运维操作的,需要具备运维授权权限的用户创建授权策略,并在策略中为其进行授权后,方可在"运维-主机运维"界面中查看到被授权的远程主机和账号,并进行远程连接。

注意,具备运维授权权限的用户,无需进行授权就可以以任意远程账号登录对应的主机进行运维操作。

1、创建授权策略

系统默认是没有做任何授权策略的,点击"新建授权策略"即可创建一个新的授权策略。新创建的授权策略还没有具体授权内容,需要进一步授权操作。

2、运维授权

所谓授权,就是确定谁(授权操作者)可以访问哪些远程账号(被授权资产)。点击授权策略列表中的策略名称,会打开授权操作界面:

# 创建授权策略

# 添加授权用户/用户组、资产用户/用户组、主机、主机组

3、授权对象

在teleport中,运维授权的最小单位为用户 - 远程账号 的授权关系,表示某个用户可以以某个远程账号的身份登录远程主机进行操作。常见的授权操作为 用户组 - 账号组 的授权。

以"组"的形式加入到授权对象中的,此组的所有成员均会被最终映射到运维授权的最小单位上。因此,合理地使用分组,可以有效提升整个系统的管理效率。

特别注意的是,如果被授权资产是"主机"(或者"主机组",也即此组内的所有主机),意味着此主机上的每一个账号均会被授权访问。除非有特殊原因,一般不会按主机或主机组进行授权。

授权操作是立即生效的,也就是说,在此界面上进行授权操作后,对应的运维人员在"主机运维"界面刷新页面,就可以看到自己被授权访问的远程主机和账号了。

注意:授权操作不会影响当前已经建立的远程会话连接。如果某个运维用户已经被授权访问某个远程账号,而且当前已经建立了远程连接,此时在授权页面将其授权收回(从列表中移除对应的用户或者被授权资产),那么该远程连接并不会自动断开,你需要在"在线会话"界面中将其强制断开。

4、连接控制

在授权策略编辑器中,还可以设置此策略的连接控制:

你可以关闭或者开启某些选项,例如,不允许用户通过SFTP上传/下载文件,就可以取消"允许SFTP"的勾选项。

5、授权策略顺序

当有多条授权策略时,可以在运维授权界面上调整策略的生效顺序,只需要拖动表格中顺序一栏中的数字,上下移动到期望的位置(在表格线的最左侧会出现绿色的指示标记),然后释放鼠标按键即可。

在teleport中,检查用户的运维授权会按以下顺序来进行:

检查用户是否有运维权限(根据用户角色确定其基本权限);

按顺序取的一条授权策略,检查:

如果此授权策略被禁用,则跳过(相当于此策略未生效);

如果此策略中,用户-账号 的授权关系第一次出现,则按此策略的连接控制选项授权,否则跳过;

循环处理所有的授权策略,直到授权映射操作完成。

例如,有下列授权策略:

顺序 策略 授权 连接控制
1 策略1 用户A - 账号a
用户B - 账号a
用户B - 账号b
允许SSH连接
不允许SFTP连接
2 策略2 用户A - 账号a
用户B - 账号a
用户B - 账号c
允许SSH连接
允许SFTP连接

那么,当用户A登录后,根据策略1,他可以以SSH方式登录账号a,但不能进行SFTP连接。因为 用户A - 账号a 的授权关系在策略1中已经存在了,所以在策略2中会被忽略。

而当用户B登录后,他可以以SSH方式登录账号a和账号b,但不能进行SFTP连接。同时,他可以以SSH和SFTP的方式登录账号c,因为 用户B - 账号c 的授权关系第一次出现在策略2中,而策略2是允许SSH和SFTP连接的。

注意,在上述例子中,如果策略1被禁用了,那么用户A登录后,就可以以SSH和SFTP方式登录账号a了。

五、主机运维

点击"运维-主机运维"即可查看自己能够进行远程连接的主机和账号列表,如下图所示:

点击对应的"远程连接"操作按钮,即可以通过本地助手程序来启动对应的客户端软件,按对应的远程账号连接并登陆到远程主机上。不同的协议可以使用不同的客户端软件,具体操作可以查看"客户端助手"章节。

特别地,对于远程桌面(RDP)来说,点击远程连接按钮右侧的齿轮图标,可以设置更多的连接选项:

其中,"Console模式",也可称之为"管理员模式",是早期的Windows服务器的远程桌面连接数有限,当超出上限后,远程桌面连接将无法进行。使用"Console模式"时,远程主机会自动断开一个连接,并允许你登录。

# 连接主机之前请确认主机是否安装openssh-server,需要生成密钥对方可连接。

六、在线会话

一旦建立了远程连接,在"运维-在线会话"界面就可以查看到这些连接了。

你可以在这里强制中断某些会话。

需要注意的是,强制中断会话时,相同会话ID的会话(例如使用SecureCRT或者xShell客户端的"克隆会话"功能打开的会话)均会被中断。例如上图中,编号为1的会话,就是使用SecureCRT的克隆会话功能在编号为3的会话上建立的新会话,两个会话的会话ID是相同的,强制中断时也会同时中断。

七、审计授权

点击展开左侧菜单"审计"项目,然后点击"审计授权",即可打开运维授权管理页面。只有角色为系统管理员才可以查看此界面,并进行审计授权。

1、创建授权策略

2、授权策略

# 添加审计授权用户/用户组、资产主机/主机组

八、会话审计

角色为系统管理员和审计员都可以查看此界面。

九、系统日志

十、角色管理

十一、系统设置

十二、客户端助手

客户端助手是安装在客户端电脑(相对于teleport服务端而言)的一款软件,下载页面在下载二进制安装包,主要用来设置本地SSH/SFTP/Telnet/RDP客户端的调用路径、命令参数。

# 修改Putty为Xshell连接,操作如下

选择客户端为Xshell,选择程序路径,点击最下方的保存设置即可。

若文章图片、下载链接等信息出错,请在评论区留言反馈,博主将第一时间更新!如本文“对您有用”,欢迎随意打赏,谢谢!

继续阅读
Wechat
微信扫一扫,加我!
weinxin
微信公众号
微信扫一扫,关注我!
weinxin
小柒博客
  • 本文由 小柒博客 发表于 2020年6月11日14:36:33
  • 声明:本站所有文章,如无特殊说明或标注,本站文章均为原创。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。转载请务必保留本文链接:https://www.yangxingzhen.com/7173.html
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

拖动滑块以完成验证