Webプロキシサーバー編
Webプロキシは、HTTPリクエストを転送します。
GET https://en.wikipedia.org/wiki/Proxy_server HTTP/1.1Proxy-Authorization: Basic encoded-credentialsAccept: text/html
このリクエストはプロキシサーバーに送られ、プロキシは指定されたリクエストを行い、レスポンスを返します。
HTTP/1.1 200 OKContent-Type: text/html; charset UTF-8
Webプロキシの中には、HTTP CONNECTメソッドで、接続を介して任意のデータの転送を設定できるものがあります。一般的なポリシーは、HTTPSトラフィックを許可するためにポート443のみを転送することです。
クライアント側では、複雑なプロキシサーバーや複数のプロキシサーバーの問題は、クライアント・サーバー・プロキシ自動設定プロトコル(PACファイル)によって解決されます。
SOCKS proxyEdit
SOCKS も接続フェーズの後に任意のデータを転送するもので、Web プロキシの HTTP CONNECT に似ています。
Transparent proxyEdit
インターセプティング プロキシ、インライン プロキシ、フォースド プロキシとも呼ばれるトランスペアレント プロキシは、クライアントに特別な設定を要求することなく、通常のアプリケーション レイヤーの通信を傍受します。 クライアントはプロキシの存在を意識する必要はありません。
RFC 2616 (Hypertext Transfer Protocol-HTTP/1.1)では標準的な定義を提供しています。
「『透明なプロキシ』とは、プロキシの認証や識別に必要な以上に、リクエストやレスポンスを変更しないプロキシのことである。 “
TCP Interceptは、サービス妨害攻撃の一種であるTCP SYN flood攻撃からTCPサーバーを保護するトラフィックフィルタリングのセキュリティ機能です。
TCP Interceptは、IPトラフィックに対してのみ有効です。
2009年、透過型プロキシの動作方法に関するセキュリティ上の欠陥がRobert Auger氏によって発表され、Computer Emergency Response Teamは、影響を受ける数十台の透過型およびインターセプティング プロキシ サーバーをリストアップした勧告を出しました。
インターセプティング プロキシは、上流の帯域幅を節約し、キャッシングによって顧客の応答時間を改善するために、一部の国の ISP で一般的に使用されています。
IssuesEdit
TCP 接続の転換/インターセプトは、いくつかの問題を引き起こします。 まず、元の宛先の IP とポートを何らかの方法でプロキシに伝えなければなりません。 これは常に可能というわけではありません (たとえば、ゲートウェイとプロキシが別のホストに存在する場合など)。 元の(インターセプトされた)宛先に関する情報をチェックしない、またはアクセスできないインターセプトプロキシの特定の動作に依存するクロスサイト攻撃のクラスがあります。
インターセプティングは、HTTP 認証、特に NTLM のような接続指向の認証においても問題を起こします。これは、クライアントのブラウザが、プロキシではなくサーバーと話していると信じているからです。
最後に、接続のインターセプトは、共有キャッシュによって一部のリクエストやレスポンスがキャッシュできなくなるため、HTTP キャッシュの問題を引き起こします。
実装方法 編集
ルーター/ファイアウォールがプロキシと同じホスト上にある統合型ファイアウォール/プロキシサーバーでは、オリジナルの宛先情報の通信は、例えばMicrosoft TMGやWinGateなどの任意の方法で行うことができます。 この独自のプロトコルはルーターに常駐し、キャッシュから設定されます。これにより、ルーターからの透過的なリダイレクトによって、キャッシュがどのポートやトラフィックに送られるかを判断することができます。 このリダイレクションは、次の2つの方法のいずれかで行われます。
トラフィックがプロキシ・マシン自体に到達すると、NAT(ネットワーク・アドレス・トランスレーション)による傍受が一般的に行われます。
トラフィックがプロキシマシンに到達すると、NAT (Network Address Translation)を使って傍受するのが一般的です。 最近の Linux や BSD のリリースでは、TPROXY (transparent proxy) が提供されています。これは、IP レベル (OSI レイヤー 3) の透過的なインターセプトや送信トラフィックのスプーフィングを行い、プロキシの IP アドレスを他のネットワーク デバイスから隠します。
DetectionEdit
傍受するプロキシ サーバーの存在を検出するには、いくつかの方法があります:
- クライアントの外部 IP アドレスを外部の Web サーバーで見られるアドレスと比較したり、場合によってはサーバーが受信する HTTP ヘッダーを調べたりします。 この問題に対処するために、サイトから見たユーザーのIPアドレスをWebページ上でユーザーに報告するサイトがいくつか作られています。
- ほとんどの傍受プロキシはSSLを傍受しないため、HTTPSとHTTPを使用してアクセスした場合、オンラインIPチェッカーの結果を比較します。 SSL が傍受されている疑いがある場合は、安全な Web サイトに関連する証明書を調べることができます。ルート証明書には、傍受を目的として発行されたかどうかが示されているはずです。
- http (ポート 80) などのプロキシされたプロトコルについて traceroute などのツールで報告されるネットワーク ホップのシーケンスを、SMTP (ポート 25) などのプロキシされていないプロトコルと比較します。
- サーバーが存在しないことが確認されているIPアドレスへの接続を試みます。 プロキシは接続を受け入れてから、プロキシすることを試みます。 プロキシが接続を受け付けるサーバーがないと判断した場合、エラーメッセージを返すか、単にクライアントとの接続を閉じます。 この動作の違いは簡単に検出できます。 例えば、ほとんどのWebブラウザは、HTTPサーバーに接続できない場合には、ブラウザが作成したエラーページを生成しますが、接続を受け入れてから閉じた場合には、別のエラーを返します。
- 特別にプログラムされたAdobe Flash SWFアプリケーションやSun Javaアプレットをエンドユーザーに提供することで、HTTPコールをサーバーに送り返す。
CGI proxyEdit
CGIウェブプロキシは、ユーザーのブラウザウィンドウ内のウェブフォームを使ってターゲットのURLを受け取り、リクエストを処理して、その結果をユーザーのブラウザに返します。 そのため、「本当の」プロキシの設定を変更できない機器やネットワークでも使用することができます。
最初に記録されたCGIプロキシは、当時は「rover」と名付けられていましたが、1998年に「CGIProxy」に改名され、1996年初めにアメリカのコンピュータ科学者James MarshallがRich Morinによる「Unix Review」の記事のために開発したものです。
CGIプロキシの大部分は、CGIProxy(Perl言語で書かれている)、Glype(PHP言語で書かれている)、PHProxy(PHP言語で書かれている)のいずれかを搭載しています。 2016年4月現在、CGIProxyは約200万件、Glypeは約100万件、PHProxyは今でも週に数百件のダウンロードを記録しています。
CGIプロキシの中には、障害者がウェブサイトにアクセスしやすくするなどの目的で設置されたものもありますが、過剰なトラフィックのために閉鎖されています。これは、サードパーティがローカルフィルタリングを回避する手段としてサービスを宣伝していることが原因です。
Suffix proxyEdit
サフィックス プロキシは、要求されたコンテンツの URL にプロキシ サーバーの名前を追加して (例: “en.wikipedia.org.SuffixProxy.com”)、ユーザーがウェブ コンテンツにアクセスできるようにします。 サフィックス型プロキシサーバーは、通常のプロキシサーバーよりも簡単に使用できますが、高い匿名性は得られず、主な用途はウェブフィルターの回避です。
Tor onion proxy softwareEdit
Onion Router (Tor)は、オンラインでの匿名性を提供することを目的としたシステムです。 Torクライアントソフトウェアは、インターネットトラフィックを世界的なボランティアネットワークのサーバーを経由して転送し、ネットワーク監視やトラフィック分析を行っている人からユーザーのコンピュータの位置や使用状況を隠すことができます。
「オニオン・ルーティング」とは、暗号化サービスのレイヤー構造を意味します。 元のデータは何度も暗号化され、再暗号化された後、連続したTorリレーを経由して送信されます。それぞれのリレーは、次のリレー、そして最終的な目的地にデータを渡す前に、暗号の「層」を復号します。
I2P anonymous proxyEdit
I2P anonymous network (‘I2P’)は、オンラインでの匿名性を目的としたプロキシネットワークです。 Torのオニオンルーティングを改良したガーリックルーティングを実装しています。 I2Pは完全分散型で、すべての通信をさまざまな階層で暗号化し、各地のボランティアが運営するルーターのネットワークを介して中継することで機能しています。 情報の発信元を隠すことで、I2Pは検閲への抵抗力を備えています。
I2Pのユーザーは、自分のコンピュータ(ノード)上にI2Pルーターを走らせます。 I2Pルーターは、他のピアを見つけ、そのピアを経由して匿名化トンネルを構築する役割を果たします。
ネットワーク・アドレス・トランスレーターとの比較
プロキシの概念は、OSI参照モデルのレイヤー7のアプリケーションを意味しています。
レイヤー3のNATのクライアント構成では、ゲートウェイを設定するだけで十分です。
NATはレイヤー3で動作するため、レイヤー7のプロキシに比べてリソース消費量が少なくて済みますが、その分、柔軟性に欠けます。 この2つの技術を比較すると、「トランスペアレント・ファイアウォール」と呼ばれる用語に出会うことがあります。 トランスペアレント・ファイアウォールとは、プロキシがクライアントの知らないうちにレイヤー7プロキシの利点を利用することを意味する。 クライアントは、ゲートウェイがレイヤー3のNATであると推測し、パケットの内部については何も知りませんが、この方法によって、レイヤー3のパケットがレイヤー7のプロキシに送られ、調査されます。
DNS proxyEdit
DNSプロキシサーバーは、(通常はローカルの)ネットワークからDNSクエリを受け取り、インターネットのドメインネームサーバーに転送します。
ProxifiersEdit
クライアント プログラムの中には、リクエストを「SOCKS化」するものがあります。これにより、ネットワークに接続されたソフトウェアを適応させて、特定の種類のプロキシ サーバー (主にSOCKS) を介して外部ネットワークに接続することができます。
レジデンシャル プロキシ
レジデンシャルプロキシとは、インターネットサービスプロバイダー(ISP)から提供された実在のIPアドレスを、エンドユーザーの携帯電話やパソコンなどの物理的な機器に使用する仲介者のことです。 レジデンシャル・プロキシのユーザーは、サーバーに直接接続するのではなく、住居用のIPアドレスを介してターゲットに接続します。 ターゲットは、彼らを有機的なインターネットユーザーとして識別します。 どのような追跡ツールにも、ユーザーの再配置を識別させないのです。 どのレジデンシャルプロキシも任意の数の同時リクエストを送ることができ、IPアドレスは特定の地域に直結しています
。