前回の記事において、ClamAVによるアンチウィルスゲートウェイの構築方法をご紹介しました。
今回は、この環境にURLフィルタリングの機能として、SquidGuardを導入します。
SquidGuard:
OBDN技術ブログによる動作検証は、該当するソフトウェアの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。
<検証環境>
OpenBlocks AX3/4 Debian 7.1 kernel: 3.2.40
OpenBlocks AX7 Debian 7.1 kernel: 3.2.40
1.事前準備
squid3などの環境は、前回の記事をご参照下さい。
今回は、前回の環境の上に追加で設定しています。
[.tested] Clam AntiVirusによるWebフィルタリング [Debian Wheezy][AX3][A7]
2.SquidGuardのインストールと設定
squidguardをdebianのパッケージよりインストールします。
# aptitude install squidguard
ドメイン、URLリストの用意
ブロックしたいURL、パスしたいURLをドメイン毎および、URL指定により設定します。
blacklistに関しては、国内においてフリーでメンテナンスされているものは、おそらくありません。
このソリューションを利用する場合、国内サイトのURL/ドメインリストは自身で管理する必要があります。
海外のサイトに関しては、SquidGuardのページからもリンクされていますが、個人使用に限り、無償で提供されるリストがありますので、海外のポルノサイトやスパムサイトなどをある程度ブロックできるのではないかと思います。
今回は、 Shalla Secure Services からblacklistを取得しました。
必要なリストだけを展開すればいいのですが、今回は全て取得しています。
# wget http://www.shallalist.de/Downloads/shallalist.tar.gz
# tar xvzf shallalist.tar.gz
# cp -R BL /var/lib/squidguard/db
# tar xvzf shallalist.tar.gz
# cp -R BL /var/lib/squidguard/db
/var/lib/squidguard/db/BLの下に全てのカテゴリのデータが展開されていますので、必要なものを使用して下さい。
また、自身で管理するリストの作成は、 /var/lib/squidguard/dbの下に別のディレクトリを作成して管理します。
たとえば、denyというディレクトリを作成し、以下の様に、domainsとurlsというテキストファイルを作成します。
# ls -la deny
total 32
drwxr-xr-x 2 proxy proxy 4096 Jan 8 17:20 .
drwxr-xr-x 4 proxy proxy 4096 Jan 7 17:08 ..
-rw-r--r-- 1 proxy proxy 73 Jan 8 17:20 domains
-rw-r--r-- 1 proxy proxy 32 Dec 26 17:55 urls
total 32
drwxr-xr-x 2 proxy proxy 4096 Jan 8 17:20 .
drwxr-xr-x 4 proxy proxy 4096 Jan 7 17:08 ..
-rw-r--r-- 1 proxy proxy 73 Jan 8 17:20 domains
-rw-r--r-- 1 proxy proxy 32 Dec 26 17:55 urls
それぞれ、domain名またはurlを列記したテキストファイルとなります。
squidGuard.confの設定
時間でのアクセス制限なども可能ですが、今回は、最もシンプルな記述をしています。
badが自身で管理するブラックリスト、pornが、上記のサイトより取得したポルノサイトのブラックリストです。localnetはこちらの環境のIPアドレスを記述していますので、ネットワーク環境に合わせて変更して下さい。
# cat squidGuard.conf
#
# CONFIG FILE FOR SQUIDGUARD
#
# Caution: do NOT use comments inside { }
#
dbhome /var/lib/squidguard/db
logdir /var/log/squidguard
#
# SOURCE ADDRESSES:
#
src localnet {
ip 192.168.3.0/24
}
#
# DESTINATION CLASSES:
#
dest good {
}
dest bad {
domainlist deny/domains
urllist deny/urls
}
dest porn {
domainlist BL/porn/domains
urllist BL/porn/urls
}
#
# ACL RULES:
#
acl {
localnet {
pass good !bad !porn
}
default {
pass none
redirect http://192.168.3.103/cgi-bin/squidGuard-simple.cgi?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u
log /var/log/squidguard/block.log
}
}
#
# CONFIG FILE FOR SQUIDGUARD
#
# Caution: do NOT use comments inside { }
#
dbhome /var/lib/squidguard/db
logdir /var/log/squidguard
#
# SOURCE ADDRESSES:
#
src localnet {
ip 192.168.3.0/24
}
#
# DESTINATION CLASSES:
#
dest good {
}
dest bad {
domainlist deny/domains
urllist deny/urls
}
dest porn {
domainlist BL/porn/domains
urllist BL/porn/urls
}
#
# ACL RULES:
#
acl {
localnet {
pass good !bad !porn
}
default {
pass none
redirect http://192.168.3.103/cgi-bin/squidGuard-simple.cgi?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u
log /var/log/squidguard/block.log
}
}
redirectの記述は、該当するアドレスのリクエストを受け取った時に、警告ページへリダイレクトする設定であり、cgiスクリプトとして、squidguardパッケージに付属するサンプルを若干修正しています。 警告表示のためのサーバが必要ですが、前回設定したsquidclamav用のapache2環境を使用しています。
# cd /usr/share/doc/squidguard/examples/
# gunzip squidGuard-simple-de.cgi.gz
# cp squidGuard-simple-de.cgi.gz /usr/lib/cgi-bin/
# gunzip squidGuard-simple-de.cgi.gz
# cp squidGuard-simple-de.cgi.gz /usr/lib/cgi-bin/
そのままでも動作はしますが、squidguardのロゴファイルを、
http://www.squidguard.org/Logos/squidGuard.gif
に変更しています。
dbファイルは、Berkeley DB形式に変更する必要があります。
全てを更新する場合:
# squidGuard -C all
変更したカテゴリだけを変更する場合:
# squidGuard -C /var/lib/squidguard/db/deny
更新後、dbファイルのユーザ、グループを変更します。
# chown -R proxy /var/lib/squidguard/db/
# chgrp -R proxy /var/lib/squidguard/db/
# chgrp -R proxy /var/lib/squidguard/db/
3.squid3の設定
squidguardは、squidclamavの設定から呼び出すことも可能ですが、squid3側で設定することをお勧めします。
/etc/squid3/squid.confに以下の行を追加します。該当のオプションがある部分を編集してください。
:
url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf
:
url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf
:
編集後、squid3の設定のリロードを行います。
# service squid3 reload
4.動作確認
ブロック指定したドメインのwebサイトにアクセスしてみます。
今回は、前回最後に設定した透過型設定であるため、ブラウザ側でのproxy設定は行っていません。
5.Wifi接続によるモバイルデバイスへの対応
Wifi APとして動作させる方法としては、以下の記事を参考にして下さい。
今回はブリッジ設定により同一セグメントとして扱いました。
[.tested] Logitec LAN-W150NU2 Wheezyパッケージ、新カーネルによるデバイス評価およびAP構築 [Debian Wheezy][AX3][A6]
/etc/network/interfacesのbr0設定に関しては、前回の記事で行った、eth0-eth1ブリッジの設定を変更する必要はありません。wlan0はhostapdが起動時にaddします。
以下、iphone4Sでアクセスした場合のスクリーンショットです。
<テストウィルス検出時>
<URLフィルタリング>
6.さいごに
今回は、squidguardを使用したURLフィルタリング装置の構築を行いました。
同時にWifiAPとして設定することにより、モバイルデバイス向けのWebフィルタリングも行ってみました。
0 件のコメント:
コメントを投稿