Squidを使用したウェブ広告フィルタリング

 

1 はじめに

 近年,インターネットを利用した広告が重視され,目を引かれるものが多数存在しています。しかし,学校における生徒のコンピュータ実習等では,情報検索中にウェブサイトに表示されるこれらの広告に生徒の興味が向けられ,集中を妨げられるという問題もあります。
 そこで,授業では不要なウェブ広告等の表示を制限する「コンテンツフィルタリング」を行うことで,生徒の集中力を維持し,授業の効率を上げる方法を研究しました。今回は,Linuxで多くの導入実績を持つフリーソフトウェアの「Squid(スキッド)」(Windows版)を使用し,フィルタリングを行うことを検討します。

 

2 フィルタリングの種類について

 コンテンツフィルタリングにはいろいろな種類がありますが,政府広報オンラインでは次の三つの方式が紹介されています。

ホワイトリスト方式 安全と思われるサイトのみにアクセスでき,それ以外のサイトへのアクセスを制限する方式
ブラックリスト方式 出会い系サイトやアダルトサイトなど,子どもにとって有害な特定のカテゴリのサイトへのアクセスを制限する方式
利用時間制限 子どもが一人で夜中にアクセスできないよう,夜間から早朝にかけてすべてのサイトへのアクセスを停止させる方法

