前回(Webコンテンツのフィルタリングについて。(その1))について書かせてもらいましたが、
- マシンパワーを喰わない
- フィルタリング対象のサイトの追加ができない。
やはり、OpenDNS自体アメリカのものなので海外のサイトに対しては十分でも、国内サイトについてどこまでが対象とiなっているのかが分かっていません。てか、調べてません。ゴメンナサイ。
で、この「Blacklistをこっちでメンテしたい」って言う観点で調べたところ、"squidGuard"が出てきました。
以下は、そのインストール周りについてです。
参考にしたのは次のsite。
- SquidGuard official
- Configuring Squid & HAVP(ClamAV) in Ubuntu : Example # 1 (kokikode's Blog )
- Server World - ネットワークサーバー構築
大体、こんなトコですかね。他にもアリますがそれは各自で…テヘ。
さて始めましょう。
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 件のコメント:
コメントを投稿