| トップ | Solaris | FreeBSD | Gentoo | CentOS | Fedora | Windows | Tips | 自宅サーバの動作確認 | サイト内検索(Namazu) | サイト内検索(HE) |
「Squid」を利用してネットサーフィンをしている場合に「Clam AV」を利用してウィルスチェックを行うようにします。
ここで「Squid」と「Clam AV」を連携させる為に「SquidClamav」を利用します。
なお、「Clam AV」の設定は完了済みとしています。
また、メールのウィルスチェックに「amavisd-new」を利用してclamdを利用している場合、
「amavisd-new」用に起動しているclamdは「SquidClamav」とは別であり、「SquidClamav」用に設定・起動する必要があります。
ここでは「SquidClamav」用に設定・起動する方法を記述しています。
「SquidClamav」のインストール
「SquidClamav」は現時点(2008年2月23日)ではtestingブランチですので、利用できるようにしてインストールします。
Gentoo ~ # vi /etc/portage/package.keywords <= 設定ファイルの編集 net-proxy/squidclamav ~x86 <= 追加 Gentoo ~ # emerge squidclamav <= 「SquidClamav」のインストール Gentoo ~ # cp /usr/share/doc/squidclamav-3.2/clwarn.cgi.bz2 /var/www/localhost/cgi-bin/ <= サンプル警告ページのコピー Gentoo ~ # bunzip2 /var/www/localhost/cgi-bin/clwarn.cgi.bz2 <= サンプル警告ページの展開 Gentoo ~ # chmod 755 /var/www/localhost/cgi-bin/clwarn.cgi <= サンプル警告ページの権限変更 |
「SquidClamav」の設定
サンプルの設定ファイルは全てコメントアウトされている為、下記のように必要な箇所のコメント解除および追加を行います。
Gentoo ~ # vi /etc/squidclamav.conf <= 設定ファイルの編集 proxy http://127.0.0.1:8080/ <= プロキシのアドレスとポート番号を指定 logfile /var/log/squidclamav/squidclamav.log <= ログファイルを指定 redirect http://www.crimson-snow.net/cgi-bin/clwarn.cgi <= ウィルス発見時にリダイレクトするページを指定 debug 0 force 1 stat 1 clamd_local /var/run/squidclamav/clamd.sock <= 「Clam AV」のローカルソケットを指定(「Clam AV」の設定に合わせる) clamd_ip 127.0.0.1 <= clamdが動作しているサーバのアドレスを指定(「Clam AV」の設定に合わせる) clamd_port 3310 <= clamdが動作しているサーバのポート番号を指定(「Clam AV」の設定に合わせる) timeout 60 ファイル名から大文字、小文字を区別しないでウィルススキャンするものを正規表現で明示的に指定 regexi ^.*\.exe$ regexi ^.*\.com$ regexi ^.*\.zip$ ファイル名から大文字、小文字を区別してウィルススキャンしないものを正規表現で指定 abort ^.*\.gz$ abort ^.*\.bz2$ abort ^.*\.pdf$ abort ^.*\.js$ abort ^.*\.html$ abort ^.*\.css$ abort ^.*\.xml$ abort ^.*\.xsl$ abort ^.*\.js$ abort ^.*\.ico$ ファイル名から大文字、小文字を区別しないでウィルススキャンしないものを正規表現で指定 aborti ^.*\.gif$ aborti ^.*\.png$ aborti ^.*\.jpg$ aborti ^.*\.swf$ 全てのapplication/*ファイルの内容タイプに基づくウイルススキャンを実行する content ^.*application\/.*$ ウィルススキャンしないURLを指定 whitelist .*google\.com |
「Squid」の設定
当サイトと同じ設定もありますが、「SquidClamav」の設定と合わせる箇所および最低限必要な設定も記述しています。
また、「Squid」のバージョンが2.5系と2.6系でリダイレクタの記述方法が若干異なります。
なお、元々記述されている部分やTAGで記述箇所がある部分がありますが、
aclの定義より後にlocalhostの設定を記述しないと、エラーで「Squid」が起動出来ないので注意する必要があります。
Gentoo ~ # vi /etc/squid/squid.conf <= 設定ファイルの編集 http_port 8080 <= 「SquidClamav」の設定と合わせる 「Squid」2.6系の場合は以下の設定を確認または追加 acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/8 http_access deny to_localhost http_access allow localhost url_rewrite_access deny localhost url_rewrite_program /usr/sbin/squidclamav url_rewrite_children 15 ここまで 「Squid」2.5系の場合は以下の設定を確認または追加 acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/8 http_access deny to_localhost http_access allow localhost redirector_access deny localhost redirect_program /usr/sbin/squidclamav redirect_children 15 ここまで |
「Clam AV」の設定
「SquidClamav」の設定と合わせる箇所および最低限必要な設定も記述しています。
Gentoo ~ # cp /etc/clamd.conf /etc/clamd.squidclamav.conf <= 設定ファイルのコピー Gentoo ~ # vi /etc/clamd.squidclamav.conf <= 設定ファイルの編集 # Example <= 確認(コメントアウトする) LogFile /var/log/clamav/clamd.log ↓ LogFile /var/log/squidclamav/clamd.log <= 「SquidClamav」用のログファイルを指定 PidFile /var/run/clamav/clamd.pid ↓ PidFile /var/run/squidclamav/clamd.pid <= 「SquidClamav」用のPIDファイルを指定 LocalSocket /var/run/clamav/clamd.sock ↓ LocalSocket /var/run/squidclamav/clamd.sock <= 「SquidClamav」用のソケットを指定 #TCPSocket 3310 ↓ TCPSocket 3310 <= 「SquidClamav」用のポート番号を指定 #TCPAddr 127.0.0.1 ↓ TCPAddr 127.0.0.1 <= 「SquidClamav」用のIPアドレスを指定 User clamav ↓ User squid <= 「SquidClamav」用の「Clam AV」のユーザを指定 |
起動の準備
起動する為に必要なログファイル等を用意します。
Gentoo ~ # touch /var/log/squidclamav/squidclamav.log <= 「SquidClamAV」のログファイルの作成 Gentoo ~ # chown squid /var/log/squidclamav/squidclamav.log <= ログファイルのオーナの変更 Gentoo ~ # touch /var/log/squidclamav/clamd.log <= 「SquidClamAV」用の「Clam AV」のログファイルの作成 Gentoo ~ # chgrp squid /var/log/squidclamav/clamd.log <= ログファイルの所有グループを変更 Gentoo ~ # chmod 0620 /var/log/squidclamav/clamd.log <= ログファイルのパーミッションを変更 Gentoo ~ # mkdir /var/run/squidclamav <= ソケットファイル等格納ディレクトリの作成 Gentoo ~ # chown squid:squid /var/run/squidclamav <= ソケットファイル等格納ディレクトリのオーナの変更 Gentoo ~ # cd /usr/sbin Gentoo sbin # ln -s clamd clamd.squidclamav <= clamdのシンボリックリンクを作成 |
起動スクリプトの作成
起動スクリプトを作成して起動するようにします。
なお、viで新規作成した場合、デフォルトのフォーマットでオープンされますが、以下のように作成します。
Gentoo ~ # vi /etc/init.d/clamd.squidclamav <= 設定ファイルの作成
#!/sbin/runscript
opts="${opts} logfix"
depend() {
use net
}
start() {
local clamd_socket=`awk '$1 == "LocalSocket" { print $2 }' /etc/clamd.squidclamav.conf`
local clamd_pid=`awk '$1 == "PidFile" { print $2 }' /etc/clamd.squidclamav.conf`
logfix
if [ -S "${clamd_socket:-/tmp/clamd}" ]; then
rm -f ${clamd_socket:-/tmp/clamd}
fi
ebegin "Starting clamd.squidclamav"
start-stop-daemon --start --quiet --pidfile ${clamd_pid} \
--exec /usr/sbin/clamd.squidclamav -- -c /etc/clamd.squidclamav.conf
eend $? "Failed to start clamd.squidclamav"
}
stop() {
local clamd_pid=`awk '$1 == "PidFile" { print $2 }' /etc/clamd.squidclamav.conf`
ebegin "Stopping clamd.squidclamav"
start-stop-daemon --stop --quiet --pidfile ${clamd_pid}
eend $? "Failed to stop clamd.squidclamav"
}
logfix() {
# fix clamd.squidclamav log permissions
# (might be clobbered by logrotate or something)
local logfile=`awk '$1 == "LogFile" { print $2 }' /etc/clamd.squidclamav.conf`
local clamav_user=`awk '$1 == "User" { print $2 }' /etc/clamd.squidclamav.conf`
if [ -n "${logfile}" ] && [ -n "${clamav_user}" ]; then
if [ ! -f "${logfile}" ]; then
touch ${logfile}
fi
chown ${clamav_user} ${logfile}
chmod 640 ${logfile}
fi
}
Gentoo ~ # chmod 755 /etc/init.d/clamd.squidclamav <= 起動スクリプトの権限変更
|
「Clam AV」の起動
Squid用のclamdを起動後、「Squid」を再起動します。
Gentoo ~ # /etc/init.d/clamd.squidclamav start Gentoo ~ # /etc/init.d/squid restart |
「SquidClamav」用「Clam AV」の自動起動
Gentoo起動時に自動的に起動するようにします。
Gentoo ~ # rc-update add clamd.squidclamav default |
ログのローテート
「SquidClamav」と「SquidClamav」用のclamdのログローテートを行います。
Gentoo ~ # vi /etc/logrotate.d/squidclamav <= 設定ファイルの作成
/var/log/squidclamav/squidclamav.log {
monthly
notifempty
missingok
postrotate
killall -HUP clamd.squidclamav 2>/dev/null || :
endscript
}
Gentoo ~ # vi /etc/logrotate.d/clamav <= 設定ファイルの編集
以下を最後に追加
/var/log/squidclamav/clamd.log {
missingok
postrotate
/etc/init.d/clamd.squidclamav logfix
/bin/kill -HUP `cat /var/run/squidclamav/clamd.pid 2> /dev/null` 2>/dev/null || true
endscript
}
|
テストウィルスのダウンロード
http://www.eicar.org/anti_virus_test_file.htm にテスト用ウィルスがありますので、ダウンロードしようとすると警告ページにリダイレクトされればきちんと動作しています。