Apache GuacamoleでsshやRDP接続時の操作を記録する(テキストor動画)

以前にも触れたことのある、HTML5の踏み台サーバであるApache Guacamole。 ssh接続時のターミナル操作のログを記録することもできるため、今回はそれを行う。

取得できるログは2種類で、「Typescript(テキストベース)」および「Screen Recording(動画で取得)」のパターン。 当たり前ではあるのだが、テキストベースはsshやtelnetでしか取れない。

今回利用するGuacamoleのバージョンは0.9.9とする。 0.9.9の場合、テキストやビデオでの操作ログの取得は簡単で、Webの設定画面から行える。

Guacamoleでは、接続先ごとにログを記録するかどうか、記録先のPATHやログ名の設定が行える。 [SETTINGS] > [Connections]から対象のサーバの設定画面を開いて、[PARAMETERS]で対象の設定を行う。以下の画面はssh接続の場合。

それぞれの設定項目は簡単で、以下のようになっている。

  • (Typescript|Recording) path: … ログや録画したデータを配置するディレクトリ
  • (Typescript|Recording) name: … ログや録画したデータの名称
  • Automatically create (typescript|recording) path: … 指定された配置先ディレクトリを自動的に作成するかどうか

ちなみに、こちらにあるように配置先ディレクトリやファイル名には変数が利用できる。 残念ながら接続先のホスト名は変数で用意されていない様子。 設定自体が接続先ごとに行われるから、それでどうにかするって感じだろうか。

  • ${GUAC_USERNAME} … 接続されたGuacamoleのユーザ名
  • ${GUAC_PASSWORD} … 接続されたGuacamoleユーザのパスワード(これいるの?使いどころが不明なのだが…)
  • ${GUAC_DATE} … 接続日(YYYYMMDD)
  • ${GUAC_TIME} … 接続時刻(HHMMSS)

というわけで、設定するログファイルの名称例としては、以下のようにするといいのかなと。

  • ${GUAC_DATE}-${GUAC_TIME}_接続先名_${GUAC_USERNAME}.log

上記設定を保存後は、接続したら自動的にログが出力されるようになる。

ちなみに、Screen Recordingの場合は一度ファイルを変換してm4vにすると再生できる。

guacenc 対象の録画データファイルPATH

変換後は、管理者がどこかに保管しておいて、随時閲覧すればよいだろう。 テキストよりも容量が大きくなるはずなので、退避を的確にしないといけないが、RDPやVNC接続であったとしても操作を記録できるのは素晴らしい。