ClamAV - Linux上的杀毒软件
ClamAV - Linux上的杀毒软件
安装
1 | sudo pacman -S clamav clamtk |
更新数据库
更新病毒定义库:
1 | sudo freshclam |
如果使用代理,请编辑/etc/clamav/freshclam.conf
,更新 HTTPProxyServer、HTTPProxyPort、HTTPProxyUsername 和 HTTPProxyPassword。
数据库文件保存在:
1 | /var/lib/clamav/daily.cvd |
启动/启用 clamav-freshclam.service
以使病毒定义保持最新。
1 | sudo systemctl start clamav-freshclam.service |
启动守护进程
注释:
- 需要
freshclam
在第一次启动服务之前运行,否则会遇到问题/错误,这将阻止 ClamAV 正确启动。 - 如果只想执行独立扫描,则不需要守护程序。请参阅下面的扫描病毒。
该服务叫做clamav-daemon.service
。启动它并使其在系统启动时自动启动。
1 | sudo systemctl start clamav-daemon.service |
测试软件
为了确保 ClamAV 和定义安装正确,请使用 clamscan扫描EICAR 测试文件(一个不含病毒代码的无害签名)。
1 | curl https://secure.eicar.org/eicar.com.txt | clamscan - |
输出 必须 包含:
1 | stdin: Win.Test.EICAR_HDB-1 FOUND |
Option #1: Set up Fangfrisch
1 | yay -S aur/python-fangfrisch |
1 | sudo -u clamav /usr/bin/fangfrisch --conf /etc/fangfrisch/fangfrisch.conf initdb |
Option #2: Set up clamav-unofficial-sigs
1 | yay -S aur/clamav-unofficial-sigs |
1 | sudo clamav-unofficial-sigs.sh |
1 | sudo systemctl enable clamav-unofficial-sigs.timer |
要更改任何默认设置,请参阅并修改/etc/clamav-unofficial-sigs/user.conf
。
扫描病毒
按需扫描有两种选择:
使用独立扫描器
clamscan
可用于扫描指定文件、家目录或整个系统:
1 | $ clamscan myfile |
如果想要clamscan
删除受感染的文件,请在命令中添加该--remove
选项,或者可以使用它--move=/dir
来隔离它们。
可能还想要clamscan
扫描较大的文件。在这种情况下,将选项--max-filesize=4000M
和--max-scansize=4000M
附加到命令中。’4000M’ 是最大的可能值,可以根据需要降低。
使用该-l /path/to/file
选项会将clamscan
日志打印到文本文件中,以定位报告的感染情况。
使用守护进程
clamdscan
与上述用法类似,但要用到守护程序,守护程序必须运行才能使用该命令。多数选项都会被忽略,因为守护进程读取指定在/etc/clamav/clamd.conf
中的设置。
技巧和窍门
多线程运行
使用 clamscan
当从命令行使用clamscan
扫描文件或目录时仅会用到单个 CPU 线程。在时间不关键或不希望计算机变得迟钝的情况下,这可能没问题。如果需要快速扫描大文件夹或 USB 驱动器,可能想要使用所有可用的 CPU 来加速该过程。
clamscan
被设计为单线程,而xargs
可用于并行运行扫描:
1 | $ find $HOME -type f -print0 | xargs -0 -P $(nproc) clamscan |
在这个例子中,-P
参数 for在与 CPU 一样多的进程中xargs
同时运行clamscan
(由nproc
)报告。--max-lines
和--max-args
选项允许更精细地控制跨线程批量处理工作负载。
使用 clamdscan
如果clamd
守护程序正在运行,则可以使用clamdscan
来替代 (查阅 Starting the daemon):。
1 | $ clamdscan --multiscan --fdpass $HOME |
这里的--multiscan
参数允许clamd
使用可用线程并行扫描目录的内容。当守护进程在clamav
用户和组下运行时,--fdpass
参数被用来传递文件描述符权限给 clamd
。
clamdscan
可用的线程数在/etc/clamav/clamd.conf
clamd.conf(5) 通过MaxThreads
参数定义。即使可能会看到MaxThreads
指定的数量超过 1(当前默认为 10),但当使用clamdscan
命令行启动扫描而不指定--multiscan
选项时,只会有一个有效的 CPU 线程用于进行扫描。
参阅
- Wikipedia:ClamAV
- https://en.wikipedia.org/wiki/ClamAV
- http://www.clamav.net
- file:///usr/share/doc/ClamAV/html/index.html
- https://www.jianshu.com/p/5235b4972442