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

问题描述 投票:0回答:5

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

我有最新的 Clam 引擎 0.99.2,并且有可用的互联网连接。 即使我在

# freshclam -v
之前运行
# clamscan
命令(它只返回有关 freshclam.conf 不安全权限的安全警告),clamAV 也会向我返回此警告:

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

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

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

linux centos antivirus virus-scanning clam
5个回答
17
投票

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

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

其中

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


9
投票

您有 2 个问题:

  1. 我如何知道上次更新何时完成?

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

这将告诉您 clamav 何时提供最后一次更新。

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

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

那么我建议您查看日志

/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
那么显然你的解决方案就是我上面提到的命令。


6
投票

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

我的系统处于离线状态,因此无法查询 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
...

1
投票

使用以下脚本检查 ClamAV 是否具有最新版本的数据库:

#!/usr/bin/env bash
set -eo pipefail

_local_version=$(freshclam -V)
_remote_version=$(host -t txt current.cvd.clamav.net)

local_version=$(echo "$_local_version" | awk -F '/' '{ print $2 }')
remote_version=$(echo "$_remote_version" | awk -F ':' '{ print $3 }')

echo "Local version: $local_version" >&2
echo "Remote version: $remote_version" >&2

if [[ "$local_version" == "$remote_version" ]]; then
  echo "ClamAV  is up to date" >&2
else
  echo "ClamAV not up to date, local version is $local_version, available is: $remote_version" >&2
  exit 1
fi

将其另存为

clamav-check-if-up-to-date.sh
。如果数据库已过期,它将返回退出代码 1;如果数据库是最新的,它将返回退出代码 0。


0
投票

您不能相信

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
© www.soinside.com 2019 - 2024. All rights reserved.