5.5. TLS 暗号化リモートロギングの設定
デフォルトでは、Rsyslog はプレーンテキスト形式でリモートロギング通信を送信します。シナリオでこの通信チャネルのセキュリティーを確保する必要がある場合は、TLS を使用して暗号化できます。
TLS を介した暗号化されたトランスポートを使用するには、サーバーとクライアントの両方を設定します。サーバーは、クライアントシステムにより送信されたログを収集し、分析します。
ossl ネットワークストリームドライバー (OpenSSL) または gtls ストリームドライバー (GnuTLS) のいずれかを使用できます。
ネットワークに接続されていない、厳格な認可を受けているなど、セキュリティーが強化された別のシステムがある場合は、その別のシステムを認証局 (CA) として使用します。
サーバー側では global、module、input レベルで、クライアント側では 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 記事 (Red Hat ナレッジベース) を参照してください。
-
手順
クライアントシステムから暗号化したログを受信するようにサーバーを設定します。
-
/etc/rsyslog.d/ディレクトリーに、新規ファイル (securelogser.confなど) を作成します。 通信を暗号化するには、設定ファイルに、サーバーの証明書ファイルへのパス、選択した認証方法、および TLS 暗号化に対応するストリームドライバーが含まれている必要があります。
/etc/rsyslog.d/securelogser.confに以下の行を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記GnuTLS ドライバーが必要な場合は、
StreamDriver.Name="gtls"設定オプションを使用します。x509/nameよりも厳密ではない認証モードの詳細は、rsyslog-docにインストールされているドキュメントを参照してください。オプション: 接続設定をカスタマイズするには、
inputセクションを次のものに置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用するドライバーに応じて、
<driver>をosslまたはgtlsに置き換えます。 -
<ca1>は CA 証明書に、<server1_cert>は証明書に、<server1_key>はカスタマイズされた接続の鍵に、それぞれ置き換えます。
-
使用するドライバーに応じて、
-
変更を
/etc/rsyslog.d/securelogser.confファイルに保存します。 /etc/rsyslog.confファイルの構文と/etc/rsyslog.d/ディレクトリー内のすべてのファイルを確認します。rsyslogd -N 1
# rsyslogd -N 1 rsyslogd: version 8.1911.0-2.el8, config validation run (level 1)... rsyslogd: End of config validation run. Bye.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Rsyslogサービスがロギングサーバーで実行中で、有効になっていることを確認します。systemctl status rsyslog
# systemctl status rsyslogCopy to Clipboard Copied! Toggle word wrap Toggle overflow rsyslogサービスを再起動します。systemctl restart rsyslog
# systemctl restart rsyslogCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: Rsyslog が有効になっていない場合は、再起動後に
rsyslogサービスが自動的に起動されることを確認してください。systemctl enable rsyslog
# systemctl enable rsyslogCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
暗号化したログをサーバーに送信するようにクライアントを設定するには、以下のコマンドを実行します。
-
クライアントシステムで、
/etc/rsyslog.d/ディレクトリーに、新規ファイル (securelogcli.confなど) を作成します。 /etc/rsyslog.d/securelogcli.confに以下の行を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記GnuTLS ドライバーが必要な場合は、
StreamDriver.Name="gtls"設定オプションを使用します。オプション: 接続設定をカスタマイズするには、
actionセクションを次のものに置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用するドライバーに応じて、
<driver>をosslまたはgtlsに置き換えます。 -
<ca1>は CA 証明書に、<client1_cert>は証明書に、<client1_key>はカスタマイズされた接続の鍵に、それぞれ置き換えます。
-
使用するドライバーに応じて、
-
変更を
/etc/rsyslog.d/securelogcli.confファイルに保存します。 /etc/rsyslog.confファイルの構文と/etc/rsyslog.d/ディレクトリー内のその他のファイルを確認します。rsyslogd -N 1
# rsyslogd -N 1 rsyslogd: version 8.1911.0-2.el8, config validation run (level 1)... rsyslogd: End of config validation run. Bye.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Rsyslogサービスがロギングサーバーで実行中で、有効になっていることを確認します。systemctl status rsyslog
# systemctl status rsyslogCopy to Clipboard Copied! Toggle word wrap Toggle overflow rsyslogサービスを再起動します。systemctl restart rsyslog
# systemctl restart rsyslogCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: Rsyslog が有効になっていない場合は、再起動後に
rsyslogサービスが自動的に起動されることを確認してください。systemctl enable rsyslog
# systemctl enable rsyslogCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
クライアントシステムで、
検証
クライアントシステムがサーバーにメッセージを送信することを確認するには、以下の手順に従います。
クライアントシステムで、テストメッセージを送信します。
logger test
# logger testCopy to Clipboard Copied! Toggle word wrap Toggle overflow サーバーシステムで、
/var/log/messagesログを表示します。以下に例を示します。cat /var/log/remote/msg/<hostname>/root.log Feb 25 03:53:17 <hostname> root[6064]: test
# cat /var/log/remote/msg/<hostname>/root.log Feb 25 03:53:17 <hostname> root[6064]: testCopy to Clipboard Copied! Toggle word wrap Toggle overflow <hostname>はクライアントシステムのホスト名です。ログには、logger コマンドを入力したユーザーのユーザー名 (この場合はroot) が含まれていることに注意してください。