XG FirewallのWebとアプリケーションフィルタについて

この記事で実現すること

XG FirewallのWebフィルタ・アプリケーションフィルタについて、活用方法を説明します。

Webフィルタについて

XGの左ペインメニューでは、Webアプリケーションとそれぞれ分かれています。Webではサイトのカテゴリが分かれていて、そのサイトのカテゴリによっては閲覧を制限する事が一般的な使い方です。これらのポリシーは、「Sophos XG Firewall: Web カテゴリ」の記事にも日本語の解説があります。サイトのカテゴリについては、ビジネス、ギャンブル、ゲーム、アダルト、ファイナンス等多岐に渡ります。ホームユーザーとしてはいわゆる怪しいサイトや過度な広告をフィルタする事が主目的になります。しかし、上記サイトのポリシーを眺めていると疑問に感じるところがあります。”ActiveX”、”Applets”、”SpamURLs”です。ActiveXやAppletは単純にサーバー名とも関係ありません。サイトのカテゴリに加え、URLまでを対象としているようです。Web カテゴリについては、以下のの記事を参照してください。

https://community.sophos.com/kb/ja-jp/134155

上記のWebカテゴリには記載がないものの、XGの左ペインメニューのWebファイルタイプの内容には、ファイル拡張子やMIMEヘッダーの情報が並びます。そしてここにはZIPファイルなどの”Compressed Files”、Windowsの実行ファイルである”Executable File”などの項目が並んでいます。

ホームユーザーとしては、ZIPファイルやEXEファイルが使えないと不便なのでフィルタする事は考えにくいですが、何らかのMIMEタイプを拒否するポリシーを作成する場合は有効に機能しそうです。最終的には、Webフィルタは以下の種類の分類となります。

  • Webカテゴリ
  • URLグループ(自身で作成したURLの集まり)、280blockerなどのURLデータベースもこのグループ
  • ファイルタイプ
  • ダイナミックカテゴリ(ActiveX・Applets・Cookies・HTTP Upload)

これらの事から、Webフィルタはカテゴリの分類という主目的はあるものの、ブラウザを対象としたフィルタの機能である事がわかります。

SNIとフィルタとの関係

SNIとは、Server Name Indicationの略です。SSL/TLS通信において、クライアントからサーバ証明書を要求する時にサーバ名(SNI)を暗号化せずサーバーに渡します。XGはこのSNIを見てWebフィルタを行っていますので、接続しようとしているドメインやサーバー単位にアクセス許可・不許可の判断が可能になります。しかしフォルダ構成やMIMEタイプ、引数やダウンロードするデータを検査するには、SSLインスペクションが必要です。もちろん、ドメイン単位の制御でIoT機器はある程度の防御が可能と言えますが、防御を最大限に高めるにはSSLインスペクションが必要です。「XG Firewall v18のSSLインスペクションの動作確認と調整 」で記載した通り、ZIP化されたマルウェアはSSLインスペクションが行えなければ検知は出来ません。

アプリケーションフィルタについて

XGのアプリケーションフィルタは、XGの左ペインメニューのアプリケーションから確認できます。ブラウザーではないインターネットに接続するアプリケーションを対象にしています。ここの挙動の確認は非常に難しいものがあります。例えば、MicrosoftのOneDriveを題材にテストしてみましょう。SSLインスペクションが行えるWindows端末とSSLインスペクションが行えないAndroid端末を用いて検証します。

OneDriveのURLは、現時点で、https://onedrive.live.com/です。Webフィルタで当該ドメインのフィルタを行うと、想定通りブラウザーからOneDriveにはアクセス出来ません。これはSNIで判断できるため、SSLインスペクションの有無に関わらずアクセス不可が実現できます。

しかし、Android端末のOneDriveアプリ経由では制御が効かずファイルをアップロードできてしまいます。また、WindowsPCのエクスプローラーのOneDriveフォルダからもファイルが削除出来、クラウド上のファイルは削除されます。これはアプリが使うWebAPIのURLとブラウザが使うURLとは異なるためにこういった事象(Webフィルタでは制御できないこと)が発生すると考えられます。

さらに検証を続けます。一旦Webフィルタを削除し、アプリケーションフィルタにOneDriveの項目があるので、そちらをフィルタしてみます。

XGの左ペインメニューのアプリケーションからファイアウォールルールで選択されているポリシーの先頭で追加ボタンをクリックし、スマートフィルタonedriveと入力し、Enterキーを押します。

OneDriveのルールがいくつか表示されます。”OneDrive Application”,”OneDrive Base”,”OneDrive File Download”,”OneDrive File Upload”です。アクションを”拒否”して最後に”保存”をクリックします。この作業の結果は以下の通りの挙動でした。

OS テスト内容 結果
Windows ブラウザからOneDriveにアクセス 接続不可
WindowsエクスプローラーからOneDriveにファイル追加 不可
WindowsエクスプローラーからOneDriveのファイル削除 不可
Android ブラウザからOneDriveにアクセス 接続不可
OneDriveアプリからファイル追加 不可
OneDriveアプリからファイル削除 可能

上記のOneDriveに関するテスト結果では、ファイル削除について、SSLインスペクションの有無で動作に違いが表れました。AndroidはSSLインスペクションが行えないため、URL(SNI)の検証は行えますが、データの中身はhttpsで暗号化されておりファイル削除については制御出来ませんでした。また、OneDriveはファイルのアップロード・ダウンロードと分かれていましたが、他のアプリケーションであるAppleのiCloudDriveに関してはアプリケーションフィルタは1種類だけです。このようにアプリケーションフィルタは、アプリの作り方にも左右されるものとなります。

なお、アプリケーションフィルタの中には、”EXE File Download”というフィルタも存在しますが、あくまで汎用的なものです。全てのいかなるアプリケーションからのEXEファイルのダウンロードを禁止できるものではありません。

Webフィルタ・アプリケーションフィルタを完全に動作させるには、SSLインスペクションが必要です。

このアプリケーションは止めておきたいというニーズに対して、都度メンテナンスしていくのはとても大変です。従い、高リスクのアプリケーションは拒否する設定をします。具体的な設定については、「XG Firewall v18の設定におけるベストプラクティス」を参照してください。

XGを運営しているプロダクトチームは、こういったトラフィックの中身を見ながら制御するポリシーを作るのですから、極めて大変な作業です。特にクラウドアプリケーションは予告なくURLやAPIが変更されるでしょうから、そのメンテナンスコストは計り知れません。