二つの設計は443番ポートでTLSを動かしながら、まったく違う意味を持つことがあります。ラッパーはローカルポートとリモートのバックエンドの間の、設定された一本の接続を保護します。ネットワークアクセスの設計は選択された通信を運び、クライアントが到達できる範囲を変えます。次の四つの確認を順に行えば、どちらを見ているのか分かり、それは通常、どの層が失敗したかを知るのに十分です。

実際に設定した接続から始める

製品を比べる前に、フロントエンドとバックエンドを書き出します。ラッパーはローカルアドレスで待ち受け、リモートへ転送するか、リモート側でプログラムを起動し、その組が契約のすべてです。クライアントの他のアプリケーションは、あなたが向けるまでそれを知りません。これはツールの欠点ではなく、ツールの目的そのものです。

ネットワーク設計の契約は別で、ポートの組ではなく経路とポリシーで表されます。

その二つの説明のどちらが図に合うか注目してください。答えが中央に証明書がある一つのポート対応なら、製品名がVPNでもラッパーです。答えがトンネルインターフェースと経路の変更なら、443で動いていてもネットワーク設計です。

ラッパーが何につながるかを確認する

待ち受けと接続の設定を読み、実際のバックエンドまでたどります。データベースのポートへ転送するラッパーはWebアプリケーションを開きませんし、プログラムを実行するラッパーはホストの他のすべてを公開するのではなく、そのプログラムを起動します。バックエンドだけがラッパーの知っていることです。

次に、TLSが終わった後の転送ストリームが平文かどうかを決めます。包まれた接続が保護するのは二つのラッパーの間の区間であり、遠い側のラッパーの後に何が起きるかは別の問いです。だからこそ、すでに独自の保護を持つものを包むのは時に理にかなっており、時に動く部品が増えるだけです。どちらかの答えを仮定せず、次のホップを調べてください。

openssl s_client -connect wrapper.lab.example:443 -servername wrapper.lab.example -verify_return_error
sudo ss -ltnp | grep 443

最初のコマンドはクライアントに実際に提示される証明書を示し、二番目はホストで何が待ち受けているかを示します。他の何かを読む前に、その証明書名を期待した名前と比較してください。

設計がどの通信を運ぶかを確認する

ネットワークアクセスの設計は選択された通信を運び、クライアントのルーティングとアクセスポリシーと統合されます。受け入れは認可ではないので、認証された接続でも、どのリソースに到達できるかの判断がなお必要です。クライアントレスのポータルは、サポートされる操作を代理しながら、決してtunインターフェースとして現れない第三のモデルです。

製品のラベルはどのモデルを買ったかを教えず、ポート番号はさらに何も教えません。

重ね合わせは可能で、比較を混乱させるべきではありません。トンネルプロトコル自体を、対応するTCPの構成でTLSに包むことができ、これはトンネルの周りに層を加えますが、ラッパーをトンネルに変えるわけではありません。それは独自の性能と障害の挙動を持つ設計上の選択であり、図に一行を割く価値があります。記録してから、外側のラッパーではなく土台のモデルを比べてください。

ラベルではなく失敗した境界を確認する

失敗した試行が一度あれば、フロントエンドのアドレス、リスナー、クライアントが検証した識別情報、バックエンドの宛先、要求された操作という事実を書き出します。成功したハンドシェイクは外側のTLSが完了したことだけを示し、バックエンドについては何も言いません。バックエンドの拒否はフロントエンドの識別失敗とは別の出来事であり、どちらもクライアントから-verify_return_errorを外して改善するものではありません。別のホスト名やポートでの成功は条件が同じだったことを示さないので、同じ者どうしを比べてください。

443番ポートは、TLSを中間装置に通すための慣習です。任意の通信をポリシー装置にとってのWebリクエストに似せるものではありません。

最後に、端点の組、何が運ばれるか、どのアプリケーションが使うか、宛先がどの権限を課すかを一文で述べてください。その四つの空欄を埋められない設計は、ラベルが何を主張しても未完成です。その文は、ファイアウォールを所有する人に設計を説明する最速の方法でもあります。

関連記事