Bluecoat SGのポリシー定義

(1)概要
Bluecoat SGのポリシー定義はファイアウォールのルール定義と似ている。ファイアウォールはインターフェース毎にポリシーを列挙し、上から順に処理するのが一般的だと思う。SGのポリシーも基本的には同様だが、用途に応じて複数のレイヤを持たせる場合がある。
例えばhttps://twitter.comをBlockする設定を1枚目のWebアクセスレイヤに行う。2枚目のWebアクセスレイヤでAny Permitとする。
各レイヤはファイアウォール同様に上から順に処理され、マッチした行より下の行は処理されない。レイヤが複数ある場合には1枚目から順に処理される。上記のケースだと、1枚目のBlockに該当するものの、2枚目のPermitにも該当するため、https://twitter.comは最終的に許可されることになる。つまり、複数のレイヤがある場合には後勝ちということである。ただ、レイヤにはいくつか種類があり、上記は種類が同じレイヤの場合の話となる。
レイヤの種類は、WEBアクセスレイヤ、SSLアクセスレイヤ、SSLレイヤ、コンテンツレイヤ、認証レイヤなどである。種類の違うレイヤは互いに干渉しないようなので、どのような順番になっていても問題無いと思われる。ルール全体の規模が小さければWEBアクセスレイヤは1つのレイヤだけで表現すれば間違いも少ないが、規模が大きくなるとレイヤをわけないと管理が難しくなる可能性がある。

ポリシー定義は種類が多く、ここでは一部の例を記載する。それ以外の簡単な設定はファイアウォールのルール定義とさほど変わらない。(簡単ではない設定もあるかもしれない)

(2)複合化除外の設定

[Configuration][Policy][Policy Files]を開く
Install Lical File From:のセレクトボックスにText Editorを選択し、Installボタンを押す

宛先FQDN(example.com)に対して除外をする場合、以下のように記載して保存する。

url.domain=”www.example.com” detect_protocol(none)

上記の例ではLocalFileを選択したが、他のファイルでも良いし、TextEditorで記載せず、WEBサーバにCPLファイルを置いて参照させても良い。

次にVPMのSSL Intercept Layerでも宛先wwww.example.comのルールを作成し、Actionに Desable SSL Interceptionを設定する。

(3)認証の設定(AD (LDAP)の場合)

[Configuration][Authentication][LDAP]を選択
LDAP RealmsでNewを押し、任意の名前のレルムを作成
LDAP ServersにLDAPサーバ情報を入力する。Type of LDAP ServerにADを指定
LDAP DNを設定する。LDAPのどの階層を検索するかなので、ユーザを登録しているOUを指定
LDAP Search & Groupsにどのユーザ(CN)で検索をするかを指定する。OUも含めてフルパスを記載
LDAPレルムを設定したら、次にVPMでWeb Authentication Layerにルールを作成する。

NewでAuthenticateを選択
AuthenticateObject画面で以下を入力
Name:任意名前を設定する
Realm:作成したLDAPレルム名を入力する

これで認証の設定は完了となる。認証を除外する場合にはこのルール行の前に、Do Not Authenticateルールを定義する。

(4)キャッシュ除外の設定

Web Content Layerにルールを作成する。
ActionにDo Not Cacheを設定する。

(5)証明書チェック除外の設定

VPMのSSL Access Layerにルールを作成する。
対象の宛先などを設定し、アクションにDisableCERTvalidationを選択する。

(6)グループと否定のルール

特定のオブジェクトグループ以外を禁止する場合、以下のように設定する。例えば特定の範囲以外のIPアドレスからはアクセスを禁止するような場合。
あらかじめグループのメンバとなるオブジェクトを登録しておく(許可するオブジェクト)。
NewでCombined Source Objectを選択する。
あらかじめ作成したオブジェクトを選択し、None of these objectsにAddする。
Negateチェックボックスにチェックを入れる
VPMのアクションはDenyにセットする。

(7)コンテンツフィルタ

Bluecoatが提供するカテゴリベースのフィルタリングを行う機能はWebFilter機能だが、この機能はライセンスが必要となる。ユーザに対するライセンスとのことなので、会社としてもっていれば他の用途で使っていてもライセンスはかからない模様。WindowsのCALのような考え方と思われる。
よって、まずはライセンスを登録してカテゴリをダウンロードする。

[Configuration][ContentFiltering][BluecoatWebFilter]を開く
Usernameを入力(ベンダから指定される)
Change Passwordを押し、Passwordを入力(ベンダから指定される)
Download nowを押す
Automatically check for updatesにチェックを入れる

正常にダウンロードできたら、VPMでWebAccess Layerに行を追加する。
Destinationにカテゴリを選択し、BlueCoat配下にカテゴリが列挙されているので、必要なカテゴリを選択する
ActionにDenyを設定する(拒否する場合)

(8)ローカルデータベース

ローカルデータベースにはカテゴリを定義してVPMで利用する。ハッシュ法による高速検索を行うためだと思われるがいろいろ制限や注意事項がある。ルールで宛先に設定したローカルデータベースのカテゴリは、最長一致で処理されるという仕様で戸惑う事がある。

例えばカテゴリAにexample.com、カテゴリBにwww.example.comを記載し、A社はカテゴリAを許可、B社はカテゴリBを許可するルールを書いたとすると、A社はwww.example.comにアクセスすることはできない。SGはローカルデータベース読み込み時にローカルデータベースのエントリをハッシュ化し、どのカテゴリに属するか、カテゴリマッチングを行う。

ルール上では、この処理がされた結果を許可しているのであって、ローカルデータベースを見たまま許可されているわけではない。他のカテゴリの設定が干渉しているように思えてしまうが、そうではない。この点が最も注意が必要な部分だと思う。その外にも、同じエントリは4カテゴリまでしか登録できないなどの注意もある。また、そもそもの仕様として、サブドメインは自動的に許可される事や、正規表現は利用できないなどの仕様を理解しておく必要がある。

いろいろ制限や注意があるローカルデータベースだが、高速処理と引き換えの仕様と考えるべきで、運用においても数千件あるエントリをVPMで1つづつルール定義する事を考えたら、ローカルデータベースを工夫するほうが良い場合が多くある。だが、セキュリティに係る要件に対しては運用の労力や処理性能は度外視されるのでその場合はあきらめてVPMに登録する必要がある場合もあると思う。