Linux杀毒软件ClamAV初体验
近期有客户的Linux云服务器出现中毒的情况,不禁在想,Windows平台上有许多免费的杀毒软件,例如火绒。那Linux平台上是否也有类似的杀毒软件,于是网上搜索了下,找到了ClamAV,一款开源的跨平台的防病毒引擎,用于检测木马、病毒、恶意软件和其他恶意威胁。本文主要整理了下CentOS7环境下ClamAV的安装和基本使用方法。
ClamAV介绍
ClamAV是一款开源的跨平台的防病毒工具包,专为邮件网关上的电子邮件扫描而设计,用于检测木马、病毒、恶意软件和其他恶意威胁。ClamAV提供了许多使用程序,包括灵活且可扩展的多线程守护程序、命令行扫描程序和用于自动数据库更新的高级工具。该软件包的核心是一个防病毒引擎,以共享库的形式提供。
支持平台
- GNU/Linux
- Alpine
- 3.17 (x86_64)
- Ubuntu
- 18.04 (x86_64, i386)
- 20.04 (x86_64)
- Debian
- 10 (x86_64, i386)
- 11 (x86_64, i386)
- CentOS
- 7 (x86_64, i386)
- Fedora
- 31 (x86_64)
- 33 (x86_64)
- openSUSE
- 15 Leap (x86_64)
- Alpine
- UNIX
- FreeBSD
- 12 (x86_64)
- 13 (x86_64)
- macOS
- 10.13 High Sierra (Intel x86_64)
- 10.15 Catalina (Intel x86_64)
- 11.5 Big Sur (Intel x86_64, arm64 Apple M1)
- FreeBSD
- Windows
- 7 (x86_64, i386)
- 10 (x86_64, i386)
推荐系统要求
以下最低推荐系统要求适用于ClamScan或ClamD应用程序与Cisco提供的标准ClamAV特征库配合使用。
ClamAV的CPU最小推荐
- 1核CPU,主频大于或等于2.0 Ghz
ClamAV的内存最小推荐
- FreeBSD and Linux server edition: 3 GiB+
- Linux non-server edition: 3 GiB+
- Windows 7 & 10 32-bit: 3 GiB+
- Windows 7 & 10 64-bit: 3 GiB+
- macOS: 3 GiB+
ClamAV的硬盘最小推荐
- 5GiB可用空间
安装ClamAV
下载链接:https://www.clamav.net/downloads
下载所需版本对应平台的安装包,本文以CentOS7为例

执行以下命令安装ClamAV
1 | rpm -ivh clamav-1.2.1.linux.x86_64.rpm |
默认将安装在/usr/local中,其中包含:
- 应用程序:
/usr/local/bin - 守护进程:
/usr/local/sbin - 库文件:
/usr/local/lib - 头文件:
/usr/local/include - 配置文件:
/usr/local/etc/ - 病毒库:
/usr/local/share/clamav/
配置ClamAV
freshclam.conf
freshclam是自动更新病毒库的工具。它可以配置为在两种模式下工作:
- 交互式 - 从命令行按需执行
- 守护进程 - 静默在后台自动执行
根据示例配置文件创建freshclam.conf文件
1 | cp -a /usr/local/etc/freshclam.conf.sample /usr/local/etc/freshclam.conf |
编辑/usr/local/etc/freshclam.conf,添加以下内容
1 | UpdateLogFile /var/log/freshclam.log |
参数说明
UpdateLogFile:指定更新日志文件
LogTime:配置日志文件显示时间戳
DatabaseOwner:指定病毒库文件所属用户
更多配置参数可执行man freshclam.conf进行查询
创建日志文件
1 | touch /var/log/freshclam.log |
更新病毒库(首次更新建议手动前台执行)
1 | freshclam |
为了保证病毒库能持续升级更新,可执行以下命令启动freshclam守护进程实现自动更新
1 freshclam -d若不想freshclam长期占用系统资源,可通过crontab自定义设置定期更新
1
2 # 每5分钟更新一次病毒库
*/5 * * * * /usr/local/bin/freshclam
clamd.conf
目前,ClamAV要求先配置clamd.conf文件,然后才可以运行守护进程,至少需要注释掉“Example”行,否则clamd将认为配置无效。
根据示例配置文件创建clamd.conf文件
1 | cp -a /usr/local/etc/clamd.conf.sample /usr/local/etc/clamd.conf |
编辑/usr/local/etc/clamd.conf,添加以下内容
1 | LogFile /var/log/clamd.log |
参数说明
LogFile:指定clamd日志文件
LogTime:配置日志文件显示时间戳
LocalSocket:指定socket文件路径
LocalSocketMode:指定socket文件权限
User:设置运行clamd的用户身份
更多配置参数可执行man clamd.conf进行查询
启动扫描
ClamD
ClamD是一个多线程守护程序,它使用libclamav扫描文件以查找病毒。通过修改clamd.conf可以配置扫描行为以满足大多数需求。
启动ClamD
1 | clamd |
设置开机自启
1 | echo "clamd" >> /etc/rc.d/rc.local |
说明
实际测试clamd需要占用2GiB左右的内存,启动前请确保有足够的内存资源
ClamDScan
ClamDScan是一个ClamD客户端,它大大简化了使用Clamd扫描文件的任务。它通过clamd.conf中指定的套接字向clamd守护进程发送命令,并在守护进程完成所有请求的扫描后生成扫描报告。因此在运行ClamDScan之前,必须先运行一个ClamD实例。
1 | # 全盘扫描,首次扫描时间会比较长 |
为了方便,可按照如下方法设置定期扫描,首先编写扫描脚本
1
2
3
4
5
6
7
8
9 cat > /opt/auto_scan.sh << EOF
#!/bin/bash
PATH=\$PATH:/usr/local/bin/
# 更新病毒库
freshclam
# 进行全盘扫描
echo > /var/log/clamdscan.log
clamdscan --log=/var/log/clamdscan.log --config-file=/usr/local/etc/clamd.conf -w /
EOF最后执行
crontab -e配置计划任务
1
2 # 每30分钟全盘扫描一次
*/30 * * * * sh /opt/auto_scan.sh