「SquidClamav」の設定

「Squid」を利用してネットサーフィンをしている場合に「Clam AV」を利用してウィルスチェックを行うようにします。
ここで「Squid」と「Clam AV」を連携させる為に「SquidClamav」を利用します。
なお、「Clam AV」の設定は完了済みとしています。
また、メールのウィルスチェックに「amavisd-new」を利用してclamdを利用している場合、 「amavisd-new」用に起動しているclamdは「SquidClamav」とは別であり、「SquidClamav」用に設定・起動する必要があります。
ここでは「SquidClamav」用に設定・起動する方法を記述しています。

「Clam AV」のインストール

「Clam AV」のインストール

追加でclamav-serverをインストールします。

[root@Fedora ~]# yum -y install clamav-server <= 「Clam AV」のインストール
[root@Fedora ~]# yum clean packages <= ダウンロードしたパッケージの削除
「SquidClamav」のインストール

「SquidClamav」のインストール

[root@Fedora ~]# mkdir /usr/local/src/squidclamav <= 作業用ディレクトリの作成
[root@Fedora ~]# chmod 777 /usr/local/src/squidclamav <= 作業用ディレクトリのパーミッション変更
[root@Fedora ~]# exit <= 一般ユーザになる
[kaz@Fedora ~]$ cd /usr/local/src/squidclamav <= 作業用ディレクトリへ移動
[kaz@Fedora squidclamav]$ wget http://www.samse.fr/GPL/squidclamav/squidclamav-3.2.tar.gz <= 「SquidClamav」のソースをダウンロード
[kaz@Fedora squidclamav]$ tar xzf squidclamav-3.2.tar.gz <= ダウンロードしたソースの展開
[kaz@Fedora squidclamav]$ cd squidclamav-3.2 <= 展開したディレクトリに移動
[kaz@Fedora squidclamav-3.2]$ ./configure | tee configure.log 2>&1
[kaz@Fedora squidclamav-3.2]$ make | tee make.log 2>&1 <= コンパイル
[kaz@Fedora squidclamav-3.2]$ su <= スーパーユーザになる
Password: <= パスワードの入力
[root@Fedora squidclamav-3.2]# make install | tee make-install.log 2>&1 <= のインストール
[root@Fedora squidclamav-3.2]# cp squidclamav.conf.dist /etc/squidclamav.conf <= サンプル設定ファイルのコピー
[root@Fedora squidclamav-3.2]# cp clwarn.cgi /var/www/cgi-bin/ <= サンプル警告ページのコピー
「SquidClamav」の設定

「SquidClamav」の設定

サンプルの設定ファイルは全てコメントアウトされている為、下記のように必要な箇所のコメント解除および追加を行います。

[root@Fedora ~]# vi /etc/squidclamav.conf <= 設定ファイルの編集
proxy http://127.0.0.1:8080/ <= プロキシのアドレスとポート番号を指定
logfile /var/log/squidclamav.log <= ログファイルを指定
redirect http://www.crimson-snow.net/cgi-bin/clwarn.cgi <= ウィルス発見時にリダイレクトするページを指定
debug 0
force 1
stat 1
clamd_local /var/run/clamd.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」が起動出来ないので注意する必要があります。

[root@Fedora ~]# 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/local/bin/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/local/bin/squidclamav
redirect_children 15
ここまで

「Clam AV」の設定

「SquidClamav」の設定と合わせる箇所および最低限必要な設定も記述しています。

[root@Fedora ~]# cp /usr/share/doc/clamav-server-0.92.1/clamd.conf /etc/clamd.d/squidclamav.conf <= 設定ファイルのコピー
[root@Fedora ~]# vi /etc/clamd.d/squidclamav.conf <= 設定ファイルの編集
Example
↓
#Example <= コメントアウト

LogFile /var/log/clamd.<SERVICE>
↓
LogFile /var/log/clamd.squidclamav <= 「SquidClamav」用のログファイルを指定

PidFile /var/run/clamd.<SERVICE>/clamd.pid
↓
PidFile /var/run/clamd.squidclamav/clamd.pid <= 「SquidClamav」用のPIDファイルを指定

LocalSocket /var/run/clamd.<SERVICE>/clamd.sock
↓
LocalSocket /var/run/clamd.squidclamav/clamd.sock <= 「SquidClamav」用のソケットを指定