出典:政府広報オンライン(http://www.gov-online.go.jp/useful/article/200903/1.html)

  平成21年4月には,いわゆる「青少年インターネット環境整備法」が施行され,学校を初め,家庭でも携帯電話等のフィルタリングの普及により,有害な情報に子どもたちが接することなく,安全に安心してインターネットを利用できる環境の整備が推進されています。

 本研究では,教育用ネットワークで実施されている既定のフィルタリングに加え,ウェブ広告の表示を制限し,いっそうの授業環境の整備を図るための手順を研究し,紹介します。

 

3 Squidの導入から実行

 (1) 手順の流れ

 今回はSquidのWindows対応版を使い,実習用サーバに導入することで,実習時のインターネットを利用した情報検索の効率向上を目的とします。設定作業の流れは以下のとおりです。

  ア 導入する環境の確認
  イ Squidのダウンロード
  ウ ダウンロードファイルの展開
  エ Squid設定ファイルの編集
  オ Squid起動の準備
  カ Squidの実行
  キ クライアントの設定
  ク Squidの運用

 (2) 導入する環境の確認

 Squidを導入する環境を確認します。 本研究で利用する実習室の環境は以下のとおりです(図1)。Squidを導入するサーバの上位に既設のプロキシサーバが存在します。

図1
 図1 実習室構成

 (3) Squidのダウンロード

 Squidは,linuxを含むUnix系OSで動作するプロキシサーバで,最新版はソースコードで公開されています。

URL1:http://www.squid-cache.org/

  また,Windowsで動作するSquidは,実行形式のファイルで公開されています。

URL2:http://squid.acmeconsulting.it/index.html

 今回導入するサーバは,Windows Server 2008であるため後者のURLからダウンロードします。

 Windows版のダウンロードは「Acme Consultings」のトップページから「Production release」の「Squid 2.7 for Windows」から,「Squid download Page」の「mirror 1」ページへ進み,バージョン2.7系列の最新版である「2.7.STABLE8」をダウンロードします。(2013年1月現在)

 (4) ダウンロードファイルの展開

 Windows版Squidは,標準設定がC:\squidで実行されることを想定しているため,ダウンロードしたzipファイルを「C:」ドライブに展開します(図2,3)。

図2
図2 Windows標準機能での展開の様子

図3
 図3 展開されたファイル

 (5) Squid設定ファイルの編集

  ア 「C:\squid\etc」にある以下の二つのもファイルをコピーし,ファイル名を変更します。
       「squid.conf.default」をコピーし,ファイル名を「squid.conf」に変更
       「mime.conf.default」をコピーし,ファイル名を「mime.conf」に変更
 
  イ 「squid.conf」の以下の行番号の記述を変更,追記,確認をします。なお,行頭に#がついているものはコメント行です。


 Squid標準のポートが3128であることを確認します。

1104行 http_port 3128
 

 デフォルトでは,プライベートIPアドレス(ローカルIPアドレス)のアクセスが可能になっています。

 allowが許可,denyが拒否を表します。

601行〜611行 acl all src all
acl manager proto cache_object
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32

<省略>

acl localnet src 10.0.0.0/8               # RFC1918 possible internal network
acl localnet src 172.16.0.0/12     # RFC1918 possible internal network
acl localnet src 192.168.0.0/16    # RFC1918 possible internal network

 上記の609〜611行がプライベートIPアドレスを示し,localnetの名前で設定されています。この行があることを確認します。

650行〜 http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
#http_access deny to_localhost
http_access allow localnet  # 667行
http_access deny all          # 670行

 上記の667行でプライベートIPアドレスを許可し,670行でその他の通信を拒否しています。

 今回は,上位に既設のプロキシサーバ(192.168.x.x:8080)が存在するため,次の設定を追記します(追記部分太字)。

変更前
1601行〜
#Default:
# none
 
変更後
1601行〜
#Default:
# none
cache_peer 192.168.x.x parent 8080 7 no-query
never_direct allow all

 (6) Squid起動の準備

   ア キャッシュデータの作成

 キャッシュデータを作成しないと,Squidが実行できないので,次のコマンドをコマンドプロンプトで実行します。

c:\>cd \Squid\sbin
c:\Squid\sbin>Squid -z

図4
 図4 キャッシュデータの作成

   イ Squidをサービスに登録

 Squidは,「c:\squid\sbin」の「squid.exe」を実行することで動作します。ただし,自動開始や異常停止などに対応するためには,Windowsサービスに登録をします。なお,サーバのユーザーアカウント制御 (UAC)が有効の場合,正しく登録されないことがあります。

 次のコマンドを実行すると,「Squid」名でサービスが登録されます。

c:\>cd c:\squid\sbin
c:\Squid\sbin>squid -i

図5
 図5 Squidをサービスに登録

 なお,サービスを削除する場合は,次のコマンドを実行します。 

c:\>cd c:\squid\sbin
c:\squid\var>squid -r

 (7) Squidの実行

 Squidを実行するには,「サービス」の一覧から「Squid」を選択し,p(開始ボタン)ボタンをクリックします。なお,サーバを再起動しても,実行することができます(図6)。

図6
図6 Squidサービスの様子

 (8) クライアントの設定

 クライアントの生徒用コンピュータで「インターネットのプロパティ」にある「ローカルエリアネットワーク(LAN)の設定」に実習用サーバのアドレスとポート"3128"をプロキシサーバに設定します。

図7
図7 生徒用コンピュータ(クライアント)の設定例

 

4 Squidの運用(フィルタリング)

 今回は,Squidのフィルタリング部分であるアクセスコントロールの例を挙げて説明します。

 以下の設定は,すべて「C:\squid\etc」フォルダの「squid.conf」に追記をします。ただし,適用するためには,Squidのサービスを再起動する必要があります。

 (1) 特定のドメインのアクセスを禁止

 ドメイン全体を禁止する場合は次のように記述します。

672行からの#行(コメント行)の後に追記
acl 設定名 dstdomain アクセス禁止したいドメイン
http_access2 deny 設定名
<設定例>
エースネットを禁止します。
acl denylist dstdomain aichi-c
http_access2 deny denylist

アクセスを禁止したサイトにクライアントからアクセスすると,squidが次のようなメッセージを表示します。

図8
図8 禁止されたアドレスへのアクセス

 (2) アドレスの一部分でアクセスを禁止

 授業で接続が想定されるウェブページのソースを確認し,広告等(一般的にはソースの中でbannarやadの文字列が使われる)の文字列や制限したい対象が決まっている場合は,特定のアドレスで禁止することもできます。

672行からの#行(コメント行)の後に追記
acl 設定名 url_regex 正規表現のアドレス
http_access2 deny 設定名
<設定例>
特定の広告を止める。
acl denyurl url_regex /bannar/
http_access2 deny denyurl

 上記設定例は,ウェブページに表示される広告(アドレスでは/bannar/xx.jpg)にアクセスできないように設定しています。設定前と後の状態を図9に示します。

   
図9 ウェブページの広告の停止例(設定前(左)と設定後(右))

 (3) その他のアクセス制限

 Squidは,強力なアクセス制限機能をもっているため,ほかにもさまざまな設定が可能です。

 アクセス制限やその他の設定については,「Squid アクセス制限」のキーワードで検索すると,多数の情報を日本語で確認することができるため,今回は省略します。

 

5 まとめ

 今回は,Squidという汎用のプロキシサーバを用いてフィルタリングを実現しました。同様の機能は他のプロキシサーバソフトウェアにも存在します。ただ,今回,複数のソフトウエアを確認してみた結果,Squidでは安定して実行できることが分かりました。また,Squidの設定ファイルは大きなファイルですが,特定の部分を修正,追記するだけで容易に設定変更できることが確認できました。今回の研究で利用した設定以外についても研究を進めることで,より多くの機能を利用することができると思います。

 本研究では,生徒の実習環境の整備を目的に進めてきました。今後はフィルタリングの抽出方法についてより精度よく有効になるように研究を進めていきたいと思います。