プロキシサーバとリバースプロキシサーバの違いを整理してみた
文系出身の私が、営業職として飛び込んだIT業界。現在育休中なので隙間時間にて改めてITのお勉強。。。難しいなと思ったポイントを備忘録として整理しておきます。
今回は、プロキシサーバとリバースプロキシサーバって、どちらも中継機能で同じに見える。。。ので下記にて整理。
プロキシサーバとリバースプロキシ
まず、プロキシとは代理という意味であり、どちらも内部ネットワークとインターネットを繋ぐ「代理サーバ」である。この代理接続により、悪意のある攻撃者は直接WEBサーバにアクセスできなくなりセキュリティが強化されている。双方の接続方法・WEBサイト表示に至るまでの手順は下記のよう異なり、流れとしては逆である。
- Proxy サーバ
①社内LANのコンピューターがプロキシサーバーにリクエストを送る
②プロキシサーバが外部WEBサーバにリクエストを転送する
③外部WEBサーバがコンテンツをプロキシサーバーに送る
④プロキシサーバが社内LANのコンピューターにコンテンツを送る(WEB画面表示)
- Reverse Proxy サーバ
①外部コンピューターがインターネット経由でリバースプロキシにリクエストを送る
②リバースプロキシが内部WEBサーバへリクエストを転送する
③内部WEBサーバがコンテンツをリバースプロキシに送る
④リバースプロキシが外部コンピューターにコンテンツを送る(WEB画面表示)
プロキシサーバが持つ機能
キャッシュ
代理通信を行った際に、取得したデータをプロキシサーバーに一時保管することができる。再度同様のアクセスがあった場合は、表示を高速化できる。取り扱うデータ量が大きいほど効果は大きく、また、トラフィックの削減にも寄与する。
匿名性の確保
通常はWEBサーバーへアクセスすると送信元アドレスは見えてしまうものである。ただ、プロキシサーバを経由すれば、プロキシサーバのアドレスが送信元として表示され、社内コンピュータのIP情報などは公開されない。
ウイルス対策
ユーザが外部サイトにアクセスし、コンテンツを取得する際にマルウェアなどが含まれていないかチェックできる。
認証
プロキシサーバ上にユーザー認証を実装すれば、権限の与えられたユーザーのみが外部サイトにアクセスできるようになる。
WEBフィルタリング
社内コンピュータが有害サイトにアクセスしないよう、制約を設けられる。
リバースプロキシサーバが持つ機能
配下サーバへの負荷分散
リバースプロキシの接続先として同様の役割を持った社内サーバを複数用意しておけば、外部からのアクセス・リクエストが集中した際に、ロードバランシング・各サーバへの振り分けが可能である。また、一部のサーバがダウンした際も切り離し対応することができる。
SSL暗号化の集約
通常、外部とWEBサーバ間のやりとりはWEBサーバ上でSSL処理を行い暗号化されている。この暗号化処理をリバースプロキシが行うことで、接続されているサーバは個々のSSL処理が不要となる。(リバースプロキシと社内コンピューター間は暗号化なしの状態となるが、外部とリバースプロキシ間は暗号化されている状態となる。)これにより、サーバー毎のSSL証明書の更新対応なども削減される。
キャッシュ
プロキシサーバと同様に効果あり
認証
リバースプロキシ上で認証機能を実装することで、複数のアプリケーションへ認証・認可を行える、シングルサインオンができる。
その他
プロキシサーバとリバースプロキシサーバ、どこに配置する?
基本的な考え方として、外部からアクセスされるサーバは、社内LANではなくDMZに置く。ゆえに、リバースプロキシサーバはDMZに置くのが普通である。これにより、実サーバはリバースプロキシを盾に、内部・社内LANに配置されるので、外部からの直接的な攻撃を受けずに済む。プロキシサーバは、外部からアクセスされることはないので必ずしもDMZに置く必要はない。