お問い合わせ 03-5846-2151

ブログ

ブログ

ownCloud 5 にアンチウイルスソフト(ClamAV)を実装

ビーグッド・テクノロジー ownCloud担当です。

ownCloudは、OSSのアンチウイルスソフト(ClamAV)と連携させることができます。

ファイルをアップロードするときにClamAVを使ってウイルスチェックを行い、ウイルスが検出されると削除されます。実際に導入してみましたので、導入手順を公開します。ただし、問題点がいくつかありますので、これは最後に記載してみます。


1.Owncloud Antivirus Appの概要

■概要
・ownCloudにファイルをアップロードするとウイルスチェックが行われる。
・ウイルスを検知するとファイルが自動的に削除され、画面上に警告表示される。
・ウイルス検知に関する詳細はメールで通知される。

■要件
・ownCloud4以降(ownCloud5.0.5)
・clamAV(0.97.7)
・Linux(CentOS6.3)
( )内は本ページでのVersionを示しています。

■今後の予定(ReadMeより)
・動作テストはLinuxのみ。他のOSも今後テスト予定。
・クライアントソフトからのアップロード時のウイルスチェックは今後テスト予定。
・ファイルサイズに制限があるので今後の改良ポイント。


2.リポジトリに rpmfoge を追加。

CentOS6.3のデフォルトでは yum で clamAV はインストールできないため。

//最新のリポジトリをダウンロード
# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
//rpmのインストール
# rpm -ivh rpmforge-release-0.5.2-2.el6.rf.i686.rpm
//ダウンロードしたファイルを削除
# rm -f rpmforge-release-*
//rpmforge-releaseアップデート
# yum -y update rpmforge-release


3.clamAVをインストール


//clamAVのインストール
# yum -y install clamd

参考として、# yum install clamd とするとVersionやリポジトリがわかります。



4.clamAVの起動と自動起動設定確認


# service clamd start
# chkconfig --list |grep clamd
clamd           0:off   1:off   2:on    3:on    4:on    5:on    6:off


5.ウイルス定義ファイルの最新化


//clamd.confの確認(基本、設定変更不要)
# view /etc/clamd.conf
//freshclam.confの確認(基本、設定変更不要)
# view /etc/freshclam.conf
//ウイルス定義ファイルを最新
# freshclam
ClamAV update process started at Tue Apr 23 16:04:07 2013
main.cvd is up to date (version: 54, sigs: 1044387, f-level: 60, builder: sven)
Downloading daily-17066.cdiff [100%]
Downloading daily-17067.cdiff [100%]
Downloading daily-17068.cdiff [100%]
daily.cld updated (version: 17068, sigs: 1147015, f-level: 63, builder: neo)
bytecode.cld is up to date (version: 214, sigs: 41, f-level: 63, builder: neo)
Database updated (2191443 signatures) from db.jp.clamav.net (IP: 218.44.253.75)
Clamd successfully notified about the update.
//ウイルス定義ファイルの日次更新用(freshclam)の cron 確認
# cd /etc/cron.daily/
# ls
00webalizer  0logwatch  freshclam  makewhatis.cron  prelink  tmpwatch
0anacron     certwatch  logrotate  mlocate.cron     rpm


6.ウイルススキャンテスト


//ウイルススキャンテスト(/etcをスキャン)
# clamscan --log=/var/log/clamav/clamav_scan.log --infected --remove --recursive /etc

----------- SCAN SUMMARY -----------
Known viruses: 2186037
Engine version: 0.97.7
Scanned directories: 185
Scanned files: 947
Infected files: 0    ←感染ファイル0件
Data scanned: 86.40 MB
Data read: 84.64 MB (ratio 1.02:1)
Time: 20.977 sec (0 m 20 s)

//ロギングできていることを確認
# cat /var/log/clamav/clamav_scan.log

//ウイルススキャンテスト(テストウイルスをスキャン)
# cd /home/data
# wget http://www.eicar.org/download/eicarcom2.zip //テストウイルスをダウンロード
# clamscan --log=/var/log/clamav/clamav_scan.log --infected --remove --recursive /home

