透明なプロキシとは?

プロキシ, 7-0820215分で読める

透過プロキシを、エンドユーザとコンテンツプロバイダ間の接続を 遮断する仲介システムとして動作するサーバと定義することができる。透過プロキシの他の名前はインラインプロキシまたは強制プロキシ である。デスティネーションに向けられたパケットを傍受することで リクエストを傍受するので、プロキシでは「透過的」という言葉を使う。

透過プロキシを、エンドユーザとコンテンツプロバイダ間の接続を 遮断する仲介システムとして動作するサーバと定義することができる。透過プロキシの他の名前はインラインプロキシまたは強制プロキシ である。デスティネーションに向けられたパケットを傍受することで、デスティネー ション自身がリクエストを操作しているように見せてリクエストを傍受 するので、プロキシでは「透過的」という言葉を使う。トランスペアレントプロキシは、ウェブサイトまたはネットワークオペレータによって設定され、エンドユーザーによって設定されることはありません。

また、透過型プロキシに対して「強制プロキシ」という言葉を使うこともある。それは、ユーザーのコンピュータのプロキシ設定を変更することなく、ユーザーの接続に適用することができるからです。その結果、透過型プロキシは、ユーザの同意なしに強制することができますが、多くの場合、ユーザはその存在を知っています。 

透明なプロキシの例

ファイアウォールは、内部ネットワークとインターネットの間を通過するトラフィックを許可するが、ファイアウォールのルールテーブルに違反する場合はトラフィックをブロックする透過的なプロキシの一例である。

透過的プロキシの他の例としては、コンテンツ・デリバリー・ネットワーク(CDN)がある。CDNは冗長性、キャッシュを提供し、ソースシステムを変更したり公開したりすることなく速度を向上させる。ユーザーはサービス・プロバイダーに直接接続されていると思っているが、実際にはCDNがすべてのリクエストを処理している。グーグル、ツイッター、フェイスブックのようなハイテク企業は、このようにして数百万のリクエストを最小限のダウンタイムで管理している。

一般的な透過プロキシ設定

以下は、設定するときの標準的な透過プロキシ設定である:

  • 認証: プロキシの背後にいるユーザーと同じ認証情報をサーバーに提供する。
  • 傍受: トランスペアレントプロキシがルータレベルまたはオペレーティング システムレベルでどのようにトラフィックを傍受するかを定義する。
  • Caching: 、プロキシサーバーが返送ユーザーのためにコンテンツをキャッシュすべきかどうかを指定する。
  • リバースプロキシ:リモートアクセスを遮断するプロキシを設定する代わりに、ウェブサーバーの前にプロキシを配置して、ユーザーのパフォーマンスを高速化することができる。 
  • データストリーミング、チャットフィルタリング: 、ユーザーが特定のポートやプロトコルにアクセスできないように透過型プロキシを設定することができる。

透過的プロキシの使用 - クライアント側

クライアント側に透過プロキシを配備することができる。これは、プロキシがクライア ントエンドポイントとの間のすべてのトラフィックを傍受することを意味する。クライアント側の透過プロキシの用途は以下のとおりである:

透過的キャッシュ

複数の人が同じ地域や場所から同じコンテンツにアクセスする場合、例えば、複数の学生が大学のネットワーク経由で同じニュースサイトを閲覧する場合、最初にコンテンツをキャッシュし、後続のユーザーにキャッシュから提供するために透過的なプロキシを使用する方が効率的である。

認証

携帯電話のインターネットオペレーターや公共の無線LANスポットは、ユーザーにネットワーク上で自分自身を認証させ、利用規約に同意させるために、透過型プロキシを使用することがある。ユーザーが認証し、利用規約に同意した場合のみ、ネットサーフィンが許可される。 

ほとんどのユーザーは、トランスペアレント・プロキシ経由の最初の認証画面の後でさえ、接続全体が傍受され、オペレーターに監視される可能性があることを知らない。

交通モニタリング

ネットワークを運用する際、透過的なプロキシを設定してユーザーのトラフィックや行動を監視することができるが、トラフィック監視には多くの違法な用途もある。例えば、不謹慎で信頼できない公衆無線LANオペレータは、簡単にユーザーの接続を監視し、資格情報とデータを盗むことができます。

ゲートウェイ・プロキシ

