セッションの録画
Red Hat Enterprise Linux 8 でのセッションの録画ソリューションの使用
概要
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
Jira からのフィードバック送信 (アカウントが必要)
- Jira の Web サイトにログインします。
- 上部のナビゲーションバーで Create をクリックします。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- ダイアログの下部にある Create をクリックします。
第1章 RHEL でセッションの録画を開始 リンクのコピーリンクがクリップボードにコピーされました!
1.1. RHEL でセッションの録画 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux 8 のセッションの録画ソリューションは、tlog パッケージに基づいています。tlog パッケージと関連する Web コンソールセッションプレーヤーを使用して、ユーザーの端末セッションを録画および再生できます。SSSD サービスを介して、ユーザーごと、またはユーザーグループごとに録画を行うように設定できます。端末の入出力はすべて収集され、テキスト形式でシステムジャーナルに保存されます。
raw パスワードやその他の機密情報を傍受しないように、端末入力の録画はデフォルトで無効になっています。端末入力の録画をオンにすると、入力したすべてのパスワードがプレーンテキストでキャプチャーされます。
このソリューションを使用すると、セキュリティーの影響を受けるシステムでユーザーセッションを監査できます。また、セキュリティー違反が発生した場合は、フォレンジック分析の一環として録画したセッションを確認できます。管理者は、RHEL 8 システムでセッションの録画をローカルに設定できます。録画されたセッションは、Web コンソールインターフェイス、または端末で tlog-play コマンドを使用して確認できます。
1.2. セッションの録画用コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
セッションの録画ソリューションには、tlog ユーティリティー、SSSD サービス、および Web コンソールの埋め込みユーザーインターフェイスという 3 つの主要コンポーネントがあります。
- tlog
-
tlogユーティリティーは、端末の入出力 (I/O) を録画および再生するプログラムです。ユーザーの端末とユーザーシェルの間にtlog-rec-sessionツールを挿入し、JSON メッセージとして通過したすべてのものをログに記録します。 - SSSD
- SSSD (System Security Services Daemon) は、リモートディレクトリーと認証メカニズムへのアクセスを管理する一連のデーモンを提供します。セッションの録画を設定する際に、SSSD を使用して、録画するユーザーまたはユーザーグループを指定できます。これらの設定は、コマンドライン (CLI) または RHEL 8 Web コンソールインターフェイスから設定できます。
- RHEL 8 Web コンソール埋め込みインターフェイス
- セッションの録画ページは、RHEL 8 Web コンソールインターフェイスの一部で、録画したセッションの管理に使用できます。
録画したセッションにアクセスするには、管理者権限が必要です。
1.3. セッションの録画の制限 リンクのコピーリンクがクリップボードにコピーされました!
これは、セッションの録画ソリューションにおける最も重要な制限です。
- root ユーザーは録画プロセスを回避できるため、root ユーザーの録画は信頼できません。
-
セッションの録画は、
Gnome 3グラフィカルセッションで端末を録画しません。グラフィカルセッションには全端末に監査セッション ID が 1 つあり、tlogは端末を区別できず、録画が繰り返し行われなくなるため、グラフィカルセッションでの端末の録画はサポートされません。 セッションの録画が
journalにログを記録するように設定されると、録画したユーザーは、システムジャーナルまたは/var/log/messagesの表示結果を録画する動作を確認できます。表示によりログが生成され、画面に出力されるため、セッションの録画によりこのアクションが録画され、さらに録画が生成されるため、出力が繰り返しあふれます。この問題を回避するには、以下のコマンドを使用します。
journalctl -f | grep -v 'tlog-rec-session'
# journalctl -f | grep -v 'tlog-rec-session'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力を制限するように tlog を設定することもできます。詳細は、man ページの
tlog-recまたはtlog-rec-sessionを参照してください。リモートアクセスコマンドを実行するユーザーを録画するには、ターゲットホストでそのユーザーのセッションの録画を設定する必要があります。たとえば、以下のリモートアクセスコマンドを録画するには、
clientホストでadminユーザーのセッションの録画を設定する必要があります。ssh admin@client rm -f /some/file
ssh admin@client rm -f /some/fileCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
journalは、RHEL 8 ではデフォルトでインメモリーに保存されるため、すべての録画は再起動時に失われます。録画をエクスポートする場合は、Exporting recorded sessions to a file を参照してください。
第2章 RHEL Web コンソールへのセッションの録画のデプロイ リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、Red Hat Enterprise Linux Web コンソールにセッションの録画ソリューションをデプロイする方法を説明します。
セッションの録画ソリューションをデプロイするには、以下のパッケージをインストールする必要があります。
-
tlog - SSSD
-
cockpit-session-recording
2.1. tlog のインストール リンクのコピーリンクがクリップボードにコピーされました!
tlog パッケージをインストールします。
手順
以下のコマンドを使用します。
yum install tlog
# yum install tlogCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2. cockpit-session-recording のインストール リンクのコピーリンクがクリップボードにコピーされました!
基本的な Web コンソールパッケージは、デフォルトで Red Hat Enterprise Linux 8 に同梱されます。セッションの録画ソリューションを使用できるようにするには、cockpit-session-recording パッケージをインストールして、システムで Web コンソールを起動または有効にする必要があります。
手順
cockpit-session-recordingをインストールします。yum install cockpit-session-recording
# yum install cockpit-session-recordingCopy to Clipboard Copied! Toggle word wrap Toggle overflow システムで Web コンソールを起動または有効にします。
systemctl start cockpit.socket systemctl enable cockpit.socket
# systemctl start cockpit.socket # systemctl enable cockpit.socketCopy to Clipboard Copied! Toggle word wrap Toggle overflow あるいは、以下のような場合もあります。
systemctl enable cockpit.socket --now
# systemctl enable cockpit.socket --nowCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. CLI からの SSSD を使用したユーザーおよびグループのセッションの録画の有効化 リンクのコピーリンクがクリップボードにコピーされました!
SSSD を使用して認証する場合は、コマンドラインからユーザーおよびグループのセッションの録画を設定できます。
手順
sssd-session-recording.conf設定ファイルを開きます。vi /etc/sssd/conf.d/sssd-session-recording.conf
# vi /etc/sssd/conf.d/sssd-session-recording.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記Web コンソールインターフェイスで設定ページを開くと、
sssd-session-recording.confファイルが自動的に作成されます。セッションの録画の範囲を指定するには、scope オプションに以下のいずれかの値を入力します。
-
noneは、セッションを録画しません。 -
someは、指定したセッションのみを録画します。 -
allは、すべてのセッションを録画します。
-
-
(オプション): スコープを
someとして設定する場合は、ユーザーとグループの名前をコンマ区切りのリストに追加します。 SSSD プロファイルを有効にするには、次のコマンドを実行します。
authselect select sssd with-files-domain
# authselect select sssd with-files-domainCopy to Clipboard Copied! Toggle word wrap Toggle overflow
例2.1 SSSD の設定
次の例では、example1 ユーザー、example2 ユーザー、および examples グループでセッションの録画を有効にします。
[session_recording] scope = some users = example1, example2 groups = examples
[session_recording]
scope = some
users = example1, example2
groups = examples
2.4. Web UI で SSSD を使用したユーザーおよびグループのセッションの録画の有効化 リンクのコピーリンクがクリップボードにコピーされました!
SSSD を認証に使用する場合は、RHEL 8 Web コンソールでユーザーおよびグループにセッションの録画を設定できます。
手順
-
localhost:9090を入力するか、お使いの IP アドレス<IP_ADDRESS>:9090をブラウザーに入力して、RHEL 8 Web コンソールにローカルに接続します。 RHEL 8 Web コンソールにログインします。
重要録画したセッションを表示するには、管理者権限が必要です。
- 左側のメニューのセッションの録画ページに移動します。
右上の歯車ボタンをクリックします。
SSSD 設定テーブルにパラメーターを設定します。ユーザーおよびグループのリストをコンマで区切ります。
例2.2 SSSD を使用して録画したユーザーの設定
2.5. SSSD を使用しないユーザー向けセッションの録画の有効化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat では、コマンドラインから、または RHEL 8 Web コンソールから直接、SSSD を使用して記録されたユーザーを設定することを推奨しています。
SSSD がなければ、ポリシーを集中管理することはできません。管理者は各システム上の各ユーザーのシェルを個別に設定する必要があるため、複数のシステムにわたって拡張することが困難になります。exclude_users や exclude_groups などのグループベースの設定や除外も利用できません。さらに、Cockpit Session Recording などのツールは SSSD と連携するように設計されているため、SSSD がないと期待どおりに機能しない可能性があります。
SSSD を使用せずにセッション記録を有効にするには、記録するユーザーのシェルを
/usr/bin/tlog-rec-sessionに変更します。sudo usermod -s /usr/bin/tlog-rec-session <user_name>
# sudo usermod -s /usr/bin/tlog-rec-session <user_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow システムは
、tlog-rec-session.confファイルの設定を使用して、ユーザーの作業シェルを決定します。
2.6. 録画したセッションのファイルへのエクスポート リンクのコピーリンクがクリップボードにコピーされました!
録画したセッションおよびそのログをエクスポートして、コピーできます。
次の手順では、録画したセッションをローカルシステムにエクスポートする方法を説明します。
前提条件
systemd-journal-remoteパッケージをインストールします。yum install systemd-journal-remote
# yum install systemd-journal-remoteCopy to Clipboard Copied! Toggle word wrap Toggle overflow
手順
`/tmp/dir などのエクスポートされた録画セッションを保存するディレクトリーを作成します。
mkdir /tmp/dir
# mkdir /tmp/dirCopy to Clipboard Copied! Toggle word wrap Toggle overflow journalctl -o exportコマンドを実行して、tlog 録画に関連するシステムジャーナルエントリーをエクスポートします。journalctl _COMM=tlog-rec _COMM=tlog-rec-sessio -o export | /usr/lib/systemd/systemd-journal-remote -o /tmp/dir/example.journal -
# journalctl _COMM=tlog-rec _COMM=tlog-rec-sessio -o export | /usr/lib/systemd/systemd-journal-remote -o /tmp/dir/example.journal -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記COMM=tlog-rec-sessioCOMM 名は、15 文字の制限により短縮されます。
第3章 録画したセッションの再生 リンクのコピーリンクがクリップボードにコピーされました!
録画したセッションを再生する方法は 2 つあります。
-
tlog-playツール - RHEL 8 Web コンソール (Cockpit とも呼ばれる)
3.1. tlog-play で再生 リンクのコピーリンクがクリップボードにコピーされました!
tlog-play ツールを使用して、端末でセッションの録画を再生できます。tlog-play ツールは、tlog-rec ツールで録画した端末の入出力を再生するプログラムです。これは、そのターミナルの録画を再生しますが、録画したファイルのサイズを変更することはできません。このため、再生ターミナルが適切な再生を行うには、録画した端末のサイズと一致させる必要があります。tlog-play ツールは、/etc/tlog/tlog-play.conf 設定ファイルからパラメーターを読み込みます。これらのパラメーターは、man ページの tlog-play に記載されているコマンドラインオプションで上書きできます。
3.2. Web コンソールで再生 リンクのコピーリンクがクリップボードにコピーされました!
RHEL 8 Web コンソールには、録画したセッションを管理するインターフェイスがあります。録画したセッションのリストがあるセッションの録画ページから直接、確認するセッションを選択できます。
例3.1 録画したセッションリストの例
Web コンソールプレーヤーは、ウィンドウのサイズ変更に対応します。
3.3. tlog-play で録画したセッションの再生 リンクのコピーリンクがクリップボードにコピーされました!
エクスポートされたログファイルまたは Systemd Journal からセッションの録画を再生できます。
ファイルから再生
セッションは、録画中および録画後に、ファイルから再生できます。
tlog-play --reader=file --file-path=tlog.log
# tlog-play --reader=file --file-path=tlog.log
ジャーナルからの再生
通常、-M (または --journal-match) オプション、-S (または --journal-since) オプション、および -U (または --journal-until) オプションを使用し、ジャーナルの一致とタイムスタンプの制限を使用して、ジャーナルログエントリーを選択して再生できます。
ただし、実際には、ジャーナルからの再生は、通常、TLOG_REC ジャーナルフィールドに対する 1 つの一致で行われます。TLOG_REC のフィールドには、ログに記録した JSON データからコピーした rec フィールドが含まれます。これは、録画におけるホスト固有の ID です。
ID は、TLOG_REC フィールド値から直接取得するか、JSON の rec フィールドの MESSAGE フィールドから取得できます。どちらのフィールドも、tlog-rec-session ツールから送信されるログメッセージの一部です。
手順
- 次のコマンドを実行すると、録画全体を再生できます。
tlog-play -r journal -M TLOG_REC=<your-unique-host-id>
# tlog-play -r journal -M TLOG_REC=<your-unique-host-id>
詳細な手順およびドキュメントは、man ページの tlog-play を参照してください。
第4章 RHEL システムロールを使用したセッション記録用システムの設定 リンクのコピーリンクがクリップボードにコピーされました!
tlog RHEL システムロールを使用して、管理対象ノード上のターミナルセッションアクティビティーを自動的に記録および監視します。SSSD サービスを使用して、ユーザーまたはユーザーグループごとに記録を行うように設定できます。
tlog RHEL システムロールのセッション記録ソリューションは、次のコンポーネントで設定されています。
-
tlogユーティリティー - System Security Services Daemon (SSSD)
- オプション: Web コンソールインターフェイス
4.1. tlog RHEL システムロールを使用して個々のユーザーのセッション記録を設定する リンクのコピーリンクがクリップボードにコピーされました!
Ansible Playbook を準備して適用し、RHEL システムがセッション記録データを systemd ジャーナルに記録するように設定します。
これにより、特定のユーザーのセッション中、ユーザーがコンソールにログインしたとき、または SSH 経由でログインしたときに、そのユーザーの端末出力と入力を記録できるようになります。
Playbook は、ユーザーのログインシェルとして機能するターミナルセッション I/O ロギングプログラム である tlog-rec-session をインストールします。このロールは SSSD 設定ドロップファイルを作成し、このファイルはログインシェルを使用するユーザーとグループを定義します。さらに、cockpit パッケージがシステムにインストールされている場合、Playbook は cockpit-session-recording パッケージもインストールします。これは Cockpit モジュールの 1 つであり、Web コンソールインターフェイスでの記録の表示と再生を可能にするものです。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow tlog_scope_sssd: <value>-
some値は、allまたはnoneではなく、特定のユーザーとグループのみを記録することを指定します。 tlog_users_sssd: <list_of_users>- セッションを記録するユーザーの YAML リスト。ロールでは、ユーザーが存在しない場合はユーザーが追加されないことに注意してください。
Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
SSSD ドロップインファイルの内容を確認します。
cd /etc/sssd/conf.d/sssd-session-recording.conf
# cd /etc/sssd/conf.d/sssd-session-recording.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook に設定したパラメーターがファイルに含まれていることが確認できます。
- セッションを記録するユーザーとしてログインし、いくつかの操作を実行してからログアウトします。
rootユーザーとして以下を実行します。記録されたセッションのリストを表示します。
journalctl _COMM=tlog-rec-sessio Nov 12 09:17:30 managed-node-01.example.com -tlog-rec-session[1546]: {"ver":"2.3","host":"managed-node-01.example.com","rec":"07418f2b0f334c1696c10cbe6f6f31a6-60a-e4a2","user":"demo-user",... ...# journalctl _COMM=tlog-rec-sessio Nov 12 09:17:30 managed-node-01.example.com -tlog-rec-session[1546]: {"ver":"2.3","host":"managed-node-01.example.com","rec":"07418f2b0f334c1696c10cbe6f6f31a6-60a-e4a2","user":"demo-user",... ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のステップでは、
rec(レコーディング ID) フィールドの値が必要になります。_COMMフィールドの値は 15 文字の制限により短縮されることに注意してください。セッションを再生します。
tlog-play -r journal -M TLOG_REC=<recording_id>
# tlog-play -r journal -M TLOG_REC=<recording_id>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2. tlog RHEL システムロールを使用して特定のユーザーとグループをセッション記録から除外する リンクのコピーリンクがクリップボードにコピーされました!
tlog RHEL システムロールの tlog_exclude_users_sssd および tlog_exclude_groups_sssd ロール変数を使用して、ユーザーまたはグループのセッションが systemd ジャーナルに記録およびログ記録されないように除外できます。
Playbook は、ユーザーのログインシェルとして機能するターミナルセッション I/O ロギングプログラム である tlog-rec-session をインストールします。このロールは SSSD 設定ドロップファイルを作成し、このファイルはログインシェルを使用するユーザーとグループを定義します。さらに、cockpit パッケージがシステムにインストールされている場合、Playbook は cockpit-session-recording パッケージもインストールします。これは Cockpit モジュールの 1 つであり、Web コンソールインターフェイスでの記録の表示と再生を可能にするものです。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow tlog_scope_sssd: <value>-
値
allは、すべてのユーザーとグループを記録することを指定します。 tlog_exclude_users_sssd: <user_list>- セッション記録から除外するユーザー名の YAML リスト。
tlog_exclude_groups_sssd: <group_list>- セッション記録から除外するグループの YAML リスト。
Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
SSSD ドロップインファイルの内容を確認します。
cat /etc/sssd/conf.d/sssd-session-recording.conf
# cat /etc/sssd/conf.d/sssd-session-recording.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook に設定したパラメーターがファイルに含まれていることが確認できます。
- セッションを記録するユーザーとしてログインし、いくつかの操作を実行してからログアウトします。
rootユーザーとして以下を実行します。記録されたセッションのリストを表示します。
journalctl _COMM=tlog-rec-sessio Nov 12 09:17:30 managed-node-01.example.com -tlog-rec-session[1546]: {"ver":"2.3","host":"managed-node-01.example.com","rec":"07418f2b0f334c1696c10cbe6f6f31a6-60a-e4a2","user":"demo-user",... ...# journalctl _COMM=tlog-rec-sessio Nov 12 09:17:30 managed-node-01.example.com -tlog-rec-session[1546]: {"ver":"2.3","host":"managed-node-01.example.com","rec":"07418f2b0f334c1696c10cbe6f6f31a6-60a-e4a2","user":"demo-user",... ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のステップでは、
rec(レコーディング ID) フィールドの値が必要になります。_COMMフィールドの値は 15 文字の制限により短縮されることに注意してください。セッションを再生します。
tlog-play -r journal -M TLOG_REC=<recording_id>
# tlog-play -r journal -M TLOG_REC=<recording_id>Copy to Clipboard Copied! Toggle word wrap Toggle overflow