如何确定 ClamAV 数据库是最新的?

How to be sure ClamAV database is up to date?

我目前在 Centos 6.9 上遇到 ClamAV 和 freshclam 的问题。

我有最新的 Clam 引擎 0.99.2,并且有可用的互联网连接。 即使我在 # clamscan、clamAV return 之前 运行 # freshclam -v 命令(它只是 return 关于 freshclam.conf 的不安全许可的安全警告)我这个警告:

LibClamAV Warning: ************************************************** LibClamAV Warning: *** The virus database is older than 7 days. *** LibClamAV Warning: *** Please update it IMMEDIATELY! *** LibClamAV Warning: **************************************************

所以我的问题是:我怎么知道上次更新是什么时候完成的?或者确保病毒库是最新的?

PS : 我用 eicar 测试文件测试了 clamscan,它检测到了它。

您有 2 个问题:

  1. 我怎么知道上次更新是什么时候完成的?

host -t txt current.cvd.clamav.net; perl -e 'printf "%d\n", time;'

这将告诉您 clamav 上次更新的时间。

  1. 确保病毒库是最新的?

首先您需要了解为什么会收到安全警告。如果您 post 这里的警告也许我们会有更好的机会帮助您。

然后我建议你查看日志 /var/log/clamav/freshclam.log

此外,如果您启用了 selinux,则必须 运行 这个:setsebool -P antivirus_can_scan_system 1。如果万一错误是这样的 During database load : LibClamAV Warning: RWX mapping denied: Can't allocate RWX Memory: Permission denied 那么很明显你的解决方案就是我上面提到的命令。

这就是我针对你问题的第二部分所做的:确保病毒库是最新的?

我的系统处于离线状态,因此无法在 clamav 站点查询其最新的病毒定义数据库,但我可以使用此 linux 命令轻松检查当前 cvd 文件的日期。

strings /var/lib/clamav/daily.cvd|head -1|cut -c1-28
ClamAV-VDB:31 Jul 2019 04-17

编辑:正如 Jonathon 亲切提到的,sigtool 是检查 clamav dat 文件签名的好方法:

sigtool --info daily.cvd
File: daily.cvd
Build time: 28 Aug 2019 04:24 -0400
Version: 25555
Signatures: 1739106
Functionality level: 63
Builder: raynman
...

clamscan --version 显示签名的版本和日期,例如

$ clamscan --version
ClamAV 0.101.4/25613/Fri Oct 25 11:00:25 2019

其中 25613 是签名版本,后面是签名日期

您不能相信 TXT 记录的日期。但是,您可以信任 TXT 记录中的数据库版本。

所以,正确的答案是使用@bogdan 和@falko-menge 答案的一部分:

首先,“我机器上的 clamav 数据库是什么版本?” (在这个例子中,25904):

$ clamscan --version
ClamAV 0.102.4/25904/Mon Aug 17 08:02:24 2020

现在,“clamav.net 上可用的最新版本是什么?” (在这个例子中,也是 25904):

@ ✓ $ host -t txt current.cvd.clamav.net; perl -e 'printf "%d\n", time;'
current.cvd.clamav.net descriptive text "0.102.4:59:25904:1597879740:1:63:49191:331"

但是,TXT 记录显示了 25904 实际创建时间的错误时间:-(

@ ✓ $ epoch_to_rfc_3339 1597879740
2020-08-19T18:29:00

#!/bin/bash

check_clamav_version=freshclam -V check_clamav_site=host -t txt current.cvd.clamav.net

#echo $check_clamav_version #echo $check_clamav_site

clamav_version=echo $check_clamav_version |awk -F '/' '{ print }' clamav_site=echo $check_clamav_site |awk -F ":" '{ print }'

回声$clamav_version 回声$clamav_site 让“结果=clamav_site-clamav_version”;回声$结果

案例$结果在 0) echo "ClamAV 是最新的,版本相同" ;; *) echo "ClamAV 不是最新的,本地数据库是版本 $clamav_version,站点有版本 $clamav_site 可用。" ;; esac

~ ~