サーバソフトウェア

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 通信...

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

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

この問題への対策として、プロキシによる SSL/TLS 復号技術があります。

③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 以降はこの方式が利用可能です。

Resolving the URL Category in Decryption When Multiple URLs Use the Same IP
Resolving the URL Category in Decryption...

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

HTTPS Webfiltering without deep scan enabled details
Description Since FortiOS 5.0.3, when co...

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

昔は https の宛先を特定する技術としては、サーバ証明書の『コモンネーム』や『サブジェクト代替名』を見る方式が主流でしたが、サーバ証明書はサーバから送信するものであること、ワイルドカードを使われると広く開けられてしまうこと、などのため使い勝手が悪く、この方式は廃れ、SNI を見るのが主流です。

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

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

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

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

【図解】UTMとhttpsの関係 ~SSL復号とSNIインスペクションについて~
UTMとは ファイアウォールはセキュリティのためのアプライアンス NW 機器です...

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

SSL証明書エラー/警告の原因・理由と対処方法
証明書エラー警告がされた場合の対処法です。 症状 (Chrome, Edge, ...

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

Webプロキシの URLフィルタ

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

UTM の URLフィルタ

PaloAlto や FortiGate 等があります。

単に URL フィルタと言っても大きく 2 つのタイプに分かれます。1 つは単に特定の URL を制御するタイプ、もう 1 つはそのサイトのカテゴリ単位で制御するタイプです。

単に特定の URL をアクセス制御したい場合は基本ライセンスのみで利用可能です。(ワイルドカードも利用可能)

【FortiGate】URLフィルタで特定URL(FQDN)のみ許可 ~除外と許可,シンプルとワイルドカード/正規表現の違い~
UTM で URL (FQDN) をアクセス制御する 2 つの方式 PaloAl...
【PaloAlto】特定URL(FQDN)をワイルドカードでアクセス制御する"Custom URL List"
UTM で URL (FQDN) をアクセス制御する 2 つの方式 PaloAl...

もし URL ではなくそのサイトの (有害サイト、成人向けといった) カテゴリ単位で制御したい場合は有償オプションライセンスを追加することで対応できます。

コメント

タイトルとURLをコピーしました