#TCPSocket 3310
↓
TCPSocket 3310 <= 「SquidClamav」用のポート番号を指定

#TCPAddr 127.0.0.1
↓
TCPAddr 127.0.0.1 <= 確認(「SquidClamav」用のIPアドレスを指定)

User <USER>
↓
User squid <= 「SquidClamav」用の「Clam AV」のユーザを指定
「Squid」と「Clam AV」の起動

起動の準備

起動する為に必要なログファイル等を用意します。

[root@Fedora ~]# touch /var/log/squidclamav.log <= 「SquidClamAV」のログファイルの作成
[root@Fedora ~]# chown squid /var/log/squidclamav.log <= ログファイルのオーナの変更
[root@Fedora ~]# touch /var/log/clamd.squidclamav <= 「SquidClamAV」用の「Clam AV」のログファイルの作成
[root@Fedora ~]# chgrp squid /var/log/clamd.squidclamav <= ログファイルの所有グループを変更
[root@Fedora ~]# chmod 0620 /var/log/clamd.squidclamav <= ログファイルのパーミッションを変更
[root@Fedora ~]# mkdir /var/run/clamd.squidclamav <= ソケットファイル等格納ディレクトリの作成
[root@Fedora ~]# chown squid:squid /var/run/clamd.squidclamav <= ソケットファイル等格納ディレクトリのオーナの変更
[root@Fedora ~]# cd /usr/sbin
[root@Fedora sbin]# ln -s clamd clamd.squidclamav <= clamdのシンボリックリンクを作成

起動スクリプト等の作成

まず/etc/sysconfig/clamd.squidclamavを作成します。

[root@Fedora ~]# cp /usr/share/doc/clamav-server-0.92.1/clamd.sysconfig /etc/sysconfig/clamd.squidclamav <= 設定ファイルのコピー
[root@Fedora ~]# vi /etc/sysconfig/clamd.squidclamav <= 設定ファイルの編集
以下のように変更
CLAMD_CONFIGFILE=/etc/clamd.d/squidclamav.conf
CLAMD_SOCKET=/var/run/clamd.squidclamav/clamd.sock
CLAMD_OPTIONS=

次に/etc/rc.d/init.d/clamd.squidclamavを作成します。

[root@Fedora ~]# cp /usr/share/doc/clamav-server-0.92.1/clamd.init /etc/rc.d/init.d/clamd.squidclamav <= 設定ファイルのコピー
[root@Fedora ~]# vi /etc/rc.d/init.d/clamd.squidclamav <= 起動スクリプトの編集
以下のように変更
#!/bin/bash
#
# chkconfig: - 75 25
# description: The clamd server running for squidclamav

CLAMD_SERVICE=squidclamav
. /usr/share/clamav/clamd-wrapper

「Clam AV」の起動

Squid用のclamdを起動後、「Squid」を再起動します。

[root@Fedora ~]# /etc/rc.d/init.d/clamd.squidclamav start
[root@Fedora ~]# /etc/rc.d/init.d/squid restart

「SquidClamav」用「Clam AV」の自動起動

サービスに登録して、Fedora起動時に自動的に起動するようにします。

[root@Fedora ~]# chkconfig --add clamd.squidclamav
[root@Fedora ~]# chkconfig clamd.squidclamav on
ログのローテート

ログのローテート

/etc/logrotate.d/clamd.squidclamavファイルを作成して、ログローテートを行います。

[root@Fedora ~]# cp /usr/share/doc/clamav-server-0.92.1/clamd.logrotate /etc/logrotate.d/clamd.squidclamav <= 設定ファイルのコピー
[root@Fedora ~]# vi /etc/logrotate.d/clamd.squidclamav <= 設定ファイルの編集
以下のように変更
/var/log/clamd.squidclamav {
        monthly
        notifempty
        missingok

        postrotate
                killall -HUP clamd.squidclamav 2>/dev/null || :
        endscript
}
動作確認

テストウィルスのダウンロード

http://www.eicar.org/anti_virus_test_file.htm にテスト用ウィルスがありますので、ダウンロードしようとすると警告ページにリダイレクトされればきちんと動作しています。

▲ページのトップへ