Teleport是一款简单好上手的开源堡垒机,最大的特点就是体积小巧、界面简洁,而且集成能力超强。支持RDP和SSH协议,能和SSH、Kubernetes、数据库、RDP及Web服务搭配使用。最方便的是,Teleport能在5分钟内完成安装部署,为运维人员提供连接、身份验证、访问控制和审计等一系列实用服务。
一、Teleport入门
1、Teleport由两大部分构成:
跳板核心服务:负责底层连接和协议处理。
WEB操作界面:提供可视化的管理后台,操作直观简单。
正因为Teleport内置了所需的脚本引擎、WEB服务等模块,所以不需要额外安装其他库或模块,整个系统的安装与部署非常方便。
2、Teleport特点如下:
- 部署简单:设计简洁灵活,没有额外依赖,5分钟内就能完成部署;
- 安全增强:将远程主机配置为仅允许Teleport服务器连接,能有效降低嗅探、扫描、暴力破解等攻击风险;
- 单点登录:只需登录Teleport服务器,就能一键连接任意远程主机,再也不用专门记忆每台远程主机的密码;
- 按需授权:可以随时给指定运维人员授权访问指定的远程主机,也能随时回收授权,管理非常灵活;
- 运维审计:对远程主机的所有操作都有详细记录,支持操作记录录像和回放。
3、Teleport运作方式
Teleport Enterprise(云)、Teleport Auth服务和Teleport服务作为基于云的服务管理。这些服务提供可立即访问的、可扩展且具有容错能力的证书颁发机构,以及无需管理或维护的反向代理。运维人员可以专注于注册要保护的资源,并为全球私有和公共网络配置基于角色的安全访问。
二、Teleport安装部署准备1、先决条件
安装Terraform:访问安装Terraform的指示,确保Terraform在路径中可用。可以通过以下命令检查:
which terraform
/usr/local/bin/terraform
terraform version
Terraform v1.5.6
安装AWS CLI命令行工具:
Fedora/CentOS:
yum -y install awscli
Ubuntu/Debian:
apt-get -y install awscli
macOS(带Homebrew):
brew install awscli
配置AWSCLI凭证:确保已使用以下凭证配置了AWSCLI访问权限,文件路径为~/.aws/credentials:
cat ~/.aws/credentials
[default]
aws_access_key_id = abcd1234-this-is-an-example
aws_secret_access_key = zyxw9876-this-is-an-example
设置默认区域:在~/.aws/config中设置默认区域:
cat ~/.aws/config
[default]
region = us-west-2
其他权限要求:运行Terraform的用户需要具备以下AWS服务访问权限:
- Amazon EC2:《亚马逊免费云服务器申请与使用教程》
- Amazon Route 53:《如何使用Amazon Route 53注册域名 AWS域名注册教程》
- Amazon DynamoDB:《亚马逊免费数据库Amazon RDS备份与还原图文教程》
- Amazon Elastic Load Balancing:《AWS ELB收费吗? AWS ELB常见问题介绍》
- Amazon IAM
- Amazon SSM Parameter Store
AWS官网:点击直达(注册立享100+免费云服务)
同时在AWS上创建一个密钥对,用于访问通过Terraform模块创建的实例。
2、获取Terraform代码
克隆Teleport存储库以获取系统上可用的Terraform代码:
git clone https://github.com/gravitational/teleport -b branch/v17
Cloning into ‘teleport’…remote: Enumerating objects: 106, done.
remote: Counting objects: 100% (106/106), done.
remote: Compressing objects: 100% (95/95), done.
remote: Total 61144 (delta 33), reused 35 (delta 11), pack-reused 61038
Receiving objects: 100% (61144/61144), 85.17 MiB | 4.66 MiB/s, done.
Resolving deltas: 100% (39141/39141), done.
完成此作后,可以更改为签出Terraform代码的目录并运行terraform init:
三、设置部署变量cd teleport/examples/aws/terraform/starter-cluster
terraform initInitializing the backend…
Initializing provider plugins…
– Checking for available provider plugins…
– Installing hashicorp/aws v5.31.0…
– Installed hashicorp/aws v5.31.0 (signed by HashiCorp)Terraform has been successfully initialized!
You may now begin working with Terraform. Try running “terraform plan” to see
any changes that are required for your infrastructure. All Terraform commands
should now work.If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
Terraform模块使用变量传入输入,可以通过环境变量、命令行或编辑文件等方式设置。以下是需要设置的关键变量:
1、基础配置变量
区域设置:
export TF_VAR_region=”us-west-2″#选择支持DynamoDB静态加密的AWS区域
集群名称:
export TF_VAR_cluster_name=”teleport-example”#内部Teleport集群名称,需唯一且不含特殊字符
AMI名称:
export TF_VAR_ami_name=”teleport-ent-17.5.4-x86_64″#Teleport镜像名称,根据需求选择OSS、Enterprise或FIPS版本
密钥对名称:
export TF_VAR_key_name=”exampleuser”#部署EC2实例时使用的AWS密钥对名称
许可证路径:
Teleport Auth Service读取License文件以验证Teleport企业帐户。要获取许可证文件,请导航到Teleport帐户仪表板,从teleport.sh开始并输入Teleport帐户名称(例如my-company)。登录后将看到一个“生成 LICENSE KEY“按钮,该按钮将生成新的许可证文件。
export TF_VAR_license_path=”/home/user/license.pem”
此许可证将上传到AWS SSM并自动下载到Teleport实例,以便启用Teleport Enterprise功能。
注意:Teleport社区版用户可以在本地运行以创建一个空文件,然后提供路径 ‘/tmp/license.pem’ 这里。许可证文件不用于Teleport社区版安装。
2、域名与证书配置
Route 53区域:
export TF_VAR_route53_zone=”example.com”#在Amazon Route 53中预置的域名
子域名设置:
export TF_VAR_route53_domain=”teleport.example.com”#用于访问Teleport集群的子域名
证书配置:
export TF_VAR_use_acm=”true”#使用AWS ACM证书(推荐)
export TF_VAR_email=”support@example.com”#Let’s Encrypt所需的电子邮件地址
3、服务与存储配置
数据库监听配置(按需启用):
exportTF_VAR_enable_mongodb_listener=”false”#是否启用MongoDB监听
exportTF_VAR_enable_mysql_listener=”false”#是否启用MySQL监听
exportTF_VAR_enable_postgres_listener=”false”#是否启用PostgreSQL监听
AWS S3存储桶:
exportTF_VAR_s3_bucket_name=”teleport-example”#存储会话记录的S3存储桶名称(需全局唯一)
实例类型:
四、使用Terraform部署Teleport堡垒机exportTF_VAR_cluster_instance_type=”t3.micro”#EC2实例类型,测试可用micro,生产环境建议更大规格
1、验证配置
设置完所有变量后,运行以下命令验证配置:
terraform plan
Refreshing Terraform state in-memory prior to plan…The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.
data.template_file.monitor_user_data: Refreshing state…
data.aws_kms_alias.ssm: Refreshing state…
data.aws_caller_identity.current: Refreshing state…
data.aws_ami.base: Refreshing state…
data.aws_availability_zones.available: Refreshing state…
data.aws_route53_zone.proxy: Refreshing state…
data.aws_region.current: Refreshing state…
————————————————————————
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create
<= read (data resources)
Terraform will perform the following actions:
<output trimmed>
Plan: 30 to add, 0 to change, 0 to destroy.
Changes to Outputs:
+ cluster_name = “example-cluster”
+ cluster_web_address = “https://teleport.example.com”
+ instance_ip_public = (known after apply)
+ key_name = “example”Do you want to perform these actions?
Terraform will perform the actions described above.
Only ‘yes’ will be accepted to approve.Enter a value: yes
————————————————————————
Note: You didn’t specify an “-out” parameter to save this plan, so Terraform
can’t guarantee that exactly these actions will be performed if
“terraform apply” is subsequently run.
2、执行部署
确认配置无误后,执行部署命令:
terraform apply
<output trimmed>Plan: 30 to add, 0 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only ‘yes’ will be accepted to approve.
Enter a value:
完全Teleport堡垒机部署大约需要5分钟。
3、访问集群
部署完成后,通过以下命令获取Teleport集群WebUI的URL:
五、添加用户与登录集群terraform output -raw cluster_web_address
https://teleport.example.com#获取WebUI访问地址
1、添加管理员用户
通过SSH连接到Teleport集群主机:
ssh -i $(terraform output -raw key_name).pem ec2-user@$(terraform output -raw instance_ip_public)
The authenticity of host ‘1.2.3.4 (1.2.3.4)’ can’t be established.ECDSA key fingerprint is SHA256:vFPnCFliRsRQ1Dk+muIv2B1Owm96hXiihlOUsj5H3bg.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added ‘1.2.3.4’ (ECDSA) to the list of known hosts.
Last login: Tue Mar 3 18:57:12 2020 from 1.2.3.5
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
1 package(s) needed for security, out of 6 available
Run “sudo yum update” to apply all updates.
[ec2-user@ip-172-31-29-119 ~]$
在集群主机上创建admin用户:
On the Teleport cluster host
sudo tctl users add teleport-admin –roles=editor,access –logins=root,ec2-user
User “teleport-admin” has been created but requires a password. Share this URL with the user to complete user setup, link is valid for 1h:https://teleport.example.com:443/web/newuser/6489ae886babf4232826076279bcb2fb
NOTE: Make sure teleport.example.com:443 points at a Teleport proxy which users can access.
2、完成用户设置
点击命令输出中的链接,启动Teleport Web UI并完成用户设置。您可以选择使用与Web Authn兼容的硬件密钥(如Yubikey、Passkey或TouchID)或使用与TOTP兼容的应用程序(如Google Authenticator或Authy)扫描二维码,同时为用户设置密码。
3、使用tsh登录集群
下载Teleport命令行工具tsh后,通过以下命令登录集群:
When logging in with tsh, the https:// at the beginning of the URL is not needed
export PROXY_ADDRESS=$(terraform output -raw cluster_web_address | sed ‘s_https://__’)
tsh login –proxy=${PROXY_ADDRESS} –user=teleport-admin
Enter password for Teleport user teleport-admin:Tap any security key
Detected security key tap
> Profile URL: https://teleport.example.com:443
Logged in as: teleport-admin
Cluster: example-cluster
Roles: editor, access
Logins: root
Valid until: 2023-10-06 22:07:11 -0400 AST [valid for 12h0m0s]
Extensions: permit-agent-forwarding, permit-port-forwarding, permit-pty
tsh ls
Node Name Address Labels—————————- —————– ——
ip-172-31-11-69-ec2-internal 172.31.11.69:3022
tsh ssh root@ip-172-31-11-69-ec2-internal
[root@ip-172-31-11-69 ~]#
登录后可以使用tshls查看可访问的节点,使用tshssh连接到目标节点。
通过以上步骤即可快速上手使用Teleport开源堡垒机!
相关阅读:
《JumpServer堡垒机入门完整指南(安装+管理+设置)》
(本文由美国主机侦探原创,转载请注明出处“美国主机侦探”和原文地址!)

微信扫码加好友进群
主机优惠码及时掌握

QQ群号:938255063
主机优惠发布与交流