Teleport - 安全访问 Linux 系统和 Kubernetes |Teleport - 安全访问 Linux 系统和 Kubernetes |Teleport - 安全访问 Linux 系统和 Kubernetes |Teleport - 安全访问 Linux 系统和 Kubernetes |
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

Teleport - 安全访问 Linux 系统和 Kubernetes |

发表 admin at 2025年2月28日
类别
  • 未分类
标签

在这种互连系统的分配中,至关重要的是,每一项资产、每一份文件和每一项信息都应尽可能远离窥探和耳朵。更糟糕的是,这些令人讨厌的眼睛和耳朵的数量不断增加,每天醒来,让它们远离你的系统变得越来越困难和棘手。那么该怎么办?我们这个世界的优秀人才的创新已经提出了解决方案,这些解决方案至少可以阻止他们并让他们的努力变得更加困难。传送是这些解决方案之一,我们将在本简短指南中详细讨论它。

Gravitational Teleport 是一个网关,用于通过 SSH 或 Kubernetes API 管理对 Linux 服务器集群的访问。它旨在替代传统的 OpenSSH,供需要以下内容的组织使用: 来源:Teleport 文档

  • 保护其基础设施并遵守安全最佳实践和监管要求。
  • 全面了解其基础设施中发生的活动。
  • 减少传统和云原生基础设施中特权访问管理的运营开销。

瞬移的综合功能

Teleport 提供了传统管理员和开发人员将会喜欢的令人印象深刻的新功能。它们包括:

  • 适用于整个组织的单一 SSH/Kubernetes 访问网关。
  • 基于 SSH 证书的身份验证而不是静态密钥。
  • 通过使用由集群证书颁发机构 (CA) 签名的自动过期密钥,避免首次使用时出现密钥分发和信任问题。
  • 强制执行第二因素身份验证。
  • 连接到位于防火墙后面的集群,无需通过 SSH 堡垒直接访问 Internet。
  • 通过会话共享协作解决问题。
  • 使用动态节点标签发现集群中的在线服务器和 Docker 容器。
  • 用于管理 SSH 和 Kubernetes 的 RBAC 的单一工具(“管理平台”)。
  • 带有会话记录/重播的审核日志。
  • Kubernetes 审计日志,包括通过 kubectl 执行的交互命令的记录。
  • 能够在“无代理”模式下运行,即大多数 Teleport 功能在具有预先存在的 SSH 守护进程(通常是 sshd)的集群上可用。

改编自 Teleport 官方网站,Teleport 分为三个二进制文件:teleport 守护进程、tsh客户端和tctl管理工具。它们无依赖性,以编译语言编写,并在任何 UNIX 兼容操作系统上运行,例如 Linux、FreeBSD 或 macOS。 Teleport 在 Apache 2 许可证下是开源的,源代码可在 Github 上获取。

Teleport 易于部署。它是一个类似于 sshd 的传统 Linux 守护进程,通常作为 systemd 服务运行。

安装传送工具

Teleport 核心服务 teleport 和管理工具 tctl 被设计为在 Linux 和 Mac 操作系统上运行。 Teleport 用户客户端 tsh 和 UI 可用于 Linux、Mac 和 Windows 操作系统。

在 Linux 上安装 Teleport

以下示例安装 64 位版本的 Teleport 二进制文件,但也可以使用 32 位 (i386) 和 ARM 二进制文件。

运行以下命令在 Linux 上安装 Teleport:

curl https://goteleport.com/static/install.sh | bash -s 13.3.2

检查最新版本页面以获取最新版本,并将 13.3.2 替换为版本号。

安装成功输出:

....
Teleport v13.3.2 git:api/v13.3.2-0-gfc60440 go1.20.7 installed successfully!

The following commands are now available:
  teleport - The daemon that runs the Auth Service, Proxy Service, and other Teleport services.
  tsh      - A tool that lets end users interact with Teleport.
  tctl     - An administrative tool that can configure the Teleport Auth Service.
  tbot     - Teleport Machine ID client.

配置 teleport SystemD 服务

然后重新加载守护进程,启动并启用服务

sudo systemctl daemon-reload
sudo systemctl start teleport
sudo systemctl enable teleport

您可以检查其状态以确认一切都已顺利启动

