treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

ClamAVバージョンアップ後のfreshclamエラー

本日はClamAVのバージョンアップ後にfreshclamによる定義ファイル等アップデートがエラーとなり動作が阻害される点の修正を実施しましたので、ご報告します。

発端となったのはいつも通りlogwatchで発行される定期メッセージです。

対象のlogwatchメッセージ
 --------------------- clam-update Begin ------------------------

 The ClamAV update process (freshclam daemon) was not running!
 If you no longer wish to run freshclam, deleting the freshclam.log  file will suppress this error message.
 
 ---------------------- clam-update End -------------------------

原因として考えられること:
以前のバージョン「clamd-0.98.4-1.el5」からyum updateでバージョンをアップを実施。
clamav-0.98.7-1.el5」にバージョンアップしていました。
その後に発生しているので、バージョンアップが原因で設定ファイルや動作環境など、何かが変わった
と推測できます。

ログ確認
cat /var/log/clamav/freshclam.log
--------------------------------------
ERROR: Can't create temporary directory /var/lib/clamav/clamav-533262ed4502b89014fb58d7dd5ffc0f.tmp
Hint: The database directory must be writable for UID 101 or GID 103
--------------------------------------
パーミッション設定の問題の用です。
/etc/passwdや/etc/groupで確認してみると該当のUID101はユーザ名clamavで、GID103はグループ名clamavでした。
※以前から変わらず。

となると、作成対象となっている場所がどうかなっている?と考えられます。
見てみました。
----------------------------------------------
# ls -la /var/lib/ | less
drwxr-xr-x  2 clam   clam    4096 Apr 30  2015 clamav
----------------------------------------------
ユーザ「clam」グループ「clam」に対して/var/lib/clamavディレクトリのパーミッション設定が為されています。
/var/lib/clamavディレクトリはバージョンアップ前は無かったので、バージョンアップに際して作成された、ということなのでしょうか?
ひとまず存在しないユーザ&グループでの指定は修正します。
----------------------------------------------
# chown -R clamav:clamav /var/lib/clamav
# ls -la /var/lib/ | grep clam
drwxr-xr-x  2 clamav clamav  4096 Apr 30  2015 clamav
----------------------------------------------

ここまでで
# freshclam
と実行するとclamAVアップデートの手動実行が成功するようになりました。
--------------------------------------
freshclamコマンド実行結果
--------------------------------------
ClamAV update process started at Wed Nov 11 11:04:10 2015
main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo)
Downloading daily-21047.cdiff [100%]
Downloading daily-21048.cdiff [100%]
Downloading daily-21049.cdiff [100%]
Downloading daily-21050.cdiff [100%]
Downloading daily-21051.cdiff [100%]
daily.cld updated (version: 21051, sigs: 1674035, f-level: 63, builder: neo)
bytecode.cld is up to date (version: 270, sigs: 46, f-level: 63, builder: shurle
Database updated (4098306 signatures) from db.jp.clamav.net (IP: 218.44.253.75)
Clamd successfully notified about the update.
--------------------------------------

■他にないだろうか?

やや不安がありましたので、
他にも記述の問題がないか探しました。logrotateファイルもclamユーザで指定されています。
----------------------------------------------
修正前:/etc/logrotate.d/freshclam
----------------------------------------------
/var/log/clamav/freshclam.log {
        missingok
        notifempty
        create 644 clam clam
}
----------------------------------------------
修正後:/etc/logrotate.d/freshclam
----------------------------------------------
# cat /etc/logrotate.d/freshclam
/var/log/clamav/freshclam.log {
        missingok
        notifempty
        create 644 clamav clamav
}
----------------------------------------------
ユーザ部分を「clam」⇒「clamav」に変更しました。

ClamAVは商用・非商用を問わず利用可能なオープンソースのアンチウィルス対策ソフトなので、いろいろな環境(特にサーバ環境)に導入するには最適なソフトウェアではあるのですが、さすがにGUIを備えた有償の製品と比較して、ワンクリックでアップデート・アップグレード、といかないことが多いので、しっかりアラート管理&ログ管理を実施する必要があります。

yumで導入したClamAV、あるいはyum updateでバージョンアップを実行したClamAVで、こういった動作不良の発生が多い印象です。
もし貴環境にてClamAVを利用されている場合には、バージョンアップ時にエラーが補足できるように何らかの対策を実施されることをお勧めします。