HTTPS通信に対するプロキシサーバの対策【ネットワークスペシャリスト試験 平成30年度 秋期 午後1 問1 No.2】

ネットワークスペシャリスト試験 平成30年度 秋期 午後1 問1 No.2

【出典:ネットワークスペシャリスト試験 平成30年度 秋期 午後1 問1(一部、加工あり)】

【G社SaaSの試用】
 F社は、G社SaaSの本格導入に先立って、本社と一つの営業所を対象に少数ライセンスでG社SaaSを試用し、システムの利便性と性能を確認することにした。試用に先立ち、G社SaaS以外のアクセス先について、プロキシサーバでHTTPSのアクセスログを確認したところ、②アクセス先のホスト名は記録されていたが、URLは記録されていなかった。そこで、アクセス先のURLを把握するために、プロキシサーバで暗号化通信を一旦復号し、必要な処理を行った上で再度暗号化した。しかし、社内PCでエラーメッセージ”証明書が信頼できない”が表示されたので、社内PCに(ウ:プロキシサーバのルート証明書)をインストールして解決した。
 G社SaaSを試用した結果、次の事実が判明した。

  • G社SaaSにアクセスした際にプロキシサーバを通過するセッション数を実測したところ、スケジューラにアクセスする1人当たりのセッション数が大幅に増加した。
  • 複数人が同時に大容量のファイルをG社SaaSに転送している間、本社のFWを経由するインターネット接続回線のスループットが低下した。

 このまま全社でG社SaaSの利用を開始すると、プロキシサーバの処理可能セッション数の超過、インターネット接続回線の帯域不足が予想された。

②について、HTTPSでアクセスするためのHTTPプロトコルのメソッド名を答えよ。また、このメソッドを用いる場合、社内に侵入したマルウェアによる通信(ただし、HTTPS以外の通信)を遮断するためのプロキシサーバでの対策を、30字以内で述べよ。:(メソッド名)CONNECTメソッド、(対策)HTTPS以外のポートのCONNECTを拒否する。

 HTTPとHTTPSの通信で、プロキシを利用する場合についての動作の違いを簡単に説明すると次のようになります。

  • HTTP通信では、プロキシサーバでクライアントからのパケットのペイロード(データ部分)からURLを読み取り、サーバに要求する。この時のリクエストはGETメソッドである。(例:GET http://www.example.co.jp/xxx/index.html HTTP/1.1)
  • HTTPS通信では、ペイロードが暗号化されるためプロキシサーバではURLを読み取ることができない。クライアントはGETメソッドの代わりにCONNECTメソッドとホスト名、宛先ポート番号を送信することで、プロキシサーバではサーバへパケットを透過する。(例:CONNECT www.example.co.jp:443 HTTP/1.1)

 セキュリティ上の留意点として、プロキシサーバでCONNECTメソッドにより全てのパケットが転送されてしまうと、マルウェアなどで外部にFTPでファイル転送されるなどの可能性があります。(例:CONNECT www.example.co.jp:21 HTTP/1.1)
 対策として、もちろんファイアウォールで不要な通信は拒否するよう設定しますが、プロキシサーバにおいても、宛先ポート番号をHTTPS(443)に限定するなどの対策が必要です。

ウ:プロキシサーバのルート証明書

 HTTPS通信ではクライアントとWebサーバ間で暗号化していて、そのままではプロキシサーバで復号することはできません。
 このような場合に、プロキシサーバがWebサーバの代わりに証明書を発行して、クライアントとプロキシサーバ間で暗号化通信させることが可能です。
 本文のように、クライアントでエラーメッセージ「証明書が信頼できない」が表示される原因としては、以下のようなものがあります。

  • サーバ証明書の検証パスが構築されていない
  • サーバ証明書の有効期限が切れている
  • サーバ証明書が失効している
  • URLのFQDNとサーバ証明書のコモンネームが一致しない

 このうち、クライアント(社内PC)にインストールして解決できるものは、サーバ証明書の検証パス、すなわち、クライアントでプロキシサーバのサーバ証明書を信頼させるために、プロキシサーバのルート証明書をインストールすることです。