squid + squidGuard でフィルタリング、2
我が家のWEBフィルタリング「squid + squidGuard」の squidGuard設定編。
squidの設定までは、特に迷うことなく、躓きもなく、「するっ」と進んだが、squidGuardの設定ではすんなりいかない事もあり、ちょっと手間取った。
squidの設定までは、特に迷うことなく、躓きもなく、「するっ」と進んだが、squidGuardの設定ではすんなりいかない事もあり、ちょっと手間取った。
手順は以下の通り。 1~3までは前章に飛ぶ。
これで squid を起動すれば、squidGuard も自動的に起動される。
こんな感じだ。
squidGuard が起動していない場合は、squidGuard.conf の設定ミスの可能性が高い。 自分はここで時間を要した。
私が犯したミスは、
1)squidGuard.conf に記載したカテゴリと実際のディレクトリが違った為、squidGuard が起動に失敗していた。
2)オーナーを設定していなかった為
等々。 他にもあったかもしれないが、忘れた。
これら挙動は /var/log/squid 配下にログされるので、何かあったらそちらもチェックすべし。
制限されたPCから、ムフフなサイトを見て、ブロックされるか確認してみる。 ダメなら、ログや設定の見直し、を繰り返す。
◆本家
・Squid: Optimising Web Delivery
・squidGuard
◆参考サイト(順不同)
◆関連ログ:「squid + squidGuard」ネタ
- squid、squidGuard のインストール
- squid の設定。(主にsquid.confの設定)
- クライアントPCのプロキシ設定・テスト
- squidGuard の設定。(squidGuard.conf、ブラックリストの設定)
- squid の起動(再起動)
4.squidGuard の設定。(squidGuard.conf、ブラックリストの設定)
- ブラックリスト のダウンロード、設定。
Shalla's blacklists (http://www.shallalist.de/Downloads/shallalist.tar.gz)
からブラックリスト一覧を取得する。
ダウンロードしたら、任意のディレクトリに解凍する。
~/tmp$ tar xvfz shallalist.tar.tz
~/tmp$ cd BL
~/tmp/BL$ ls -xF
COPYRIGHT adv/ aggressive/ alcohol/
automobile/ chat/ costtraps/ dating/
downloads/ drugs/ dynamic/ education/
finance/ fortunetelling/ forum/ gamble/
global_usage government/ hacking/ hobby/
homestyle/ hospitals/ imagehosting/ isp/
jobsearch/ library/ military/ models/
movies/ music/ news/ podcasts/
politics/ porn/ recreation/ redirector/
religion/ remotecontrol/ ringtones/ science/
searchengines/ sex/ shopping/ socialnet/
spyware/ tracker/ updatesites/ violence/
warez/ weapons/ webmail/ webphone/
webradio/ webtv/
カテゴリ別にディレクトリが分かれていているが、そのカテゴリだけでも結構な数だ。
全てを指定してもいいが、代表的なNGなカテゴリを登録する。 これらの中から、以下のカテゴリをブラックリストとして定義する事にした。
ディレクトリ 内容 aggressive 人種的偏見に関するサイト drugs ドラッグに関するサイト gamble ギャンブルに関連するサイト porn ポルノ関係。最大のブラックリスト。70万件以上 spyware スパイウェア関連するサイト violence 暴力と嫌悪的な内容を含むサイト warez 著作権侵害の内容を含むサイト
上記のディレクトリを /var/lib/squidguard/db 配下にコピーする。
$ ~/tmp/BL$ sudo cp -R aggressive drugs gamble porn spyware violence warez /var/lib/squidguard/db
- /etc/squid/squidGuard.conf の設定
◆各ディレクトリの定義
dbhome /var/lib/squidguard/db
logdir /var/log/squid
dbhome はDBの設置場所。 Ubuntu では 「/var/lib/squidguard/db」 がデフォルトで設定されている。 そのまま使用。
logdir はその名の通り、ログの格納場所。 デフォルトは /var/log/squid 。 デフォルトそのままで使用。
◆dest
ブロックするカテゴリの定義。 ある意味主役の設定。
下記はporn の例。
dest porn {
domainlist BL/porn/domains
urllist BL/porn/urls
}
domainlist(BL/porn/domains) にはアクセス禁止のドメインが記載されているファイルの相対パス。 上で定義したdbhome(/var/lib/squidguard/db) からの相対パスになる。
urllist にはブロックするURLが記載されているファイル。
◆時間帯の定義
アクセス可能な時間帯を定義することができる。
time nethour {
weekly * 05:00-20:00
weekly fa 05:00-21:00
}
weekly とは毎週の設定。「weekly *」とやると、毎日の意味になる。「weekly *」だと上手く動かなかった(squidGuard起動しない)ので、
実際には「weekly smtwh」と定義した。
「weekly fa」とは毎週金(f)、土(a)の意味。 ちなみに土曜日が(a)なのは、日曜日が(s)でダブるため。(と思う。) 曜日をアルファベットで表し、日曜から土曜までを並べると
日(s)、月(m)、火(t)、水(w)、木(h)、金(f)、土(a)
ちなみに定義した値は、「基本は5:00から20:00 の時間帯のみ。正し金土のみ夜は21:00まで延長する。」となる。
◆IPの定義
IPアドレスでPCを特定し、制限をかける。
# 一般大人ユーザ
src adult_users {
ip 192.168.100.20-192.168.100.29
}
# 制限対象ユーザ
src child_users {
ip 192.168.100.30-192.168.100.40
}
192.168.100.20 ~ 29 までを大人ユーザ(adult_users)、192,168.100.30 ~ 40 までを子供ユーザ(child_users)とした。
◆acl
これらを定義した値を実際に設定するのが acl
acl {
adult_users {
pass !spyware all
}
child_users within nethour {
pass !aggressive !drugs !gamble !porn !spyware !violence !warez !local all
}
default {
pass none
redirect http://hogesvr.hage/ng.html
}
}
adult_users は(spyware)で定義されているサイト、URL以外へのアクセスは時間帯を問わず自由。
child_users (nethour)の時間内は (aggressive, drugs, gamble, porn, spyware , violence, warez)以外へのアクセスは可能。 (nethour)時間外のアクセスは禁止。
定義されていない、IPアドレス等のアクセスは http://hogesvr.hage/ng.html へリダイレクトされる。(default)
と言った感じだ。
- ブラックリストのDB作成
上記で定義した、ブラックリストのDB作成する。
$ sudo /usr/bin/squidGuard -C all
これでsquidGuard.conf に定義したディレクトリ配下の各定義ファイルからDBが作成される。 「all」の引数で全てが作成されるが、個々のDBを作成する場合は、dbhome からの相対パスで作成できる。
例えば、porn のdomains のDBを作成する場合は、
$ sudo /usr/bin/squidGuard -C BL/porn/domains
とやれば、その対象DBだけ作成される。
ちなみにpornは70万行以上のデータがあるのでDB作成には時間がかかった。 一瞬フリーズしたか?と思ったが、ゆっくりと待つのが吉。(いや、うちの自鯖機が遅いだけかも・・・ athlon 1400+相当?)
- 各DBファイルのオーナーをsquid の実行ユーザに変更。
ubuntu では squidの実行ユーザは 「proxy」。
この設定は squid の設定ファイル /etc/squid/squid.conf の「cache_effective_user」で定義されている。
なので、各DBファイルのオーナーを「proxy」に変更。
$ cd /var/lib/squidguard/db
$~/var/lib/squidguard/db$ sudo chown -R proxy. *
これで、実行準備が整った。
5.squid の起動(再起動)
これで squid を起動すれば、squidGuard も自動的に起動される。
$ sudo /etc/init.d/squid restart
$ ps ax | grep squid
7608 ? Ss 0:00 /usr/sbin/squid -D -sYC
7611 ? R 0:05 (squid) -D -sYC
7613 ? Ss 0:00 (squidGuard) -c /etc/squid/squidGuard.conf
7614 ? Ss 0:00 (squidGuard) -c /etc/squid/squidGuard.conf
7615 ? Ss 0:00 (squidGuard) -c /etc/squid/squidGuard.conf
7616 ? Ss 0:00 (squidGuard) -c /etc/squid/squidGuard.conf
7617 ? Ss 0:00 (squidGuard) -c /etc/squid/squidGuard.conf
$ ps ax | grep squid
7608 ? Ss 0:00 /usr/sbin/squid -D -sYC
7611 ? R 0:05 (squid) -D -sYC
7613 ? Ss 0:00 (squidGuard) -c /etc/squid/squidGuard.conf
7614 ? Ss 0:00 (squidGuard) -c /etc/squid/squidGuard.conf
7615 ? Ss 0:00 (squidGuard) -c /etc/squid/squidGuard.conf
7616 ? Ss 0:00 (squidGuard) -c /etc/squid/squidGuard.conf
7617 ? Ss 0:00 (squidGuard) -c /etc/squid/squidGuard.conf
こんな感じだ。
squidGuard が起動していない場合は、squidGuard.conf の設定ミスの可能性が高い。 自分はここで時間を要した。
私が犯したミスは、
1)squidGuard.conf に記載したカテゴリと実際のディレクトリが違った為、squidGuard が起動に失敗していた。
2)オーナーを設定していなかった為
等々。 他にもあったかもしれないが、忘れた。
これら挙動は /var/log/squid 配下にログされるので、何かあったらそちらもチェックすべし。
制限されたPCから、ムフフなサイトを見て、ブロックされるか確認してみる。 ダメなら、ログや設定の見直し、を繰り返す。
◆本家
・Squid: Optimising Web Delivery
・squidGuard
◆参考サイト(順不同)
- CentOSで自宅サーバー構築|プロキシサーバー構築(Squid)
- FreeBSDでサーバを構築しよう!|squidGuard(URLフィルタ)
- Pleasure Zone|squid+squidGuardによるコンテンツフィルタ
- ももーい鯖覚書|squidGuardでフィルタリング
- ネットワークとプログラム|squidGuardの設定と動作確認
◆関連ログ:「squid + squidGuard」ネタ


![トロン:レガシー [Blu-ray]](http://ecx.images-amazon.com/images/I/51stKBdzK%2BL._SL160_.jpg)
![ミッション:インポッシブル/ゴースト・プロトコル ブルーレイ+DVDセット(デジタル・コピー付) [Blu-ray]](http://ecx.images-amazon.com/images/I/51foiQ98iuL._SL160_.jpg)


![ハリー・ポッターと死の秘宝 PART 2 [Blu-ray]](http://ecx.images-amazon.com/images/I/61TQHHRDBAL._SL160_.jpg)
COMMENTS
※本記事に関係ないと判断した COMMENTS はお断りしております。