SSブログ

ClamAV 0.103.0のclamdscanの問題点への対応 [CentOS]

CentOS 7 において、clamd-0.102.4-1.el7 から clamd-0.103.0-1.el7 への更新を行った。
(EPEL のパッケージを使用)
以下は、この更新により発生した問題点とその対応を備忘録としてまとめたものである。

1. 発生事象


(1) 一般ユーザーでの clamdscan の実行で "Permission denied" が発生する。

/run/clamd.scan/clamd.sock: Permission denied


(2) root での clamdscan の実行で "Can't allocate memory ERROR" が発生する。


(a) エラーメッセージ

xxx.iso: Can't allocate memory ERROR


(b) clamdscan の終了ステータス


2
# 0: No virus found, 1: Virus(es) found, 2: An error occurred


(c) ログ

...
Infected files: 0
Total errors: 1
...


(補足)
・"Permission denied" については、当該ディレクトリが再作成されたためである。
・xxx.iso のファイル・サイズは、4GB を越える。
・ファイル・サイズの制限で除外され、これがエラーとされたものと思われる。
・更新前の clamd-0.102.4-1.el7.x86_64 では発生しない。
 マルチブートしている Debian 10 (ClamAV 0.102.4) でも発生しない。
  clamav-daemon 0.102.4+dfsg-0+deb10u1
  clamdscan 0.102.4+dfsg-0+deb10u1


2. 対処方法

2-1. 上記 1. の (1) への対処対応


(1) /run/clamd.scan のパーミションの変更

# chmod 755 /run/clamd.scan


(2) /etc/tmpfiles.d/clamd.scan.conf の作成

# cat /etc/tmpfiles.d/clamd.scan.conf
d /run/clamd.scan 0755 clamscan virusgroup -


(補足)
/usr/lib/tmpfiles.d/clamd.scan.conf の設定を変更するためである。
尚、当該ディレクトリを新規作成する場合の設定である。


2-2. 上記 1. の (2) への対処対応


下記のいずれかの手順を実施する。

(1) clamdscan の終了ステータスに着目しない場合


このエラーメッセージを無視し、Infected files: の値に着目する。


(2) clamdscan の終了ステータスに着目する場合


clamdscan を実行するスクリプトを作成し、終了ステータスを補正する。
スクリプトの処理概要は、下記の通りである。

# clamdscan
clamdscan ...
status=$?

# discard file size error
# - setting for ClamAV 0.103
case `clamd -V` in
ClamAV\ 0.103.*)
    if [ $status = 2 ] && grep -q "^Infected files: 0" $log; then
        size_error=`grep -c "Can't allocate memory ERROR" $log`
        error_cnt=`grep "^Total errors:" $log | sed 's/.*: //'`
        if [ $size_error = "$error_cnt" ]; then
            status=0
        fi
    fi
    ;;
esac

exit $status


(3) iso ファイルをチェック対象から除外する場合


/etc/clamd.d/scan.conf に下記の設定を追加する。

ExcludePath .*\.iso$

[追記]


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。