ClamAV 是一款开源的防病毒软件,广泛用于 Linux 系统以扫描恶意软件。本文将详细介绍如何在 CentOS 7 上安装、配置和卸载 ClamAV,提供清晰的步骤和注意事项。本指南基于 CentOS 7(尽管已于 2024 年 6 月停止支持),但大部分步骤也适用于其他基于 Red Hat 的系统(如 AlmaLinux 或 Rocky Linux)。
1. 安装 ClamAV
以下是在 CentOS 7 上安装 ClamAV 的完整步骤,包括依赖安装、配置和病毒数据库更新。
1.1 准备环境
在安装之前,确保系统已更新,并且有网络连接以下载软件包和病毒数据库。
# 更新系统
yum update -y
# 检查网络连接
ping -c 4 google.com
CentOS 7 的默认仓库可能不包含最新版本的 ClamAV,因此需要启用 EPEL 仓库。
# 安装 EPEL 仓库
yum install -y epel-release
1.2 安装 ClamAV 软件包
安装 ClamAV 的核心组件,包括 clamav
(主程序)、clamd
(守护进程)和 clamav-update
(病毒数据库更新工具)。
yum install -y clamav clamd clamav-update
验证安装:
clamscan --version
预期输出类似:
ClamAV 0.103.11/27258/Wed Sep 3 09:00:00 2025
注意:CentOS 7 的 EPEL 仓库可能提供较旧的版本(如 0.103.11)。建议升级到最新版本(见 1.5)。
1.3 配置 ClamAV
ClamAV 的主要配置文件位于 /etc/clamd.d/scan.conf
(守护进程)和 /etc/freshclam.conf
(病毒数据库更新)。需要确保配置正确并设置适当权限。
配置 freshclam
编辑 /etc/freshclam.conf
:
vi /etc/freshclam.conf
确保包含以下关键配置(取消注释或添加):
DatabaseDirectory /var/lib/clamav
UpdateLogFile /var/log/clamav/freshclam.log
LogFileMaxSize 2M
DatabaseMirror db.us.clamav.net
HTTPUserAgent ClamAV/1.0.9
ConnectTimeout 60
ReceiveTimeout 60
设置权限:
chown clamav:clamav /etc/freshclam.conf
chmod 644 /etc/freshclam.conf
配置 clamd
编辑 /etc/clamd.d/scan.conf
:
vi /etc/clamd.d/scan.conf
确保包含:
DatabaseDirectory /var/lib/clamav
LogFile /var/log/clamav/clamd.log
LogFileMaxSize 2M
PidFile /run/clamd.scan/clamd.pid
LocalSocket /run/clamd.scan/clamd.sock
设置权限和运行目录:
chown clamav:clamav /etc/clamd.d/scan.conf
chmod 644 /etc/clamd.d/scan.conf
mkdir -p /run/clamd.scan
chown clamav:clamav /run/clamd.scan
chmod 755 /run/clamd.scan
设置病毒数据库目录
确保 /var/lib/clamav
存在并具有正确权限:
mkdir -p /var/lib/clamav
chown -R clamav:clamav /var/lib/clamav
chmod -R 755 /var/lib/clamav
1.4 更新病毒数据库
运行 freshclam
下载病毒数据库:
freshclam --verbose
- 预期下载
main.cvd
、daily.cvd
和bytecode.cvd
到/var/lib/clamav
。 - 如果遇到 403 Forbidden 错误,尝试切换镜像:
sed -i '/^DatabaseMirror/d' /etc/freshclam.conf echo "DatabaseMirror db.de.clamav.net" >> /etc/freshclam.conf freshclam --verbose
验证数据库:
ls -l /var/lib/clamav
1.5 升级 ClamAV(推荐)
CentOS 7 的 EPEL 仓库可能提供旧版本(如 0.103.11),建议升级到最新版本(如 1.0.9)以确保兼容性:
yum remove clamav clamd clamav-update
wget https://www.clamav.net/downloads/production/clamav-1.0.9.el7.x86_64.rpm
yum localinstall -y clamav-1.0.9.el7.x86_64.rpm
重新配置(重复 1.3 和 1.4)。
1.6 启动和启用服务
启动 ClamAV 的守护进程和病毒数据库更新服务:
systemctl start clamd@scan.service
systemctl start clamav-freshclam.service
systemctl enable clamd@scan.service
systemctl enable clamav-freshclam.service
验证服务状态:
systemctl status clamd@scan.service
systemctl status clamav-freshclam.service
1.7 测试 ClamAV
测试 ClamAV 是否正常工作:
clamscan /etc/hosts
预期输出类似:
/etc/hosts: OK
----------- SCAN SUMMARY -----------
Known viruses: 2060622
Scanned directories: 0
Scanned files: 1
Infected files: 0
2. 卸载 ClamAV
如果你需要完全移除 ClamAV,包括软件包、配置文件、数据库和日志,请按照以下步骤操作。
2.1 停止 ClamAV 服务
停止所有相关服务:
systemctl stop clamd@scan.service
systemctl stop clamav-freshclam.service
2.2 卸载软件包
移除 ClamAV 相关软件包:
yum remove -y clamav clamd clamav-update
验证:
yum list installed | grep clamav
2.3 删除配置文件
删除 ClamAV 的配置文件:
rm -rf /etc/clamd.d/ /etc/freshclam.conf /etc/freshclam.conf.bak
2.4 删除病毒数据库和日志
删除病毒数据库和日志文件:
rm -rf /var/lib/clamav/
rm -rf /var/log/clamav/
2.5 删除 systemd 服务文件
删除 systemd 服务文件并刷新:
rm -f /usr/lib/systemd/system/clamd@.service /usr/lib/systemd/system/clamd@scan.service /usr/lib/systemd/system/clamav-freshclam.service
systemctl daemon-reload
systemctl reset-failed clamd@scan.service clamav-freshclam.service
清理残留 slice:
systemctl stop system-clamd.slice
systemctl reset-failed system-clamd.slice
2.6 删除 clamav 用户和组
删除 ClamAV 创建的系统用户:
ps aux | grep clamav | awk '{print $2}' | xargs kill -9 2>/dev/null || true
userdel -r clamav
验证:
id clamav
2.7 清理 yum 缓存
清理 yum 缓存以释放空间:
yum clean all
rm -rf /var/cache/yum/*/*/clamav*
2.8 验证清理
检查是否还有残留:
find / -name "*clamav*" -o -name "*clamd*" -o -name "*freshclam*"
systemctl list-units | grep clam
ls /etc/clamd.d /etc/freshclam.conf /var/lib/clamav /var/log/clamav
如果无输出,说明清理完成。
3. 常见问题和解决方法
3.1 freshclam 无法下载数据库
- 症状:
freshclam --verbose
报错 403 Forbidden 或卡住。 - 解决:
- 检查网络:
ping db.us.clamav.net
- 切换镜像:在
/etc/freshclam.conf
中将DatabaseMirror
改为db.de.clamav.net
。 - 添加 User-Agent:
echo "HTTPUserAgent ClamAV/1.0.9" >> /etc/freshclam.conf
- 检查网络:
3.2 clamd@scan.service 启动失败
- 症状:
systemctl status clamd@scan.service
显示 “failed”。 - 解决:
- 检查日志:
journalctl -u clamd@scan.service
- 确保
/var/lib/clamav
包含病毒数据库。 - 修复权限:
chown -R clamav:clamav /var/lib/clamav /etc/clamd.d chmod -R 755 /var/lib/clamav chmod 644 /etc/clamd.d/scan.conf
- 检查日志:
3.3 SELinux 限制
- 症状:日志显示 “Control message truncated” 或权限错误。
- 解决:
- 临时禁用 SELinux:
setenforce 0
- 修复 SELinux 上下文:
restorecon -R /var/lib/clamav /etc/clamd.d
- 临时禁用 SELinux:
3.4 CentOS 7 EOL
CentOS 7 已于 2024 年 6 月停止支持,EPEL 仓库可能提供旧版 ClamAV。建议迁移到 AlmaLinux 或 Rocky Linux。
4. 总结
本文提供了在 CentOS 7 上安装和卸载 ClamAV 的详细步骤,包括环境准备、配置、服务启动和清理方法。通过这些步骤,可以轻松部署 ClamAV 进行病毒扫描,或在需要时彻底移除它。建议升级到最新 ClamAV 版本(如 1.0.9)并考虑迁移到支持的系统以获得更好的兼容性。