2013-02-02

Webコンテンツのフィルタリングについて。(その2)

どもです。

前回(Webコンテンツのフィルタリングについて。(その1))について書かせてもらいましたが、
  • マシンパワーを喰わない
と言う利点が有るものの、
  • フィルタリング対象のサイトの追加ができない。
と言う欠点もあります。
やはり、OpenDNS自体アメリカのものなので海外のサイトに対しては十分でも、国内サイトについてどこまでが対象とiなっているのかが分かっていません。てか、調べてません。ゴメンナサイ。

で、この「Blacklistをこっちでメンテしたい」って言う観点で調べたところ、"squidGuard"が出てきました。
以下は、そのインストール周りについてです。

参考にしたのは次のsite。
大体、こんなトコですかね。他にもアリますがそれは各自で…テヘ。
 
さて始めましょう。

0.前準備

とりあえず、環境の確認等々。

 こんな感じで構築していきたいと思います。

 既にhavpは動いているので、その次段にsquidを置きたいと思います。

1.squidのInstall

まずは、squidのinstallを行います。(既に稼働中のならここは要りません)
apt-get install squid3

2./etc/squid/squid.confの修正

修正箇所としては基本次の箇所

cache_peer 127.0.0.1 parent 8080 0 no-query no-digest no-netdb-exchange default

url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf
最初のヤツは、suquidのcache proxyとしての設定。
2つ目のヤツがsquidGuardとの連携に必要な記述。
 
このsquid.confには大量のコメント&設定記述がありますが、殆ど触っていません。基本Local(と言うかPC本体だけ)でしか使わないからIP アドレスの制限とかも必要ないと思ってます。


3.havpの設定(/etc/havp/havp.confの修正)

AntiVirus Proxyのhavpもうちでは既に稼働中なので、こちらとの連携の設定を行います。

って言いたいトコなんですが、実は修正箇所って無いんですね。これが、squid - havp の形になるとすると/etc/hapv/hapv.confの次の箇所
# PARENTPROXY localhost
# PARENTPORT 3128
を環境に合わせて修正が必要になります。

4. squidGuardのInstall

次にquidGuardをInstallします。

apt-get install squidguard
で、/etc/squidguard/squidGuard.conf の修正。なんですが取り敢えず以下の部分だけ修正します。
dbhome /usr/local/squidGuard/db
これでどのディレクトリにフィルタリング用DBが有るのかを指定します。
それ以外の所謂Policy については次の5.blacklist のDownload の後に行います。


5. blacklist のDownload

