在Ubuntu上安装和使用ClamAV进行病毒查杀

ClamAV 是用于检测木马,病毒,恶意软件,广告软件,rootkit和其他恶意威胁的开源防病毒引擎。

ClamAV的某些功能包括:

  • 内置支持各种存档格式,包括Zip,Tar,Gzip,Bzip2,OLE2,Cabinet,CHM,BinHex,SIS等。
  • 对几乎所有邮件文件格式的内置支持
  • 对使用UPX,FSG,Petite,NsPack,wwpack32,MEW,Upack压缩并用SUE,Y0da Cryptor等混淆的ELF可执行文件和可移植可执行文件的内置支持;
  • 内置支持流行的文档格式,包括Microsoft Office和Mac Office文件,HTML,RTF和PDF。
  • 支持多种签名语言,例如基于哈希的签名匹配,通配符,布尔逻辑和任何以字节码语言编写的自定义规则。

ClamAV包括一个多线程扫描程序守护程序,用于按需文件扫描和自动签名更新的命令行实用程序。它的主要用途之一是在邮件服务器上作为服务器端电子邮件病毒扫描程序。

在Ubuntu上安装和使用ClamAV进行病毒查杀

更新系统软件包缓存

首先,更新系统软件包缓存。

apt update

在Ubuntu 20.04上安装ClamAV

默认的Ubuntu 20.04存储库包含ClamAV的最新稳定发行版。您只需运行下面的命令即可简单地安装它及其实用程序。

apt install clamav clamav-daemon -y

更新ClamAV签名数据库

为了进行扫描,您需要更新的病毒数据库。有两种更新ClamAV数据库的选项:

  • clamav-freshclam:从Internet更新数据库。建议使用Internet访问。
  • Offline update 用于无法直接访问互联网的系统。

使用更新更新签名数据库 clamav-freshclam

如果可以访问互联网,则可以使用 clamav-freshclam 更新ClamAV病毒库。

要使用此方法,请停止 clamav-freshclam 服务(如果正在运行)并执行 freshclam,病毒数据库更新工具。

systemctl stop clamav-freshclam

然后更新病毒数据库;

freshclam

如果数据库是最新的,那么您可能会得到类似于以下的输出(否则,该命令将提取数据库更新)

Wed May  6 05:58:42 2020 -> ClamAV update process started at Wed May  6 05:58:42 2020
Wed May  6 05:58:42 2020 -> daily.cvd database is up to date (version: 25803, sigs: 2358438, f-level: 63, builder: raynman)
Wed May  6 05:58:42 2020 -> main.cvd database is up to date (version: 59, sigs: 4564902, f-level: 60, builder: sigmgr)
Wed May  6 05:58:42 2020 -> bytecode.cvd database is up to date (version: 331, sigs: 94, f-level: 63, builder: anvilleg)

接下来,开始 clamav-freshclam 服务,因此它会随时在后台更新签名数据库。

systemctl start clamav-freshclam

确保已启用该服务以在系统启动时运行;

systemctl is-enabled clamav-freshclam
enabled

freshclam 下载ClamAV数据库,CVD,并将其放在下面, /var/lib/clamav/

ls /var/lib/clamav/
bytecode.cvd daily.cvd main.cvd

离线数据库更新

如果您的系统无法访问互联网,只需从以下位置下载CVD ClamAV下载页 并将它们放在 /var/lib/clamav

将下载的CVD放置在ClamAV数据库上后,请确保相应地更改所有权和权限。

chown clamav:clamav /var/lib/clamav/*.cvd
chmod 644 /var/lib/clamav/*.cvd

重新启动ClamAV守护程序;

systemctl restart clamav-daemon

要通过私有本地镜像更新数据库,请查看如何打开 文档页面

Clamscan CLI选项和示例用法

Clamscan用于扫描文件和目录中是否有病毒。在手册页中,clamscan命令语法为:

clamscan [options] [file/directory/-]

下面说明了一些clamscan命令选项及其示例用法。

使用以下命令打印帮助信息 -h 要么 --help 选项。

clamscan -h

注意: 标有的选项 [=yes/no(*)] 可以选择后面跟随 =是 要么 =否。 如果在没有布尔参数的情况下调用它们,则扫描程序将假定为“是”。星号标记给定选项的默认内部设置。

扫描特定目录或文件;

clamscan /home/
clamscan /home/filename.docx

扫描结束时不显示摘要。

clamscan --no-summary /home/

仅打印受感染的文件(-i, --infected);

clamscan -i /

跳过打印OK文件(-o, --suppress-ok-results);

clamscan <strong>-o</strong> /home/

警惕病毒检测(--bell);

clamscan <strong>--bell</strong> -i /home

递归扫描目录(-r, --recursive)。

clamscan --bell -i <strong>-r</strong> /home

将扫描报告保存到FILE(-l FILE, --log=FILE);

clamscan --bell -i <strong>-r</strong> /home <strong>-l home-scan.txt</strong>

扫描文件中逐行列出的文件(-f FILE --file-list=FILE)。

clamscan -i <strong>-f /tmp/scan</strong>

删除受感染的文件(--remove[=yes/no(*)])。请注意,因为这会完全删除文件。

clamscan -r --remove /home/USER

将受感染的文件移至目录 (--move=DIRECTORY)。对于运行clamscan的用户或非特权用户,目录必须可写。

clamscan -r -i --move=/home/USER/infected /home/

将受感染的文件复制到目录中(–copy = DIRECTORY)。对于运行clamscan的用户或非特权用户,目录必须可写。

clamscan -r -i --copy=/home/USER/infected /home/

对于clamscan的各种用法,有很多选项可供选择。请教 man clamscan 更多细节。

ClamAV返回码

以下是ClamAV的退出返回代码。

  • 0:未发现病毒。
  • 1:发现病毒。
  • 2:发生了一些错误。

限制Clamscan CPU使用率

clamscan 可能会占用大量CPU资源,尤其是在扫描大型目录时。

要将clamscan CPU时间限制在一定水平,可以使用两种工具。

  • nice:降低clamscan的优先级(限制相对cpu时间)。
  • cpulimit:限制绝对的CPU时间。

要使用漂亮的命令,

nice -n 15 clamscan && clamscan -ir /

只要没有其他进程需要cputime,clamscan就会将其最大化。但是,一旦另一个具有更高优先级的进程需要cputime,clamscan就会丢失它。

使用cpulimit;

cpulimit -z -e clamscan -l 20 & clamscan -ir /

扫描整个根目录时,将clamscan cpu时间限制为15%。

进一步阅读

ClamAV用户手册

参考文章:https://zh.codepre.com/how-to-9177.html @代码日志