ClamAVのウイルス情報の更新エラーへの対応 [Linux]
また、この場合にはウイルスチェックでもエラーが発生する。
以下の記述は、備忘録として、この事象への対応方法をまとめたものである。
[ソフトウェアのバージョン]
・clamav 0.99.2
・OS: Debian 8/9、CentOS 6/7
1. 発生事象
(1) ウイルス情報の更新時のエラー
freshclam の実行時に、下記のようなエラーが発生する。
ClamAV update process started at Mon Aug 7 04:00:01 2017 main.cvd is up to date (version: 58, sigs: 4566249, f-level: 60, builder: \ sigmgr) nonblock_connect: connect timing out (30 secs) Can't connect to port 80 of host db.local.clamav.net (IP: 120.29.176.126) Trying host db.local.clamav.net (27.96.54.66)... Downloading daily-23639.cdiff [100%] WARNING: [LibClamAV] cli_tgzload: Invalid checksum for file daily.hdb WARNING: [LibClamAV] Can't load /usr/local/tools/clamav/lib/clamav/\ clamav-a91f125d25aeacd304ebb2e1aeb81814.tmp/\ clamav-677b156a3fc4f33d7fe701aa680c0c20.cld: Malformed database ERROR: Failed to load new database: Malformed database WARNING: Database load exited with status 55 ERROR: Failed to load new database (status=55)
・daily.cld のダウンロードで問題が発生する。
・/usr/local/tools/clamav/lib/clamav は /var/lib/clamav へのリンクである。
(2) ウイルスチェック時のエラー
clamscan の実行時に、下記のようなエラーが発生する。
LibClamAV Error: cli_tgzload: Invalid checksum for file daily.hdb LibClamAV Error: Can't load /var/lib/clamav/daily.cld: Malformed database ERROR: Malformed database ----------- SCAN SUMMARY ----------- Known viruses: 523608 Engine version: 0.99.2 Scanned directories: 0 Scanned files: 0 Infected files: 0 Data scanned: 0.00 MB Data read: 0.00 MB (ratio 0.00:1) Time: 0.887 sec (0 m 0 s) (status=2)
・ウイルス情報の更新時のエラーが原因で発生する。
2. 対処方法
2-1. ウイルス情報の更新時のエラーへの対応
freshclam.conf を編集し、設定を下記のように変更する。
・Debian 8/9 の場合: /etc/clamav/freshclam.conf
・CentOS 6/7 の場合: /etc/freshclam.conf
(1) DatabaseMirror
DatabaseMirror db.jp.clamav.net DatabaseMirror db.us.clamav.net
ウイルス情報のダウンロード先を指定する。
・db.jp.clamav.net は、db.local.clamav.net の正式名称である。
・db.jp.clamav.net は、database.clamav.net の正式名称である。
(2) CompressLocalDatabase
CompressLocalDatabase yes
ローカル・データベースを圧縮する。
・daily.{cld,cvd} を gzip で圧縮するか指定する。
・本来は daily.cvd となると思うが、daily.cld で保存されることがある。
(file コマンドの実行結果では、gzipped と表示される。)
(補足)
この設定により、更新時のエラーが発生しなくなったように思われる。
2-2. エラーが発生した時の対応
(1) ウイルス情報の更新時のエラー
(a) ウイルス情報の更新を再実行する。
改善しない場合にのみ、以降の手順を実施する。
(b) エラーに関係するファイルを削除する。
# rm -fr /var/lib/clamav/*.tmp # rm -f /var/lib/clamav/daily.{cld,cvd} # rm -f /var/lib/clamav/mirrors.dat
(c) ウイルス情報の更新を再実行する。
(2) ウイルスチェック時のエラー
(a) ウイルス情報の更新が異常終了している場合
ウイルス情報の更新時のエラーへの対応を行う。
(b) ウイルス情報の更新が正常終了している場合
ウイルスチェックを再実行する。
3. 備考
(1) ウイルス情報の更新方法
現在、下記の方針に沿った方法でウイルス情報を更新している。
(a) freshclam コマンドを使用する。
(b) freshclam を cron から定期的に実行する。
freshclam のデーモン・モードは使用しない。
(c) 独自にログファイルを作成する。
4. 追記
freshclam.conf の変更から 15 日目で、ウイルス情報の更新エラーが再発してしまった。
状況の経過は、下記の通りである。
・freshclam が status=55 で終了
(ERROR: Failed to load new database: Malformed database)
・freshclam を再実行しても結果に変化なし
・/var/lib/clamav/{daily.cld,mirrors.dat} を削除
・freshclam が status=0 で終了
(補足)
上記のように再実行を行うスクリプトを cron から起動すればよいのかも知れない。
コメント 0