ゲートウェイプロキシは、ルールに基づいてネットワークトラフィッ クを変更またはブロックするために使うことができる。ゲートウェイプロキシの例は、上の例で説明した透過ファイアウォールプロキシである。

コンテンツ・フィルタリング

また、不必要で不要なコンテンツをフィルタリングするために、透過型プロキシを使うこともできる。例えば、プロキシは、特定のウェブサイトがリクエストされたときに、 リクエストをウェブサーバに転送しないようにすることができる。その代わりに、接続をインターセプトし、ユーザーに通知やエラーメッセージを表示します。

透過的プロキシの使用 - サーバー側

サービス拒否(Dos)対策

SYN-floodサービス拒否(DoS)攻撃からサーバを守るには、TCPインターセプトという透過的なプロキシを使用します。TCPインターセプトは、ウェブサーバへのすべてのトラフィックをインターセプトし、クライアントのリクエストを受け付け、3ウェイハンドシェイクを実行します。さらに、トラフィックの傍受に成功すると、サーバーと3ウェイ・ハンドシェイクを行い、クライアントとサーバー間の2つのハーフ・コネクションを結合する。

トランスミッション・コントロール・プロトコルのインターセプトは、TCPリクエストをチェックし、通常30秒間コネクションの確立を待つ。非アクティブなコネクションの数がある閾値を超えると、「アグレッシブ・モード」に入る。このモードでは、新しいコネクションが到着するたびに、最も古いパッシブコネクションが削除される。

しかし、現代の大規模なDDoS(Distributed Denial of Service)攻撃に対しては、上記のテクニックはもはや有効ではありません。というのも、最近の攻撃者は、何百万台ものゾンビ・コンピュータや高性能サーバーを制御し、TCPインターセプト・コントローラーを圧倒するSYNフラッドを生成しているからです。

このような理由から、今日ではほとんどの組織がImpervaのDDoS Protectionのようなクラウドベースのサービスを利用しています。これらのサービスは、大規模なDDoS攻撃から保護することができ、また、オンデマンドでスケールアップすることができるため、大規模な攻撃にさらに対処し、処理することができます。 

例えば、DDoSサービスは、アプリケーション層攻撃やTCP層では発生しないプロトコル攻撃を防ぐことができます。

フロントエンド最適化のためのCDN

コンテンツ・デリバリー・ネットワーク(CDN)を、地理的に近いユーザーにコンテンツを提供し、キャッシュするプロキシサーバーのグローバルな分散ネットワークと定義することができる。

CDNの例としては、ImpervaのGlobal Content Delivery Networkがあり、これはサーバーサイドで動作する透過的なプロキシである。その目的は、エンドユーザー体験を向上させるためにフロントエンドの最適化を行うことである。ウェブサーバーへのトラフィックを遮断し、ユーザーに直接サーバーにアクセスさせる代わりに、サーバーのキャッシュから同じコンテンツを提供する。その結果、ユーザーのパフォーマンスが向上し、サーバーに必要なシステムリソースが削減されます。

透明なプロキシの限界

透明なプロキシにはさまざまな利点があるが、複雑な企業環境では不満が生じることもある。

堅牢性の欠如: クライアントとキャッシュの間に接続が確立され、ルーティングの変更によってクライアントが「迂回」するネットワークデバイスを通らない経路を採用した場合、セッションは切断され、ユーザーはページを再読み込みしなければならなくなる。

一方、インターネット上のルーターがバタバタしている場合(ルーターが目的地のネットワークを交互に連続して広告する)、結果はさらに予測不可能になる。

ブラウザ依存: ほとんどの透過型プロキシは、正常に動作するために、ブラウザがHTTPリクエストヘッダにオリジンサーバーのホスト名を供給することに依存している。

これらのキャッシュは、パケットのIPアドレスからオリジン・サーバーの宛先IPアドレスにアクセスできないため、これは必須である。

そのため、キャッシュミスが発生したときに、リクエストを送るオリジン サーバーのアドレスを特定することができない。

結論

インターネットのトラフィックは、透過的なプロキシを使用することによって監視され、フィルタリングされる可能性があることを議論した。それはまた、我々がウェブとやりとりする方法を形作る。不要なコンテンツをフィルタリングすることでデータをより速く提供するのか、キャッシュするのか、あるいは企業がネットワークをよりコントロールできるようにするのかにかかわらず、透過型プロキシは不便を加えることなくインターネットに機能を追加する。