squidGuardのofficial page(http://www.squidguard.org) の"Blacklists"にある配布siteからBlackListをDownloadします。

今回は、Shalla's Blacklists(http://www.shallalist.de/) を使います。

調べてみると、ここのblacklistには日本のsiteも登録されている様です。


a.web page右側の"Download"から"shallalist.tar.gz" をdownloadします。
b.squidGuard.conf の "dbhome" に書いたPath(今回の場合、/usr/local/squidGuard/db)にdownloadしたファイルを展開します。

sudo tar -xvzf shallalist.tar.gz

6./etc/squidguard/squidGuard.conf の修正。 

ここで、squidGuard.confの修正を行います。先にもチラと書きましたがPolicyなので
  • 何をBlockする。
  • 何をBlockしない。
と言う観点で記述します。
取り敢えず、自分の場合は以下の通り。

#
# CONFIG FILE FOR SQUIDGUARD
#
# Caution: do NOT use comments inside { }
#

dbhome /usr/local/squidGuard/db
logdir /var/log/squidguard

#
# DESTINATION CLASSES:
#

dest porn {
        domainlist     BL/porn/domains
        urllist     BL/porn/urls
}

dest adult {
        domainlist     BL/dating/domains
        urllist     BL/dating/urls
}

dest drugs {
        domainlist     BL/drugs/domains
        urllist     BL/drugs/urls
}

dest gambling {
        domainlist     BL/gamble/domains
        urllist     BL/gamble/urls
}

dest sexeducation {
        domainlist     BL/sex/education/domains
        urllist     BL/sex/education/urls
}

dest sexlingerie {
        domainlist     BL/sex/lingerie/domains
        urllist     BL/sex/lingerie/urls
}

dest weapons {
        domainlist     BL/weapons/domains
        urllist     BL/weapons/urls
}

dest alcohol {
        domainlist     BL/alcohol/domains
        urllist     BL/alcohol/urls
}

dest education {
         domainlist      BL/education/schools/domains
         urllist         BL/education/schools/urls
}

dest white-add {
         domainlist      usr/whitelist/domains
         urllist         usr/whitelist/urls
}

dest black-add {
         domainlist      usr/blacklist/domains
         urllist         usr/blacklist/urls
}


#
# ACL RULES:
#
acl {
    default {
                pass white-add education !black-add !porn !adult !drugs !gambling !sexeducation !sexlingerie !weapons !alcohol all
                redirect http://localhost/block.html
    }
}

記述内容としては、
dest <カテゴリ> {
        domainlist    
        urllist             

        expressionlist   
}
な感じですかね。

  • 元々Downloadして来たBlackListがカテゴリ分けされているので、それに合わせるのが吉かと思います。各々のlistは$dbhomeからの相対Pathで記述して有ります。
  • white-add,black-addは、こちらで独自にBlockしたいsiteのlistになります。
  • acl 〜 でそれぞれのカテゴリをどうするかを記述します。
  • "pass" にdest〜で記述したカテゴリを列挙します。この時カテゴリ名の前に"!" がついているものは"否定"つまりBlock対象となります。
  • "redirect" でBlock対象となったカテゴリのdomainlist,urllist,expressionlistのいずれかにHitした場合、redirectされる先になります。ここに気の利いたPageを置くといいのかも知れません。

さて、ひとつ注意。このsquidguard.confの"{} "で囲まれたパラメータ部分にコメントを示す"#"を書かないように。どうもsquidguardは解釈できない様でDB構築時にエラーとなります。
てか、止まっちゃうんですね。これが。

7.DB構築

a.次のcommandを実行。 < 暫らく時間がかかる。
sudo squidGuard -C all
これで、squidGuard.conf に記述した内容に従って必要なdomains/urlsのdbを構築します。

プロンプトが返って来たら、Logを確認

sudo gnome-system-log &
この中で、
2013-02-02 01:29:02 [31053] INFO: squidGuard 1.5 started (1359736127.062)
2013-02-02 01:29:02 [31053] INFO: db update done
となっていれば、OK。
もし、先のsquidGuardのコマンドでしばらく待っても何も返って来て無くて、Logに
ERROR: Going into emergency mode
と有ったら、何らかのエラーが有ることになります。
例えば、
squidGuard: FATAL: ACL destination mixed_adult is not defined in configfile /etc/squidguard/squidGuard.conf
と有った場合、 squidGuard.confの記述(この場合、ACL に記述されている"mixed_adult"が"dest"に存在していない。)を確認する必要が有ります。

b.構築したDBのpermissionを変更。
chown -R proxy:proxy /usr/local/squidGuard/db/* 
user:groupは任意ですがここは"proxy:proxy" にしてます。


8.squid,havpの再起動

sudo /etc/init.d/squid3 restart
sudo /etc/init.d/havp restart

9.Ubuntu側のProxyの設定

さて、ここまで出来れば後は、ネットワーク周りの設定。
”システム設定”


”ネットワーク”

”ネットワークプロキシ”

自分の場合、

 メソッド:手動
 HTTP プロキシ:localhost 3128
 以下同じ

と言う設定。
設定後、”システム全体に適用する” をClick

8. Firefox側のProxy設定

次に、ブラウザ(Firefox)側の設定
”設定”

”詳細”

”ネットワーク” タブ > ”接続設定”

 ”システムのプロキシ設定を利用する” を選択

これで、OK。

10.確認

意図したように出来たかどうかを確認。

ブラウザのアドレスバーに以下のように入力。
http://www.smith-wesson.com/
 (ご存知、銃器メーカーのS&Wのサイトです。)
で、画面がこうなればOK。



ふぅ。取り敢えずご苦労様。

もうひと踏ん張り。

11.DBのメンテナンス

こういう環境って、構築して終わりじゃなくってメンテしなきゃなんもならんわけです。

という訳でDBのメンテナンスなんですが、BlacklistをdownloadしたShalla Secure Servicesのsiteにupdate用のshell scriptがいくつか用意されているのでこれを使います。
(実は、このsiteを選んだのもこれが理由の一つだったり)

a.Shalla Secure ServicesのShalla's Blacklists (http://www.shallalist.de/)の右側の"Contributions"の"Download Helpers"をClick。

今回は、"shalla_update.v2.sh"を使うのでこれをDownload。

数カ所変更点が有るので変更します。
squidGuardpath="/usr/bin/squidGuard"
squidpath="/usr/sbin/squid3"

dbhome="/usr/local/squidGuard/db"     # like in squidGuard.conf
squidGuardowner="proxy:proxy"
workdir="/usr/local/squidGuard/tmp"
httpget="/usr/bin/wget"
shallalist="http://squidguard.shalla.de/Downloads/shallalist.tar.gz"
$httpget $shallalist -o shalla-wget.log -O $workdir/shallalist.tar.gz || { echo "Unable to download shallalist.tar.gz." && exit 1 ; }
CATEGORIES="alcohol dating drugs education/schools gamble porn sex/education sex/lingerie weapons"

基本的にversionが上がっていたり、ubuntuの場合なのかsquidGuardのPathが違っていたりの修正です。
workdirも自分の場合dbhomeに合わせましたが、どこか別のpathでも構いません。
あと、CATEGORIESですが使っているものだけを設定した方が時間節約になると思います。

httpget,shallalistについては、定義されてなかったので追加しました。

b.scriptのコピー
a.で修正したscriptを"/etc/cron.daily"にコピーします。
コピーした後、実行権限を付与します。
sudo chmod ug+x /etc/cron.daily/shalla_update.v2.sh
一応、これで日次(でやるべきかと言う疑問はあるけど)でDB更新を行います。

これでホントに終わり。

12.最後に

実は説明してなかった"usr/whitelist/domains", "usr/blacklist/domains"ですが、ここにはdownloadして来たDBとは別に「個人的にblockしたい/したくない」ドメイン等を設定します。
ShallaのBlacklistには見た感じ"jp"なドメインも登録されているようですが内容的にブロックしたいSiteが有った場合"usr/blacklist/domains"に記述することで対応できると考えてこのようにしました。

実際、日本独自にBlacklistを提供してくれてるところは無いようで、チョット残念。
今回のShallaについて言えば
Shalla's Blacklists are free of charge for personal and partly for commercial usage. Anyway, commercial usage requires signing a usage contract. See our licence for details. Please contact info (at) shalla.de for information about gaining this contract.
て書かれていて、「個人利用についてはfreeだけど商用利用するにはlicence結んでね」という事になっています。

国内のこういったコンテンツフィルタリングのソフト等も有りますが殆どが企業向けだったりして個人で利用するには高価すぎるものばかりです。
せめてBlacklistだけでもShallaの様に「個人利用はfree」で使わせてくれればと思ったりします。

さてさて、取り敢えずはこれでホントのホントに終わり。


では〜。

0 件のコメント:

SSH Keyを作成してGitHubなどに接続してみる - Qiita

大事なことなので。 SSH Keyを作成してGitHubなどに接続してみる - Qiita : GitHubやGitLab上のリポジトリへgitコマンドでファイルをpushする時に、上手く接続出来なかったのでSSH Keyの作成からやり直してみました。これはその作業ログなので自分...