検索

7.10. ランタイム監視のための Keylime のデプロイ

download PDF

監視対象システムの状態が正しいことを確認するには、Keylime エージェントが監視対象システム上で実行されている必要があります。

重要

Keylime のランタイム監視は、Integrity Measurement Architecture (IMA) を使用して多数のファイルを測定するため、システムのパフォーマンスに重大な影響を与える可能性があります。

エージェントをプロビジョニングするときに、Keylime が監視対象システムに送信するファイルを定義することもできます。Keylime はエージェントに送信されたファイルを暗号化し、エージェントのシステムが TPM ポリシーと IMA 許可リストに準拠している場合にのみ復号化します。

Keylime の除外リストを設定することで、Keylime が特定のファイルまたは特定のディレクトリー内の変更を無視するようにできます。ファイルを除外しても、そのファイルは引き続き IMA によって測定されます。

RHEL 9.3 で提供される Keylime バージョン 7.3.0 以降、許可リストと除外リストは Keylime ランタイムポリシーに統合されます。

前提条件

手順

  1. Keylime エージェントが設定され実行されている監視対象システムで、システムの現在の状態から許可リストを生成します。

    # /usr/share/keylime/scripts/create_allowlist.sh -o <allowlist.txt> -h sha256sum

    <allowlist.txt> を許可リストのファイル名に置き換えます。

    重要

    SHA-256 ハッシュ関数を使用します。SHA-1 は安全ではなく、RHEL 9 で廃止されました。追加情報は、SHA-1 deprecation in Red Hat Enterprise Linux 9 を参照してください。

  2. 生成された許可リストを、keylime_tenant ユーティリティーが設定されているシステムにコピーします。次に例を示します。

    # scp <allowlist.txt> root@<tenant.ip>:/root/<allowlist.txt>
  3. オプション: Keylime の測定から除外するファイルまたはディレクトリーのリストを定義するには、テナントシステム上にファイルを作成し、除外するファイルおよびディレクトリーのパスを入力します。除外リストでは、1 行に 1 つの Python 正規表現を使用できます。特殊文字の完全なリストについては、docs.python.org の Regular expression operations を参照してください。除外リストをテナントシステムに保存します。
  4. 許可リストと除外リストを Keylime ランタイムポリシーに統合します。

    # keylime_create_policy -a <allowlist.txt> -e <excludelist.txt> -o <policy.json>
  5. Keylime テナントが設定されているシステムで、keylime_tenant ユーティリティーを使用してエージェントをプロビジョニングします。

    # keylime_tenant -c add -t <agent_ip> -u <agent_uuid> --runtime-policy <policy.json> --cert default
    • <agent_ip> は、エージェントの IP アドレスに置き換えます。
    • <agent_uuid> は、エージェントの UUID に置き換えます。
    • <policy.json> を Keylime ランタイムポリシーファイルへのパスに置き換えます。
    • --cert オプションを使用すると、テナントは、指定されたディレクトリーまたはデフォルトの /var/lib/keylime/ca/ ディレクトリーにある CA 証明書と鍵を使用して、エージェントの証明書を生成し、署名します。ディレクトリーに CA 証明書と鍵が含まれていない場合、テナントは /etc/keylime/ca.conf ファイルの設定に従ってそれらを自動的に生成し、指定されたディレクトリーに保存します。その後、テナントはこれらの鍵と証明書をエージェントに送信します。

      CA 証明書を生成するとき、またはエージェント証明書に署名するとき、次のメッセージが表示され、CA 秘密鍵にアクセスするためのパスワードの入力を求められる場合があります。Please enter the password to decrypt your keystore:

      証明書を使用したくない場合は、代わりに -f オプションを使用してファイルをエージェントに配信します。エージェントをプロビジョニングするには、空のファイルであっても、ファイルを送信する必要があります。

      注記

      Keylime はエージェントに送信されたファイルを暗号化し、エージェントのシステムが TPM ポリシーと IMA 許可リストに準拠している場合にのみ復号化します。デフォルトでは、Keylime は送信された .zip ファイルを展開します。

    たとえば、次のコマンドを使用すると、keylime_tenant は UUID d432fbb3-d2f1-4a97-9ef7-75bd81c00000 を持つ新しい Keylime エージェントを 127.0.0.1 にプロビジョニングし、policy.json というランタイムポリシーをロードします。また、デフォルトのディレクトリーに証明書を生成し、その証明書ファイルをエージェントに送信します。Keylime は、/etc/keylime/verifier.conf で設定された TPM ポリシーが満たされている場合にのみ、ファイルを復号化します。

    # keylime_tenant -c add -t 127.0.0.1 -u d432fbb3-d2f1-4a97-9ef7-75bd81c00000 --runtime-policy policy.json --cert default
    注記

    # keylime_tenant -c delete -u <agent_uuid> コマンドを使用して、Keylime によるノードの監視を停止できます。

    keylime_tenant -c update コマンドを使用して、すでに登録されているエージェントの設定を変更できます。

検証

  1. オプション: 監視対象のシステムを再起動して、設定が永続的であることを確認します。
  2. エージェントのアテステーションが成功することを確認します。

    # keylime_tenant -c cvstatus -u <agent.uuid>
    ...
    {"<agent.uuid>": {"operational_state": "Get Quote"..."attestation_count": 5
    ...

    <agent.uuid> をエージェントの UUID に置き換えます。

    operational_state の値が Get Quote で、attestation_count が 0 以外の場合、このエージェントのアテステーションは成功しています。

    Operational_state の値が Invalid QuoteFailed の場合、アテステーションは失敗し、次のようなコマンド出力が表示されます。

    {"<agent.uuid>": {"operational_state": "Invalid Quote", ... "ima.validation.ima-ng.not_in_allowlist", "attestation_count": 5, "last_received_quote": 1684150329, "last_successful_attestation": 1684150327}}
  3. アテステーションが失敗した場合は、verifier ログで詳細を表示します。

    # journalctl -u keylime_verifier
    keylime.tpm - INFO - Checking IMA measurement list...
    keylime.ima - WARNING - File not found in allowlist: /root/bad-script.sh
    keylime.ima - ERROR - IMA ERRORS: template-hash 0 fnf 1 hash 0 good 781
    keylime.cloudverifier - WARNING - agent D432FBB3-D2F1-4A97-9EF7-75BD81C00000 failed, stopping polling

関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.