透過型プロキシ

目次

透過型プロキシとは

透過型プロキシは、ネットワークインフラストラクチャにおいて特殊な形態で動作するプロキシサーバーであり、ユーザーやクライアントアプリケーションが意識することなく、その存在を感知せずにトラフィックを処理する仕組みを持ちます。

通常のプロキシサーバーがクライアント側で明示的な設定を必要とするのに対し、透過型プロキシはネットワークレベルでトラフィックを自動的に傍受し、フォワードプロキシへリダイレクトすることで機能します。

透過型プロキシ
この特性から「トランスペアレントプロキシ」「インビジブルプロキシ」、あるいは「インターセプトプロキシ」とも呼ばれます。

透過型プロキシの基本的な動作原理は、ネットワーク層での操作に基づいています。

一般的に、ファイアウォールやルーターなどのネットワーク機器がパケットリダイレクション機能(例:IPテーブルのNAT機能、WCCP - Web Cache Communication Protocol)を使用して、特定のポート(典型的にはHTTP通信用のポート80やHTTPS用の443)へのトラフィックを検出し、プロキシサーバーに転送します。

クライアントは本来の宛先サーバーと通信しているつもりですが、実際にはプロキシサーバーと通信しており、プロキシサーバーが代わりに元の宛先サーバーと通信を行います。

この仕組みにより、透過型プロキシは組織のネットワーク管理者にとって強力なツールとなります。

ネットワーク全体のコンテンツフィルタリング、セキュリティポリシーの適用、帯域幅の最適化などを、個々のクライアント設定を変更することなく一括して実施できるためです。

特に大規模な企業環境や教育機関など、多数のデバイスを管理する必要がある場合に有効です。

ユーザーがプロキシ設定を変更したり回避したりする可能性を大幅に減少させることができるため、一貫したポリシー適用が可能になります。

実装方式

透過型プロキシにおいては、複数の重要な技術ポイントがあります。

パケットリダイレクション

まず、1つ目として利用者からのインターネット向きパケットを検知して、フォワードプロキシに転送するという機能です。

この技術はパケットリダイレクションと呼ばれ、ファイアーウォールや専用のルーター等を使用して、特定の通信を検知して別の宛先に転送するということが可能です。

パケットリダイレクション
別の宛先としてフォワードプロキシを設定することにより、利用者は気づかぬうちにインターネット向きの通信の仲介役にフォワードプロキシが入っている状況が作り出せます。

フォワードプロキシが仲介となることで、今までの章で説明したようなフォワードプロキシのメリットを享受することが可能になるのです。

SSLインスペクション/SSL中間者(MITM)

2つ目が利用者と本来の通信相手であるWebサーバとの間に入りSSLの謂わば偽造をして中間者として入る機能です。
利用者と通信先のWebサーバとの通信では、現代においては基本HTTPS通信を使います。

HTTPS通信は自分と通信先の相手だけで通信ができるように暗号化が行われ、中間のネットワーク上では内容がわからないというのが原則です。

HTTPS通信
今回の透過型プロキシにおいては、この中間のネットワーク上では内容がわからないというのが致命的な問題になります。

ファイアーウォールおよびフォワードプロキシは通信の内容を確認して、アクセス許可や代理応答を行いたいので、この暗号化された中身を見なくては行けません。

HTTPS通信の傍受不可
SSLの暗号化は正攻法では解くことができない安全な暗号化技術のため、かなり面倒な方法を取ります。

それが、SSLインスペクションと呼ばれる手法です。

まず、利用者とWebサーバ間で通信を開始使用とするときに企業内のネットワーク内(インターネットに出る前)で通信を傍受し、ファイアーウォールやネットワーク機器が通信相手になりすまして、暗号化通信を開始します。

SSL通信のなりすまし
つまり、このタイミングでは利用者は通信先のWebサーバと暗号化通信をしていると思っていますが、実は社内のネットワーク機器と行っています。

この偽造を行うために、ネットワーク機器はその場で通信先のWebサーバのドメイン名のSSL証明書を作り出し、利用者に返答します。

自己証明SSL証明書
もちろん、このような偽造は通常であれば、簡単にばれてしまい証明書エラーで偽の相手から来たとブラウザ上で通知が来ます。

自己証明SSL証明書
なので、このような透過型プロキシを導入する企業では、利用者のPCにこのネットワーク機器が発行した証明書(正確には証明書のCA)を信頼するという設定を事前に入れておくことになります。

プライベートCAの信頼
この方法により、この設定が入っている利用者の端末においては、偽装証明書を疑わなくなるため、ネットワーク機器がなりすまして通信が可能になります。

利用者は、ネットワーク機器が偽装したSSL証明書にて暗号化通信を開始しますので、ネットワーク機器はもちろん復号できるので内容が見える状態になります。

