"ゼロ"から探す天使の羽

今日とは違う明日を目指して、趣味をまったり綴ります

ClamAV のウィルススキャンが失敗する時の解決方法(CentOS)

 

 

Linuxだってセキュリティ対策は必要だよね

こんにちは、A-Keyです。

 

自宅サーバLinuxCentOSを利用していますが、セキュリティに不安を感じてClamAVを導入しました。

やっぱりLinuxなので、どうやらウィルス定義のデータベースを自動更新してくれないようです。

Windowsのウィルスバスターやノートンのように自動更新してくれたら楽なのに」と思い、データベース更新とファイル全体のウィルススキャンを実行するスクリプトを作成しました。

これをcronで自動実行させれば、面倒な手間が省けます。

ログを残しておけば問題が起きても対処できますね。

 

けれど、面倒な事はやっぱりやらない性分。

ログの確認さえ放置していました……

 

さてさて、久しぶりにログを見てみたら、こんな状態になっていました。

LibClamAV Warning: Bytecode run timed out in interpreter after 77350000 opcodes
LibClamAV Warning: Bytcode 34 failed to run: Time limit reached
LibClamAV Warning: Bytecode run timed out in interpreter after 76730000 opcodes
LibClamAV Warning: Bytcode 68 failed to run: Time limit reached

 

な、なんぞ? 前に見た時はこんなのなかったぞ……

 

LibClamAV Warning

cronで自動更新している処理の流れは次の通りです。

  1. freshclamでウィルス定義の自動更新
  2. clamavによるファイルに対するウィルススキャン

 

ここで一度、ログの出力内容を下記に記載します。

長いので一部削除して、上記したナンバリングを追記します。

 

/* -- 1の処理 -- */

ClamAV update process started at Sun Aug 5 06:05:02 2018
main.cld is up to date (version: 58, sigs: 4566249, f-level: 60, builder: sigmgr)
Downloading daily-24792.cdiff [100%]
Downloading daily-24793.cdiff [100%]
daily.cld updated (version: 24812, sigs: 2037969, f-level: 63, builder: neo)
bytecode.cld is up to date (version: 326, sigs: 93, f-level: 63, builder: neo)
Database updated (6604311 signatures) from db.jp.clamav.net (IP: 104.16.185.138)
Clamd successfully notified about the update.

/* -- 2の処理 -- */

LibClamAV Warning: Bytecode run timed out in interpreter after 77005000 opcodes
LibClamAV Warning: Bytcode 34 failed to run: Time limit reached
LibClamAV Warning: Bytecode run timed out in interpreter after 77610000 opcodes
LibClamAV Warning: Bytcode 68 failed to run: Time limit reached
LibClamAV Warning: Bytecode run timed out in interpreter after 76890000 opcodes
LibClamAV Warning: Bytcode 68 failed to run: Time limit reached

----------- SCAN SUMMARY -----------
Known viruses: 6597890
Engine version: 0.99.1
Scanned directories: 15852
Scanned files: 384224
Infected files: 0
Data scanned: 244966.88 MB
Data read: 283798.54 MB (ratio 0.86:1)
Time: 28548.969 sec (475 m 48 s)

/* -- End -- */

 

ログへ書き出した処理の状態を見ていくと、どうやらfreshclamは正常に終わっているようです。

LibClamAV Warning云々のエラーが生じているのは2の段階、clamavによるウィルススキャンの際に生じていました。

 

ClamAV のウィルススキャンが失敗する時はデータベースを再構築

調べても原因は分からないですが、海外サイトではfreshclamにてデータベースを更新する際に破損が生じてしまい、今回のエラーと似た表示のログが残ったという書き込みがありました。

というわけで、まずはデータベースの再構築を試してみます。

 

# ls -l

-rw-r--r--. 1 clamav clamav       959488  7月 29 06:05 2018 bytecode.cld
-rw-r--r--. 1 clamav clamav 146216448  8月   6 16:16 2018 daily.cld
-rw-r--r--. 1 clamav clamav 307499008  6月 11 06:05 2017 main.cld
-rw-------. 1 clamav clamav             884  8月   6 16:18 2018 mirrors.dat

clamavディレクトリにあるbytecode.cldを次のコマンドでリネームします。

 # mv bytecode.cld bytecode.cld.20180806

 # mv daily.cld daily.cld.20180806

 # mv main.cld main.cld.20180806

 # ls -l
-rw-r--r--. 1 clamav clamav       959488  7月 29 06:05 2018 bytecode.cld.20180806
-rw-r--r--. 1 clamav clamav 146216448  8月   6 16:16 2018 daily.cld.20180806
-rw-r--r--. 1 clamav clamav 307499008  6月 11 06:05 2017 main.cld.20180806
-rw-------. 1 clamav clamav             884  8月   6 16:18 2018 mirrors.dat

この状態でデータベースの更新を実施します。

 # freshclam

ClamAV update process started at Mon Aug 6 16:21:55 2018
main.cld is up to date (version: 58, sigs: 4566249, f-level: 60, builder: sigmgr)
daily.cld is up to date (version: 24816, sigs: 2039637, f-level: 63, builder: neo)
Downloading bytecode.cvd [100%]
bytecode.cvd updated (version: 326, sigs: 93, f-level: 63, builder: neo)
Database updated (6605979 signatures) from db.jp.clamav.net (IP: 104.16.187.138)
Clamd successfully notified about the update.
# ls -l

-rw-r--r--. 1 clamav clamav       951808 8月   6 06:05 2018 bytecode.cld
-rw-r--r--. 1 clamav clamav       959488 7月 29 06:05 2018 bytecode.cld.20180806
-rw-r--r--. 1 clamav clamav 150112768 8月   6 06:05 2018 daily.cld
-rw-r--r--. 1 clamav clamav 146345472 6月 11 08:41 2018 daily.cld.20180808
-rw-r--r--. 1 clamav clamav 307499008 6月 11 06:05 2017 main.cld.20180808
-rw-r--r--. 1 clamav clamav 117892267 8月   6 06:05 2018 main.cvd
-rw-------. 1 clamav clamav             884 8月   6 06:05 2018 mirrors.dat

 

 

リネームすることで無くなったファイルが無事に再構築されました。

あれ……mainの名前が変わったぞ………

 

どうやらClamAVのヴァージョンが進むことによって、main.cld →main.cvdへ変わったようです。

この状態でウィルススキャンをかけると無事に終了しました。

古いファイルが阻害していたようです。

 

うーん、流石Linuxだ………