14.5. TLS 暗号化リモートロギングの設定


デフォルトでは、Rsyslog はプレーンテキスト形式でリモートロギング通信を送信します。シナリオでこの通信チャネルのセキュリティーを確保する必要がある場合は、TLS を使用して暗号化できます。

TLS を介した暗号化されたトランスポートを使用するには、サーバーとクライアントの両方を設定します。サーバーは、クライアントシステムにより送信されたログを収集し、分析します。

ossl ネットワークストリームドライバー (OpenSSL) または gtls ストリームドライバー (GnuTLS) のいずれかを使用できます。

注記

ネットワークに接続されていない、厳格な認可を受けているなど、セキュリティーが強化された別のシステムがある場合は、その別のシステムを認証局 (CA) として使用します。

サーバー側では globalmoduleinput レベルで、クライアント側では global および action レベルで、ストリームドライバーを使用して接続設定をカスタマイズできます。より具体的な設定は、より一般的な設定よりも優先されます。そのため、たとえば、ほとんどの接続のグローバル設定で ossl を使用し、特定の接続の入力とアクション設定で gtls を使用することができます。

前提条件

  • クライアントシステムとサーバーシステムの両方に root にアクセスできる。
  • サーバーおよびクライアントシステムに次のパッケージがインストールされている。

    • rsyslog パッケージ
    • ossl ネットワークストリームドライバー用の rsyslog-openssl パッケージ
    • gtls ネットワークストリームドライバー用の rsyslog-gnutls パッケージ
    • certtool コマンドを使用して証明書を生成するための gnutls-utils パッケージ
  • ログサーバーの /etc/pki/ca-trust/source/anchors/ ディレクトリーには、次の証明書があり、update-ca-trust コマンドを使用してシステム設定を更新します。

    • ca-cert.pem - ログサーバーとクライアントで鍵と証明書を検証できる CA 証明書。
    • server-cert.pem - ロギングサーバーの公開鍵。
    • server-key.pem - ロギングサーバーの秘密鍵。
  • ログクライアントでは、次の証明書が /etc/pki/ca-trust/source/anchors/ ディレクトリーにあり、update-ca-trust を使用してシステム設定を更新します。

    • ca-cert.pem - ログサーバーとクライアントで鍵と証明書を検証できる CA 証明書。
    • client-cert.pem - クライアントの公開鍵。
    • client-key.pem - クライアントの秘密鍵。
    • サーバーが RHEL 9.2 以降を実行し、FIPS モードが有効になっている場合、クライアントが Extended Master Secret (EMS) 拡張機能をサポートしているか、TLS 1.3 を使用している必要があります。EMS を使用しない TLS 1.2 接続は失敗します。詳細は、ナレッジベースの記事 TLS extension "Extended Master Secret" enforced を参照してください。