プライベートCAの信頼
このあとはフォワードプロキシに転送しますが、フォワードプロキシから通信先のWebサーバとの通信は本来の正式なSSL証明書で行います。

フォワードプロキシはWebサーバから見ると正式な通信元なので、中身を見れるように暗号化して渡しますので、フォワードプロキシは応答内容もしっかりと確認ができます。

フォワードプロキシは、応答内容を暗号化せずにそのままネットワーク機器に戻して、必要に応じて中身のチェックが行われます。

そして、最後もネットワーク機器は最初に偽装したSSL証明書を使って暗号化した内容を利用者へ返し、通信は終了します。

利用者はずっとSSLにて暗号化された安全な通信を行っていると思いながら通信を行い、その裏ではネットワーク機器が通信内容の傍受と解析を行い、フォワードプロキシが代理通信を行うという隠れた仕組みを作り上げるのです。

導入におけるメリット/デメリット

透過型プロキシの導入のメリット/デメリットを整理します。

観点 メリット デメリット
クライアント設定 クライアント側での設定が不要なため、大規模環境での展開が容易。端末やブラウザの設定を変更することなく一貫したポリシーを適用できる。BYOD環境やゲストネットワークでも有効。 クライアントが自身のトラフィックがプロキシされていることを認識できず、問題発生時のトラブルシューティングが困難になる場合がある。
管理とポリシー適用 組織全体に一律のセキュリティポリシーとフィルタリングルールを適用可能。ユーザーによるプロキシ回避や設定変更を防止できる。 柔軟性に欠け、特定ユーザーや部署ごとに異なるポリシーを適用するには追加の仕組みが必要。IPアドレスベースでの識別に依存しがち。
セキュリティと可視性 SSL/TLS通信を含むすべてのウェブトラフィックを検査可能。マルウェア、データ漏洩、不適切なコンテンツなどを効果的に検出・ブロックできる。 SSL/TLS通信の検査は「中間者」手法によるため、エンドツーエンドの暗号化が損なわれる。組織のCA証明書が漏洩した場合、重大なセキュリティリスクとなる。
ユーザー体験 ユーザーが特別な操作や設定を行う必要がなく、シームレスなエクスペリエンスを提供できる。プロキシの存在を意識させずにセキュリティを確保できる。 SSL証明書エラーが発生する可能性があり、特に社内CAが適切に展開されていない端末では問題が生じる。一部のアプリケーションは証明書ピンニングにより機能しなくなる場合がある。
パフォーマンス キャッシング機能を利用することで帯域幅使用を最適化し、頻繁にアクセスされるコンテンツの応答速度を向上させることが可能。 すべてのトラフィックが追加のホップを経由するため、レイテンシが増加する可能性がある。SSL/TLS処理は計算負荷が高く、トラフィック量が多い環境では性能ボトルネックとなる恐れがある。
実装と運用 既存のネットワークインフラ(ファイアウォール、ルーターなど)を活用でき、追加投資を最小限に抑えられる場合がある。 ネットワーク構成の複雑性が増し、ルーティングやパケット処理の誤設定がサービス中断につながるリスクがある。適切に設計・実装しないと障害時の切り分けが難しい。
コンプライアンスと法的側面 組織のコンプライアンス要件(通信監視、コンテンツフィルタリングなど)を統一的に満たすことができる。監査証跡の生成と保持が容易。 プライバシー法規制によっては、ユーザーに対して通信が監視・検査されることを明示的に通知する必要がある。地域や国によって法的要件が異なる場合、グローバル展開が複雑になる。
互換性 HTTPおよびHTTPS通信を中心に、一般的なウェブベースのアプリケーションと高い互換性を持つ。 クライアント証明書認証を使用するアプリケーション、証明書ピンニングを実装するモバイルアプリ、非HTTP/HTTPSプロトコルなど、特定のアプリケーションやサービスで互換性の問題が発生する場合がある。
拡張性 ネットワークトポロジーの変更を最小限に抑えながら、新しいセキュリティ機能や監視機能を追加できる中央集権的なポイントを提供する。 トラフィック量の増加に伴い、プロキシサーバーの処理能力を拡張する必要がある。特にSSL/TLS処理はスケーリングが難しく、高コストになる可能性がある。

まとめ

透過型プロキシについて解説しました。

通常のフォワードプロキシによるインターネット通信の手法とは異なり、利用者に意識させずにフォワードプロキシを使用させることができる点がこの方法のメリットとなります。

ただ、意識しないがゆえにトラブルとなるケースも多く、「何故かこのアプリがうごかないんだけど!」というプロキシに対応していないソフトの問い合わせが来ることもあります。

利用者の初期設定が不要という点でのメリットをとるか、利用者にも明示的にプロキシを使用していることを意識させるかは、企業の文化やITリテラシーの高さによって変わってきます。

企業のインターネット通信基盤の選択肢として、このような方式もあるということを覚えておきましょう。