https の URLフィルタ(Web/コンテンツフィルタ)の動作と仕組み,SNI検査,製品例について

URLフィルタ(Webフィルタ/コンテンツフィルタ)とは

URLフィルタとは、社内PCのインターネット閲覧に制限をかける機能のことです。

例えばアダルトやドラッグ等の有害サイトや、動画/SNS等の業務に不要なサイトを社内NWから閲覧できないようにする、もしくは閲覧者に対して警告/管理者に対してログ出力をした上で閲覧を許可する仕組みのことです。

Webフィルタやコンテンツフィルタとも呼ばれたりします。

あらゆるサイトが、URLフィルタメーカ(もしくは協力会社)によって何かしらのカテゴリに分類(産まれ立てのサイトは"未分類"というカテゴリに分類)されますので、管理者はカテゴリ毎にどのような動作(許可/拒否/警告など)にするかを設定します

http の URLフィルタの仕組み

URLフィルタの仕組みは、http については httpヘッダの中身を見て、ホストのFQDNおよび その配下のサブディレクトリ等の情報を見れます。

例えば http://abc.xyz/ というサイトが複数のカテゴリのサイトを運営していたとします。

http://abc.xyz/adult/ は有害サービス、http://abc.xyz/sports/ は健全なスポーツ情報サイトだったとします。httpであればサブディレクトリの情報も http ヘッダを見れば分かりますのでサブサイト毎にカテゴリの識別が可能です。

https の URLフィルタの仕組み

https の場合は暗号化によりhttpヘッダの中身を見ることができませんので、違う方法でサイト情報を見極める必要があります。

大きく4つのやり方があります。WebプロキシかUTMかによっても取りうる方法が異なります。

①IPアドレスによる識別

一番単純なのは"宛先IPアドレス"によってどのサイトかを識別する方法です。ただしこれは(URLは同じだが)IPが動的に変化するサイトには弱いです

②CONNECTメソッドによる識別(Webプロキシのみで利用可能)

Webプロキシ付随のURLフィルタで使われるのは"宛先IPアドレス"ではなく"CONNECTメソッドのホスト情報"です。プロキシ経由でhttps通信をする場合はhttpの (GETではなく) CONNECTメソッドを使って通信します。CONNECTメソッドではURLのホスト名が指定されるので、ホスト名までは分かります。

プロキシのCONNECTメソッドの仕組みについては以下を参考にして下さい。

【図解】httpプロキシサーバの仕組み(http GET/https CONNECTメソッド)や必要性・役割・メリットデメリット・DNSの名前解決の順序
【図解】httpプロキシサーバの仕組み(http GET/https CONNECTメソッド)や必要性・役割・メリットデメリット・DNSの名前解決の順序
プロキシサーバとは、クライアントからサーバへhttp通信する際、直接やり取りする...

ただし、CONNECT ではサブディレクトリを見ることができません。これは、CONNECTメソッドで取り次いだ後は暗号化されたデータを取り次ぐだけで、中身を見れないからです。

先の例だと、https://abc.xyz までの情報しか分からず、そのサブディレクトリが /adult/ なのか /sports/ なのか識別できないのです。

③TLSネゴシエーション中のSNI/CA情報による識別

https (TLS)による暗号化通信を行う前のネゴシエーションはクライアントからの Client Hello で開始します。この Client Hello の "Extension" という拡張領域に SNI (Server Name Indication , 別表記では Server_Name) という属性があり、この中にアクセス先ホスト名が格納されます。この部分は暗号化されていないため、URL識別に利用することが可能です。これは 2011年に公開された RFC 6066 で定義されており、実装はかなり進んできています。

この方式の問題点は、CONNECT と同様サブディレクトリが識別できないことです。

参考1:PaloAlto では PanOS6.0 以降はこの方式が利用可能です。

https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA10g000000ClpUCAS

参考2:FortiGate では FortiOS 5.0.6 以降はこの方式が利用可能です。

https://kb.fortinet.com/kb/documentLink.do?externalID=FD34661

ただし、WindowsXP や IE8 以前等の古いブラウザ等、いくつかのクライアントアプリケーションによっては Client Hello に Server_Name は含まれません。

このようなケースでは、同様に TLS ネゴ中の Certificate に含まれるサーバ証明書の CN (Common Name) による識別が使われます。(逆に TLS v1.3 以降ではサーバ証明書取得の通信が暗号化されてしまうため、暗号化されていない Client Hello の Server_Name に頼るしかなくなります。)

ただし、この方式の問題点は、CONNECTと同様サブディレクトリが識別できない上に、上記の yahoo.co.jp のように、ワイルドカードを使われた場合にホスト部も細かい識別ができなくなります。例えば https://www.yahoo.co.jp と https://mail.yahoo.co.jp の識別もできません。

これは例えば Web メールによる情報持ち出しを目的としたフィルタリングを行う際に問題が大きくなります。なぜなら、Yahoo!メールの利用を不可にするためには www.yahoo.co.jp 等のサイトも止めなくてはならなくなるからです。

④自動生成した証明書を使ってhttps通信を取り次ぐ

Web プロキシにしても UTM にしても、通常は https は暗号化されたまま通信します。ですがこの方式では、Web プロキシや UTM がクライアントに対して(閲覧したいサイトの証明書では無く、)偽の証明書を動的に提示し、クライアントとサーバ間の通信を盗み見します

Web プロキシ/UTMの間で https 通信をします。その通信を復号化し、http ヘッダを検査した上で、Web プロキシ/UTMが(別の https セッションで)クライアントが本来行きたいサイトと通信し、その結果をクライアントの https セッションに載せて返します。

この方式の詳細(図解)は以下ページの「2. プロキシ」をご参照下さい。

【図解】UTMの概要と役割、SSLインスペクションやSSL復号化について
【図解】UTMの概要と役割、SSLインスペクションやSSL復号化について
UTMとは ファイアウォールはセキュリティのためのアプライアンスNW機器ですが、...

この方式の問題点は、クライアントのブラウザに SSL/TLS に関する警告が表示されることです。これは https の通信の保護の観点からすれば当然のことです。

SSLエラー/セキュリティ証明書のエラー警告が表示される理由・原因と対処
SSLエラー/セキュリティ証明書のエラー警告が表示される理由・原因と対処
セキュリティ証明書(デジタル証明書やSSL証明書、サーバ証明書などとも呼ばれます...

URLフィルタのメーカや製品の例

Webプロキシの URLフィルタ

BlueCoat SG シリーズやデジタルアーツの i-filter 、トレンドマイクロの InterScan、アルプスの InterSafe 等が有名です。

UTM の URLフィルタ

PaloAlto や FortiGate 等があります。オプションライセンスとして追加することができます。

フォローする