Ubuntu 安装和使用 ClamAV

ClamAV 是开源恶意软件扫描引擎,适合文件服务器、邮件网关、上传目录和离线文件检查。它不是主机加固的全部内容,不能替代系统更新、最小权限、应用白名单、备份和入侵检测。

一、安装

sudo apt update
sudo apt install -y clamav clamav-daemon
clamscan --version

Ubuntu 软件包通常会安装 clamav-freshclam 服务自动更新病毒库。先查看服务状态:

systemctl status clamav-freshclam --no-pager
freshclam --version

只有手工更新与正在运行的 freshclam 服务冲突时,才临时停止服务:

sudo systemctl stop clamav-freshclam
sudo freshclam
sudo systemctl start clamav-freshclam

如果更新失败,先检查 DNS、代理、系统时间和日志,不要从第三方网站下载病毒库。

二、扫描前准备

对大目录或生产服务器扫描可能消耗大量 CPU、磁盘 IO 和时间。建议:

  • 先扫描测试目录并评估性能;
  • 将隔离目录放在受控位置,限制普通用户访问;
  • 排除虚拟文件系统、备份挂载点和不应重复扫描的隔离目录;
  • 在低峰期执行,并监控磁盘空间;
  • 重要文件先备份,发现告警后先隔离、核验,不要直接删除。
sudo install -d -m 700 /var/quarantine/clamav

三、常用扫描方式

扫描单个目录并只显示告警:

clamscan --recursive --infected /srv/uploads

记录日志并把告警文件移动到隔离目录:

sudo clamscan --recursive --infected \
  --log=/var/log/clamav/manual-scan.log \
  --move=/var/quarantine/clamav \
  /srv/uploads

不建议使用 --remove 自动删除。误报或业务文件被删除后可能无法恢复。使用 clamdscan 前应确认 clamav-daemon 已运行并能读取目标路径。

四、理解退出码

ClamAV 扫描命令常见退出码:

  • 0:未发现告警;
  • 1:发现告警;
  • 2:发生错误,例如权限不足、病毒库不可用或文件读取失败。

自动化脚本必须区分“发现病毒”和“扫描失败”,不能把两者都当作扫描成功。

五、计划任务示例

先创建脚本并在测试环境运行成功,再交给 systemd timer 或 cron。下面示例每天扫描上传目录,不直接删除文件:

30 2 * * * /usr/bin/clamscan --recursive --infected --move=/var/quarantine/clamav --log=/var/log/clamav/daily-scan.log /srv/uploads

路径应通过 command -v clamscan 确认。病毒库更新优先交给 clamav-freshclam 服务,不要重复创建并发更新任务。

六、发现告警后的处理

  1. 记录文件路径、检测名称、时间和主机;
  2. 隔离文件并保留哈希,避免继续传播;
  3. 结合文件来源、业务用途和多种证据判断是否误报;
  4. 排查同目录、同账号和同时间段的其他异常;
  5. 必要时按安全事件流程上报;
  6. 清理完成后重新扫描,并确认业务恢复。

官方参考:ClamAV 扫描文档

Copyright © yan-jian.com 2023 - 2026 · Powered by GitBook更新时间: 2026-10-17 18:21:43

results matching ""

    No results matching ""