三人が同じ言葉で同じこと、つまりあるサービス名へのアクセスを遮断することを求めています。一人はブラウザがサイトを開かないことを、別の一人はデスクトップの音声クライアントがサーバーに到達しないことを、三人目は請負業者の一団が特定の社内アプリを使わないことを意味しています。文は同一ですが、実施の仕組みにはほとんど共通点がありません。

層は、実際に見ることのできる識別子で選び、次にそれが覆うクライアントで選びます。すでに知っているファイアウォールのコマンドから始めることが、規則が結局何も遮断しない、あるいは遮断しすぎる原因になります。

名前はすべての層が確認できる識別子ではない

Netfilter や同種のパケットフィルタはアドレス、プロトコル、ポートを見ます。ホスト名は見えず、パケットがそこに届く頃には名前はすでに解決されています。アドレスに対して書かれた規則は、そのアドレスについての規則であり、利用者が到達のためにどんな名前を打ち込んだかは関係ありません。

DNS ポリシーは経路のより手前に位置し、後続の接続とは別の対象である問い合わせを見ます。統制されたリゾルバが返す応答を扱うのであり、すでに開いていた接続や、そのリゾルバを迂回するよう設定されたクライアントを扱うのではありません。解決済みのアドレスはポリシーの見直しと次の要求の間にも変わりうるため、DNS の応答は持続する認可の表明ではありません。

上位の層ほど文脈を多く見て、覆うクライアントは少なくなります。この交換がテーマそのものであり、表のどの一行も決して正解にならない理由でもあります。自らのポリシーが本当に対象としている識別子を見る行を選んでください。そのうえで、その行が意味する範囲を受け入れてください。

各層が識別できるもの

表を中央の列から外へ向かって読むと、層が見ることのできる識別子が、その層が誠実に実施できるポリシーを決めることがわかります。

LayerIdentifier it seesWhat it cannot see
Packet filteraddress, protocol, portthe name, or which other services share that address
DNS policythe queried name and the answer handed backconnections made by clients that ignore the resolver
Managed browsersupported URL patterns on managed profilesnon-browser clients, or unmanaged devices
CONNECT proxyhost and port for tunnelled requeststhe path inside an encrypted request

層がポリシーに属するのは、それが見る識別子が統制している識別子と一致する場合だけです。表はまた、ある層で書かれた規則が、何を守るのかを決め直さずに別の層へ移ることがほとんどない理由も示しています。

明白な規則が失敗する場所

アドレスの規則は、自分が管理する専用アドレスを持つサービスにはまさに正しいものであり、その所有はポリシーに書き込むべきです。共有されたコンテンツ配信アドレスの背後にあるものにはまさに誤りであり、そこでは同じ規則が無関係なサービスに触れ、更新された DNS の応答は規則をホスト名の認可に変えません。

管理されたブラウザのポリシーは、コピーしたアドレス一覧より直接的にウェブ制限を表しますが、管理システムが統制するブラウザとプロファイルにのみ適用されます。

そのブラウザの規則は、別のホストへ UDP を送る音声クライアントには何の効果もなく、そのパターンはどこかから借りたワイルドカードの慣習ではなく、その製品が定義します。CONNECT プロキシも同様に、トンネルされた要求のホストとポートを受け取り、暗号化されたセッションの内側の経路は読めません。規則はプロトコルが開示するもののまわりで設計してください。そのうえで、その隙間が次の要求の出どころになるため、何を覆わないままにするかを書き留めてください。

コマンドではなくクライアントで選ぶ

ポリシーが覆わなければならないクライアントと、外してよいクライアントを問うてください。管理されたブラウザのポリシーは管理システムが届く範囲を覆い、ブラウザの境界で止まります。リゾルバのポリシーはリゾルバを使うすべてを覆い、より広い集合であり、使わない者には開いたまま失敗します。

自分が運用するサービスでは、経路ではなくアカウントに従うため、アプリケーションでの認可がどのネットワーク境界よりも強く働きます。VPN の経路は到達性にすぎず、サービスへパケットを送れることは、それを使う許可ではありません。重要な識別子が利用者やチャネルの権限であるなら、そこに適用し、ネットワークの規則は第二の層として扱ってください。

規則をリソースの言葉で書く

防御可能なポリシーは、リソース、識別子、対象範囲のアプリケーション、それらを運ぶ経路を名指しし、使用中の両方のアドレスファミリを含めます。また、規則が副次的に影響する共有インフラがどうなるかも述べます。

その表現は、後から誰かが監査できる決定を生みます。今日の解決済みアドレスで正当化された規則は、アドレスが初めて変わった時点でインシデントを生み、なぜその遮断がかつて正しかったのか誰も説明できなくなります。

関連記事