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