PCと映画とテレビと、2nd(終)

web2web.eek.jp(2nd) から 引っ越し。 今後はmono-works.com/blog(3rd)へ

Categories
Archives
Selected Entries
Recent Comments
Recent Trackbacks
Other

squid + squidGuard でフィルタリング、2

我が家のWEBフィルタリング「squid + squidGuard」の squidGuard設定編。

squidの設定までは、特に迷うことなく、躓きもなく、「するっ」と進んだが、squidGuardの設定ではすんなりいかない事もあり、ちょっと手間取った。
手順は以下の通り。 1~3までは前章に飛ぶ。
  1. squid、squidGuard のインストール
  2. squid の設定。(主にsquid.confの設定)
  3. クライアントPCのプロキシ設定・テスト
  4. squidGuard の設定。(squidGuard.conf、ブラックリストの設定)
  5. squid の起動(再起動)


4.squidGuard の設定。(squidGuard.conf、ブラックリストの設定)

  1. ブラックリスト のダウンロード、設定。
    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

  2. /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)
    と言った感じだ。

  3. ブラックリストの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+相当?

  4. 各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

こんな感じだ。
squidGuard が起動していない場合は、squidGuard.conf の設定ミスの可能性が高い。 自分はここで時間を要した。
私が犯したミスは、
1)squidGuard.conf に記載したカテゴリと実際のディレクトリが違った為、squidGuard が起動に失敗していた。
2)オーナーを設定していなかった為
等々。 他にもあったかもしれないが、忘れた。

これら挙動は /var/log/squid 配下にログされるので、何かあったらそちらもチェックすべし。

制限されたPCから、ムフフなサイトを見て、ブロックされるか確認してみる。 ダメなら、ログや設定の見直し、を繰り返す。

◆本家
 ・Squid: Optimising Web Delivery
 ・squidGuard

◆参考サイト(順不同)
  1. CentOSで自宅サーバー構築|プロキシサーバー構築(Squid)
  2. FreeBSDでサーバを構築しよう!|squidGuard(URLフィルタ)
  3. Pleasure Zone|squid+squidGuardによるコンテンツフィルタ
  4. ももーい鯖覚書|squidGuardでフィルタリング
  5. ネットワークとプログラム|squidGuardの設定と動作確認

◆関連ログ:「squid + squidGuard」ネタ
デジタル的話 > Linux的話 | comments (0) | trackbacks (0)

COMMENTS

Comment Form

※本記事に関係ないと判断した COMMENTS はお断りしております。

TRACKBACKS

現在、TRACKBACKは停止させてもらってます。
Calendar
Amazon
トロン:レガシー [Blu-ray]
トロン:レガシー [Blu-ray]
ウォルト・ディズニー・ジャパン株式会社
重々しい音響が印象的
ハリー・ポッターと死の秘宝 PART 2 [Blu-ray]
ハリー・ポッターと死の秘宝 PART 2 [Blu-ray]
ワーナー・ホーム・ビデオ
2枚で3000円キャンペーン! (2012.7.13時点)