Squidを利用してプロキシサーバを利用する際にSquidGuardというソフトを利用してコンテンツフィルタリングをかけることが可能です。
有償製品のようにDBを保持し、それがリアルタイムに更新されてカテゴリ別にAllow/Blockを設定できるといった高機能なものではありませんが、やらないよりかはやったほうが良いということで設定したときの記録です。前提条件としてSquidがインストールされている必要があ ります。
以下のコマンドで2つのパッケージをインストールします。
# yum install squidguard squidguard-blacklists # rpm -qa | grep squid squidguard-1.3-2.el6.rf.i686 squid-3.1.10-9.el6_3.i686 squidguard-blacklists-1.3-1.el6.rf.noarch |
Squidで利用するURLのブラックリストも合わせてインストールしています。カテゴリは以下のようになります。
# ls -alF /var/lib/squidguard/ 合計 56 drwx------ 14 squid squid 4096 12月 25 18:14 2012 ./ drwxr-xr-x. 46 root root 4096 12月 25 18:14 2012 ../ drwx------ 2 squid squid 4096 12月 25 18:14 2012 ads/ drwx------ 2 squid squid 4096 12月 25 18:14 2012 adult/ drwx------ 2 squid squid 4096 12月 25 18:14 2012 aggressive/ drwx------ 2 squid squid 4096 12月 25 18:14 2012 audio-video/ drwx------ 2 squid squid 4096 12月 25 18:14 2012 drugs/ drwx------ 2 squid squid 4096 12月 25 18:14 2012 forums/ drwx------ 2 squid squid 4096 12月 25 18:14 2012 gambling/ drwx------ 2 squid squid 4096 12月 25 18:14 2012 hacking/ lrwxrwxrwx 1 squid squid 17 12月 25 18:14 2012 local -> /etc/squid/local// drwx------ 2 squid squid 4096 12月 25 18:14 2012 mail/ drwx------ 2 squid squid 4096 12月 25 18:14 2012 proxy/ drwx------ 2 squid squid 4096 12月 25 18:14 2012 violence/ drwx------ 2 squid squid 4096 12月 25 18:14 2012 warez/ |
/etc/squid/squidguard.confを編集します。デフォルトだと時間指定があって、それに該当する時間のみフィ ルタリングという設定が
入っておりましたが、時間に関係なくIPのみで設定しています。
# vi /etc/squid/squidguard.conf
#
# CONFIG FILE FOR SQUIDGUARD
#
dbhome /var/lib/squidguard
logdir /var/log/squidguard
#
# TIME RULES:
# abbrev for weekdays:
# s = sun, m = mon, t =tue, w = wed, h = thu, f = fri, a = sat
#time workhours {
# weekly mtwhf 08:00 - 16:30
# date *-*-01 08:00 - 16:30
# weekly smtwhfa 00:00 - 24:00
#}
#
# REWRITE RULES:
#
#rew dmz {
# s@://admin/@://admin.foo.bar.de/@i
# s@://foo.bar.de/@://www.foo.bar.de/@i
#}
#
# SOURCE ADDRESSES:
#
# 管理者のIPアドレスを定義します。
# ここに定義したIPはコンテンツフィルタリングがかかりません
src admin {
ip 192.168.1.1
# user root foo bar
# within workhours
}
#src foo-clients {
# ip 172.16.2.32-172.16.2.100 172.16.2.100 172.16.2.200
#}
#src bar-clients {
# ip 172.16.4.0/26
#}
# プロキシを利用する一般ユーザの送信元IPを定義します。
src localnet {
ip 192.168.0.0/24
}
#
# DESTINATION CLASSES:
#
# ホワイトリストを手動で作成します。
dest good {
domainlist local/good/domains
urllist local/good/urls
}
# ブラックリストを手動で作成します。
dest bad {
domainlist local/bad/domains
urllist local/bad/urls
redirect http://blockpage.unix-power.net/
log /var/log/squidguard/block.log
}
#dest local {
#}
# アダルト関係
dest adult {
domainlist adult/domains
urllist adult/urls
expressionlist adult/expressions
redirect http://blockpage.unix-power.net/
log /var/log/squidguard/block.log
}
# 人種的偏見関係
dest aggressive {
domainlist aggressive/domains
urllist aggressive/urls
expressionlist aggressive/expressions
redirect http://blockpage.unix-power.net/
log /var/log/squidguard/block.log
}
# オーディオ/ビデオ関係
dest audio-video {
domainlist audio-video/domains
urllist audio-video/urls
expressionlist audio-video/expressions
redirect http://blockpage.unix-power.net/
log /var/log/squidguard/block.log
}
# ドラッグ関係
dest drugs {
domainlist drugs/domains
urllist drugs/urls
expressionlist drugs/expressions
redirect http://blockpage.unix-power.net/
log /var/log/squidguard/block.log
}
# フォーラム関係
dest forums {
domainlist forums/domains
urllist forums/urls
expressionlist forums/expressions
redirect http://blockpage.unix-power.net/
log /var/log/squidguard/block.log
}
# 賭博関係
dest gambling {
domainlist gambling/domains
urllist gambling/urls
expressionlist gambling/expressions
redirect http://blockpage.unix-power.net/
log /var/log/squidguard/block.log
}
# ハッキング関係
dest hacking {
domainlist hacking/domains
urllist hacking/urls
expressionlist hacking/expressions
redirect http://blockpage.unix-power.net/
log /var/log/squidguard/block.log
}
# 不正メール関係
dest mail {
domainlist mail/domains
urllist mail/urls
expressionlist mail/expressions
redirect http://blockpage.unix-power.net/
log /var/log/squidguard/block.log
}
# プロキシ関係
dest proxy {
domainlist proxy/domains
urllist proxy/urls
expressionlist proxy/expressions
redirect http://blockpage.unix-power.net/
log /var/log/squidguard/block.log
}
# 暴力関係
dest violence {
domainlist violence/domains
urllist violence/urls
expressionlist violence/expressions
redirect http://blockpage.unix-power.net/
log /var/log/squidguard/block.log
}
# ワレズ関係
dest warez {
domainlist warez/domains
urllist warez/urls
expressionlist warez/expressions
redirect http://blockpage.unix-power.net/
log /var/log/squidguard/block.log
}
acl {
# 管理者は全て素通し
admin {
pass any
}
# 下の!は以外という意味。goodと!で列挙したもの以外はパスという意味。
localnet {
pass good !bad !adult !aggressive !drugs !forums !hacking
}
# bar-clients {
# pass local none
# }
# default {
# pass local none
# rewrite dmz
# redirect http://admin.foo.bar.de/cgi/blocked\
?clientaddr=%a+clientname=%n+clientuser=%i+clientgroup=%s+targetgroup=%t+url=%u
# }
# ローカルネットに該当しなかったものはパスしない
default {
pass none
redirect http://blockpage.unix-power.net/
}
}
|
domainlistfファイルには文字通りdomainを1行につき1ドメインを記載します。
# cat domains 0--0--7--hardcoresex.dk 0--ass-cinema-newsp.da.ru 0--bondage.dk 0--fightingshaving.da.ru 0--foodwarez.da.ru |
urllistファイルにはドメインではなくURLを1行につき1URLを記載します。
# cat urls 0001aaliyahspics.com/amateurhardcore 0001aaliyahspics.com/asian 0001aaliyahspics.com/asianhardcore 0001aaliyahspics.com/asianteens 0001aaliyahspics.com/bbw 0001aaliyahspics.com/bdsm 0001aaliyahspics.com/bigbabes 0001aaliyahspics.com/bondage |
goodとbad以外には既に多数のURLおよびドメインが列挙されていますのでgoodに素通ししたいURL/Domainを、badに無条件にブロックしたいURL/Domainを追記すればいいでしょう。redirectにはアクセス先のURL/Domainが該当しておりブロックされた場合に表示するURLを指定します。
これらのファイルを編集した後は以下のコマンドでDB化を行う必要があります。
# squidGuard -C all
Processing file and database /var/lib/squidguard/local/good/domains
[==================================================] 100 % done
Processing file and database /var/lib/squidguard/local/good/urls
Processing file and database /var/lib/squidguard/local/bad/domains
[==================================================] 100 % done
Processing file and database /var/lib/squidguard/local/bad/urls
[==================================================] 100 % done
Processing file and database /var/lib/squidguard/adult/domains
[==================================================] 100 % done
Processing file and database /var/lib/squidguard/adult/urls
[==================================================] 100 % done
Processing file and database /var/lib/squidguard/aggressive/domains
[==================================================] 100 % done
Processing file and database /var/lib/squidguard/aggressive/urls
[==================================================] 100 % done
Processing file and database /var/lib/squidguard/audio-video/domains
[==================================================] 100 % done
Processing file and database /var/lib/squidguard/audio-video/urls
[==================================================] 100 % done
Processing file and database /var/lib/squidguard/drugs/domains
[==================================================] 100 % done
Processing file and database /var/lib/squidguard/drugs/urls
[==================================================] 100 % done
Processing file and database /var/lib/squidguard/forums/domains
[==================================================] 100 % done
Processing file and database /var/lib/squidguard/forums/urls
Processing file and database /var/lib/squidguard/gambling/domains
[==================================================] 100 % done
Processing file and database /var/lib/squidguard/gambling/urls
[==================================================] 100 % done
Processing file and database /var/lib/squidguard/hacking/domains
[==================================================] 100 % done
Processing file and database /var/lib/squidguard/hacking/urls
[==================================================] 100 % done
Processing file and database /var/lib/squidguard/mail/domains
[==================================================] 100 % done
Processing file and database /var/lib/squidguard/mail/urls
Processing file and database /var/lib/squidguard/proxy/domains
[==================================================] 100 % done
Processing file and database /var/lib/squidguard/proxy/urls
[==================================================] 100 % done
Processing file and database /var/lib/squidguard/violence/domains
[==================================================] 100 % done
Processing file and database /var/lib/squidguard/violence/urls
[==================================================] 100 % done
Processing file and database /var/lib/squidguard/warez/domains
[==================================================] 100 % done
Processing file and database /var/lib/squidguard/warez/urls
[==================================================] 100 % done
|
上のコマンドでプロンプトが戻ってくればOKなのですがconfファイルに何らかの不整合等がある場合はプロンプトが戻ってこないという現象がおきます。その場合はCTL+Cでストップし/var/log/squid/squidGuard.logを確認し てください。
運用が始まってからgoodやbadに新規にドメインやURLを組込んだ場合、次のコマンドで個別にDBをアップデートできます。
# squidGuard -C /var/lib/squidguard/local/bad # squidGuard -C /var/lib/squidguard/local/good |
後はこれをsquid本体に組み込む作業が必要です。/etc/squid/squid.confに以下を追記して再起動して完了です。
# vi /etc/squid/squid.conf url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidguard.conf # squid -k reconfigure |
これで無料のコンテンツフィルタリングの完成です。