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 |
これで無料のコンテンツフィルタリングの完成です。