リバースプロキシとプロキシの技術はネットワークを構成する上で欠かせない。これらを活用することで、負荷分散やWebサイトの高速化、さらにセキュリティ向上にも大きな効果がある。しかし、その名称自体の認知度ほど、それぞれの役割を適切に理解できていない人も少なくないのではないだろうか。この記事では、リバースプロキシとプロキシの仕組みと役割の違いについて解説する。
内部ネットワークを守り、出口対策にも活用できるプロキシ
まず、「プロキシ」とは日本語で「代理」という意味であり、内部ネットワークからインターネットに接続する際に中継の役割を担うサーバーのことで、「プロキシサーバー」とも呼ばれる。後述するリバースプロキシに対し、フォワードプロキシと呼ばれることもある。この記事では以下、リバースプロキシ、プロキシとして称することにする。
一般的にプロキシ経由で、外部のWebサイトを閲覧する際には以下のような流れとなる。
- 社内LAN内のコンピューターが、プロキシサーバーにリクエストを送る
- プロキシサーバーが、外部Webサーバーにリクエストを転送する
- 外部Webサーバーから返されるコンテンツがプロキシサーバーに送られる
- 社内LAN内のコンピューターが、プロキシサーバーからコンテンツを受け取る
プロキシサーバーを用いるメリットは以下5つが挙げられる。
キャッシュ
プロキシは一度接続した内容を保存し、再度コンテンツが呼び出された際に、表示を高速化できる。社内LANからプロキシに接続している全てのコンピューター対象となるため、扱うデータの規模が大きくなるほどキャッシュを保存する効果が大きくなる。また、一定期間、同じリクエストを繰り返す必要がないことから、トラフィックの軽減にも寄与する。
ユーザー認証
プロキシサーバーにユーザー認証を実装すれば、認証されたユーザーのみインターネット通信が行えるようになる。社内のユーザーのみの利用制限や、不正なネットワークの利用の予防といった使い方が考えられる。
フィルタリング
社内のポリシーに基づいて、特定のサイトの閲覧を禁止するフィルタリングの設定が可能となる。ネットワークの業務外利用や情報漏えいのリスクを軽減できる。
ウイルス対策
ユーザーがサイトを閲覧した際に、受信するコンテンツのウイルスチェックが実施できる。悪意のあるサイトからマルウェアが侵入するのを防ぐ効果が期待できる。
匿名性の確保
閲覧先のWebサイトには、社内のコンピューターではなく、プロキシサーバーが接続する。そのため、社内コンピューターのIPアドレスなどの情報が、接続先に公開されない。
近年は、巧妙化するサイバー攻撃に対して、入口対策・内部対策・出口対策から構成される多層防御の備えが求められている。プロキシは多層防御における出口対策としても活用できる。また、標的型攻撃のように防御が難しいサイバー攻撃では、情報漏えいを検知・遮断できる出口対策の仕組みが重要になる。
社内LANに侵入したマルウェアは、インターネット経由で社内の機密情報・個人情報を流出させることがある。その場合でも、プロキシ経由で社内から社外へ送られる通信のログを記録・監視すれば、不正な通信を検知し、遮断できる可能性が高まる。プロキシにより、従来使われていたファイアウォールよりも、高度なログ分析が可能になるのもメリットといえる。
負荷分散や高速化の機能を提供するリバースプロキシ
リバースプロキシは、外部インターネットからサーバーへアクセスされる通信を中継する仕組みを指す。前述のプロキシ(フォワードプロキシ)と比較すると、インターネットへ接続する方向が逆(リバース)になるため、リバースプロキシと呼ばれる。
リバースプロキシを配置したWebサイトを表示する仕組みは以下のようになる。
- クライアントコンピューターからインターネット経由でリクエストを送信
- 送信先URLに割り当てられたリバースプロキシにリクエストを送信
- リバースプロキシがコンテンツを保有するWebサーバーへリクエストを転送
- Webサーバーは、リバースプロキシにコンテンツを返送
- リバースプロキシは、受け取ったコンテンツをクライアントコンピューターへ送信
リバースプロキシを導入するメリットは以下の4つが挙げられる。
リクエスト内容に応じたサーバーの選択
リバースプロキシに割り当てた、一つのURLの下で複数のサーバーを統合し、その内容に応じてリクエストを振り分けられる。例えば、「http://www.example.com/blog/」の場合はコンテンツ管理システムを運用するサーバー、「http://www.example.com/image/」の場合は静的Webページを格納するサーバーを自動的に選択できる。
負荷分散
リバースプロキシの背後に同じ処理を行う複数のサーバーを用意しておけば、大量のアクセスが同時に集まった場合でも、各サーバーにアクセスを振り分けて負荷分散を実現できる。
キャッシュ
リバースプロキシを介して送信された静的コンテンツは、一定期間、キャッシュとしての保存が可能になる。異なるユーザーが同じ静的コンテンツを要求した場合、一時保存されたキャッシュが送信され、高速な表示が行える。また、キャッシュを利用する間はサーバーからリバースプロキシへの静的コンテンツのデータ送信が発生しないので、サーバーへの負荷が軽減される。
SSL高速化
ユーザーとWebサーバー間でやり取りする内容を暗号化するためにSSL通信が行われるが、通常はWebサーバー上で暗号化・復号の処理が求められる。リバースプロキシで暗号化・復号を行えば、内部のWebサーバーはSSL処理を行う必要がなくなり、負荷を軽減できる。この場合、ユーザーとリバースプロキシ間の通信は暗号化されるが、リバースプロキシとWebサーバー間の通信は暗号化されない。
上記の利点に加え、リバースプロキシはセキュリティを高める効果もある。具体的には、悪意のある攻撃者がWebサーバーへ直接アクセスできなくなるため、Webサイトの内容が改ざんされるリスクが低減される。また、リバースプロキシと認証サーバーを連携させることで、複数のアプリケーションへの認証・認可を行うシングルサインオンが実現できるのもメリットといえる。
プロキシ及びリバースプロキシがサイバー攻撃の対象となる可能性も
これまで見てきたように、プロキシとリバースプロキシは、Webサーバーへの通信を中継する点が共通しているものの、その目的はそれぞれ異なっている。プロキシは、社内LANからのアクセスを中継してインターネットへ接続される。一方、リバースプロキシはインターネット側からのアクセスに対し、LAN内へのアクセスを中継する。
プロキシ | リバースプロキシ | |
---|---|---|
役割 | 社内LANからインターネットへの接続を中継 | 外部インターネットからサーバーへの接続を中継 |
目的 | 組織なユーザーの利便性やセキュリティの向上 | 外部公開サーバーのパフォーマンス向上 |
利点 | キャッシュによる高速表示、フィルタリング、ウイルス対策、匿名性の確保 | サーバー統合、負荷分散、キャッシュ、SSL高速化 |
実現方法 | プロキシサーバーの設置、ユーザーのブラウザー設定 | リバースプロキシサーバーの設置 |
プロキシ及びリバースプロキシは、DMZ(非武装ネットワーク)に設置されるのが一般的であるため、セキュリティ上の考慮が必要になる。DMZとは外部と接続するサーバーを配置する領域で、内部のLANはDMZの背後にあるファイアウォールで保護される。
そのDMZ内に設置されたプロキシ及びリバースプロキシは、外部から直接アクセスできるため、サイバー攻撃の対象となり危険性が高まりやすい。実際、過去には中間者攻撃によって認証情報を取得されるプロキシの脆弱性が発見された。また、プロキシを悪用し、ほかのサーバーを攻撃する踏み台にされる事例も発生している。
脆弱性を突かれ悪用されないよう、プロキシ及びリバースプロキシを利用する際には、定期的に設定やパッチを確認し、最新の状態に保つ必要がある。意図せずサーバーのプロキシ機能が動作しているケースもあるので、誤った設定が検知された場合、迅速にプロキシ設定やアクセス設定を見直すとよいだろう。