/home/data/eicarcom2.zip: Eicar-Test-Signature FOUND
/home/data/eicarcom2.zip: Removed.

----------- SCAN SUMMARY -----------
Known viruses: 2186037
Engine version: 0.97.7
Scanned directories: 1
Scanned files: 1
Infected files: 1    ←感染ファイル1件
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 6.177 sec (0 m 6 s)

//ロギングできていることを確認
# cat /var/log/clamav/clamav_scan.log


7.定期自動実行設定

毎日自動的にウィルス定義ファイルの最新化と、ownCloudのdataディレトリのウィルススキャンを行うように設定する。

■ownCloudのdataディレトリは /home/data/ とする。
■スキャン結果は /var/log/clamav/clamav_scan.log とする。
■ウイルス検知後は該当ファイルを削除し、その結果をhoge@hogehoge宛にメール送信する。

//実行スクリプトの作成
# cd /etc/cron.daily
# vi clamavcheck

---------------------------------------
#!/bin/bash

PATH=/usr/bin:/bin

# clamd update
yum -y --enablerepo=rpmforge update clamd > /dev/null 2>&1

# excludeopt setup
excludelist=/home/clamscan.exclude
if [ -s $excludelist ]; then
    for i in `cat $excludelist`
    do
        if [ $(echo "$i"|grep \/$) ]; then
            i=`echo $i|sed -e 's/^\([^ ]*\)\/$/\1/p' -e d`
            excludeopt="${excludeopt} --exclude-dir=$i"
        else
            excludeopt="${excludeopt} --exclude=$i"
        fi
    done
fi

# signature update
freshclam > /dev/null

# virus scan
CLAMSCANTMP=`mktemp`
clamscan --log=/var/log/clamav/clamav_scan.log --recursive --remove ${excludeopt} /home/data/ > $CLAMSCANTMP 2>&1
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \

# report mail send
grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found in `hostname`" hoge@hogehoge
rm -f $CLAMSCANTMP
---------------------------------------

//実行スクリプトに実行権限付加
# chmod 700 clamavcheck

※ /home/clamscan.exclude について
clamscan.excludeファイルにあるディレクトリやファイルはスキャンしないルールです。ディレクトリの場合は最後を「/」とする。ファイルの場合はファイルを指定します。

# vi /home/clamscan.exclude
/home/data/admin/  //adminもスキャン対象なら削除
/home/data/index.html
/home/data/owncloud.log


8.ownCloudのAntivirusを有効

ownCloudに管理者権限でログインし、アプリパネルで"Antivirus"を有効にする。



以下のようなエラーが表示される。(現時点におけるバグ)



"Antivirus App for files [3rd Party]"を有効にする。



9.「管理者」パネルで設定

アンチウイルスの設定項目が追加されます。
スキャン中に発見された感染ファイルに対する操作は「ログのみ」「ファイルを削除」の2つから選べますが、強制的にファイルを削除します。



10.ウイルスファイルのアップロードテスト

「6.ウイルススキャンテスト」で用いたテストウイルスを使ってアップロードテストをしてみると、自動スキャンが行われ、ファイルが削除されます。



11.問題点

■スキャンが重い
clamAVの仕様なので、ownCloudではどうしようもないかもしれない。

■ウイルス検知後にファイルは自動削除されるが、ごみ箱(削除ファイル)に格納されている。
ちなみに、ごみ箱から復元させることもできる。「7.定期自動実行設定」でウイルスファイルを毎日削除させるようワークアラウンドしています。

■ウイルス検知に関する詳細メールが通知されない。
通知された形跡もないので機能不全。複数のユーザでownCloudを使う場合、管理者が把握するためにもメール送信機能は必要。

■owncloud.com のサポート範囲外。
アプリ"Antivirus App for files [3rd Party]"はあくまで 3rd Party なので、商用のownCloudを導入してもサポートは難しいかもしれない。owncloud.com が提供するアプリ"Antivirus"が正常に動作するまで待つという選択肢もあります。

全体的に改善の余地はありますね。次期バージョン(0.5)に期待しましょう。

ownCloudを日本語でまとめているサイトは owncloud.jp です。

トップへ戻る
Copyright © 2017 BeGoodTechnology All rights reserved.