手順

  1. クライアントシステムから暗号化したログを受信するようにサーバーを設定します。

    1. /etc/rsyslog.d/ディレクトリーに、新規ファイル (securelogser.conf など) を作成します。
    2. 通信を暗号化するには、設定ファイルに、サーバーの証明書ファイルへのパス、選択した認証方法、および TLS 暗号化に対応するストリームドライバーが含まれている必要があります。/etc/rsyslog.d/securelogser.conf に以下の行を追加します。

      # Set certificate files
      global(
        DefaultNetstreamDriverCAFile="/etc/pki/ca-trust/source/anchors/ca-cert.pem"
        DefaultNetstreamDriverCertFile="/etc/pki/ca-trust/source/anchors/server-cert.pem"
        DefaultNetstreamDriverKeyFile="/etc/pki/ca-trust/source/anchors/server-key.pem"
      )
      
      # TCP listener
      module(
        load="imtcp"
        PermittedPeer=["client1.example.com", "client2.example.com"]
        StreamDriver.AuthMode="x509/name"
        StreamDriver.Mode="1"
        StreamDriver.Name="ossl"
      )
      
      # Start up listener at port 514
      input(
        type="imtcp"
        port="514"
      )
      注記

      GnuTLS ドライバーが必要な場合は、StreamDriver.Name="gtls" 設定オプションを使用します。x509/name よりも厳密ではない認証モードの詳細は、rsyslog-doc にインストールされているドキュメントを参照してください。

    3. オプション: RHEL 9.4 で提供される Rsyslog バージョン 8.2310 からは、接続設定をカスタマイズできます。これを行うには、input セクションを以下に置き換えます。

      input(
        type="imtcp"
        Port="50515"
        StreamDriver.Name="<driver>"
        streamdriver.CAFile="/etc/rsyslog.d/<ca1>.pem"
        streamdriver.CertFile="/etc/rsyslog.d/<server1-cert>.pem"
        streamdriver.KeyFile="/etc/rsyslog.d/<server1-key>.pem"
      )
      • 使用するドライバーに応じて、<driver>ossl または gtls に置き換えます。
      • <ca1> はカスタマイズする接続の CA 証明書に、<server1-cert> は証明書に、<server1-key> は鍵に置き換えます。
    4. 変更を /etc/rsyslog.d/securelogser.conf ファイルに保存します。
    5. /etc/rsyslog.conf ファイルの構文と /etc/rsyslog.d/ ディレクトリー内のすべてのファイルを確認します。

      # rsyslogd -N 1
      rsyslogd: version 8.1911.0-2.el8, config validation run (level 1)...
      rsyslogd: End of config validation run. Bye.
    6. Rsyslog サービスがロギングサーバーで実行中で、有効になっていることを確認します。

      # systemctl status rsyslog
    7. rsyslog サービスを再起動します。

      # systemctl restart rsyslog
    8. オプション: Rsyslog が有効になっていない場合は、再起動後に rsyslog サービスが自動的に起動されることを確認してください。

      # systemctl enable rsyslog
  2. 暗号化したログをサーバーに送信するようにクライアントを設定するには、以下のコマンドを実行します。

    1. クライアントシステムで、/etc/rsyslog.d/ディレクトリーに、新規ファイル (securelogcli.conf など) を作成します。
    2. /etc/rsyslog.d/securelogcli.conf に以下の行を追加します。

      # Set certificate files
      global(
        DefaultNetstreamDriverCAFile="/etc/pki/ca-trust/source/anchors/ca-cert.pem"
        DefaultNetstreamDriverCertFile="/etc/pki/ca-trust/source/anchors/client-cert.pem"
        DefaultNetstreamDriverKeyFile="/etc/pki/ca-trust/source/anchors/client-key.pem"
      )
      
      
      # Set up the action for all messages
      *.* action(
        type="omfwd"
        StreamDriver="ossl"
        StreamDriverMode="1"
        StreamDriverPermittedPeers="server.example.com"
        StreamDriverAuthMode="x509/name"
        target="server.example.com" port="514" protocol="tcp"
      )
      注記

      GnuTLS ドライバーが必要な場合は、StreamDriver.Name="gtls" 設定オプションを使用します。

    3. オプション: RHEL 9.4 で提供される Rsyslog バージョン 8.2310 からは、接続設定をカスタマイズできます。これを行うには、action セクションを以下に置き換えます。

      local1.* action(
        type="omfwd"
        StreamDriver="<driver>"
        StreamDriverMode="1"
        StreamDriverAuthMode="x509/certvalid"
        streamDriver.CAFile="/etc/rsyslog.d/<ca1>.pem"
        streamDriver.CertFile="/etc/rsyslog.d/<client1-cert>.pem"
        streamDriver.KeyFile="/etc/rsyslog.d/<client1-key>.pem"
        target="server.example.com" port="514" protocol="tcp"
        )
      • 使用するドライバーに応じて、<driver>ossl または gtls に置き換えます。
      • <ca1> はカスタマイズする接続の CA 証明書に、<client1-cert> は証明書に、<client1-key> は鍵に置き換えます。
    4. 変更を /etc/rsyslog.d/securelogcli.conf ファイルに保存します。
    5. /etc/rsyslog.conf ファイルの構文と /etc/rsyslog.d/ ディレクトリー内のその他のファイルを確認します。

      # rsyslogd -N 1
      rsyslogd: version 8.1911.0-2.el8, config validation run (level 1)...
      rsyslogd: End of config validation run. Bye.
    6. Rsyslog サービスがロギングサーバーで実行中で、有効になっていることを確認します。

      # systemctl status rsyslog
    7. rsyslog サービスを再起動します。

      # systemctl restart rsyslog
    8. オプション: Rsyslog が有効になっていない場合は、再起動後に rsyslog サービスが自動的に起動されることを確認してください。

      # systemctl enable rsyslog

検証

クライアントシステムがサーバーにメッセージを送信することを確認するには、以下の手順に従います。

  1. クライアントシステムで、テストメッセージを送信します。

    # logger test
  2. サーバーシステムで、/var/log/messages ログを表示します。以下に例を示します。

    # cat /var/log/remote/msg/<hostname>/root.log
    Feb 25 03:53:17 <hostname> root[6064]: test

    <hostname> はクライアントシステムのホスト名です。ログには、logger コマンドを入力したユーザーのユーザー名 (この場合は root) が含まれていることに注意してください。

関連情報

  • certtool(1)openssl(1)update-ca-trust(8)rsyslogd(8)、および rsyslog.conf(5) man ページ
  • /usr/share/doc/rsyslog/html/index.htmlrsyslog-doc パッケージでインストールされたドキュメント。
  • TLS での logging システムロールの使用
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.