Rocky Linux 9 で Teleport Cluster をセットアップする方法


このページでは

  1. 前提条件
  2. Rocky Linux 9 への Teleport のインストール
  3. テレポート サーバーの構成
  4. テレポート ユーザーの追加
  5. コマンド ラインによるテレポート クラスタの管理
  6. テレポート クラスタへのノードの追加
    1. テレポート管理ダッシュボードからノードを追加する
    2. ノードを手動で追加する

    Teleport は、グローバル インフラストラクチャのアクセス プレーンとして使用できるオープンソースです。サーバー、Kubernetes クラスター、データベース サーバー、AWS マネジメント コンソールなどの DevOps アプリケーション、CI/CD、バージョン管理、デスクトップなど、さまざまなサービスへのゼロトラスト アクセスを提供します。 Teleport はアクセスのための信頼できる唯一の情報源であり、インフラストラクチャ全体で同期されます。

    Teleport は、グローバル コンピューティング インフラストラクチャにアクセスするための単一のゲートウェイを提供することで、VPN の必要性を排除できます。これは、インフラストラクチャに安全にアクセスできるようにするアイデンティティ ネイティブ アクセス プロキシです。

    Teleport は、Cure53 や Doyensec などのセキュリティ企業による公的監査を受けています。 Teleport は現在、Samsung、NASDAQ、IBM、Epic Games などの企業によって展開され、製品として使用されています。

    このチュートリアルでは、Rocky Linux 9 サーバーで Teleport を介してインフラストラクチャのアクセス プレーンをセットアップして保護します。 Teleport をインストールし、Teleport クラスターを初期化し、Teleport Web サービスを有効にし、Teleport ユーザーを追加してから、さまざまな方法でノード/サーバーを Teleport クラスターに追加します。

    このチュートリアルを完了すると、Teleport 経由でのみアクセスできる安全なサーバー インフラストラクチャが完成します。また、ローカル ノード/サーバーで SSH アクセスを無効にすることもできます。

    前提条件

    このチュートリアルを完了するには、次の要件が必要です。

    • Rocky Linux 9 サーバー - この例では、ホスト名 teleport-rocky とサーバー IP アドレス 192.168.5.100 の Rocky Linux を使用しています。
    • sudo/root 管理者権限を持つ root 以外のユーザー。
    • サーバーの IP アドレスを指すドメイン名。
    • SSL 証明書の生成 - Certbot と Letsencrypt を介して無料の SSL 証明書を生成できます。
    • SELinux が permissive モードで実行されています。
    • Two Fact Authentication アプリケーション - デスクトップの 2FA プラグインで KeepassXC を使用できます。電話ユーザーには、Aegis (Android ユーザー) または Google 認証 (iOS ユーザー) を使用できます。

    また、Teleport クラスターに追加するサーバー/ノードも必要です。任意の Linux ディストリビューションを使用できますが、この例では、ホスト名が client1client2 の 2 つの追加の Rocky Linux サーバーを使用しています。

    Rocky Linux 9 に Teleport をインストールする

    Teleport は、インフラストラクチャにアクセスするための安全な方法を提供するアプリケーションです。ゲートウェイを介して、Linux サーバー、Kubernetes クラスター、データベース サーバー、アプリケーション、およびデスクトップに安全にアクセスできます。

    Teleport をインフラストラクチャのアクセス プレーンとして設定するには、Teleport リポジトリをシステムに追加してからインストールします。 RHEL ベースのディストリビューションの場合、公式の Teleport リポジトリから Teleport をインストールできます。

    以下の dnf コマンドを実行して、Teleport リポジトリを Rocky Linux システムに追加します。次に、アクティブなリポジトリのリストを確認します。

    sudo dnf config-manager --add-repo https://rpm.releases.teleport.dev/teleport.repo
    sudo dnf repolist

    Teleport リポジトリがシステムで利用できるようになりました。

    以下の dnf コマンドを使用して Teleport パッケージをインストールします。確認を求めるプロンプトが表示されたら、y を入力して ENTER を押します。

    sudo dnf install teleport

    Teleport パッケージは、/usr/local/bin ディレクトリにインストールする必要があります。以下のコマンドを実行して、Teleport でコマンド ラインのリストを確認します。

    ls /usr/local/bin/

    teleporttshtctl などのテレポート コマンド ラインを使用する必要があります。

    次に、次のコマンドを使用して、/usr/local/bin ディレクトリを sudoers secure_path に追加します。これにより、最初に sudo を使用して Teleport コマンド ラインを実行できます。

    echo "Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin" > /etc/sudoers.d/secure_path
    sudo chmod 440 /etc/sudoers.d/secure_path

    最後に、以下のコマンドで Teleport のバージョンを確認します。

    sudo teleport version
    sudo tsh version
    sudo tctl version

    スクリーンショットのような出力が表示されるはずです: これで、Rocky Linux システムに Teleport v11 がインストールされました。

    Teleport をインストールしたら、Teleport Cluster を初期化して構成します。

    テレポート サーバーの構成

    Teleport を使用するには、まず Teleport 自体を構成する必要があります。ただし、その前に、ドメイン名がサーバーの IP アドレスを指していること、および SSL 証明書を生成済みであることを確認する必要があります。この例では、ディレクトリ /etc/letsencrypt/live/teleport.hwdomain.io で利用可能な Letsencrypt のドメイン名 teleport.hwdomain.io と SSL 証明書を使用します。

    Teleport をインストールしたら、Teleport クラスターを初期化し、Teleport クラスターを管理するための管理ダッシュボードを提供する Teleport Web サービスを有効にします。最後に、Teleport サービスを開始して有効にします。

    まず、以下のテレポート コマンドを実行して、テレポート サーバーの構成を初期化します。また、ドメイン名、クラスター名、および SSL 証明書、公開鍵と秘密鍵の両方のパスを必ず変更してください。

    sudo teleport configure -o file \
    --cluster-name=teleport.hwdomain.io \
    --public-addr=teleport.hwdomain.io:443 \
    --cert-file=/etc/letsencrypt/live/teleport.hwdomain.io/fullchain.pem \
    --key-file=/etc/letsencrypt/live/teleport.hwdomain.io/privkey.pem

    ターミナル画面に、次のような出力が表示されるはずです - Teleport 構成ファイルは /etc/teleport.yaml ファイルに生成されます。

    次に、以下の nano エディター コマンドを使用して、Teleport 構成ファイル /etc/teleport.yaml を開きます。

    sudo nano /etc/teleport.yaml

    次の行をファイルに追加します。これらの行で、Teleport ドメイン名 teleport.hwdomain.io で実行される Teleport Web サービスを有効にします。

    app_service:
      enabled: yes
      apps:
      - name: "teleport-webapp"
        uri: "http://localhost:9000"
        public_addr: "teleport.hwdomain.io"

    終了したら、ファイルを保存して閉じます。

    次に、以下の systemctl コマンド ユーティリティを実行して、システムで Teleport サービスを開始して有効にします。

    sudo systemctl start teleport
    sudo systemctl enable teleport

    Teleport サービスが実行され、有効になっている必要があります。次のコマンドを実行して、Teleport サービスが実行されていることを確認します。

    sudo systemctl status teleport

    次のような出力が表示されます - The Teleport service is running and its enabled. これは、Teleport サービスが起動時に自動的に実行されることを意味します。

    Teleport サービスが実行されているので、Web ブラウザから Teleport にアクセスできるはずです。ただし、その前に、Teleport サービスで使用されるいくつかのポートを開く必要があります。 Teleport Cluster の詳細ポートのリストについては、Teleport Network ページを確認してください。

    以下の firewall-cmd コマンドを実行して、Teleport で使用されるポートを追加します。

    sudo firewall-cmd --add-port={443/tcp,3021/tcp,3022/tcp,3025/tcp,3028/tcp} --permanent

    ここで、firewalld をリロードして変更を適用し、firewalld ルールのリストを確認します。

    sudo firewall-cmd --reload
    sudo firewall-cmd --list-all

    次のような出力が得られたことを確認します。

    最後に、Web ブラウザーを開き、Teleport ドメイン名 (例: https://teleport.hwdomain.io/) にアクセスします。 Teleport のインストールが成功すると、Teleport ログイン ページが表示されます。

    次のステップでは、コマンド ラインと管理ダッシュボードを介して Teleport Cluster を管理するために使用できる Teleport ユーザーを作成して設定します。

    テレポートユーザーの追加

    この時点で、Teleport Cluster が実行されており、その上で Web サービスが有効になっています。この手順では、Teleport クラスターの管理に使用される Teleport ユーザーを作成してセットアップします。

    開始する前に、2FA アプリケーションがデバイスにインストールされていることを確認してください。デスクトップには KeepassXC、Android には Aegis、iOS には Google 認証を使用できます。

    まず、teleport-rocky サーバーで次のコマンドを実行して、新しい Teleport ユーザーを作成します。これにより、役割 editoraccess を持つ新しいユーザー teleport-admin が作成されます。フラグ --logins により、teleport-admin はユーザー rootrocky、またはec2 ユーザー--login フラグの背後にあるユーザーは、ターゲット ノードで作成する必要があります。

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

    次のような出力が表示されます - Teleport ユーザー teleport-admin が作成され、新しいユーザーの構成に使用されるリンクが生成されます。

    生成されたリンクを Web ブラウザーにコピーすると、Teleport ユーザーをセットアップするためのウェルカム メッセージが表示されます。 GET STARTED ボタンをクリックして、新しい Teleport ユーザーをセットアップします。

    Teleport ユーザーのユーザー名を入力し、パスワードを入力します。強力で覚えやすいパスワードを使用していることを確認してください。 [次へ] をクリックして続行します。

    ユーザー名とパスワードを設定したら、Teleport ユーザーの 2 要素認証を設定します。

    Teleport セットアップ ページで QR コードをスキャンし、生成された OTP コードを入力します。次に、[送信] をクリックして確認します。

    OTP コードが正しければ、Registration Successful というメッセージが表示されます。これで、新しい Teleport ユーザーのパスワードと 2FA が構成されました。

    [ダッシュボードに移動] をクリックします。

    これで、Teleport デプロイメントの Web 管理ダッシュボードが表示されます。このダッシュボードは、HTTPS が有効な状態で安全に実行され、2FA が有効な状態でユーザーが作成されます。

    コマンド ラインによる Teleport Cluster の管理

    Teleport パッケージには、/usr/local/bin ディレクトリで使用できるコマンド ライン ts および tctl が含まれています。

    tsh コマンドを使用すると、ユーザーは端末から Teleport Cluster を認証および管理できます。クラスターで Teleport リソースを追加、編集、または削除できます。セキュリティのため、tsh コマンドは root 以外のユーザーとして実行する必要があります。
    Teleport Auth Service をセットアップおよび構成するための tctl コマンド。これは、sudo または root 権限で実行する必要があります。

    このステップでは、コマンド ライン tshtctl の両方を使用して Teleport Cluster にアクセスし、管理します。

    まず、以下のコマンドで root 以外のユーザーでログインします。この例では、ユーザー rocky を使用しています。

    su - rocky

    以下の tsh コマンドを実行して、Teleport クラスターへの認証を行います。この例では、ドメイン名 teleport.hwdomain.io でユーザー teleport-admin を使用して実行されるテレポート クラスターに対して認証を行います。

    tsh login --proxy=teleport.hwdomain.io --user=teleport-admin

    teleport-admin ユーザーのパスワードを入力し、OTP 認証コードを入力するよう求められます。ユーザーの正しいパスワードと、2FA アプリケーションからの正しい OTP コードを入力します。

    成功して認証されると、Teleport クラスターへの詳細な接続が次のように表示されます。

    以下の tsh コマンドを使用して、テレポート クラスターへの現在の接続を確認することもできます。これにより、上のスクリーンショットと同じ出力が生成されます。

    tsh status

    tsh 経由でテレポート クラスターに認証されたので、ターミナル経由でテレポートのリソースを管理できるようになりました。

    以下の tsh コマンドを実行して、Teleport クラスターで使用可能なホスト/ノード/サーバーのリストを確認します。

    tsh ls

    以下の tsh コマンドを使用して、Teleport Cluster で有効なアプリケーションを確認します。

    tsh apps ls

    出力では、テレポート クラスタ (teleport-rocky) で 1 つのノードが使用可能であり、アプリケーション teleport-webapp が有効になっていることがわかります。

    次に、以下のように tsh コマンドを使用して、テレポート クラスターで使用可能なノードにログインすることもできます。これにより、ユーザー root または rocky で tsh コマンドを介して teleport-rocky にログインすることになります。

    tsh ssh 

    次のような出力が表示されるはずです。両方の tsh コマンドを使用すると、tsh コマンドを介して teleport-rocky に正常にログインできます。

    tctl コマンドの場合、最初に sudo を付けて実行する必要があります。以下の tctl コマンドを実行して、テレポート クラスタで利用可能なノード/サーバーを確認します。

    sudo tctl nodes ls

    次のステップでは、Web 管理ダッシュボードを介して自動的に、またはコマンド ラインを介して手動で、2 つの異なる方法でノード/サーバーをテレポート クラスターに追加する方法を学習します。

    テレポート クラスタへのノードの追加

    ノード/サーバーを Teleport Cluster に追加するには、サーバーが到達可能であることを確認する必要があります。ノード/サーバーをテレポート クラスタに追加するには、2 つの異なる方法を使用できます。

    この手順では、2 つの異なるノードをテレポート クラスターに追加します。 Web 管理ダッシュボードから生成されるインストーラー スクリプトを介してノード client1 を追加し、client2 ノードを >コマンドライン

    Teleport Administration Dashboard によるノードの追加

    開始する前に、以下の firewall-cmd コマンドを実行して、client1 ノードでいくつかのポートを開きます。

    sudo firewall-cmd --add-port={3021/tcp,3022/tcp,3025/tcp} --permanent

    ここで、firewalld をリロードして変更を適用し、client1 ノードの firewalld ルールのステータスを確認します。

    sudo firewall-cmd --reload
    sudo firewall-cmd --list-all

    次に、このような出力を受け取ります。

    次に、Teleport Web 管理ダッシュボードにアクセスし、[サーバーの追加] ボタンをクリックします。

    追加するリソース タイプを選択します。 Kubernetes クラスター、データベース サーバー、アプリケーション、およびデスクトップを追加できます。 SERVERS を選択してリソース タイプ サーバーを追加し、[次へ] をクリックします。

    client1 ノードの追加に使用できる、生成されたインストーラー スクリプトとコマンド ラインが表示されます。生成されたコマンド ラインをコピーします。

    ここで、client1 ノードにログインし、sudo コマンドを使用してルート権限にアクセスし、生成されたコマンド ラインを client1 ノードに貼り付けて実行します。これにより、生成されたスクリプトがダウンロードされ、client1 ノードで実行されます。

    端末に次のような出力が表示されます。インストーラ スクリプトは、生成されたトークンとテレポート クラスタの CA ピンを使用して client1 ノードを追加します。また、インストーラー スクリプトは現在のオペレーティング システムを検出し、Teleport パッケージを自動的にインストールし、Teleport 構成 /etc/teleport.yaml ファイルを生成します。

    プロセスが完了すると、次のような出力が表示されます。 client1 ノードのテレポート サービスも自動的に開始され、有効になります。

    Teleport Web 管理ダッシュボードに戻ると、The server successfully Joined this Teleport cluster などのメッセージが表示されます。 [次へ] をクリックして続行します。

    client1 ノードへのアクセスを許可するユーザー名を入力します。 client1 ノードでユーザーが使用可能であり、作成されていることを確認します。 [次へ] をもう一度クリックして続行します。

    最後に、Web 管理ダッシュボードで利用可能な手順を使用して、client1 ノードへの接続を確認できます。

    • まず、ログインに使用するユーザーを選択します。
    • 次に、ステップ 2 で [TEST SERVER] ボタンをクリックし、すべてのテストがチェックされ、完了としてマークされていることを確認します。
    • 最後に、[START SESSION] ボタンをクリックすると、Web ブラウザに新しいタブが自動的に開き、選択したユーザーを介して client1 ノードにアクセスします。

    以下は、ステータスが成功した Test Connection セクションのスクリーンショットです。

    以下は、ステップ 3 で START SESSION を介して client1 ノードにログインした後のスクリーンショットです。

    [完了] をクリックしてプロセスを完了します。

    その後、Teleport Web 管理ダッシュボードにリダイレクトされ、client1 ノードが Teleport クラスターに追加されていることがわかります。

    さらに、tsh および tctl コマンド ラインを使用して、テレポート クラスタのノード/サーバーのリストを確認することもできます。

    teleport-rocky に戻り、次のコマンドを実行して、Teleport クラスタのノード/サーバーのリストを確認します。

    sudo tctl nodes ls

    次のような出力が表示されます。client1 ノードが使用可能で、テレポート クラスタに追加されています。

    最後に、以下の tsh コマンドを実行して、ユーザー rocky として client1 ノードにログインします。 Teleport 経由で client1 ノードにログインする必要があります。

    tsh ssh 

    以下は、Teleport 経由で client1 ノードにログインした後のターミナル画面です。

    これを念頭に置いて、Teleport Web 管理ダッシュボードから生成されたインストーラー スクリプトを介して、client1 ノード/サーバーを Teleport クラスターに自動的に追加しました。

    ノードを手動で追加する

    次に、次の手順で client2 ノードをテレポート クラスタに手動で追加します。

    • テレポート クラスタの CA PIN を確認する
    • テレポート トークンを生成する
    • cleint2 ノードでの firewalld のセットアップ
    • client2 ノードへの Teleport のインストールと構成

    始めましょう。

    以下のコマンドを実行して、テレポート クラスターの CA ピン フィンガープリントを確認します。 CA pin フィンガープリントは、client2 ノードの追加に使用されます。

    sudo tctl status

    以下は、受け取るはずの同様の出力です。必ず CA ピンのフィンガープリントをコピーしてください。

    次に、以下の tctl コマンドを実行して、client2 ノードがテレポート クラスターに参加するために使用する新しいトークンを生成します。次に、テレポート クラスターのトークンのリストを確認します。

    sudo tctl nodes add --ttl=30m --roles=node | grep "invite token:" | grep -Eo "[0-9a-z]{32}"
    sudo tctl token ls

    これと同様の出力が表示されるはずです。クライアント 2 ノードがテレポート クラスタに参加するために使用する、生成されたトークンを必ずコピーしてください。

    次に、client2 ノードに接続し、次のコマンドを実行してポートを開きます。

    sudo firewall-cmd --add-port={3021/tcp,3022/tcp,3025/tcp} --permanent

    次のコマンドを使用して、firewalld をリロードし、ポートのリストを確認します。

    sudo firewall-cmd --reload
    sudo firewall-cmd --list-all

    以下は、client2 ノードで開く必要があるポートのリストです。

    以下のコマンドを実行して、Teleport リポジトリを client2 ノードに追加します。

    sudo dnf config-manager --add-repo https://rpm.releases.teleport.dev/teleport.repo
    sudo dnf repolist

    以下は、client2 ノードのリポジトリのリストを確認した後の同様の出力です。

    以下の dnf コマンドを実行して client2 ノードに Teleport をインストールします。プロンプトが表示されたら y を入力し、ENTER を押して続行します。

    sudo dnf install teleport

    また、Teleport リポジトリの GPG キーを受け入れるように求められます。 y を入力し、ENTER を押して確定します。

    Teleport は /usr/local/bin ディレクトリにインストールされます。以下のコマンドを実行して、Teleport バイナリ パッケージのリストを確認します。

    ls /usr/local/bin/

    次のコマンドを実行して、/usr/local/bin ディレクトリを sudoers secure_path に追加します。これにより、sudo または root 権限で Teleport コマンド ラインを実行できます。

    echo "Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin" > /etc/sudoers.d/secure_path
    sudo chmod 440 /etc/sudoers.d/secure_path

    以下のコマンドを使用して、client2 ノードの Teleport のバージョンを確認できます。 Teleport v11 がインストールされていることがわかります。

    sudo teleport version

    次に、以下の nano エディター コマンドを使用して、新しい Teleport 構成ファイル /etc/teleport.yaml を作成します。

    sudo nano /etc/teleport.yaml

    次の行をファイルに追加します。 namenode をノードのホスト名に、token_name を生成したトークンに、proxy_server をテレポート クラスタのドメイン名に、ca_pin< /em> を Teleport Cluster CA ピン フィンガープリントに置き換えます。

    version: v3
    teleport:
      nodename: client2
      data_dir: /var/lib/teleport
      join_params:
        token_name: 30c7156ba908284dbd6000605806f9ab
        method: token
      proxy_server: teleport.hwdomain.io:443
      log:
        output: stderr
        severity: INFO
        format:
          output: text
      ca_pin: sha256:25a6945151b89f10eaf89ac5fe0bd7c88caf77acefce9a4e77edb84737974e4d
      diag_addr: ""
    auth_service:
      enabled: "no"
    ssh_service:
      enabled: "yes"
      commands:
      - name: hostname
        command: [hostname]
        period: 1m0s
    proxy_service:
      enabled: "no"
      https_keypairs: []
      acme: {}

    ファイルを保存し、終了したらエディターを終了します。

    次に、以下の systemctl コマンド ユーティリティを実行して、client2 ノードで Teleport サービスを開始して有効にします。

    sudo systemctl start teleport
    sudo systemctl enable teleport

    次に、以下のコマンドを使用してテレポート サービスを確認します。

    sudo systemctl status teleport

    次のスクリーンショットのような出力が表示されます。client2 ノードのテレポート サービスが構成され、実行され、有効になっています。

    teleport-rocky ターミナルに戻り、そこから利用可能なノード/サーバーのリストを確認します。以下のコマンドを実行して、テレポート クラスターのノードのリストを確認します。

    sudo tctl nodes ls

    client2 ノードが使用可能になり、テレポート クラスタに追加されていることがわかります。

    次に、以下の tsh コマンドを実行して、Teleport SSH 経由で client2 ノードにアクセスします。 Teleport 経由で client2 ノードにログインする必要があります。 rocky ユーザーが client2 ノードで使用できることを確認します。

    tsh ssh 

    以下は、Teleport 経由で client2 ノードにログインした後に得られる出力です。

    Teleport Web 管理ダッシュボードに戻ると、Teleport クラスターで client2 ノードが使用可能になっていることがわかります。

    最後に、client2 ノードの CONNECT ボタンをクリックして起動し、client2 に接続します。これで、Teleport Web 管理ダッシュボードを介して client2 ノードにログインする必要があります。

    これを念頭に置いて、Teleport トークンを生成し、Teleport クラスターの CA ピン フィンガープリントを使用し、Teleport パッケージをインストールし、Teleport 構成ファイルを作成することにより、client2 ノードを手動で追加および構成しました。

    結論

    サーバー インフラストラクチャはテレポート クラスターによって保護され、すべてのノードで SSH サービスを無効にして、テレポート サーバーからのアクセスのみを許可できるようになりました。これで、Teleport Cluster を Rocky Linux 9 サーバーにインストールする方法と、Teleport をセットアップするための基本的な構成について学習しました。

    また、2 要素認証を有効にして Teleport ユーザーをセットアップする方法と、Teleport クラスターを管理するために Teleport コマンド ライン (TSH および tctl) を使用する方法も学びました。

    最後に、2 つの異なる方法を使用して、client1 と client2 の 2 つのノードを正常に構成し、テレポート クラスターに追加しました。 1 つ目の方法は、Teleport Web 管理ダッシュボードによって生成されたインストーラー スクリプトを使用する方法です。 2 番目の方法は、ターゲット マシンに Teleport をインストールして構成することにより、手動でノード/サーバーを追加することです。