#4 「ブラウザのバージョンを判定して通信制御」をやってみた

特集

デジタルワークプレースの“そこが知りたい”を
エンジニアが試して解説

この特集の記事一覧へ

IIJ ネットワーク本部 エンタープライズサービス部 デジタルワークプレース推進課

坂本 浩二

執筆・監修者ページ/掲載記事:3件

IIJでは、デジタルワークプレース実現の様々なベストプラクティスを公開しています。中でもご要望の多いパターンを、エンジニアが実際に試してみる本企画。今回はゼロトラストの課題を解決する「ブラウザのバージョンを判定して通信を制御する」方法を取り上げます。詳しい解説も聞きました。

目次
  1. あまり意識されないブラウザのバージョン
  2. 実験の準備
  3. 設定してみる
  4. 動作を確認
  5. まとめと解説

あまり意識されないブラウザのバージョン

今回やってみるのは「ブラウザのバージョンを判定して通信を制御する」ですね。

仕事でもプライベートでも、インターネットを利用するときに欠かせないアプリケーションの1つがWebブラウザです。同時に、ブラウザは最もセキュリティ対策を重視したいアプリケーションでもあります。

ブラウザがセキュリティの穴になるということでしょうか?

Webサイトを閲覧するとき、誰がどのように作成したコンテンツなのかを意識する人は少ないでしょう。悪意ある製作者は、Webコンテンツに不正なコードを埋め込み、ブラウザの脆弱性を突いて攻撃や侵入を試みます。既知の脆弱性を抱えた古いバージョンのブラウザは、恰好の攻撃対象になってしまうのです。

管理者としては、ブラウザの適切なアップデートを利用者にしてもらう必要がありますね。

ブラウザの自動アップデート機能もありますが、ブラウザを開きっぱなしにしているとアップデートが正常に行われないケースもあります。加えてテレワークの場合、PCの管理は従業員に依存しますので、ブラウザのバージョンを厳密に管理するのは難しいですよね。そこで今回は「ブラウザのバージョンを判定し、指定のバージョンに満たなければ通信をブロックする」という方法を試してみます。

実験の準備

今回は、IIJフレックスモビリティサービス/ZTNA(以下、フレックスモビリティ)を利用します。フレックスモビリティは、PCにクライアントソフトをインストールして利用するVPNサービスです。このクライアントソフトはPCのセキュリティ情報を収集でき、それらを利用してVPN接続の制御を行うこともできます。

今回は以下のような動きを確認したいと思います。ブラウザは「Google Chrome」を利用します。

  • PCのレジストリに含まれるブラウザのバージョン値を参照する
  • 管理者が指定するバージョン値未満の場合
    • バージョンアップに関わる通信は許可する
    • それ以外の通信はブロックする

すでに以下の導入や設定が終わっていることが前提となります。

  • 端末はVPN接続が行えること
  • 端末は利用するブラウザの導入が終わっていること

設定してみる

では設定をしてみましょう。フレックスモビリティの管理コンソールから、ネットワークアクセスコントロール(以下、NAC)の設定を開きます。

「正常性チェック」から、「カテゴリ」「レジストリキー」「比較」「値の型」「値」をそれぞれ選択または入力します。ここでは、Google Chrome のバージョンを示すレジストリ値(※1)を比較対象とし、入力する値(バージョン)よりも高い場合は「正常である」と示します。以下のように設定します。

  1. 「カテゴリ」:「レジストリキー」を選択
  2. 「レジストリキー」:Google Chrome のバージョンを示すレジストリパスを入力(※2)
  3. 「比較」:「以上」を選択
  4. 「値の型」:「string」を選択
  5. 「値」:管理者が許可するバージョンを入力

(※1)参照するレジストリ値のパスはアプリケーションの仕様に依存します。バージョン変更時は、レジストリパスや値に変更がないか確認されることをおすすめします。
(※2)参照するレジストリ値のパスは、「HKEY_LOCAL_MACHINE」の配下である必要があります。

続いて、上記の「正常性チェック」に失敗した場合のアクションを設定します。

  • 「失敗した場合のアクション」:「クライアントを修復」を選択
  • 「修復レベル」:「5」を選択(1-10までの数字で5を選択しました)
  • 「エラーメッセージ」:「Chromeブラウザが指定するバージョンよりも古いです。アップデートしてください。」と入力

エラーメッセージは、VPNクライアントソフト側に出力するメッセージです。VPNを通じた通信が制御された際、利用者にも理由が分かるよう易しい表現で入力します。
以上でNACの設定は終了です。

最後にポリシーの設定を行います。

ポリシーでは、NACの処理結果に連動して通信を制御することができます。今回は「バージョンアップに関わる通信は許可する」「それ以外の通信はブロックする」の通信制御を行いますので、ポリシーの「条件」と「アクション」を以下のように設定します。

  • 「条件」:「NACが失敗した場合のアクションが次の条件を満たす場合」から「修復」と「5」を選択(※3)
  • 「アクション」:
    • ブラウザのアップデートを行う「GoogleUpdate.exe」の通信を許可
    • その他の通信をブロック

(※3)上で設定したNACの「修復レベル」と一致させる必要があります。

以上のNACルール、ポリシールールをユーザまたはデバイスと紐づけたら、設定は完了です。

動作を確認

実際に動作させてみます。ブラウザが指定したバージョンに満たない場合は通信がブロックされ、アップデートのトラフィックのみ許可されました。アップデートが行われた後はVPNを通じた通信が可能になりました。

バージョンに満たない場合は、クライアントソフトには下のようにメッセージが出力されました。設定画面で登録したエラーメッセージが表示されています。

まとめと解説

ブラウザのバージョンによって通信がブロックされたり、許可されたりしましたね。

フレックスモビリティでは、PCのレジストリ値を参照して通信制御ができます。他にも「ドメイン参加端末のみVPN接続を許可」などの制御が可能です。

色々なアプリケーションで利用されているレジストリ値を活用すれば、制御の幅が広がりそうですね。

企業によって利用しているアプリケーションは多種多様です。そのためレジストリ値を参照した制御は非常に有効です。

ただし、上の「設定してみる」でもお伝えしたとおり、参照先のレジストリ値はアプリケーション仕様に依存します。バージョンアップによってあるべき先に値がない、ということも起こり得ます。利用する際は、参照しているレジストリ値に変更がないか、正常に動作するかを必ずご確認ください。