ポイント

●通常,届いたパケットにはアクセス元の情報(送り元IPアドレス)が記述されている
●プロキシ・サーバーを介してアクセスしてきたパケットには,大もとの情報(送り元IPアドレス)が記述されていないため,アクセス元のセキュリティ向上につながる
●プロキシ・サーバーはアプリケーション・データをチェックしたり書き換えたりできるため,コンテンツ・フィルタリングなどの機能を持たせることができる

 企業などの組織内からインターネットへアクセスする際に,DMZなどに配置したプロキシ・サーバーを経由する場合があります。プロキシ・サーバーを介してインターネットへアクセスする理由はいろいろありますが,セキュリティを向上させる目的もあります。今回は,プロキシ・サーバーを経由させることで,なぜセキュリティが向上するのかを確認していきます。

ルーターを介すだけなら,送信元IPアドレスは変わらない

 プロキシ・サーバーの仕事を見る前に,通常のルーティングを確認しておきましょう。「ルーター」と名前が付く機器の中にはいろいろな機能を持ったものもありますが,どんなルーターでも純粋に実施できる仕事は,「受け取ったIPパケットをしかるべきネットワークへ中継(ルーティング)する」ことです。

 図1の例で見てみましょう。ここで注目していただきたいことは,各ネットワークを通過中のパケットヘッダー内のアドレス部分(IPアドレスとポート番号)です。左側にあるクライアントPCからルーターを介して右側にあるサーバーにHTTPでアクセスする場合を考えます。

図1 ルーティングの場合のパケット・ヘッダー
左のネットワーク通過中と右のネットワーク通過中のヘッダー情報は同じになる。

 クライアントPCから送出された直後のパケットのあて先IPアドレスは,Webサーバーのアドレス,送信元IPアドレスはクライアントPCのアドレスになっています。あて先のポート番号(サービス識別のための番号)はWebサービスである80番,送信元のポート番号は,クライアントが動的に割り振ります。今回は1025番が振られていたとします(図1(1))。

 これを受け取ったルーターはあて先IPアドレスを見て,このパケットは右側のネットワークへ転送すればいいと判断し,右側のネットワークに転送します(2)。この時,IPアドレスやポート番号は書き換えません。したがって,パケットの内容は右側ネットワークへ転送されても,クライアントPCが送出した直後と同じになります。

 そしてパケットはWebサーバーに届き,Webサーバーは送信元IPアドレスを見て「誰から送られてきたパケットか」を確認します(3)。この結果,Webサーバーはパケットの送り主はクライアントPCだと分かります。

プロキシ・サーバーを介すと送信元が変わる

 次にプロキシ・サーバーを介した場合を見てみます。なお,プロキシ・サーバーの用途や構成はさまざまです。インタフェースが1個のものや2個のものがありますし,NAT(Network Address Translation)やNAPT(Network Address and Port Translation,別名:IPマスカレード)のようなアドレス変換技術を組み合わせている場合もあります。ここでは,ルーターを介したときと比較しやすいように,全く同じ構成にして比べてみます。

図2 プロキシ・サーバーを介したときのパケットの変化
左のネットワークを通過中のパケットと,右のネットワークを通過中のパケットのヘッダー情報が異なる。

 プロキシ・サーバーを介したWebアクセスの場合,クライアントPCはパケットを最終目的地であるWebサーバーではなく,プロキシ・サーバーに送ります。図2の例ですと,プロキシ・サーバーの左側インタフェースに割り当てられたIPアドレスがパケットのヘッダーにあて先IPアドレスとして書き込まれます。また,この時の送信元IPアドレスはクライアントPCのIPアドレスになります。ポート番号はあて先がプロキシ・サーバーの待ち受けポート番号(ここでは8080番),送信元ポート番号はクライアントが動的に割り振った番号(例えば1025番)が振られます(図2(1))。

 これを受けたプロキシ・サーバーは,あて先を判断して右側のネットワークの先にあるWebサーバーにパケットを送ります。この時のヘッダーの中は,送信元IPアドレスがプロキシ・サーバーのIPアドレス,あて先IPアドレスはWebサーバーのIPアドレス,あて先のポート番号はWebサービスの80番,送り元のポート番号はプロキシ・サーバーが動的に割り振った番号(図2では29313番)が振られます(2)。

 プロキシ・サーバーの左側ネットワークと右側ネットワークでやり取りされたパケットヘッダーを見比べてみると,情報が全く異なっています。Webサーバーから見ると,プロキシ・サーバーから送られてきたのはわかりますが,大もとの要求元であるクライアントPCのことは全くわかりません(3)。

ルーティングとプロキシ・サーバーを介した場合の違い

 それでは,改めてルーター経由とプロキシ・サーバー経由の場合を比べてみましょう。

 ルーター経由の場合はクライアントPCとWebサーバーがパケットを直接やり取りしています。ルーターは単にパケットを中継しているだけで,パケットのヘッダーの内容を書き換えたりはしていません。

 一方,プロキシ・サーバーを介す場合は,クライアントPCはプロキシ・サーバーへパケットを送り,ここでいったん通信は終わります。そしてプロキシ・サーバーがクライアントPCの代わりにWebサーバーへアクセスしています。クライアントPC--プロキシ・サーバー,プロキシ・サーバー--Webサーバーという二つの独立した通信で成り立っているので,それぞれの通信でやり取りされるパケットのヘッダー内容は異なっています。

図3 ルーター経由とプロキシ・サーバー経由の違い
プロキシ・サーバーを介すことにより,アクセス元の情報をWebサーバーに見せなくできる。

 ということで,例えば企業内部にあるパソコンから外部のWebサーバーに直接アクセスするより,プロキシ・サーバーを介してアクセスするようにしておくと,内部の情報を外部に出さないようにできます。外部から内部の情報が見えにくくなるので,セキュリティの向上につながるというわけです。

 ところで,ここまでの図の例を見て「あれっ?」と思った方もいらっしゃるのではないでしょうか。少し補足をしておきます。

 図1の例でルーター経由の時はあて先IPアドレスにWebサーバーの情報(210.0.0.1)が入っていましたが,図2のプロキシ・サーバー経由の時は最終目的地であるWebサーバーのIPアドレス情報がありません。クライアントからのパケットを受け取ったプロキシ・サーバーは,なぜ正しいWebサーバーへアクセスできたのでしょうか(ちょっと意地悪な質問なのでクイズ感覚で想像してみてください)。