Windows VPN サーバーはユーザー名とパスワードを求めますが、その一つのダイアログに三つの無関係な役割が隠れています。一つはその人が誰かを証明し、一つは回線を監視する者によるその証明の再利用を防ぎ、一つはその後どのアドレスに到達できるかを決めます。小規模な導入の多くはまずトンネルを固め、最初の二つの役割を既定値のままにしますが、これは逆の順序です。

攻撃者と同じ順序で作業します。まず回線から取得できるもの。次にその記録で後から再生できるもの。最後に、認証済みの攻撃者が内部に入ってから到達できるものです。

三つの役割、一つのダイアログ

アイデンティティは人が考える部分ですが、問題の三分の一にすぎません。アイデンティティの証明は、やり取りを記録して後で再試行する観察者に耐えなければなりません。認可は、アイデンティティが確定した後にサーバーが下す別の決定であり、Windows はそれを資格情報を検証するサービスとは別のサービスに保持します。

三つすべてが一つの頭の中のバケツに収まると、たいていは強く認証したうえで利用者にすべてを許すサーバーになります。後から直すのは今ポリシーを決めるより難しく、その時点ではファイアウォールプロファイル、アドレスプール、ルートがすべて古い前提を符号化しています。

設定に触れる前に三つを手元のメモで分け、その後で最も弱い環から上へ直していきます。

MS-CHAPv2 が再生テストに耐えられない理由

サーバーがまだ MS-CHAPv2 付きの PPTP を受け入れるなら、トンネルは意味のある形でパスワードを守っていません。チャレンジとレスポンスは取得されてオフラインで攻撃でき、2012 年には公開の解析サービスが、典型的なパスワードならそのようなハンドシェイクから約一日で復元できることを示しました。長く複雑なパスワードはコストを上げますが、攻撃者がネットワークから得る材料を消すわけではありません。

必要な性質は、再生できない資格情報です。クライアント証明書を用いた EAP-TLS は各端末に固有のアイデンティティを与え、ちょうど一つの端末だけを取り消せます。

証明書の配備は本物の作業であり、プライベート CA、クライアントが確認する失効経路、担当者の入れ替わりに耐える更新計画が必要です。その作業を、動くトンネルまでの障害物ではなくプロジェクトとして扱ってください。ファイアウォールの入れ替えと同じように予算を取ります。共有パスワードが安いのは最初の失効までです。

事前共有鍵が認証するのは組であり、人ではありません

L2TP/IPsec の事前共有鍵は、二つのゲートウェイが同じ秘密を知っていることを証明します。誰が接続しているかは何も語らず、その層で従業員を区別できません。長いランダム値を使い、ハンドシェイクを取得した者は鍵をオフラインで攻撃できるため、一部の解説が勧める十文字を大きく超えてください。

そのプロファイルのクライアントはすべて秘密を共有するので、一人を外すことは残る全員に配り直すことを意味します。マシン単位の秘密の上に別個のユーザー認証手順を保ち、クライアントが増えるにつれて証明書へ移行します。事前共有鍵と MS-CHAPv2 の組み合わせは二つの弱い層で、二つ目が一つ目を台無しにします。

認可は Network Policy Server の役割です

Windows の NPS が誰に接続を許すかを決め、それは認証がすでに成功した後に行われます。この分離は製品で最も有用な堅牢化の制御であり、多くの導入が手を付けずに残しています。

実際の制約を反映したポリシー条件を使ってください:グループ メンバーシップ、サポートが人員を配置している時間帯、正常性チェックによる端末状態です。データが摩擦を正当化する場所には第二要素を加え、ポリシーは接続の試行ごとに評価されるため、それは文書ではなく生きた制御になります。

RADIUS のアカウンティングは、誰がいつ接続したかの記録も一つ与えます。そのログはインシデントのレビューと推測の差であり、誰が読むかに関係なく存在します。

ログイン成功後の到達範囲を制限する

VPN アダプターは、サブネット全体ではなく、その役割に必要なサービスだけを許可するファイアウォールプロファイルに入るべきです。ルーティングの話はフィルタリングとは別です。フルトンネルはクライアント端末を守りすべてのバイトを上位回線へ送り、スプリットトンネルはローカルトラフィックをローカルに保ち、端末をその時いるネットワークにさらします。

どちらの選択もセキュリティの既定値ではありません。どちらも、前提とするファイアウォールプロファイルの隣に書き留める必要があります。

失敗経路を検証する

壊れるべきものを試します:誤ったパスワード、期限切れの証明書、失効した端末、グループ外の利用者です。それぞれ別の箇所で失敗し、ログはどれだったかを示すべきです。まずテストアカウントで一式を実行し、次に実在の利用者で繰り返します。理由なくイベントログに残る拒否は、その記録が必要になるずっと前に直す価値があります。

次に、どのポートが公開され、なぜかを確認します。PPTP は TCP 1723 と、ポートではなく IP プロトコルとしての GRE を必要とし、IKEv2 は UDP 500 と 4500、L2TP は UDP 1701 と IPsec を必要とします。クライアントが接続するために管理インターフェースを公開するのは修理ではなく、発見を待つ二つ目のインシデントです。

最後に、サーバーが何をどのくらいの期間記録するかを決めます。認証履歴のない端点は、インシデント後の最初の問い、つまりその試行がそもそも認可されていたのかに答えられません。

関連記事