TT Lab
はじめる
学ぶ 学習パス コース

閉域網の現場 — 防衛ドメイン

閉域網で調査し持ち出し用の要約を作る

TT Labで続きを見る

目標

インターネットがなく、パッケージのインストールもできないPodの中で、障害の原因を見つけ出し、その結果をネットワークの外に持ち出せる形にして、持ち出し申請書まで書きます。

なぜ重要なのか

このPodは、エアギャップ環境を真似ているのではなく、実際にエアギャップ環境です。curlは外に出られず、pip installは失敗します。そのため、ここで学ぶのはコツではなく順序です。持っているものの一覧を先に作り、ないという事実を終了コードで固定し、異なる2つの記録を時間軸に置いて原因を絞り込みます。そして、外に持ち出すものは、原本を消してではなく、空のファイルから選んで詰めて作ります。消して作ると必ず1つ残り、残った1つは、何度読み直しても見えません。

ステップ

  1. python3で/root/airgap/app.log(600行)と/root/airgap/change.log(4行)を作ります。シードが固定された生成スクリプトをそのまま使ってください。
  2. curlとpip3 installを実際に実行して終了コードを確認し、使えるツールを8個以上数えて、/root/airgap/offline.txtに書きます。
  3. /root/airgap/triage.txtに、全体の行数、ERROR行の数、最初のエラー時刻、最も多いerrコード、構成変更時刻(17:42)より前のエラー数を書きます。
  4. /root/airgap/cause.txtに、事件直前の変更の識別子・項目・変更前の値・変更後の値、変更と最初のエラーの間隔(分)、エラー行から書き写した根拠を書きます。
  5. /root/airgap/sensitive.txtに、アカウント・社員番号・ホスト名・内部IP・連絡先・作業者識別子の一意な個数を書きます。
  6. /root/airgap/release/summary.txtに持ち出し用の要約を書きます。8行以上40行以下で、判断に必要な事実だけを入れます。
  7. /root/airgap/forbidden.txtに、原本から抽出した禁止トークンの一覧を作り、要約と突き合わせた結果を/root/airgap/release/selfcheck.txtに書きます。
  8. /root/airgap/release/request.mdに、6つの節からなる持ち出し申請書を書き、/root/airgap/release/summary.sha256で完全性を付けます。

参考

調査対象をネットワークの中で作る

python3で/root/airgap/app.log(600行)と/root/airgap/change.log(4行)を作ります。シードが固定された生成スクリプトをそのまま使ってください。

外から取ってくるサンプルがないので、python3で自分で作ります。乱数のシードが固定されていてはじめて、全員が同じ事件を見て、互いの判断を突き合わせられます。

エアギャップ環境であるという事実を証拠で固定する

curlとpip3 installを実際に実行して終了コードを確認し、使えるツールを8個以上数えて、/root/airgap/offline.txtに書きます。

curlとpipを実際に1回ずつ実行して、終了コードを書いてください。ツールの一覧は、command -vで実際にあるものだけを書きます。ない道具を書いた一覧は、次の人を欺きます。

事件の区間を確定する

/root/airgap/triage.txtに、全体の行数、ERROR行の数、最初のエラー時刻、最も多いerrコード、構成変更時刻(17:42)より前のエラー数を書きます。

全体の行数、ERROR行の数、最初のエラー時刻、最も多いerrコード、そして構成変更時刻(17:42)より前の区間のエラー数を数えます。最後の数字が、変更を原因として指し示せるかどうかを分けます。

2つのログを時間でつないで原因を指し示す

/root/airgap/cause.txtに、事件直前の変更の識別子・項目・変更前の値・変更後の値、変更と最初のエラーの間隔(分)、エラー行から書き写した根拠を書きます。

change.logから事件直前の変更を探し、その時刻と最初のエラー時刻の間隔を分で計算してください。根拠は推測ではなく、エラー行が直接教えてくれる値から取ります。

持ち出し審査の対象を種類別に数える

/root/airgap/sensitive.txtに、アカウント・社員番号・ホスト名・内部IP・連絡先・作業者識別子の一意な個数を書きます。

出現回数ではなく、一意な値の個数です。そして、審査の対象はapp.logだけではありません。change.logにも、1つの種類が隠れています。

持ち出し用の要約を作る

/root/airgap/release/summary.txtに持ち出し用の要約を書きます。8行以上40行以下で、判断に必要な事実だけを入れます。

原本を開いて消していかないでください。空のファイルから始めて、判断に必要な事実だけを書き写せば、書き写さなかったものは、そもそも存在しません。40行を超えたら、要約ではありません。

禁止トークンの一覧で自己検証する

/root/airgap/forbidden.txtに、原本から抽出した禁止トークンの一覧を作り、要約と突き合わせた結果を/root/airgap/release/selfcheck.txtに書きます。

6種類を、app.logとchange.logの両方から抽出して、sort -uでまとめます。突き合わせは、grepの-F(固定文字列)と-f(一覧ファイル)で行います。そして、この一覧は持ち出しディレクトリに置きません。

持ち出し申請書と完全性を付ける

/root/airgap/release/request.mdに、6つの節からなる持ち出し申請書を書き、/root/airgap/release/summary.sha256で完全性を付けます。

6つの節が必要です。完全性の節には、要約のSHA-256を書き、同じ値をハッシュファイルとしても残します。要約を1文字でも直したら、両方を計算し直さなければなりません。