VPNのログイン警告は侵入警告ではない:セッションを見る
普段と違うサインインは見直しのきっかけであり、結論ではない。侵入と呼ぶ前に、認証記録をセッションに、さらにそのセッションが触れたものに結びつける。
新しい国で発火するVPN警告は決定的に見えるが、たいていはそうではない。認証は試行が受け入れられたことを示し、セッションはどの接続がそれを運んだかを示し、リソース記録はその接続の内部で何が起きたかを示す。それぞれ別の問いに答える。三つを一つにまとめるルールは、月曜日に三十件のチケットを生み、金曜日に本物の事例を取りこぼす。
外国のアドレスは答えではなく問いだ
旅行、別の国から出る携帯事業者、企業のWebプロキシ、再割り当てされたキャリアグレードNATプールは、どれも攻撃者を動かさずに見かけの送信元を動かす。サインイン記録が示すのは接続がネットワークにどこから入ったかであり、誰が端末を持っていたかではない。
逆の失敗は静かなのでより悪い。利用者本人の街から使われた盗まれたパスワードは、地理の確認で過去のすべてのサインインと一致するログインを生む。
地理を結論として扱うには測定できるコストがかかる。移動するノートPCは絶え間ないレビューの流れを生み、レビュー担当者は読まずに閉じることを覚え、その習慣は本物の事例が同じ列に来るまで続く。
三種類の記録は三つの異なる問いに答える
導入済みの製品が実際に出すものから始め、製品案内が「出せる」と示唆するものから始めない。認証の判断は、主張された身元、方式、結果を示す。セッションのライフサイクルは、接続、ゲートウェイ、割り当てられたアドレスを開始から停止まで示す。
| Record | Question it answers | What it cannot prove |
|---|---|---|
| Authentication decision | Which identity was accepted or rejected, by which method, at what time | That the person operating the device was the account owner |
| Session lifecycle | Which connection, gateway and assigned address were active, and for how long | What the session did with that access |
| Resource event | Which read, write or denied operation a service observed | Which human behind the session triggered it |
| Policy change | Whether an administrator altered the rule that governs the access | Whether the change was reviewed or intended |
空のセルは収集の欠落であり、無罪放免ではない。リソースのイベントがまったく届かないなら、不審な読み取りがないことはパイプラインに報告することが何もないという意味であり、静かなダッシュボードはネットワークではなくパイプラインを描写している。それらに依存するルールを約束する前に、導入が実際にどの記録を生成するかを書き出し、欠けている各フィードの担当者を名指しする。
会計の詳細は、セッションが検証可能になる場所だ。RFC 2866 に記述された RADIUS 会計は、セッション識別子に紐づく開始・停止・中間の更新を運ぶので、開始があり停止がないセッションは謎ではなく、名前を付けられる欠落だ。
ユーザー名ではなくセッションで結合する
一つのアカウントは同時に複数のセッションを正当に保持する。ノートPC、携帯電話、夜通し接続したままの実験機だ。そのユーザー名のすべてのイベントを結合すると三台の端末が一つの物語に溶け、その組み合わせを侵害として読むことになる。割り当てアドレスも再利用されるので、セッション終了後もアドレスに一致し続ける結合は、先月の端末を今日のインシデントに引きずり込む。アドレスの隣にセッションキーを保持し、一致をセッションが実際に覆った時間枠に限定する。
サービスが見る前に翻訳が元の送信元を削除する場合、その境界で生き残る身元を使う。相互TLSのサブジェクトやシングルサインオンの表明などだ。アドレスと人の間に一対一の対応をでっち上げるのは、手間が増えただけの同じ誤りだ。
所有者のいない警告はダッシュボードだ
どのルールにも条件、それを生む無害な説明、集めるべき証拠、行動する人が要る。繰り返される管理操作の拒否、失敗パスワードの急増、沈黙する収集器は、それぞれ別の時計を持つ三つの異なるインシデントだ。
通知は封じ込めではなく、配布リストは何も制限しない。稼働中のセッションを変えるには、それができる構成要素が要る。接続を落とすゲートウェイか、セッションを取り消すIDプロバイダーだ。古いフィードや欠けた停止記録もルールの文面に属する。一日中何も送っていない収集器は、ダッシュボードからは静かなネットワークとまったく同じに見えるからだ。違いはパイプラインそのものの中にしか現れない。
静かな一週間を信じる前に収集経路を確認する
一つのルールを調整する前に、パイプラインを端から端まで証明する。以下のコマンドは、認証と会計のリスナーが動いていること、テスト資格情報が正しい理由で拒否されること、セッションのイベントが今も届いていることを確認する。
ss -uanp | grep -E ':(1812|1813)\b' radtest alice 'not-the-password' 127.0.0.1 0 testing123 journalctl -u openvpn-server@server --since '-30 min' | grep -c 'Peer Connection Initiated' timedatectl | grep -E 'System clock|synchronized'
テストからの Access-Reject は、要求がサーバーに届き共有秘密が一致したことを証明する。人が飛ばすのはこの部分だ。代わりにタイムアウトなら、秘密、リスナー、またはその前のフィルターを指し、それが直るまで下流の警告はすべて検証できない。
時計の状態が重要なのは、相関の時間枠が一致を前提とするからだ。数分ずれたゲートウェイは、それ以外はきれいなセッション結合を不可能に見せ、レビュー担当者は結合が識別しなくなるまで枠を広げて補う。ルールを編集する前にずれを確認する。
次に、無害なテストで一つのルールを動かす。予期しないアドレスからログインを生成し、警告が発火することを確認し、対応者がセッションとそのリソースイベントを取得できることを確認し、チケットがセッション識別子を運ぶことを確認する。筋の通った物語を生むルールは合格だ。ログ行の山を生むルールはまだダッシュボードだ。結果をルールの横に記録し、次のレビューが直感ではなく証拠から始まるようにする。