CentOS8でSSHの画面入出力を記録する

sshのような暗号化された通信であっても、ターミナルでの入出力をすべて記録することができます。

今回はCentOS8を使いssh通信を記録する方法について解説します。

CentOSでターミナル入出力を記録する方法

ターミナル入出力の記録はtlogでおこなうことができます。

tlogのインストールと使い方

tlogはdnfコマンドでインストールできます。

[root@centos8 ~]# dnf install -y tlog

ターミナル入出力を記録する

ターミナルの入出力を記録するにはtlog-recコマンドを使います。「-o」オプションを付けるとファイルに書き出すことができ、このファイルを使って後で再生できます。

tlog-recコマンドを実行すると記録が開始します。いくつかコマンドを実行した後、exitを実行すると記録は停止します。

ターミナル入出力を再生する

ターミナル入出力を再生するにはtlog-playコマンドを実行します。「-i」オプションで再生したいファイル名を指定します。

tlog-playコマンドで再生すると記録している際とまったく同じ画面入出力が再生されます。たとえば1秒ごとにコマンドを実行していれば、再生したときも1秒ごとにコマンドを実行している様子が再生されます。

再生時は次のコマンドで再生画面をコントールできます。

スペース or p一時停止/再開
}再生速度を上げる(最大16倍速)
{再生速度を下げる(最大1/16倍速)
BackSpace再生速度を1倍に戻す
.次のパケットに飛ばす(長い間画面出力がない場合に便利)
q再生を終了する

Cockpitでターミナル入出力の記録を管理する

Cockpitを使うとGUIで管理できるようになります。これはとても便利なのでおすすめです。

Cockpitのインストールと設定

cockpitをdnfでインストールします。

[root@centos8 ~]# dnf install -y cockpit

インストールが完了したらCockpitを起動します。

[root@centos8 ~]# systemctl start cockpit

cockpitを起動したらWEBブラウザで接続します。接続先は「https://<IPアドレス>:9090」です。ポート番号に9090を指定してください。

Cockpit WEB UIログイン画面

WEBブラウザにログイン画面が表示されたらroot権限でログインし、左側メニューの「Session Recording」をクリックして矢印の先にある「Configuration」のボタンをクリックします。

Session RecordingのConfigurationをクリックする

設定画面の初期値は以下のようになっています。

Session RecordingのConfiguration設定画面

最低限、赤丸で囲った3カ所の設定を確認してください。

1番のNoticeはユーザーに画面入出力を記録していることを警告するメッセージを指定しています。

2番のWriterはログの出力先を指定しています。初期値はJournalです。この他にSyslogとFileが指定できます。

3番のScopeは記録対象の範囲を指定します。

記録する範囲を指定する

「All」にするとすべてのユーザーのターミナル入出力を記録します。今回はSomeを選択して特定ユーザーのみ記録するようにしてみましょう。

ユーザー「shj」のみ記録する

上記のようにScopeで「Some」を選択すると「Users」と「Groups」が入力できるようになります。例としてユーザー名「shj」を設定しました。

設定したら「Save」ボタンをクリックします。

記録できていることを確認する

それではユーザー「shj」でログインしていくつかのコマンドを実行してみます。

ユーザー「shj」でログインするとCockpitで設定したとおり「ATTENTION! Your session is being recorded!」とメッセージが表示されます。

WEBブラウザでCockpiを表示させ、左側メニューの「Session Recording」をクリックすると記録されていることがわかります。

ユーザー「shj」の接続が記録されている

ターミナル入出力を再生するには再生したいセッションをクリックします。そして再生ボタンをクリックすると以下のようにターミナル入出力の様子を見ることができます。

SSHの画面入出力を再生している様子

コマンドで再生する

Cockpitは初期設定ではJournalに記録します(他にはSyslogとFileが選択可能)。

Journalで記録されたファイルはコマンドでも再生できます。コマンドで再生する場合はtlog-playコマンドに「-r journal」でJournalを指定して「-M TLOG_REC=<ID>」オプションでIDを指定します。

IDはCockpitの画面で確認できます。以下の赤枠で囲った箇所がIDです。

ID番号を控える

このIDを使ってtlog-playで再生するには以下のようにします。

まとめ

このようなツールは企業の監査やインシデント対応で役に立つはずです。

実行したコマンドやターミナル入出力をテキスト形式で記録している会社は多いかと思いますが、このように後からその場にいるように再生させることができるツールがあることを知っておくと選択肢の幅が広がるかと思います。

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)