开源防病毒引擎ClamAV

本文软件是应网友 Windows 的要求折腾的;

什么是 ClamAV ?

ClamAV 是一个开源 ( GPLv2 ) 反病毒工具包,专为邮件网关上的电子邮件扫描而设计。它提供了许多实用程序,包括灵活且可扩展的多线程守护程序、命令行扫描程序和用于自动数据库更新的高级工具。该软件包的核心是一个以共享库形式提供的反病毒引擎。

ClamAV 支持多平台安装,包括 WindowsmacOS LinuxDocker

但需要注意的是

  • ClamAV 不是传统的防病毒或端点安全套件;
  • 无论您使用的是官方 ClamAV docker 镜像还是运行 ClamAV 的第三方镜像,您都需要确保您有足够的 RAM

ClamAV 的推荐 RAM(截至 2020/09/20):

  • 最低:3 G
  • 首选:4 G

安装

在群晖上以 Docker 方式安装。

本文写作时,latest 对应的版本是 stable,也就是稳定版,具体对应的版本号是 1.1.0

如果你熟悉命令行,可能用 docker cli 更快捷。

SSH 客户端登录到群晖主机,然后在命令行执行下面的命令。在 docker 文件夹中,创建一个新文件夹 clamav,并在其中建一个子文件夹 data,其中 data 子目录是用于保存和持久化病毒库的

1
2
3
4
5
6
7
8
# 新建文件夹 clamav 和 子目录
mkdir -p /volume2/docker/clamav/data

# 进入 clamav 目录
cd /volume2/docker/clamav

# 下载镜像
docker pull clamav/clamav:latest

运行

下载病毒库

第一次运行,需要下载和更新病毒库

ClamAV 容器实际上默认同时运行freshclamclamd守护进程。要控制在容器内启动的服务的行为,需通过环境变量来控制。

官方的说明:https://docs.clamav.net/manual/Installing/Docker.html#controlling-the-container

1
2
3
4
5
6
7
#  更新病毒数据库
docker run -it \
--rm \
--name clamav \
-v $(pwd)/data:/var/lib/clamav \
-e CLAMAV_NO_FRESHCLAMD=false \
clamav/clamav:latest

下载的时间取决于网络的情况

当看到 SelfCheck: Database status OK. 时,可以用 Ctrl+C 来退出容器的运行,--rm参数确保容器在退出后会被清理

回到 FileStation,在 data 中能看到下载的病毒库文件

运行 Clam(D) 扫描

Docker 无法访问任何的主机文件。因此,要在 Docker 中扫描这些文件,需要使用绑定挂载来挂载它们,以便可以访问。

例如:将主机目录 /path/to/scan 挂载在容器中作为 /scandir ,然后调用clamcan/scandir 上完成扫描

1
2
3
4
5
6
7
8
# 扫描主机 /path/to/scan 目录
docker run -it \
--rm \
--name clamav \
-v /path/to/scan:/scandir \
-v $(pwd)/data:/var/lib/clamav \
clamav/clamav:latest \
clamscan /scandir

下面的示例,是将群晖的 docker 目录挂载后进行扫描

硬盘崩溃之前,老苏的 docker 目录在 volume2 上;

1
2
3
4
5
6
7
8
# 示例:扫描 docker 目录
docker run -it \
--rm \
--name clamav \
-v /volume2/docker:/scandir \
-v $(pwd)/data:/var/lib/clamav \
clamav/clamav:latest \
clamscan /scandir

能直接看到扫描的详情

参考文档

Cisco-Talos/clamav: ClamAV - Documentation is here: https://docs.clamav.net
地址:https://github.com/Cisco-Talos/clamav

clamav/README.Docker.md at main · Cisco-Talos/clamav · GitHub
地址:https://github.com/Cisco-Talos/clamav/blob/main/README.Docker.md

ClamAVNet
地址:https://www.clamav.net/

Introduction - ClamAV Documentation
地址:https://docs.clamav.net/

ClamAV® blog
地址:https://blog.clamav.net/