SafeSquidによるインターネットアクセス管理
コンテンツフィルタリング機能を持つプロキシは、ネットワーク全体のユーザやグループを対象としてインターネットへのアクセス権を制限できる。こうしたプロキシは、キーワード、URL、DNS、MIME、画像によるフィルタリング機能によって、好ましくないコンテンツをブロックできなければならない。また、アクセス先のURLを監視して詳細なレポートを生成することでインターネットにおけるユーザの活動を証明する記録を取ったり、信頼できるウイルス対策サーバにアクセスしてウイルスやマルウェアからの保護機能を提供したりする必要もある。すべてを求めるのは欲張りすぎかもしれないが、 SafeSquid にはこれらの機能がひと通り揃っている。
SafeSquidは、Office Efficiencies India Private Limited(OEIPL)により、当初はインターネットプロキシSquid用のコンテンツフィルタ・プラグインとして開発された。しかしOEIPLは、これを発展させてSquidの機能を存分に活かしつつコンテンツのフィルタリングおよび保護機能を組み込んだオープンソースのプロキシにすることを決めた。現在、このHTTP 1.1プロキシには、プリフェッチおよびリバースプロキシの処理を含むHTTPおよびFTPプロキシ機能、LDAPまたはActive Directoryサービスを使ったローカルおよびPAM認証、コンテンツフィルタリング(キーワード、URL、成人向け画像、MIMEタイプ、ヘッダ、Webサイトのカテゴリを利用)、Clam AntiVirus、Sophos、Kaspersky、ICAP(Internet Content Adaptation Protocol)などのウイルス対策ソフトウェアを利用したコンテンツのセキュリティ保護、クラスタリングによる冗長化、レポート生成といった機能が備わっている。
最新のフリー版は4.2.2RC8.9Bだが、商用エディションはバージョン4.1.1がベースになっている。商用エディションの試用版を手に入れようとしたところ、何度やっても同じページにリダイレクトされるので(現在、この問題は修正されている)、最新のフリー版のほうを利用することにした。変更履歴とリリースノートによると、この最新版は安定していてバージョン4.1.1から大きな改良が加えられているという。
最新のフリー版はSafeSquid Free Composite 20と表記されており、この「20」は最大20ユーザがプロキシに同時接続できることを意味する。Compositeエディションとは別に、Plus、Server Message Block(SMB)、Enterprise、Advancedの各エディションが存在する。いずれも最大4,000の同時接続をサポートするが、利用できる機能と価格に違いがある。SafeSquidには、cProfileというサブスクリプションサービスも用意されている。これは、Webサイトのカテゴリ分類を利用できるサービスであり、サイトのコンテンツに基づいてニュース、Webメール、成人向け、非合法、スポーツ、ハッキングといったカテゴリ分けがされている。サブスクリプションの費用は、ユーザ数と契約期間によって異なる。また、成人向け画像のフィルタなど、有償のアドオンを利用してフィルタリングおよびセキュリティ機能を強化することもできる。
SafeSquidの導入
試しにSafeSquidを利用するなら、SafeSquid Free Composite 20 4.2.2RC8.9Bのtarファイルをダウンロードする。十分なパフォーマンスを得るには、最低でもPentium III以上のCPUと512MB以上のRAMを搭載したマシンへのインストールが必要だ。最大ユーザ数が100になると、RAMの最低スペックは1GBに増える。また、その他のSafeSquidの要件を満たしているかどうかも確認すること。
ダウンロードしたファイルを展開したら、インストール手順に従う。ホスト名には、利用しているDNSで解決可能なものを使用する。SafeSquidの管理コンソールのページに進む際には、ブラウザに厳密なアドレスを入力する必要がある。たとえば、ホスト名を入れる場合には、そのIPアドレスを用いずに「http://<ホスト名>」として管理ページを開く。ホスト名が利用できないか、解決できない場合は、セットアップ時にそのIPアドレスをホスト名として入力しておけば、IPアドレスを入力して管理ページを開くことができる。設定内容の確認や変更は、別のホスト名またはIPアドレスでは行えない。なお、この類の問題解決には、SafeSquidフォーラムが役に立つ。
インストールが完了したら、スクリプトによるコマンド「/etc/init.rd/safesquid start
」でSafeSquidサービスを起動する。
まず、プロキシとしてのSafeSquidをテストした。サービスが稼働中で受信ポートが8080番になっていることを確認したうえで(ポート番号はインストールの途中で変更可能)、ブラウザのプロキシを「192.168.100.30:8080」(ここでのSafeSquidアドレス)に設定した。早速ブラウザでGoogleに接続しようとすると「Proxy refused connection」というエラーが返ってきた。続いてSafeSquidサーバのアドレスだけをプロキシとしてブラウジングを試したところ、今度は問題なく接続できた。どうやら8080番ポートがプロキシサーバのLinuxファイアウォールによってブロックされていたようだ。このポートを開くと、ほかのワークステーションのブラウザも問題なく使えるようになった。
アクセスとコンテンツの制御
ブラウザのプロキシ設定が済んだら、アドレスバーに「http://safesquid.cfg/」と入力してSafeSquidの管理ページにアクセスする。「Config」メニューには、設定に使えるオプション群がドロップダウンリストとして用意されている。ユーザのインターネットアクセスを制御するには、最初に「Access Restriction」の設定を行う。デフォルトではグローバル設定が「Deny(拒否)」になっている。つまり、このプロキシによってすべてのユーザのWebブラウジングを禁止する設定だ。ただし、このグローバルポリシーは、だれでもインターネットにアクセスできるというデフォルトポリシーの存在によって無効になっている。実際には、このデフォルトの「Allow(許可)」ポリシーを削除し、アクセスを許可したいユーザを指定した別のポリシーで置き換えることになる。開発側がこうした設定をデフォルトにしているのは、デフォルトのグローバルポリシーを拒否にしておいて許可用に特定のポリシープロファイルを設けるやり方が好ましいことを示すためである。
アクセスを許可するユーザを指定するには、「Allow」の下に新しいポリシーを追加すればよい。ポリシーの名前と説明、適用するネットワークアドレスまたはその範囲を指定する。また、ユーザ名とパスワード、制限を課すユーザプロファイルのグループも指定する。たとえば、技術部門のユーザが工学系のサイトにアクセスする必要がある場合は、その部門のユーザで構成されるプロファイルグループを作成し、そうしたサイトへのアクセスを許可するように設定する。SafeSquidでは、ユーザとグループの認証用に専用のローカルデータベースを作成することも、既存のLDAPまたはActive Directoryを利用することもできる。定義したポリシーの下には、SafeSquidで適用可能な各種コンテンツフィルタ(前述のアダルトフィルタなど)が用意されている。独自のコンテンツフィルタを作成することもできるが、多少の手間と時間がかかる。こうしたフィルタでは、SafeSquidの管理ページへのアクセス権を持つユーザの設定もできる。
ユーザ数が少なければ個別にポリシーを作成することも可能だが、企業の環境であればPAMを有効にしてLDAPやActive Directoryのような認証機構にSafeSquidを統合したほうがよい。だが、こうした統合を行うには、SafeSquidの設定ファイル「/etc/pam.d/safequid」を編集しなければならず、一筋縄ではいかない(SafeSquidフォーラムの関連スレッドを参照)。現時点でディレクトリサービスを利用しておらず、特定のコンテンツプロファイルを複数のユーザに簡単に適用したい場合には、ユーザをプロファイルグループに追加するのが次善の策となるだろう。そうしたアクセスポリシーの設定は、ファイアウォールポリシーと同じように設定できる。
ユーザ側の設定が済んだら、コンテンツの規制に移るとしよう。コンテンツを規制する最善の方法は、Webサイトをそのコンテンツに応じて事前定義済みカテゴリに分類したcProfileのサービスを利用することだ。これは、SafeSquidが特定のWebサイトのカテゴリを確認するためにアクセスするオンラインデータベースのようなものである。すでにWebサイトが分類されているため、管理者はカテゴリごとにアクセスの拒否または許可を選ぶだけでよい。Webサイトのフィルタリングを行うために、わざわざカスタムのプロファイルを作成せずに済む。また、cProfileのサブスクリプションを契約しない場合も、キーワード、ヘッダ、MIMEタイプ、URL、DNSによってフィルタリングを行うことができる。
今回は、成人向けコンテンツを引っかけるキーワードとプロキシサイト用のフィルタプロファイルをSafeSquidのサイトからダウンロードし、SafeSquidのトップメニューにある「Load Settings」オプションでSafeSquidに取り込んだ。これで、ブロックすべきがいくつかの語句がキーワードフィルタに追加される。定義済みのフィルタプロファイルに挙がっていないサイトやキーワード、その他のコンテンツをブロックしたければ、自力でフィルタプロファイルを作成する必要がある。これは、SafeSquidの有償サービスcProfileを利用しておらず、無料で使える既存のフィルタプロファイルにしか頼れない場合に特にあてはまる。ただ私の場合は、主な関心が成人向けコンテンツのブロックにあったので、ブロックすべき語句の一覧を増やすことなく、新たに追加された成人向けコンテンツのフィルタプロファイルをそのまま利用した。
コンテンツ規制の設定を保存したあと、このプロキシのテストとしてほかのワークステーションの1台でWebブラウジングを試みた。ブラウザを開き、SafeSquid経由でインターネットにアクセスしようとすると、認証用のユーザ名とパスワードの入力を求められる。このプロキシの認証プロセスはSafeSquidセキュリティの一部なので、ディレクトリサービスにも適用される。このユーザ名とパスワードの入力は、ブラウザセッションの開始時にだけ求められる。ユーザアカウントの1つを入力すると、ブラウジングできるようになった。続いてGoogleに成人向けコンテンツに関するキーワードを入れて検索したところ、その結果はSafeSquidによってブロックされ、SafeSquidロゴとブロックされたURLが表示された。「playboy.com」といったURLもアドレスバーに入力してみたが、同様にブロックされた。これで、SafeSquidのフリープロファイルだけを利用しても、コンテンツの閲覧を十分に規制できそうなことがわかった。
また、バナー広告をブロックするプロファイルの作成も可能だが、HTMLテンプレート使用時に404エラーが表示が出るのを避けたければ、画像、Flashファイル、HTMLテンプレートを個別に指定してSafeSquidサーバ内の広告バナーに置き換える必要がある。さらに、成人向け画像のフィルタをダウンロードしようとしたのだが、その際に必要な電子メールでの依頼を送っても音沙汰がなく、こちらの試用ライセンスは取得することができなかった。
SafeSquidの管理ページでは、ウイルス対策機能、DNSブラックリスト、ファイルタイプによるフィルタリング、外部認証など、その他多くの設定も行える。cProfileサービスを申し込むか、設定ファイルの一部を大々的に修正すれば、プロファイルの設定はあまり重要でなくなる場合もある。
SafeSquidのレポート機能は、ブロックされたURL、条件に合うページの要求件数、DNSキャッシュ、ユーザおよびIPアドレス別のインターネット利用状況、利用帯域幅、一般的なシステム状態(CPU使用率、メモリ使用量など)といった情報が得られるという点で十分なものに思えるが、SafeSquidではWebalizerやCalamarisのようなCLIのレポーティングツールも利用できる。なお、SafeSquidのドキュメントページには、設定の参考資料一式や動画によるチュートリアルが用意されている。
まとめ
SafeSquidには、些細な欠点が2つある。1つは、使いやすいのだが初めてのユーザは慣れるまでに時間がかかりそうなGUI。もう1つは外部の認証設定で、管理者が設定ファイルを編集しなくても済むようにすべてをGUIインタフェースでカバーしてもらえるとありがたい。
こうした小さな欠点はあるが、SafeSquidの管理のしやすさ、継続的な開発、フォーラムからのすばらしいサポートといった点から、プロキシとしてはこのSafeSquidを私は最も高く評価している。追加機能やユーザサポートにはコストがかかるが、競合製品と同等またはそれ以上の機能を備えているのでそれだけの価値はある。SafeSquidの各機能は、何千ドルもする統合脅威管理(UTM:Unified Threat Management)マシンに通常見られるような機能に匹敵する。SafeSquidであれば、ローエンドマシン1台(Pentium 4と1GBメモリを搭載した200ドルほどのマシン)、SafeSquidのいずれかのエディション(コストはユーザ数と機能による)、cProfileのサブスクリプションさえ用意すればよく、これらは通常のUTMサブスクリプション料以下の費用で揃えられるはずだ。そのうえ、ユーザが20名以下の小さなオフィスであれば、SafeSquidの機能のほとんどが無料で利用できる。