本番サーバへのSSHやWindowsのリモートデスクトップを「誰が・いつ・何をしたか」まで残せていますか。踏み台で経路を絞った先の操作証跡・画面録画を、Apache GuacamoleとOSSを軸に、AWS(SSM Session Manager)との使い分けまで実務目線で整理します。
01「誰が・いつ・何をしたか」を、残せていますか
特権アクセス——本番サーバへのSSH、Windowsへのリモートデスクトップ——を「誰が・いつ・何をしたか」まで残せている組織は、意外と多くありません。踏み台(bastion)を置いて経路を絞るところまでは進んでも、その先の操作証跡・画面録画が抜けていると、監査でもインシデント調査でも詰まります。
操作の記録は、特権アクセス管理(PAM)の中核です。"言った言わない"を消し、内部不正の抑止になり、障害時には「直前に誰が何を触ったか」を数分で辿れる。この記事では、その仕組みをApache GuacamoleとOSSを軸に、AWSでの現実解(SSM Session Manager との使い分け)まで整理します。
踏み台そのものの設計はAWSにおける踏み台環境の考え方、特権アクセスをIDでどう束ねるかはマルチ/ハイブリッドクラウドを「ID」で束ねる考え方もあわせてどうぞ。
02記録には3種類ある — テキスト・画面・イベント
「操作を記録する」と一口に言っても、大きく3種類あり、用途も容量もまるで違います。まずここを分けて考えるのが出発点です。
| 種類 | 記録するもの | 向き・特徴 |
|---|---|---|
| テキスト(キーストローク/typescript) | 端末の入出力をテキストで | 軽量・検索可・可搬。SSH/CLI向き。パスワードが写り得る |
| グラフィカル(画面録画) | 画面の見た目(動画化も可) | RDP/VNCなどGUI向き。容量が大きい。認証情報・個人情報が映る |
| 構造化イベント | 「誰が・いつ・どのコマンド」をイベント化 | 検索・アラート・改ざん検知向き |
03Apache Guacamole の仕組み — ブラウザだけで踏み台になる
Apache Guacamole は、ブラウザ(HTML5)だけで RDP/VNC/SSH に接続できるクライアントレスのリモートデスクトップゲートウェイです。専用クライアントもプラグインも要りません。構成は3つ。
- guacamole-client:Tomcat等の上で動く Java 製Webアプリ。認証・UI・トンネルを担当。
- guacd:プロキシデーモン。RDP/VNC/SSH/Telnet/Kubernetes の各プロトコルを、独自の「Guacamoleプロトコル」に抽象化する。
- guacamole-common-js:ブラウザ側のJSライブラリ。
フローは ブラウザ →(HTTP/WebSocketトンネル)→ guacamole-client → guacd → ターゲット。guacd が全プロトコルを抽象化するため、ブラウザもWebアプリも実際のプロトコルを意識しません。
認証は拡張(extension)で差し替え・多段化できます——データベース(JDBC)/LDAP・Active Directory/SAML/OpenID Connect/TOTP多要素/Duo など。「DB+TOTP」で一次認証+MFAを組むのが定番です。
04Guacamole の録画 — 画面もキーストロークも残せる
Guacamole はセッション録画をネイティブに備えています。プロトコルによって方式が分かれます。
- グラフィカル録画(RDP/VNC):接続パラメータ
recording-path/recording-nameで有効化。記録されるのは動画ではなく「Guacamoleプロトコルのストリーム」。recording-exclude-mouse/recording-exclude-outputで容量を削減、recording-include-keysでキー入力も記録。 - ブラウザ内再生:録画ストレージ拡張を入れると、接続履歴に「View」が出てネイティブ形式のまま再生できる(1.6では再生タイムラインに操作量のヒストグラムを表示)。
- 動画化(guacenc):同梱の
guacencで録画をNAME.m4v(H.264/MP4系)に変換(FFmpeg依存)。 - キーストローク抽出(guaclog):
recording-include-keysで記録した録画にguaclogを実行すると、押下キーを人間可読のテキストログに起こせる。 - SSH/端末(typescript):SSHは画面録画ではなく端末のtypescript(テキスト)として記録(
typescript-path/typescript-name)。UNIXのscript相当。
05OSSの選択肢 — 何を記録し、どう再生するか
Guacamole以外にも、記録の仕組みはいくつもあります。「何を記録するか(テキスト/画面/イベント)」で選ぶのが基本です。
| ツール | 記録するもの | 再生 | 向き・用途 |
|---|---|---|---|
| Apache Guacamole | 画面(RDP/VNC)+SSHのtypescript | ブラウザ/guacenc動画/guaclog | GUI含む踏み台の録画 |
| AWS SSM Session Manager | 端末I/O(テキスト) | CloudWatch/S3のログ | AWSネイティブ・エージェント型(後述) |
| Teleport(OSS) | 構造化イベント+ストリーム(SSH/K8s/DB/Web/デスクトップ) | Web UI/tsh play | ゼロトラストの統合PAM |
| tlog | 端末I/O(JSON) | tlog-play | RHEL標準のセッション録画基盤 |
| script/scriptreplay | 端末I/O+タイミング | scriptreplay | 単一端末の記録(監査は限定的) |
| sudo I/Oログ | sudo実行の入出力 | sudoreplay | 特権コマンド実行の監査 |
| auditd/pam_tty_audit | TTY入力(キーストローク)のみ | aureport --tty | キーストローク監査・コンプラ |
| asciinema | 端末出力(.cast) | asciinema player | デモ・手順共有(監査向けではない) |
log_passwd を付けない、機微操作は録画除外。② 制御文字・端末依存——scriptreplay は記録時と同種の端末でないと正しく再生できない(tlog/asciinemaは構造化で軽減)。③ 肥大化——vim/less/top等の制御シーケンスで膨らむ(JSON化で軽減)。④ GUI非対応——画面の証跡が要るなら Guacamole/Teleportデスクトップ録画。⑤ 改ざん耐性——ローカルファイルは本人が改変可能。集中転送(rsyslog→Elasticsearch、sudo_logsrvd)や専用サーバへ。06AWSでの現実解 — Session Manager を軸に
AWSで踏み台の録画を組むなら、まず押さえるべきは「AWSはGUI録画不可」がもう正確ではないことです。2026年時点の役割分担はこうなります。
- SSM Session Manager:ターミナルのテキスト証跡(コマンドと出力)を CloudWatch Logs/S3 にKMS暗号化で残す。インバウンド不要・VPCエンドポイントで完全閉域可・エージェント型で運用が軽い。ただしGUI画面録画は対象外、SSH/ポートフォワード経由のセッションは記録されない。
- Windows GUI(RDP)の画面録画:Fleet Manager/GUI Connect(Just-in-time node access、2025年〜)でRDPを動画としてS3に録画(KMS暗号化)できるようになった。
- Linux GUI(VNC/X)のネイティブ録画は依然なし → 自ホストの Guacamole/Teleport が必要。
| 観点 | SSM Session Manager | Guacamole(自ホスト) | Teleport |
|---|---|---|---|
| 記録形式 | ターミナルテキスト(GUI動画は本体外/RDPはGUI Connect) | GUI動画+SSHのtypescript | テキスト+RDP画面動画 |
| GUI/RDP対応 | Linux CLI中心/WindowsはGUI Connect | RDP/VNC/SSHをHTML5化 | SSH/RDP/K8s/DB/Web |
| MFA | IdP側で強制(Just-in-timeで都度承認) | TOTP/Duo拡張・LDAP | per-session MFA・SSO |
| 閉域 | VPCエンドポイントで完全閉域 | VPC内自前配置 | VPC内自前配置 |
| 運用負荷 | 低(マネージド) | 中〜高(guacd/DB/変換を自前) | 中(統合PAM運用) |
| 位置づけ | AWSネイティブの接続+監査 | 軽量ブラウザ型リモートデスクトップ | 統合PAM(RBAC/録画暗号化) |
07「録画がある」と「証跡になっている」は違う
録画は残すだけでは証跡になりません。改ざん防止・暗号化・権限分離・保存期間まで設計して、初めて監査やインシデントで使えます。
- S3 Object Lock(WORM)で上書き・削除を防ぐ。Complianceモードはrootでも保持期間中は削除不可(最強)、Governanceモードは特別権限者のみ変更可。Retention(固定期間)+Legal hold(無期限)を併用。
- KMS暗号化+バージョニングを組み合わせる(S3・CloudWatch・セッションデータ)。
- ログ専用アカウントへ集約(AWS Organizations)し、運用アカウントの権限からログを分離する。
そして、混同されがちな"誤解"を最後に。
- CloudTrailはセッション「内」の操作を記録しない——捉えるのは
StartSession等のAPI(誰が・いつ・どのノードへ)。打ったコマンドや出力はセッションログ(S3/CloudWatch)でしか残らない。 - SSH/ポートフォワード経由のセッションは Session Manager ログに残らない。
- 「Session Manager=画面録画」ではない(テキスト証跡が基本)。
- EC2 Instance Connect に録画機能はない(監査はCloudTrailのAPIログのみ)。
08まとめ — 経路を絞った、その先まで
踏み台は"経路を絞る"だけでは半分です。その先の操作証跡・画面録画まで設計して、初めて特権アクセス統制になります。テキストと画面は用途が違い、AWSなら SSM Session Manager(テキスト・閉域)+必要なら GUI Connect(RDP録画)、GUI含む自前なら Guacamole、統合PAMなら Teleport。そして改ざん防止まで含めて初めて証跡です。
EMWは踏み台・特権アクセス・監査基盤の設計を実務で扱ってきました。要件(監査・コンプラ・GUI要否・保存期間)の整理から、過剰でも過少でもない構成を一緒に描きます。
あわせて、踏み台そのものの考え方はAWSにおける踏み台環境の考え方、IDでの束ね方はマルチ/ハイブリッドクラウドを「ID」で束ねる考え方もどうぞ。
09よくある質問(FAQ)
SSM Session Managerで画面録画はできますか?
ターミナルのテキスト(コマンドと出力)は記録できますが、GUIの画面録画は本体の対象外です。Windows RDPの画面録画は2025年からFleet Manager/GUI Connect(Just-in-time node access)でS3に録画できます。Linux GUIのネイティブ録画はなく、自ホストのGuacamole/Teleport等が必要です。
CloudTrailがあれば操作証跡は足りますか?
足りません。CloudTrailはStartSessionなどのAPI呼び出し(誰が・いつ・どのノードへ接続したか)を記録しますが、セッション内で打ったコマンドや出力は含みません。それはS3/CloudWatchのセッションログでしか残りません。
録画にパスワードが写ってしまいます。
キー入力の記録は避け出力主体にする、sudoのlog_passwdを付けない、機微操作時は録画から除外する、stty -echo等で入力を隠す、が基本です。録画自体もKMSで暗号化しアクセスを制御します。
Guacamoleとtlog、どちらを使うべきですか?
GUI(RDP/VNC)の画面録画が要るならGuacamole、Linux CLIの端末I/Oを集中監査したいならtlog(RHEL標準)です。AWSならまずSSM Session Managerで足りることも多く、要件(GUI要否・閉域・運用負荷)で選びます。
踏み台の操作証跡・画面録画・特権アクセス統制の設計でお困りなら、要件(監査・コンプラ・GUI要否・保全)の整理からお手伝いします。
相談する