启动器 产品 Bitnami 文档imaxe CLI 博客 联系
imaxe clamav 防病毒 v1.0.0

防病毒,始终最新

ClamAV 引擎扫描文件和目录以查找恶意软件,把感染文件隔离起来,并用 freshclam 保持特征库最新。一条命令扫描;另一条更新——没有意外。

$ imaxe clamav scan /srv/uploads --recursive --quarantine
版本
v1.0.0
子命令
5
配置
/etc/imaxe/clamav.yml
需要 root
特征库
freshclam

该模块的功能 #

防病毒软件会把你服务器上的文件与已知恶意软件的特征目录进行比对。如果有匹配,就把它标记为已感染,以免继续传播——例如上传到公共文件夹中的恶意附件,或通过 FTP 到达的受污染文件。

clamav 模块用少量清晰的命令把 ClamAV 引擎交到你手中:查询它的状态扫描你想要的任意路径(单个文件或整棵目录树)、决定如何处理感染文件——仅报告、将其删除,或移入可稍后恢复的安全隔离区——并用 freshclam 保持特征库最新。隔离会在不删除文件的情况下将其隔开,因此你绝不会因误操作而丢失任何东西。

开始之前

扫描是用你当时拥有的特征库来检测的。如果你已经好几天没更新,请先运行 imaxe clamav update,以免漏掉近期的威胁。扫描大型目录树可能耗时并占用 CPU:把路径收窄到你真正想检查的范围。

快速指南逐步任务

常见任务 #

选择你想做的事。每份配方都附有写好的命令——只需把路径换成你自己的,再点击复制

1

查看 ClamAV 是否就绪

检查引擎、模式以及你的特征库有多旧。

通过 SSH 连接到你的服务器并请求总体状态:

终端
$ sudo imaxe clamav status

只关心特征库——版本、日期和文件?使用 db

终端
$ sudo imaxe clamav db
你会看到引擎、模式(daemon 或按需)、freshclam 的状态以及特征库的新旧程度。如果它们过旧,跳到更新特征库
2

扫描一个文件夹

检查一个路径并只留下报告,不改动任何东西。

--recursive 分析一个目录及其全部内容。默认只报告:不删除也不移动任何东西。

终端
$ sudo imaxe clamav scan /home --recursive

只有单个文件?直接传入路径,不带 --recursive

终端
$ sudo imaxe clamav scan /srv/uploads/factura.pdf
结束时你会看到检查了多少文件,以及哪些(如果有的话)匹配了某个特征。如果出现感染文件,进入下一份配方。
3

扫描并隔离感染文件

自动将所有检测为阳性的文件移入隔离区。

扫描一个路径,并用 --quarantine 把每个感染文件挪到隔离区,而不是留在原处:

终端
$ sudo imaxe clamav scan /srv/uploads --recursive --quarantine

如果你更愿意直接删除感染文件而非将其隔离,使用 --remove(不可逆,请谨慎使用):

终端
$ sudo imaxe clamav scan /srv/uploads --recursive --remove
阳性文件会离开其所在文件夹,被保存并隔离起来。没有人能执行它们,而你之后可以决定是恢复还是删除。
4

查看并恢复隔离区

看看隔离了什么,必要时找回一个误报。

列出隔离区中的内容——每一项都带有其标识符、来源、特征和日期:

终端
$ sudo imaxe clamav quarantine list

是误报吗?用列表中显示的标识符把它恢复到原始路径:

终端
$ sudo imaxe clamav quarantine restore a1b2c3d4

当你确认所有被隔离的都是垃圾时,彻底清空隔离区:

终端
$ sudo imaxe clamav quarantine purge --yes
你从头到尾掌控隔离区:查看、找回无害的文件,并把其余的彻底删除,不留痕迹。
5

更新特征库

下载最新的定义以检测新出现的威胁。

运行 freshclam 以获取最新的特征库:

终端
$ sudo imaxe clamav update

之后通过版本和日期确认特征库已更新到最新:

终端
$ sudo imaxe clamav db
从现在起,你的扫描能够识别最新的威胁。请经常更新——新的恶意软件每天都在出现。
小心使用 --remove

