Debian安装ClamAV杀毒软件
一、ClamAV 简介
ClamAV 是一款开源、跨平台的杀毒软件工具包,特别擅长检测木马、病毒、恶意软件和其他恶意威胁。在 Linux 服务器上,它的主要角色是:
-
扫描用户上传的文件(如网站表单、FTP)。
-
扫描电子邮件附件(与邮件服务器如 Postfix 集成)。
-
扫描文件共享(如 Samba),确保提供给 Windows 客户端的文件安全。
-
定期检查系统,防止服务器被入侵后作为恶意软件分发点。
二、安装步骤
需要先 SSH 连接到 Debian 服务器。
步骤 1: 更新系统软件包列表
首先,确保您的系统软件包列表是最新的。
|
1 |
apt update |
步骤 2: 安装 ClamAV 软件包
安装 clamav 核心引擎和 clamav-daemon 守护进程(后者包含自动更新工具和后台服务)。
|
1 |
apt install clamav clamav-daemon |
-
clamav: 提供主要的命令行扫描工具 clamscan。
-
clamav-daemon: 提供后台服务 clamd 和自动病毒库更新工具 freshclam。强烈建议安装,否则你需要手动更新病毒库。
在安装过程中,clamav-daemon 和 freshclam 服务会自动启动。但有时会因为缺少病毒库初始文件而启动失败,这是正常的,我们下一步就解决。
步骤 3: 更新病毒特征库
ClamAV 依靠病毒特征库来识别威胁。我们需要手动初始化并下载最新的病毒库。
首先,停止可能运行失败的服务:
|
1 |
systemctl stop clamav-freshclam |
然后,使用 freshclam 工具手动下载病毒库:
|
1 |
freshclam |
这个过程会从 ClamAV 的服务器下载数据库,请耐心等待。如果遇到网络连接问题(如403错误),可以多试几次,或者换个时间再试。
步骤 4: 启动并启用服务
病毒库更新成功后,启动服务并设置为开机自启。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# 启动 freshclam 更新服务 systemctl start clamav-freshclam # 启动 clamav-daemon 扫描服务 systemctl start clamav-daemon # 设置两个服务为开机自动启动 systemctl enable clamav-freshclam systemctl enable clamav-daemon # 检查服务开始启动是否生效 <span class="crayon-p">enabled 是开机启动状态 返回 disable 是开机不启动 </span> systemctl is-enabled clamav-daemon systemctl is-enabled clamav-freshclam # 检查服务状态,确认它们正在正常运行 systemctl status clamav-freshclam systemctl status clamav-daemon |
看到 active (running) 的字样就说明服务运行正常了。
三、基本使用方法
ClamAV 提供了两个主要的扫描命令:
-
clamscan: 独立扫描器。每次运行都会加载引擎和病毒库,速度稍慢,适合手动扫描。
-
clamdscan: 客户端工具。它与一直运行在后台的 clamd 守护进程通信进行扫描,速度非常快,适合用于定时脚本和自动扫描。
常用扫描示例:
1. 扫描单个文件或目录(使用 clamscan)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# 扫描单个文件 clamscan /path/to/suspicious_file.exe # 递归扫描整个目录(-r 表示递归) clamscan -r /home/username # 扫描目录,并只显示被感染的文件(-i 选项) clamscan -r -i /var/www/html # 扫描目录,如果发现病毒则自动删除(谨慎使用!) clamscan -r --remove /tmp # 更安全的做法:将感染文件移动到隔离区,而不是直接删除 clamscan -r --move=/path/to/quarantine_folder /var/www # 扫描并生成日志文件 clamscan -r /var --log=/var/log/clamav/scan.log |
2. 使用更快的 clamdscan 扫描
|
1 2 3 |
# 使用守护进程快速扫描目录 clamdscan /home clamdscan /var/www/html |
clamdscan 的选项与 clamscan 大部分通用,如 –move、–remove 等。
3. 扫描整个系统(耗时很长,通常不推荐日常使用)
|
1 2 |
# 扫描整个系统,显示摘要,记录日志 clamscan -r / --log=/var/log/clamav/full_scan.log |
注意:扫描根目录 / 会扫描所有连接的文件系统,非常耗时,并且会因权限问题跳过一些文件。通常只在怀疑系统被入侵后进行一次基线扫描。
四、高级配置:设置定时自动扫描
手动扫描不够可靠,最佳实践是配置一个定时任务(cron job)来定期扫描关键目录。
示例:设置每天凌晨扫描网站目录和用户目录
-
创建一个扫描脚本,方便管理:
1vim /usr/local/bin/clamav_daily_scan.sh
将以下内容粘贴到脚本中:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#!/bin/bash # 设置扫描目录 SCAN_DIRS="/var/www/html /home" # 设置日志文件位置 LOG_FILE="/var/log/clamav/daily_scan.log" # 设置隔离区位置(确保此目录存在且有写入权限) QUARANTINE_DIR="/var/lib/clamav/quarantine" mkdir -p $QUARANTINE_DIR # 使用 clamdscan 进行快速扫描,并将感染文件移动到隔离区 /usr/bin/clamdscan $SCAN_DIRS --move=$QUARANTINE_DIR --log=$LOG_FILE # 可选:扫描完成后发送邮件通知(需要配置系统邮件) # echo "ClamAV daily scan completed for $SCAN_DIRS. Log saved to $LOG_FILE" | mail -s "ClamAV Scan Report" admin@yourdomain.com exit 0 |
给脚本添加执行权限:
|
1 |
chmod +x /usr/local/bin/clamav_daily_scan.sh |
编辑 root 用户的 cron 任务表:
|
1 |
crontab -e |
添加一行,配置在每天凌晨 1点运行扫描:
|
1 2 |
# 分 时 日 月 周 命令 0 1 * * * /usr/local/bin/clamav_daily_scan.sh |
-
保存并退出编辑器。
现在,您的服务器就会每天自动扫描关键目录,并将感染文件移至隔离区,同时记录日志。
五、更新和维护
-
病毒库更新:clamav-freshclam 服务会自动每天多次检查并更新病毒库,通常无需手动干预。
-
手动更新:如果你怀疑数据库不是最新的,可以随时运行:
1freshclam -
更新软件:当通过 apt upgrade 更新系统时,ClamAV 软件本身也会得到更新。