| トップ | 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」用に設定・起動する方法を記述しています。
「curl」のインストール
「SquidClamav」は「curl」が必要なので、依存するものでインストールしていないものも含めてインストールしました。
・「libidn」のインストール Solaris# wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/libidn-1.4-sol10-x86-local.gz Solaris# gunzip libidn-1.4-sol10-x86-local.gz <= ダウンロードしたファイルの展開 Solaris# pkgadd -d libidn-1.4-sol10-x86-local |& tee pkg-libidn.log <= パッケージのインストール Select package(s) you wish to process (or 'all' to process all packages). (default: all) [?,??,q]: <= 空Enter ・「libintl」のインストール Solaris# wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/libintl-3.4.0-sol10-x86-local.gz Solaris# gunzip libintl-3.4.0-sol10-x86-local.gz <= ダウンロードしたファイルの展開 Solaris# pkgadd -d libintl-3.4.0-sol10-x86-local |& tee pkg-libintl.log <= パッケージのインストール Select package(s) you wish to process (or 'all' to process all packages). (default: all) [?,??,q]: <= 空Enter ・「curl」のインストール Solaris# wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/curl-7.18.0-sol10-x86-local.gz Solaris# gunzip curl-7.18.0-sol10-x86-local.gz <= ダウンロードしたファイルの展開 Solaris# pkgadd -d curl-7.18.0-sol10-x86-local |& tee pkg-curl.log <= パッケージのインストール Select package(s) you wish to process (or 'all' to process all packages). (default: all) [?,??,q]: <= 空Enter |
「SquidClamav」のインストール
Solaris# mkdir /usr/local/src/squidclamav <= 作業用ディレクトリの作成 Solaris# chmod 777 /usr/local/src/squidclamav <= 作業用ディレクトリのパーミッション変更 Solaris# exit <= 一般ユーザになる Solaris% cd /usr/local/src/squidclamav <= 作業用ディレクトリへ移動 Solaris% wget http://www.samse.fr/GPL/squidclamav/squidclamav-3.2.tar.gz <= 「SquidClamav」のソースをダウンロード Solaris% gunzip -c squidclamav-3.2.tar.gz | tar xf - <= ダウンロードしたファイルの展開 Solaris% cd squidclamav-3.2 <= 展開したディレクトリに移動 Solaris% setenv CFLAGS "-I/usr/local/include" Solaris% setenv LD_LIBRARY_PATH "/usr/local/lib" Solaris% setenv LDFLAGS "-L/usr/local/lib" Solaris% setenv LIBS "-lcurl -lnsl -lsocket" Solaris% ./configure |& tee configure.log Solaris% gmake |& tee make.log <= コンパイル Solaris% su <= スーパーユーザになる Password: <= パスワードの入力 Solaris# gmake install |& tee make-install.log <= インストール Solaris# cp squidclamav.conf.dist /etc/squidclamav.conf <= サンプル設定ファイルのコピー Solaris# cp clwarn.cgi /var/apache2/cgi-bin/ <= サンプル警告ページのコピー |
「SquidClamav」の設定
サンプルの設定ファイルは全てコメントアウトされている為、下記のように必要な箇所のコメント解除および追加を行います。
Solaris# 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」が起動出来ないので注意する必要があります。
Solaris# vi /usr/local/squid/etc/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」の設定と合わせる箇所および最低限必要な設定も記述しています。
Solaris# cp /usr/local/etc/clamd.conf /usr/local/etc/clamd.squidclamd.conf <= 設定ファイルのコピー Solaris# vi /usr/local/etc/clamd.squidclamd.conf <= 設定ファイルの編集 #Example <= 確認(コメントアウトする) LogFile /var/log/clamd.log ↓ LogFile /var/log/squidclamav/clamd.log <= 「SquidClamav」用のログファイルを指定 PidFile /var/run/clamav/clamd.pid ↓ PidFile /var/run/squidclamav/clamd.pid <= 「SquidClamav」用のPIDファイルを指定 LocalSocket /tmp/clamd.socket ↓ 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」のユーザを指定 |
起動の準備
起動する為に必要なログファイル等を用意します。
Solaris# mkdir /var/log/squidclamav <= ログファイル格納ディレクトリの作成 Solaris# touch /var/log/squidclamav/squidclamav.log <= 「SquidClamAV」のログファイルの作成 Solaris# chown squid /var/log/squidclamav/squidclamav.log <= ログファイルのオーナの変更 Solaris# touch /var/log/squidclamav/clamd.log <= 「SquidClamAV」用の「Clam AV」のログファイルの作成 Solaris# chgrp squid /var/log/squidclamav/clamd.log <= ログファイルの所有グループを変更 Solaris# chmod 0620 /var/log/squidclamav/clamd.log <= ログファイルのパーミッションを変更 Solaris# mkdir /var/run/squidclamav <= ソケットファイル等格納ディレクトリの作成 Solaris# chown squid:squid /var/run/squidclamav <= ソケットファイル等格納ディレクトリのオーナの変更 Solaris# cd /usr/local/sbin Solaris# ln -s clamd clamd.squidclamav <= clamdのシンボリックリンクを作成 |
起動スクリプトの作成
起動スクリプトを作成し、Solaris起動時に自動的に起動するようにします。
Solaris# vi /etc/init.d/clamd.squidclamav <= 起動スクリプトの作成
#!/sbin/sh
MKDIR='/usr/bin/mkdir'
RM='/usr/bin/rm'
AWK='/usr/bin/awk'
CAT='/usr/bin/cat'
FIND='/usr/bin/find'
DIRNAME='/usr/bin/dirname'
CHOWN='/usr/bin/chown'
CLAMD='/usr/local/sbin/clamd.squidclamav'
CLAMDCONF='/usr/local/etc/clamd.squidclamd.conf'
PIDFILE=`$AWK '$1 == "PidFile" { print $2 }' $CLAMDCONF`
SOCKET=`$AWK '$1 == "LocalSocket" { print $2 }' $CLAMDCONF`
USER=`$AWK '$1 == "User" { print $2 }' $CLAMDCONF`
PIDDIR=`$DIRNAME $PIDFILE`
if [ -f $PIDFILE ]; then
PID=`$CAT $PIDFILE`
fi
case "$1" in
'start')
if [ -f $CLAMD ]; then
if [ $PID ]; then
echo "ClamAV has started"
else
SOCKETDIR=`$DIRNAME $SOCKET`
SOCKETFILE=`$FIND $SOCKETDIR -type s`
if [ $SOCKET ]; then
$RM -f $SOCKET
fi
if [ -d $PIDDIR ]; then
$CLAMD -c $CLAMDCONF
echo "Running: clamd.squidclamav"
sleep 3
else
$MKDIR -p $PIDDIR
$CHOWN $USER:$USER $PIDDIR
$CLAMD -c $CLAMDCONF
echo "Running: clamd.squidclamav"
sleep 3
fi
fi
else
echo "clamd.squidclamav is not installed"
fi
;;
'stop')
if [ $PID ]; then
kill -KILL $PID
sleep 3
$RM -f $PIDFILE
$RM -f $SOCKET
echo "Stopping: clamd.squidclamav"
else
echo "clamd.squidclamav has stopped"
fi
;;
'restart')
$0 stop
sleep 3
$0 start
;;
'status')
if [ $PID ]; then
echo "clamd.squidclamav starts"
else
echo "clamd.squidclamav stopped"
fi
;;
*)
echo "Usage: $0 { start | stop | restart | status }"
exit 1
;;
esac
exit 0
Solaris# chmod 744 /etc/init.d/clamd.squidclamav <= 起動スクリプトファイルに実行権限付加
Solaris# ln /etc/init.d/clamd.squidclamav /etc/rc2.d/S99clamd.squidclamav <= ランレベル2で起動する
Solaris# ln /etc/init.d/clamd.squidclamav /etc/rc3.d/S99clamd.squidclamav <= ランレベル3で起動する
Solaris# ln /etc/init.d/clamd.squidclamav /etc/rc0.d/K99clamd.squidclamav <= ランレベル0で停止する
|
「Clam AV」の起動
Squid用のclamdを起動後、「Squid」を再起動します。
Solaris# /etc/init.d/clamd.squidclamav start Solaris# /etc/init.d/squid restart |
ログのローテート
logadmコマンドでログローテートの設定を行います。
なお、logadmコマンドについてはこちらを参照して下さい。
Solaris# logadm -w /var/log/squidclamav/squidclamav.log \ -p 1m -C 2 -o squid -a '/etc/init.d/clamd.squidclamav restart' <= 「SquidClamav」のログファイル Solaris# logadm -w /var/log/squidclamav/clamd.log \ -p 1m -C 2 -g squid -m 0620 -a '/etc/init.d/clamd.squidclamav restart' <= 「SquidClamav」用のclamdのログファイル |
テストウィルスのダウンロード
http://www.eicar.org/anti_virus_test_file.htm にテスト用ウィルスがありますので、ダウンロードしようとすると警告ページにリダイレクトされればきちんと動作しています。