$ systemctl status teleport.service
● teleport.service - Teleport Service
     Loaded: loaded (/lib/systemd/system/teleport.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2023-08-09 08:23:41 UTC; 10s ago
   Main PID: 1494 (teleport)
      Tasks: 8 (limit: 4523)
     Memory: 66.5M
        CPU: 11.674s
     CGroup: /system.slice/teleport.service
             └─1494 /usr/local/bin/teleport start --pid-file=/run/teleport.pid

Aug 09 08:23:44 jammy teleport[1494]: INFO [UPLOAD:1]  starting upload completer service pid:1494.1 service/service.go:2722
Aug 09 08:23:44 jammy teleport[1494]: INFO [UPLOAD:1]  Creating directory /var/lib/teleport/log. pid:1494.1 service/service.go:2738
Aug 09 08:23:44 jammy teleport[1494]: INFO [UPLOAD:1]  Creating directory /var/lib/teleport/log/upload. pid:1494.1 service/service.go:2738
Aug 09 08:23:44 jammy teleport[1494]: INFO [UPLOAD:1]  Creating directory /var/lib/teleport/log/upload/streaming. pid:1494.1 service/service.go:2738
Aug 09 08:23:44 jammy teleport[1494]: INFO [UPLOAD:1]  Creating directory /var/lib/teleport/log/upload/streaming/default. pid:1494.1 service/service.go:2738
Aug 09 08:23:44 jammy teleport[1494]: INFO [UPLOAD:1]  Creating directory /var/lib/teleport/log. pid:1494.1 service/service.go:2738
Aug 09 08:23:44 jammy teleport[1494]: INFO [UPLOAD:1]  Creating directory /var/lib/teleport/log/upload. pid:1494.1 service/service.go:2738
Aug 09 08:23:44 jammy teleport[1494]: INFO [UPLOAD:1]  Creating directory /var/lib/teleport/log/upload/corrupted. pid:1494.1 service/service.go:2738
Aug 09 08:23:44 jammy teleport[1494]: INFO [UPLOAD:1]  Creating directory /var/lib/teleport/log/upload/corrupted/default. pid:1494.1 service/service.go:2738
Aug 09 08:23:44 jammy teleport[1494]: INFO [PROC:1]    The new service has started successfully. Starting syncing rotation status with period 10m0s. pid:1494.1 service/connect.go:811

从 RPM 存储库安装在基于 RHEL 的系统上

如果您使用的是 CentOS,如果您不喜欢 tarball 安装方法,也可以使用以下方法

sudo yum-config-manager --add-repo https://rpm.releases.teleport.dev/teleport.repo
sudo yum install teleport -y

在 macOS 上安装 Teleport

借助 Homebrew,telport 可以在 macOS 上轻松安装,如下所示:

brew install teleport

如何配置传送

在设置 Teleport 时,其开发团队建议使用 Teleport 的 YAML 配置文件运行它,如下所示:

$ sudo vim /etc/teleport.yaml
teleport:
    data_dir: /var/lib/teleport
auth_service:
    enabled: true
    cluster_name: "teleport-quickstart"
    listen_addr: 0.0.0.0:3025
    tokens:
    - proxy,node,app:f7adb7ccdf04037bcd2b52ec6010fd6f0caec94ba190b765
    public_addr: 0.0.0.0:3025
ssh_service:
    enabled: true
    labels:
        env: staging
app_service:
    enabled: true
    debug_app: true
proxy_service:
    enabled: true
    listen_addr: 0.0.0.0:3023
    web_listen_addr: 0.0.0.0:3080
    tunnel_listen_addr: 0.0.0.0:3024
    public_addr: 0.0.0.0:3080

从上面的配置中,您会注意到目录传送数据将被保留(/var/lib/teleport)。为了使一切正常工作,我们必须授予该目录必要的权限,以便 teleport 和 tctl 能够读取和写入。为此,请运行以下命令

sudo chmod 755 -R /var/lib/teleport/

更新配置文件后,我们需要打开文件中定义的必需端口,如下所示

##On RHEL based systems
sudo firewall-cmd --permanent --add-port={3023,3080,3024,3025}/tcp
sudo firewall-cmd --reload

##Debian based systems
sudo ufw allow 3023,3080,3024,3025/tcp

使用自签名证书配置安全 https

Teleport 使用安全 https。如果您有证书,可以将它们添加到 teleport 配置文件的末尾。对于此示例,我们将设置一个自签名证书供我们使用。继续像这样创建它:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/teleport2.key -out /etc/pki/tls/certs/teleport2.crt

这将继续问您一些问题,如下所示。输入适合您的环境的选项。如果您没有 DNS,您可以在服务器中的 /etc/hosts 下添加您的域名

-----
Country Name (2 letter code) [XX]:KE
State or Province Name (full name) []:Nairobi
Locality Name (eg, city) [Default City]:Nairobi
Organization Name (eg, company) [Default Company Ltd]:computingforgeeks
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:teleport.computingforgeeks.com
Email Address []:[email 

之后,使用证书更新您的配置文件,如下所示

teleport:
    data_dir: /var/lib/teleport
auth_service:
    enabled: true
    cluster_name: "teleport-quickstart"
    listen_addr: 0.0.0.0:3025
    tokens:
    - proxy,node,app:f7adb7ccdf04037bcd2b52ec6010fd6f0caec94ba190b765
    public_addr: 0.0.0.0:3025
ssh_service:
    enabled: true
    labels:
        env: staging
app_service:
    enabled: true
    debug_app: true
proxy_service:
    enabled: true
    listen_addr: 0.0.0.0:3023
    web_listen_addr: 0.0.0.0:3080
    tunnel_listen_addr: 0.0.0.0:3024
##Updated/added part of this configuration
    public_addr: 0.0.0.0:3080
    https_keypairs:
      - key_file: /etc/pki/tls/private/teleport2.key
        cert_file: /etc/pki/tls/certs/teleport2.crt

然后重新启动传送

sudo systemctl restart teleport

在此阶段,您可以通过以下地址访问 Teleport Web UI:“https://IP-or-Domain-Name:3080”。只需打开您最喜欢的浏览器并将其指向您的服务器的指定端口 (3080)。你应该看到:

但您会注意到,我们没有任何用户能够登录该应用程序。因此,我们下一步将解决这个问题。

创建传送用户

就像任何其他身份验证服务一样,传送需要用户及其凭据才能登录并使用受其保护的服务器。需要注意的是,默认情况下 Teleport 将始终强制使用 2 因素身份验证。它支持一次性密码 (OTP) 和硬件令牌 (U2F)。此快速入门将使用 OTP - 您需要一个可以扫描 QR 码的 OTP 兼容应用程序。

运行以下命令创建可以访问 Teleport Web UI 的用户:

sudo tctl users add admin --roles=editor,access --logins=root,ubuntu,ec2-user

您指定的用户(例如我们示例中的 root)必须存在!这意味着,geeks-admin 将能够以 root 身份登录 Teleport 集群服务器中的服务器。

命令运行后,您将在 shell 上看到它显示的消息。复制它提供的网址并继续设置新用户:“https://teleport.computingforgeeks.com:3080/web/invite/2ef0091feea7fea0a210f53a1d8751d3”。将 0.0.0.0 替换为您的服务器 IP 地址。

在浏览器上访问该网址后,您将看到一个带有二维码的新登录页面,如上所示。为了让您设置新用户,我们建议您使用 Play 商店中的 Google Authenticator 应用程序。下载它并从 Play 商店安装,如下面的屏幕截图所示。

下载并安装后,打开它,然后选择“扫描二维码”。

这将打开你的相机。放置相机来读取二维码,您将在手机上看到一个代码。这是 Teleport 登录页面上的“双因素令牌”。输入用户的新密码,然后在“双因素令牌”下输入手机上的代码,然后点击“创建帐户“。

如果一切顺利,新用户将被引入仪表板,如下所示:

令人惊奇的东西对吧!

添加节点到 teleport 集群

当您之前设置 Teleport 时,我们在 teleport.yaml 文件中为节点和应用程序配置了强静态令牌。添加节点成为集群的一部分现在相当容易。我们将在此步骤中使用此令牌。首先,在目标节点上安装 Teleport,然后使用如下所示的命令启动它。

$ sudo teleport start --roles=node \
 --token=f7adb7ccdf04037bcd2b52ec6010fd6f0caec94ba190b765 \
 --auth-server=teleport.computingforgeeks.com:3025

[NODE]         Service 5.0.0:v5.0.0-0-gac4971801 is starting on 0.0.0.0:3022.

在运行此命令之前检查并更新 auth-server、app-name 和 app-uri。

如果出现以下错误,请删除您尝试添加到集群的节点上的 /var/lib/teleport 文件夹,然后再次重新运行上面的命令。

Node failed to establish connection to cluster: Get "https://172.20.192.38:3025/v1/webapi/find": x509: certificate signed by unknown authority. time/sleep.go:148

当您重新登录 Teleport Web-UI 时,您应该能够看到服务器列表上的第二个节点,如下所示

通过 Teleport Web-UI 登录服务器

您可以在 Web 界面上轻松访问服务器的终端。您只需单击“连接”按钮,然后选择将连接到服务器的正确用户。这将允许您通过 SSH 连接到服务器并以您选择的用户身份访问终端。由于我们在本例中只添加了 root 用户,因此我们将单击它

浏览器将打开一个新选项卡并引导我们进入。

结束语

如果你能走到这一步,那你就太了不起了。 Teleport 是一个很有前景的项目,它结合了您一直羡慕的环境中拥有的所有安全功能。它不仅为服务器提供服务,还管理 Kubernetes 集群等等。请在 Teleport Page 上查看并享受。

否则,今天是节日前夕,尽管我们仍然被新冠病毒的乌云笼罩,但我们祝愿您在与亲人一起庆祝时安全健康。您可以继续阅读下面分享的更多内容

在 CentOS 8 上安装和使用 Guacamole 远程桌面

©2015-2025 Norria support@norria.com