删除会把文件永久抹除,而没有任何防病毒软件能完全避免误报。有疑虑时,请始终使用 --quarantine:它同样能有效隔离,并在你判断失误时让你恢复。

CLI 参考命令、标志与文件

用法概要 #

用法
imaxe clamav <subcomando> [<ruta>] [--recursive] [--quarantine|--remove] [--json]

凡是扫描、移动或删除文件的子命令都需要 root 权限(使用 sudo),因为它们会读取其他用户的路径并写入系统的隔离区。为任意命令添加 --json 可获得机器可读的输出,适用于脚本

子命令 #

子命令功能相关标志
statusClamAV 状态:engine、模式(daemon/on-demand)、freshclam 以及特征库。--json
scan扫描一个路径;可对感染文件进行报告、删除或隔离。--recursive, --remove, --quarantine, --json
update通过 freshclam 更新特征库。--json
db特征库信息:版本、日期和文件。--json
quarantine管理感染文件的隔离区(子命令分组)。list · restore · purge

quarantine 分组包含三个子命令:

子命令功能相关标志
quarantine list列出隔离区中的文件(来源、特征、日期)。--json
quarantine restore把隔离区中的文件恢复到其原始路径或指定目标。<id> [<destino>]
quarantine purge彻底删除隔离区中的所有内容。--yes

参数与标志 #

标志 / 参数类型默认值说明
<ruta> req.pathscan 中,要扫描的文件或目录。
<id> req.stringquarantine restore 中,隔离项的标识符(出现在 quarantine list 中)。
<destino>path原始路径quarantine restore 中,要将文件恢复到的路径。默认为其原始位置。
--recursiveboolfalsescan 中,递归扫描目录。
--quarantineboolfalsescan 中,把感染文件移入隔离区。
--removeboolfalsescan 中,删除感染文件。不可逆;与 --quarantine 互斥。
--yesboolfalsequarantine purge 中,无需询问即确认删除。
--jsonboolfalse将结果以 JSON 输出到 stdout。所有子命令均可用。

文件与路径 #

路径内容
/etc/imaxe/clamav.yml模块配置:隔离目录以及从扫描中排除的路径。
/var/lib/imaxe/clamav/quarantine隔离区存储:感染文件在此被隔离,可以恢复。
/var/lib/clamav/freshclam 维护的特征库(恶意软件定义)。
/var/log/imaxe/clamav.log每次扫描、隔离和更新的结构化日志。

clamav.yml 示例:

/etc/imaxe/clamav.yml
quarantine_dir: /var/lib/imaxe/clamav/quarantine
scan:
  exclude:
    - /proc
    - /sys

scan.exclude 是一份扫描会跳过的路径列表;默认为空。

退出码与日志 #

每次执行都会返回一个退出码,你可以用 echo $? 查看——便于在脚本中串联:

0OK操作正确;无威胁。
1ERR未分类的通用错误。请查看日志。
2USAGE参数无效或缺失。
3INFECTED扫描发现了感染文件。
4UPDATE特征库更新失败(freshclam)。

调试时实时跟踪日志:

终端
$ sudo tail -f /var/log/imaxe/clamav.log

故障排查 #

现象可能原因解决方法
出现 INFECTED(退出码 3)扫描检测到一个或多个威胁。查看报告;用 --quarantine 重新运行 scan 以隔离它们。
出现 UPDATE(退出码 4)freshclam 无法下载特征库(网络故障或镜像宕机)。检查服务器的外网访问并重试 clamav update
扫描耗时太久路径涵盖了过多文件或系统路径。收窄路径,并在 clamav.yml 中用 scan.exclude 排除不必要的内容。
丢失了一个合法文件误报被 --quarantine 移入了隔离区。quarantine list 定位它,并用 quarantine restore <id> 找回。
状态显示特征库过旧已经很久没有运行 freshclam。运行 clamav update,并用 clamav db 验证。

ClamAV 模块遇到问题了?

把「imaxe <module> status --json」的输出发给我们,我们会尽快回复你。

联系支持