《Linux 病毒扫描利器 ClamAV:全方位安装使用攻略》
病毒威胁下的 Linux 防护难题
在当今数字化时代,网络安全问题日益严峻,Linux 系统虽以稳定性和安全性著称,但也并非坚不可摧。病毒的不断变种和传播,给 Linux 用户带来了潜在的威胁。如何在 Linux 平台上构建一道坚固的防线,成为众多用户关注的焦点。今天,我们就来深入了解一款强大的 Linux 病毒扫描工具——ClamAV(Clam AntiVirus),看看它是如何助力我们守护系统安全的。
一、ClamAV 简介:Linux 平台的开源卫士
ClamAV 作为 Linux 平台上的开源病毒扫描程序,犹如一位不知疲倦的守护者,时刻守护着我们的系统安全。它主要应用于邮件服务器,采用多线程后台操作,就像拥有多个分身同时工作,大大提高了扫描效率。而且,它还具备自动升级病毒库的功能,能及时更新病毒特征码,确保对新出现的病毒也能精准识别。
二、安装:搭建 ClamAV 的基础架构
(一)安装 epel 软件源
安装epel软件源
# 此命令用于安装 epel 软件源,epel 是 Extra Packages for Enterprise Linux 的缩写,它提供了许多额外的软件包,方便我们后续安装 ClamAV 相关程序。执行此命令后,会自动下载并安装 epel 软件源,安装完成无额外输出信息。
yum install -y epel-release
yum clean all && yum makecache
(二)安装 clamav 程序
yum -y install clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd
# 该命令用于安装 ClamAV 相关的一系列程序,包括服务器端、数据文件、更新工具等。
安装成功会显示下面的提示。
Installed:
clamav-1.0.8-1.el9.x86_64 clamav-data-1.0.8-1.el9.noarch clamav-devel-1.0.8-1.el9.x86_64
clamav-filesystem-1.0.8-1.el9.noarch clamav-freshclam-1.0.8-1.el9.x86_64 clamav-lib-1.0.8-1.el9.x86_64
clamd-1.0.8-1.el9.x86_64 openssl-devel-1:3.2.2-6.el9.x86_64
三、配置 SE Linux:赋予 ClamAV 恰当权限
配置 ClamAV 权限时,执行 setsebool
命令可能会有点慢,这是正常现象,就像给一个复杂的系统调整规则,需要一些时间,请不要心急。
setsebool -P antivirus_can_scan_system 1
# 此命令用于永久设置 SELinux 策略,允许病毒扫描程序扫描系统文件。-P 参数表示永久生效,1 表示开启该策略。执行成功无额外输出信息。
setsebool -P clamd_use_jit 1
# 此命令用于永久设置 SELinux 策略,允许 ClamAV 使用 JIT(Just-In-Time)编译技术,提高扫描性能。
查看设置结果,执行下面命令:
getsebool -a | grep antivirus
# 此命令用于查看所有 SELinux 布尔值设置,并筛选出包含“antivirus”的设置项。执行后会显示与 antivirus 相关的布尔值设置情况,如 antivirus_can_scan_system 和 antivirus_use_jit 的状态。
如果设置生效会显示下面的结果。
[root@localhost ~]# getsebool -a | grep antivirus
antivirus_can_scan_system --> on
antivirus_use_jit --> on
四、配置 ClamAV:精细调整扫描参数
(一)删除示例
sed -i -e "s/^Example/#Example/" /etc/clamd.d/scan.conf
# 此命令用于将 /etc/clamd.d/scan.conf 文件中以“Example”开头的行注释掉。
sed -i 's/^#LocalSocket \/run/LocalSocket \/run/g' /etc/clamd.d/scan.conf
# 此命令用于将 /etc/clamd.d/scan.conf 文件中以“#LocalSocket /run”开头的行的注释去掉.
sed -i -e "s/^Example/#Example/" /etc/freshclam.conf
# 此命令用于将 /etc/freshclam.conf 文件中以“Example”开头的行注释掉。
(二)检查设置
[root@localhost ~]# cat /etc/clamd.d/scan.conf | grep "^#Example"
#Example
[root@localhost ~]# cat /etc/freshclam.conf | grep "^#Example"
#Example
[root@localhost ~]# cat /etc/clamd.d/scan.conf | grep "LocalSocket"
LocalSocket /run/clamd.scan/clamd.sock
#LocalSocketGroup virusgroup
#LocalSocketMode 660
五、更新病毒库:让 ClamAV 拥有最新“武器”
更新命令如下:
freshclam
# 此命令用于更新 ClamAV 的病毒库,它会连接到官方服务器,下载最新的病毒特征码。更新完成后会有详细的更新信息输出,如数据库测试通过、各个病毒库的更新情况等。
更新完成会出现如下提示。
Database test passed.
daily.cld updated (version: 27558, sigs: 2073020, f-level: 90, builder: raynman)
main.cvd database is up-to-date (version: 62, sigs: 6647427, f-level: 90, builder: sigmgr)
bytecode.cvd database is up-to-date (version: 335, sigs: 86, f-level: 90, builder: raynman)
病毒库保存位置:
/var/lib/clamav/bytecode.cvd
/var/lib/clamav/main.cvd
六、启动 Clamd 服务:让 ClamAV 正式“上岗”
systemctl start clamd@scan
# 此命令用于启动 Clamd 扫描服务,clamd@scan 启动会有点慢,因为服务启动需要加载相关配置和初始化资源。启动成功无额外输出信息。
systemctl enable clamd@scan
# 此命令用于设置 Clamd 扫描服务开机自启。
查看Clamd服务状态:
[root@localhost ~]# systemctl status clamd@scan
● clamd@scan.service - clamd scanner (scan) daemon
Loaded: loaded (/usr/lib/systemd/system/clamd@.service; enabled; preset: disabled)
Active: active (running) since Sun 2025-02-23 19:11:19 CST; 2min 0s ago
Docs: man:clamd(8)
man:clamd.conf(5)
https://www.clamav.net/documents/
Main PID: 5788 (clamd)
Tasks: 2 (limit: 10847)
Memory: 1.2G
CPU: 28.890s
CGroup: /system.slice/system-clamd.slice/clamd@scan.service
└─5788 /usr/sbin/clamd -c /etc/clamd.d/scan.conf
Feb 23 19:11:19 localhost.localdomain clamd[5788]: ELF support enabled.
Feb 23 19:11:19 localhost.localdomain clamd[5788]: Mail files support enabled.
Feb 23 19:11:19 localhost.localdomain clamd[5788]: OLE2 support enabled.
Feb 23 19:11:19 localhost.localdomain clamd[5788]: PDF support enabled.
Feb 23 19:11:19 localhost.localdomain clamd[5788]: SWF support enabled.
Feb 23 19:11:19 localhost.localdomain clamd[5788]: HTML support enabled.
Feb 23 19:11:19 localhost.localdomain clamd[5788]: XMLDOCS support enabled.
Feb 23 19:11:19 localhost.localdomain clamd[5788]: HWP3 support enabled.
Feb 23 19:11:19 localhost.localdomain clamd[5788]: Self checking every 600 seconds.
Feb 23 19:11:19 localhost.localdomain systemd[1]: Started clamd scanner (scan) daemon.
七、扫描病毒:ClamAV 的实战时刻
(一)扫描指定文件
clamscan file
# 此命令用于扫描指定的文件,如果 file 不存在会提示:file: No such file or directory ,WARNING: file: Can't access file。扫描完成后会输出文件的扫描结果,如是否感染病毒等信息。
(二)递归扫描 home 目录并记录日志
clamscan -r -i /home -l /var/log/clamav.log
(三)递归扫描 home 目录,删除病毒文件并记录日志
clamscan -r -i /home --remove -l /var/log/clamav.log
(四)扫描指定目录,移动感染文件并记录日志
clamscan -r -i /home --move=/tmp/clamav -l /var/log/clamav.log
-
说明:
- -r 参数表示递归扫描。
- -i 参数表示只显示感染文件。
- -l 参数用于指定日志文件的保存路径。
- –remove 参数表示删除发现的病毒文件。
- –move 参数用于指定将感染文件移动到的目录。
(五)查看病毒文件
cat /var/log/clamav-bin.log | grep "FOUND"
(六)重点扫描目录
clamscan -r -i /etc --max-dir-recursion=5 -l /var/log/clamav-etc.log
clamscan -r -i /bin --max-dir-recursion=5 -l /var/log/clamav-bin.log
clamscan -r -i /usr --max-dir-recursion=5 -l /var/log/clamav-usr.log
clamscan -r -i /var --max-dir-recursion=5 -l /var/log/clamav-var.log
(七)扫描报告说明
----------- SCAN SUMMARY -----------
Known viruses: 8704799 #已知病毒
Engine version: 1.0.8 #软件版本
Scanned directories: 245 #扫描目录数
Scanned files: 463 #扫描文件数
Infected files: 0 #感染文件!!!
Data scanned: 42.51 MB #扫描数据
Data read: 20.21 MB (ratio 2.10:1) #数据读取
Time: 37.100 sec (0 m 37 s) #扫描用时
Start Date: 2025:02:23 19:15:57 #开始时间
End Date: 2025:02:23 19:16:34 #结束时间
综上所述,ClamAV 作为一款强大的 Linux 病毒扫描工具,为我们的系统安全提供了全方位的保障。从安装配置到病毒库更新,再到实际的病毒扫描,每一个步骤都至关重要。在网络安全形势日益严峻的今天,我们需要这样一款高效、可靠的工具来守护我们的 Linux 系统。同时,我们也应该不断关注 ClamAV 的更新和发展,及时调整配置,以应对不断变化的病毒威胁。让我们一起利用 ClamAV,为 Linux 系统打造一个安全的运行环境。