インシデント発生後の最初の1時間
RoamSwitch が深刻な脅威を検知して、封じ込めを行ったあとの1時間に、どの機能を、どの順番で使うかをまとめました。
1. このページについて
RoamSwitch は、深刻な脅威を検知すると、ネットワークの隔離(Air-Gap)や、プロセスの凍結といった封じ込めを自動で行います。このページは、そのあと、何を確かめて、何を記録して、いつ解除するかの順番を、環境ごとにまとめたものです。画面や操作の細かい説明は、各マニュアルを見てください。
RoamSwitch の機能の使い方を説明するページです。組織としての連絡や、法的な対応、復旧の計画までは扱いません。
2. どの環境でも、同じ順番
封じ込めは、何か理由があって発動しています。あわてて解除する前に、次の順番で進めます。
- 確認する。何が、いつ、どの順で検知されたかを、時系列で見ます。
- 記録する。解除や再起動の前に、ログと証拠を保存します。解除や再起動のあとでは、動いていたときの状態が分からなくなることがあります。
- 判断する。心当たりのある操作だったのか、本当に不審な動きだったのかを判断します。
- 解除する。安全を確認してから、封じ込めを解除します。
- 見守る。解除したあと、同じ検知がまた出ないかを、しばらく確認します。
ログから調べるときは、6. の PersonalSOC と AccessScope も使えます。
ARPなりすましで隔離されたときは、8. も読んでください。
Linux のデスクトップ版で、ランサムウェアが原因のときは、9. も読んでください。
隔離中は、そのパソコンで、このページを開けません。Mac では「隔離の状態と解除の案内」の画面に、Linux のデスクトップ版では、解除の確認画面に、このページの QR コードが出ます。別の回線につないだスマホで読み取ると、このページを読めます。QR コードの中身は、このページの公開の URL だけです。
3. Mac版
- メニューバーの 🛡️ アイコンを開いて、「🔒 隔離中(全面)」か「🔒 隔離中(縮退)」の表示を確認します。
- 「ℹ️ 隔離の状態と解除の案内…」を開いて、発動した理由を読みます。
- 🛡️ → Macセキュリティ総合診断 → 「📈 セキュリティアクティビティログ…」を開きます。期間を絞り、重要度やカテゴリで絞り込んで、直前に何が検知されたかを、時系列で見ます。グラフの棒をクリックすると、その時間帯だけに絞り込めます。
- Pro では、絞り込んだ結果を、CSV に書き出して残せます。
- 「🧾 プロセス実行の記録…」(Pro)を事前にオンにしてあった場合は、起動したプロセスの履歴も、調査に使えます。この記録は、既定ではオフです。
- ランサムウェアや XProtect の検知で隔離が働くと、隔離の直前に、証拠保全のデータが自動で保存されます。中身は、実行中のプロセスの一覧、ネットワークの接続、最近変更されたファイルの一覧で、ファイルごとの SHA-256 も記録します。保存先は
~/Library/Application Support/RoamSwitch/incident-evidence/です。パケットキャプチャは、Mac では取れません。 - 心当たりのある操作がなかったかを、振り返ります(不審なアプリの起動など)。
- 同じメニューから「🔓 Air-Gap隔離を解除する」を選び、確認ダイアログで「解除する」を選ぶと、その場で通信が戻ります。
ランサムウェアの被害の場合は、🛡️ → マルウェア対策 (XProtect & ClamAV) → 「🗂 ランサムウェア復旧…」(Pro)を開きます。RoamSwitch が定期的に取っている APFS のローカルスナップショットから、ファイルを別の場所(~/RoamSwitch-Recovered/<ID>/)へ取り出せます。現在のファイルは上書きしません。取り出すには、フルディスクアクセスの許可が要ります。
4. Linux のデスクトップ版
- システムトレイの 🛡️ アイコンを開きます。深刻な脅威でネットワークが隔離されていると、「🚨 Air-Gapを解除して通信を復旧」が表示されます。ここでは、まだ押しません。
- メインウィンドウの「Notifications」で、直近7日間の通知の履歴を見て、何が通知されたかを確認します。
- 「Incident Timeline」(実験的な機能)で、検知から対応、解除までの流れを、時系列で見ます。
- 「Security Activity Log」で、期間、カテゴリ、重要度、キーワードを組み合わせて絞り込み、直前の出来事を調べます。Incident Timeline と Notifications の内容が、1つの画面にまとまっています。
- 心当たりのある操作がなかったかを振り返り、安全を確認できたら、トレイの「🚨 Air-Gapを解除して通信を復旧」を押します。
5. Linux Server Edition
Server Edition は、コマンドで操作します。 ここで説明するコマンドは、Linux のデスクトップ版でも使えます(sudo roamswitch server ack だけは、Server Edition 用です)。高信頼度の隔離(カナリア改ざん、ランサムウェア的な大量書き換え、eBPF の Critical / Emergency / Alert など)は、確認応答(ack)も、原因の消滅の確認もないまま、既定で3600秒(1時間)たつと、縮退(DEGRADED)モードに移ります。縮退モードでは、保守用の SSH ポートと、許可した IP の管理経路以外の新規通信は遮断されたままで、時間がたっても自動では開きません。
5.1 通知を確認する
Telegram、LINE、Webhook を設定していれば、そこに通知が届いています。設定していなくても、直近1週間の通知は、ローカルに残っています。
roamswitch notifications
5.2 隔離の状態を見る
eBPF ランタイムガードの、現在の隔離の状態と、検知済みのインシデントの履歴を表示します。
roamswitch server ebpf
5.3 凍結されたプロセスを確認する
ガードが SIGSTOP で凍結しているプロセスの一覧です。証拠を記録するまで、再開しません。
roamswitch frozen list
5.4 証拠を記録する
eBPF ランタイムガードがプロセス単位の封じ込めをしたときは、証拠保全バンドルが、自動で作られます。内容は、約30秒のパケットキャプチャと、PID が分かるときの /proc/<pid> のスナップショットです(tshark が無い環境では、パケットキャプチャだけが省かれます)。保存先は /var/lib/roamswitch/incident-evidence/<タイムスタンプ>-<ID>/ です。
ホスト全体を隔離した場合は、現時点では、自動では作られません。その場合や、封じ込めの前の状態を残したいときは、手動で取得します。
sudo roamswitch-incident-capture snapshot --pid <PID> --reason "first-response"
5.5 時系列と実行の記録を書き出す
統合インシデントタイムライン(実験的)を、JSON Lines で書き出します。実行レコーダーは、期間やプロセスで検索できます。
roamswitch timeline --export incident.jsonl
sudo roamswitch events search --since 2h
5.6 判断して、解除する
誤検知で凍結されたプロセスは、次のコマンドで再開します(resume all で全件)。
roamswitch frozen resume <PID>
同じ誤検知を恒久的に許可する場合は、許可リストに追加します。実行ファイルのパスに結びつける --exe を付けると、プロセス名の偽装では回避できません。
sudo roamswitch server allowlist add <rule> <process> --exe <path>
隔離には、確認応答を返します。FULL 隔離中は、厳格な隔離を保ったまま確認応答します(運用者が対応を引き受けた扱いになり、縮退への移行と自動解除が止まります)。縮退中は、確認応答が解除を意味します。
sudo roamswitch server ack
5.7 締め出されたとき
クラウド事業者の Web 管理コンソール(VNC やシリアルコンソール)からログインして、緊急隔離を解除します。既定では、保守用の SSH ポートと管理元 IP の管理セッションは、隔離中も残ります。
sudo roamswitch emergency-restore
5.8 あとで整理する
証拠バンドルは、自動では削除されません。保持期間(既定30日)を過ぎた古いものは、次のコマンドで削除します。
sudo roamswitch-incident-capture prune --keep-days 30
6. ログから調べる(PersonalSOC と AccessScope)
RoamSwitch には、ログを調べるための別のツール、PersonalSOC と AccessScope が同梱されています。どちらも読み取り専用で、設定の変更も、通信の遮断もしません。分析は、ネットワークを使わずに、この端末の中だけで行うので、隔離中でも使えます。
6.1 PersonalSOC: この端末のログと検知をまとめる
この端末の認証ログ(Mac は sudo と sshd、Linux は auth.log、auditd、nginx、apache など)と、RoamSwitch の未解決の検知を読み、リスクの目安、時系列、IOC(IP、ドメイン、URL、ハッシュ)を、1つの報告にまとめます。
sudo personalsoc scan --report
6.2 AccessScope: アクセスログから攻撃を探す
Web サーバーと SSH などのアクセスログから、総当たり、Web シェル、攻撃の連なり、いつもと違う場所からのログイン成功などを、証拠の行番号と確度(確定、可能性が高い、仮説)つきで示します。侵害そのものは断定しません。
sudo accessscope scan --auto --since 24h --report report.md
sudo を付けて実行してください。sudo を付けないと、読めないログは「読めない」と出て、報告は「読めたログがありません」になります。この「検知なし」は、安全の証明ではありません。どちらのツールも、自分で権限を上げることはありません。6.3 どの段階で使うか
- 確認する、判断する: 上の2つで、検知の前後に何があったかを、証拠つきで見ます。攻撃が続いているか、成功した疑いがあるかが、解除してよいかを判断する材料になります。
- 見守る: 解除したあと、AccessScope を次のコマンドで繰り返し実行すると、前回から新しく出た検知だけが表示されます。
sudo accessscope scan --auto --since 24h --since-last --new-only
7. 終わったあとに
解除したあとは、同じ検知が再び出ないかを、タイムライン(Mac では「セキュリティアクティビティログ」)で、しばらく見ます。書き出した記録と、証拠のバンドルは、削除せずに保管します。
パスワードや鍵の交換、関係先への連絡といった、RoamSwitch の外で行う対応は、このページの範囲外です。
8. ARPなりすましで隔離されたとき
公衆Wi-Fiなどで、同じネットワークの攻撃者が、ルーターのふりをして、通信を盗み見ようとするのが、ARPなりすましです。RoamSwitch は、ゲートウェイ(ルーター)の MAC アドレスの急な変化などを検知します。Mac と Linux のデスクトップ版で、考え方は同じです。
- 隔離される場合。未登録のネットワーク(保護レベルがロックダウン)で、ゲートウェイに関わる異常を検知すると、自動で隔離します。登録した場所(自宅や職場など)では、自動では隔離しません。警告が出て、「今すぐ全遮断する」を選んだときだけ、隔離します。
- 解除の前に確認すること。アプリの確認画面にも、同じ趣旨の案内が出ます。同じネットワークの別の機器が、ARP を偽装していないか。ゲートウェイの MAC アドレスが、信頼済みのものと一致しているか(Linux の確認画面には、現在の値と、信頼済みの値が出ます)。公衆 Wi-Fi なら、テザリングなど別の回線へ移ってから解除するのが安全です。
- 自動の解除。時間だけでは、解除しません。ゲートウェイの MAC アドレスが、信頼済みの値と一致することを、3回続けて、60秒以上かけて確認できると、自動で解除して、通知します。確認できないまま、既定で1時間たつと、通信を大きく絞った状態(縮退)に移ります。縮退は、時間では開きません。手動で解除します。
- 手動で解除するとき。Mac は、メニューの「Air-Gap隔離を解除する」を使います。Linux のデスクトップ版は、トレイの「Air-Gapを解除して通信を復旧」か、
sudo roamswitch emergency-restoreです。原因が残ったまま解除すると、通信が再開して、同じ影響を受けるので、確認してから解除します。 - 解除したあと。同じ検知が、また出ないかを、しばらく確認します。また出るときは、そのネットワークを使わずに、別の回線へ移ります。
9. ランサムウェアで隔離されたとき(Linux のデスクトップ版)
短い時間に、たくさんのファイルが書き換えられると、RoamSwitch は、ランサムウェアの可能性があるとして、書き換えているプロセスを凍結(SIGSTOP)し、ネットワークを遮断(Air-Gap)します。Air-Gap の確認画面が開き、理由、プロセス、書き換えられたファイルの数が出ます。この節は、Linux のデスクトップ版の場合です。Mac は、3. を読んでください。
- 確認する。確認画面と、通知の履歴で、どのプロセスが、どのファイルを書き換えたかを見ます。凍結されたプロセスは、
roamswitch frozen listでも見られます(5.3)。 - 記録する。解除や再起動の前に、5.4 と 5.5 の手順で、証拠と時系列を保存します。
- 判断する。凍結されたプロセスが、心当たりのある操作(バックアップや圧縮など)なら、誤検知です。
sudo roamswitch frozen resume <PID>で再開します。本物の攻撃なら、再開せずに、証拠を記録したあと、プロセスを終了します。 - ファイルを取り戻す。書き換えられたファイルは、スナップショットから取り出せます。画面なら、サイドバーの「ランサムウェア復旧」タブ(1.11.21 以降)で、「★推奨」の「事前」のスナップショットを選び、「ファイルを取り出す」か「フォルダーを取り出す」を押します。コマンドなら、
sudo roamswitch-ransomware-rollback listで一覧を見て、sudo roamswitch-ransomware-rollback restore-files <ID> <PATH>を使います。対象は、btrfs のサブボリュームか、LVM の論理ボリュームです(ext4 のホームでは使えません)。被害の前のスナップショットは、既定で、6時間ごとに、自動で取られます。検知した時点のスナップショットも、自動で取られますが、暗号化済みのファイルを含むので、暗号化の前へ戻す用途には使えません。現在のファイルは、上書きされません。取り出したファイルは、既定で、<対象>/RoamSwitch-Recovered/<ID>/に置かれます。全体を巻き戻すrestoreは、現在の状態を上書きするので、最後の手段です(コマンドだけ)。 - 解除する。時間だけでは、解除されません。原因が消えたことを確認できたとき、または、トレイの「Air-Gapを解除して通信を復旧」か
sudo roamswitch emergency-restoreで解除したときだけ、解けます。 - 見守る。解除したあと、同じ検知が、また出ないかを確認します。取り出したファイルは、元の場所へ戻す前に、中身を確かめます。