使用 ClamAV 命令行查杀服务器端病毒或恶意文件

ClamAV 是一个开源 (GPLv2) 防病毒工具包,它提供了许多实用程序,包括灵活且可扩展的多线程守护程序命令行扫描程序、用于自动更新病毒库的高级工具。该软件包的核心是一个以共享库形式提供的反病毒引擎

安装 clamav

1、基于 deb 包安装最新版 clamav-1.3.1(2024.07)

wget https://github.com/Cisco-Talos/clamav/releases/download/clamav-1.3.1/clamav-1.3.1.linux.x86_64.deb
dpkg -i clamav-1.3.1.linux.x86_64.deb
cd /usr/local/etc/ && cp freshclam.conf.sample freshclam.conf

# 编辑 freshclam.conf 注释包含字符串 Example 的行
touch /var/log/freshclam.log
chown clamav.clamav /var/log/freshclam.log

2、clamav-1.3.1 主要文件介绍

/usr/local/bin/clamconf       # 配置文件生成工具
/usr/local/bin/clamscan       # 用于手工扫描的程序
/usr/local/bin/clamdscan      # 依赖后台服务的扫描程序
/usr/local/bin/clamdtop       # 监控守护程序 clamd
/usr/local/bin/clamsubmit     # ClamAV 的文件提交实用程序
/usr/local/bin/clamav-config  # change libclamav prefix [default /usr/local]
/usr/local/bin/clambc         # 是 Clam Anti-Virus 的字节码签名测试工具。它可用于测试新制作的字节码签名或帮助验证现有字节码是否按预期针对样本执行
/usr/local/bin/freshclam      # 病毒库文件 (.cvd) 下载、升级工具。在使用 ClamAV 扫描前,需执行病毒下载及升级
/usr/local/sbin/clamd         # clamd 守护进程
/usr/local/sbin/clamonacc     # 按需扫描程序(实时监控)

# sigtool 命令行测试工具,用于帮助用户`创建和使用病毒签名`
# 虽然 sigtool 有许多用途(包括制作签名),但值得注意的是 sigtool 能够帮助用户和分析人员确定 libclamav 病毒签名检测到的文件是否为误报
/usr/local/bin/sigtool
# 默认配置模板
/usr/local/etc/clamd.conf.sample
/usr/local/etc/freshclam.conf.sample

3、使用 clamconf 可生成如下三个配置文件模板

clamconf -g clamd.conf  # clamd.conf freshclam.conf clamav-milter.conf

更新病毒库

使用 freshclam 命令来更新 ClamAV 的病毒数据库,该命令默认使用的配置文件路径 /usr/local/etc/freshclam.conf

freshclam
#> ClamAV update process started at Thu Jul 11 09:13:49 2024
#> daily database available for download (remote version: 27333)
#> Time:   14.7s, ETA:    0.0s [========================>]   60.91MiB/60.91MiB
#> Testing database: '/var/lib/clamav/tmp.323dec9a1f/clamav-05a1dfc8f555474816a4959ac069095f.tmp-daily.cvd' ...
#> Database test passed.
#> daily.cvd updated (version: 27333, sigs: 2064131, f-level: 90, builder: raynman)
#> main database available for download (remote version: 62)
#> Time:   21.8s, ETA:    0.0s [========================>]  162.58MiB/162.58MiB
#> Testing database: '/var/lib/clamav/tmp.323dec9a1f/clamav-5fb574897c99d106694ccdebf3874608.tmp-main.cvd' ...
#> Database test passed.
#> main.cvd updated (version: 62, sigs: 6647427, f-level: 90, builder: sigmgr)
#> bytecode database available for download (remote version: 335)
#> Time:    0.5s, ETA:    0.0s [========================>]  282.94KiB/282.94KiB
#> Testing database: '/var/lib/clamav/tmp.323dec9a1f/clamav-2ab9699585fd9e9aaac156850c202456.tmp-bytecode.cvd' ...
#> Database test passed.
#> bytecode.cvd updated (version: 335, sigs: 86, f-level: 90, builder: raynman)

命令行扫描 clamscan

clamscan 是一个命令行工具,它使用 libclamav 扫描文件或目录中的病毒,创建扫描报告,然后退出。与 clamdscan 不同,clamscan 不需要运行的 clamd 实例即可运行

执行病毒扫描 clamscan -r -i /etc/

# 选项 -r 递归扫描子目录,-i 仅打印已感染病毒的文件
----------- SCAN SUMMARY -----------
Known viruses: 8695952
Engine version: 1.3.1
Scanned directories: 228
Scanned files: 708
Infected files: 0       # 已感染文件数
Data scanned: 3.20 MB
Data read: 1.38 MB (ratio 2.32:1)
Time: 25.450 sec (0 m 25 s)
Start Date: 2024:07:11 09:18:04
End Date:   2024:07:11 09:18:29

配置 ClamAV Daemon(clamd)

1、基于配置示例创建 clamd.conf

cd /usr/local/etc && cp clamd.conf.sample clamd.conf

2、编辑 clamd.conf 注释包含字符串 Example 的行(大概在第 8 行), 并去掉如下配置项的注释

LogFile /tmp/clamd.log
LogFileMaxSize 2M
LogTime yes
LogVerbose yes

DatabaseDirectory /var/lib/clamav
LocalSocket /tmp/clamd.sock
TCPSocket 3310
# clamdscan 扫描时不扫描如下目录
ExcludePath ^/proc/
ExcludePath ^/sys/

cat /etc/systemd/system/clamd.service

[Unit]
Description = clamd scanner daemon
After = syslog.target nss-lookup.target network.target

[Service]
Type = forking
ExecStart = /usr/local/sbin/clamd -c /usr/local/etc/clamd.conf
Restart = on-failure
TimeoutStartSec = 420

[Install]
WantedBy = multi-user.target

守护程序 clamd 大约占用内存 1.2 G,可通过命令systemctl status clamd.service查看

Daemon 扫描 clamdscan

使用 clamdscan 来调用守护进程 /usr/local/sbin/clamd 对文件或目录进行安全扫描

1、创建 EICAR 测试病毒文件

# cat /usr/local/test.txt 病毒测试文件
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

EICAR 测试文件是一个标准的测试文件,用于验证杀毒软件的工作状态。该文件是无害的,并且被所有的杀毒软件识别为测试病毒

2、使用 clamdscan 执行扫描

clamdscan -m --fdpass /usr/
# 扫描结果
#> /usr/local/test.txt: Eicar-Signature FOUND
#> ----------- SCAN SUMMARY -----------
#> Infected files: 1               # 发现 1 个被感染的文件
#> Time: 17.216 sec (0 m 17 s)     # 扫描用时 17s
#> Start Date: 2024:07:11 23:02:39
#> End Date:   2024:07:11 23:02:56

clamdscan 选项说明

选项 --multiscan 或 -m 告诉 clamd 守护进程同时使用多个线程来扫描文件。

选项 --fdpass 允许 clamd 守护进程在扫描文件时传递文件描述符(file descriptor),这样可以避免在扫描大量文件时频繁地打开和关闭文件,从而提高性能

码字不易,若觉得本文对你有用,欢迎点赞 👍、分享 🚀 ,相关技术热点时时看🔥🔥🔥​​​…

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值